Нормализация базы данных
статья по информатике и икт (10 класс) на тему

Пашковская Юлия Вадимовна

Эта статья родилась из стремления изложить достаточно сложный материал наиболее понятным языком, чтобы не только дать учащимся возможность освоить навыки пользователей конкретной СУБД, но и приблизить их к творчеству создателей баз данных.

Статья опубликована в журнале "Информатика", 2012, № 4.

Скачать:


Предварительный просмотр:

Нормализация баз данных

        Процедура нормализации считается самым сложным этапом в создании базы данных. Отчасти потому что многое в ней совершается интуитивно. Существует множество нормальных форм, но проектировщику базы данных важно суметь найти компромисс между степенью нормализации и производительностью СУБД.

        Эта статья родилась из стремления изложить достаточно сложный материал наиболее понятным языком, чтобы не только дать учащимся возможность освоить навыки пользователей конкретной СУБД, но и приблизить их к творчеству создателей баз данных.

***

Существует множество классификаций баз данных – по модели данных, по степени распределённости, по содержимому, по технологии хранения и т.д. Мы же рассмотрим классификацию баз данных по организации связей между её объектами.

Виды структур данных

  1. Линейная организация, или список. Она объединяет не связанные между собой однотипные элементы, собранные по какому-либо признаку. Пример – список учеников 10 класса:

Рис. 1

Однотипные элементы здесь – ученики. А признак, по которому они объединены, - принадлежность одному классу. Несвязанность их между собой означает, что удаление одного ученика из списка класса не влечёт за собой удаление других.

        Линейная организация является простейшей структурой базы данных, тем её кирпичиком, из совокупности которых складываются более сложные структуры. (Освоить приёмы работы со списком можно в Ecxel или Calc (OpenOffice).)  

        К сложным структурам относятся:

2. Иерархическая организация, или многоуровневый список, или дерево. В ней каждый элемент нижнего уровня связан только с одним элементом верхнего. Таким образом, можно говорить о вложенности, подчинённости, наследовании элементов. Примером иерархической организации может служить классификация животных:

Рис. 2

В иерархической организации количество уровней подчинённости соответствует количеству участвующих в ней классов объектов. На рис. 2 показаны связи между тремя классами объектов: отряды, семейства, роды.

Внутри иерархической организации можно выделить два вида списков. Списки первого вида назовём горизонтальными, поскольку образованы они из объектов, принадлежащих одному классу и могут рассматриваться независимо друг от друга. В нашем примере к ним относятся списки Отряды, Семейства, Роды.

Рис. 3

Список второго вида может быть назван вертикальным, поскольку представляет собой совокупность связей, каждая из которых соединяет один элемент нижнего уровня с корнем дерева через промежуточные элементы. Количество элементов вертикального списка равно числу элементов нижнего уровня дерева.

Рис. 4

Очевидно, что в иерархической базе данных вертикальный список объектов является расширением горизонтального списка для самого нижнего уровня.

3. Сетевая организация – набор объектов двух разных классов, в котором каждый объект одного класса может быть связан с каждым объектом другого класса. Примером может служить граф, иллюстрирующий денежные вклады граждан в разные банки:

Рис. 5

Здесь можно выделить два класса объектов – Банки и Вкладчики, каждый из которых является по своей организации горизонтальным списком.

Рис. 6

Так же, как в иерархической структуре, в сетевой есть и вертикальный список, отражающий связи между объектами разных классов. В нашем примере это список вкладов всех вкладчиков. Если граф – взвешенный, то вес каждого ребра – ещё одна характеристика связи между объектами разных классов, и она, так же как и другие характеристики связи, может быть отражена в вертикальном списке:

Рис. 7

Элементы вертикального списка, как и полагается элементам линейной структуры, являются независимыми друг от друга. Это значит, что отзыв, к примеру, Ивановым своего вклада из банка «Заря», никак не повлияет на остальные вклады из списка.

В то же время удаление любого элемента из горизонтального списка повлечёт за собой удаление всех связей, в которые он вовлечён. Если обанкротится банк «Заря», то потребуют удаления 1 и 5 элементы из списка Вклады (см. рис. 7). То же случится, если будет удалён какой-либо элемент из списка Вкладчики.

Вообще говоря, вертикального списка достаточно, чтобы полностью описать структуру базы данных. Классы объектов базы данных можно восстановить по названиям столбцов, содержимое горизонтальных списков – по их уникальным значениям, а связи между элементами разных классов – по строкам. Таким образом, именно вертикальный список отражает главную идею базы данных.  

***

Задание: определить из текста, содержащего неструктурированную информацию, классы объектов. Представить её в виде графа (иерархического или сетевого), а также составить вертикальный список.

А) «Поезд №22 приезжает на станцию Клубникино в 12.20, а на станцию Земляникино в 12.50. На Клубникино он стоит 10 минут и отправляется в 12.30. На ст. Земляникино стоянка составляет 5 минут. Поезд № 26 приезжает на станцию Клубникино в 15.10, а на станцию Земляникино в 16.00. На ст. Клубникино стоянка составляет 7 минут, а на ст. Земляникино - 13. Поезд № 30 приезжает на станцию Клубникино в 18.50, а на станцию Земляникино в 19.05. Стоянка на ст. Клубникино составляет 7 минут, а отъезд со ст. Земляникино происходит в 19.08…»

Решение: 1 класс объектов – станции. 2 класс объектов – поезда. Каждый элемент из 1-го класса связан с каждым элементов из 2-го класса такими характеристиками, как время прибытия, стоянки и отправления. Следовательно, это сетевая организация, которую можно изобразить так:

Рис. 8

Горизонтальные списки представляют собой перечни станций и поездов. А вертикальный – перечень остановок:

№ остановки

Поезд

Станция

Время прибытия

Стоянка

(мин.)

Время отправления

1

22

Клубникино

12.20

10

12.30

2

22

Земляникино

12.50

5

12.55

3

26

Клубникино

15.10

7

15.17

4

26

Земляникино

16.00

13

16.13

5

30

Клубникино

18.50

7

18.57

6

30

Земляникино

19.05

3

19.08

Рис. 9

Независимость элементов этого списка выражается в том, что отмена одной остановки в маршруте какого-либо поезда никак не повлияет на существование остальных остановок.

В то же время удаление какого-либо элемента из горизонтального списка (например, поезда №26) повлечёт за собой удаление всех связей, в которые он вовлечён (3 и 4 строки вертикального списка – рис. 9).

В теории баз данных связь, подобную связи горизонтального списка с вертикальным, называют отношением «один – ко многим». А обозначают так: «1 - ∞».

Из этого примера видно, что связи в сетевой структуре (см. рис. 8) - «многие ко многим» (∞ - ∞) – между горизонтальными списками с помощью вертикального списка можно заменить на две связи «один – ко многим».

Б) «Миша Иванов посещает танцевальные занятия, которые ведёт преподаватель Сергеев по понедельникам и четвергам, в 15.00. Туда же  приходят Саша Андреев и Валя Марченко. А вот их приятели Петя Карпов и Яна Молчанова занимаются танцами у другого  преподавателя – Макаровой, по вторникам и пятницам. В эти же дни, но на 2 часа позже к Макаровой на занятия приходят дети помладше: Вова Иванов, брат Миши, Стёпа и Соня Емцевы».  

Решение:  1 класс объектов – дети, 2 класс объектов – преподаватели. Каждый ребёнок (объект из 1 класса) посещает занятия только у одного преподавателя (объект 2 класса).  При этом у Макаровой ученики разбиты на младшую и старшую группы. Значит, можно выделить 3-й класс объектов – группы. Каждый ученик ходит в одну из групп. При этом ни один ученик не посещает сразу две группы. Налицо иерархические отношения между элементами:

Рис. 10

Обратите внимание: чтобы всех детей, посещающих занятия, представить элементами одного уровня, мы добавили промежуточный элемент (1 группа  у преподавателя Сергеева), который не был упомянут в тексте, но не противоречит его смыслу.

Таким образом, горизонтальных списков здесь три:

Рис. 11

А вертикальный список (связи) представляет собой распределение учеников по танцевальным группам:

Рис. 12

Поскольку вертикальный список является расширением горизонтального (в данном случае – списка Ученики), то удаление какого-либо элемента из соответствующего ему горизонтального списка влечёт за собой удаление ровно одного элемента из вертикального. В этом случае говорят, что между этими списками существует связь «один к одному», которая обозначается «1 – 1».

Если два класса объектов связаны друг с другом соотношением «1 – 1», то они могут рассматриваться как объект и атрибут. Следовательно, в иерархической базе данных элементы горизонтальных списков являются атрибутами связанного с ними элемента нижнего уровня.

Удаление же одного элемента из любого другого (не нижнего) горизонтального списка, вообще говоря, означает удаление нескольких элементов из вертикального списка. Например, увольнение преподавателя Серова отменяет занятия у всех учеников первой группы, т.е. у Иванова Миши, Андреева Саши и Марченко Вали. Аналогично, если младшую группу решат распустить, то из списка учеников будут исключены Вова Иванов и близнецы Емцевы. Значит, остальные горизонтальные списки связаны с вертикальным отношениями «1 - ∞».

Из этих двух примеров видны основные различия между иерархической и сетевой  структурами. В первой вертикальный список связан с горизонтальными одной связью «1-1» и несколькими «1 - ∞». В сетевой структуре все горизонтальные списки находятся по отношению к вертикальному в связи «1- ∞».

Реляционные базы данных

Теперь пора перейти на терминологию баз данных. Заменим слово «список» на слово «таблица». Таблица относится к способу представления данных и действительно является наиболее удобной формой представления списка.

Таблица состоит из строк и полей. Строки в базах данных принято называть записями, а столбцы – полями. Записи описывают элементы списка, или объекты, а поля – их характеристики, или атрибуты.

Атрибуты делятся на параметры, признаки и свойства. Параметры отражают количественные характеристики объекта (числовой тип или тип дата/время). Признаки описывают качественные характеристики объекта (текстовый тип). Свойства обозначают способность объекта получить некоторый результат (логический тип).

Чтобы отличать одну запись от другой, в таблицах вводится понятие ключа. Так называют поле или комбинацию полей, по которым одну запись в таблице можно отличить от другой. В наших предыдущих примерах в качестве ключа можно использовать  порядковый номер в списках.  

База данных, представленная в виде набора связанных между собой простых таблиц, называется реляционной. Поскольку, как показано выше, любая информационная структура представима в виде набора списков, то реляционные базы данных являются универсальными.

***

Вернёмся теперь к вертикальному списку из первого примера (рис. 4). Как уже было сказано, вертикальный список содержит полную информацию о структуре базы данных. Однако, как видно из таблицы, в нём много повторов. А это значит, что информация занимает в компьютерной памяти излишне много места. Кроме того, в базе данных могут возникнуть так называемые аномалии обновления. Это значит, что если, например, пользователями базы будет решено заменить русское название отряда Хищные на латинское – Carnivora, то вносить исправления придётся во все записи, где встречается это название. Кроме того, если два разных пользователя одной базы данных назовут одно и то же семейство по-разному (например, Собачьи и Псовые), то компьютер воспримет эти семейства как разные.

Кроме аномалий обновления, существуют ещё аномалии добавления и удаления. Они возникают в сетевых структурах, если в качестве атрибута в вертикальном списке берётся атрибут (-ы) какого-либо объекта из горизонтального списка.

Например, если в базу данных «Спортсмены»

добавят следующую запись,

то возникнет противоречие: код секции не будет совпадать с названием этой секции (аномалия добавления).

Если же из секции Плавание решат уйти все спортсмены, то из базы данных исчезнет и вся информация об этой секции (аномалия удаления).

Очевидно, что Название секции является характеристикой Секции, т.е. атрибутом соответствующего ей горизонтального списка:

Чтобы избавиться от всевозможных аномалий при работе с информацией, проводят нормализацию базы данных.

Нормализация – это процедура, которая позволяет устранить дублирование и потенциальную противоречивость хранимых данных.

В идеале при нормализации надо добиться того, чтобы любое значение хранилось в единственном экземпляре, причём значение это не должно быть получено расчётным путём из других данных, хранящихся в базе.

Первый шаг к нормализации БД – это избавление от повторов. Для этого воспользуемся тем, что таблица вертикального списка связана с таблицами горизонтальных списков отношениями «1 - ∞» и «1 – 1». Это значит, что мы можем заменить значения всех полей в вертикальном списке на соответствующий им ключ в горизонтальных списках.  В нашем примере вертикальный список получит вид:

Род

Семейство

Отряд

1

Волк

1

1

2

Шакал

1

1

3

Енотовидная собака

1

1

4

Медведь бурый

2

1

5

Медведь белый

2

1

6

Медведь гималайский

2

1

Рис. 13

Но теперь его надо дополнить горизонтальными списками с указанием связей:

Рис. 14

Проделав аналогичную процедуру с базой данных сетевой структуры (см. рис. 7), вертикальный список приобретёт вид:

Рис. 15

А структура базы данных выразится в следующем наборе таблиц:

Рис. 16

***

Дополнительными требованиями к нормализованной базе данных являются следующие:

1.  Любое поле должно быть неделимым.  Например, поле ФИО следует разделить на Имя, Фамилия и Отчество, если перед пользователями базы данных может стоять задача поиска людей по отчеству или имени. (Если такой задачи нет, то поле ФИО будет восприниматься СУБД как неделимое.)

Рис. 17

Нарушение этого требования может привести к так называемым аномалиям удаления и добавления. Например, если в БД «Ученик» будет решено избавиться от отчества и тем самым сократить объём базы, то выудить отчество из поля ФИО во всех записях гораздо более затратно, чем просто удалить из структуры БД поле Отчество.

2. Не должно быть полей, которые могут быть найдены с помощью остальных. Нарушение этого требования приводит к неоправданному увеличению объёма базы данных. Например, в таблице, отражающей сведения о хранящихся на продуктовой базе фруктах, не должно быть поля Стоимость, значение которого может быть получено как произведение значений полей Цена и Количество.

Рис. 18

3. Не должно быть полей, которые обозначают различные виды одного и того же:

Рис. 19

Такая ситуация может возникнуть в том случае, если в сетевой базе данных классы первых и вторых объектов совпадают. Например, на шахматном турнире каждый участник соревнования должен сразиться с остальными. Логично было бы составить вертикальный список «Игры» следующим образом:

№ игры

1 игрок

2 игрок

Результат

 Но тогда нарушалась бы однозначность связей между таблицами Игры и Игроки:

Рис. 20

Поскольку очевидно, что в подобных случаях связь между таблицами сетевая (несколько игроков одновременно принимают участие в одной игре, и один игрок может участвовать в нескольких играх) используют третью таблицу «Участие в играх»:

№ участия

№ игры

Игрок

Результат

Здесь связь двух игроков, участвующих в одной и той же игре, осуществляется по общему значению в поле «№ игры».

***

Теперь можно полностью сформулировать алгоритм нормализации базы данных:

  1. Определение классов объектов, входящих в её состав.
  2. Замена связи «1 – 1» объединённым списком, в котором объект одного класса выступает в качестве атрибута для объекта другого класса.
  3. Определение структуры связи между классами.
  4. Замена каждой сложной структуры на вертикальный и горизонтальные списки с указанием связей по ключевым полям.
  5. Внесение дополнительных атрибутов для каждого класса объектов – в зависимости от степени детализации объектов.
  6. Обеспечение требования неделимости полей – в зависимости от целей, стоящих перед будущими пользователями базой данных.
  7. Исключение вычисляемых полей.

Следование этому алгоритму обеспечивает выполнение ещё одного требования к нормализованной базе данных: каждое не ключевое поле должно однозначно зависеть от ключа.

Пример задачи. Нормализовать базу данных, заданную следующей схемой:

Рис. 21

Решение.

  1. Определим классы объектов из представленных на схеме категорий: врачи, пациенты, кабинеты, годы рожденья, адреса, время.
  2. Тип связи «врачи – кабинеты» определяется отношением «1 – 1» - значит, номер кабинета можно считать атрибутом врача (и наоборот). Точно те же рассуждения применимы к связи «пациент – год – адрес». Будем считать год и адрес атрибутами пациентов. Таким образом, остаётся два класса объектов: врачи и пациенты.
  3. Определим статус категории время. Видно, что время не является ни атрибутом пациентов, ни атрибутом врачей. Однако оно характеризует связь между ними и, следовательно,  относится к атрибутам связи.
  4. Определяем структуру между классами. Одному врачу соответствует несколько пациентов. Один и тот же пациент – например, Кузин – записан к нескольким врачам. Значит, структура – сетевая.
  5. Составляем горизонтальные и вертикальный списки и связи между ними:

Рис. 22

Выполнение пунктов 5 – 7 не требуется. Задача решена.

***

Несколько сложнее обстоит дело с обратной задачей: по заданному списку нормализовать  базу данных. Для этого надо восстановить её структуру, т.е. определить, какие  поля списка соответствуют классам объектов, какие – их атрибутам и какого типа – иерархические или сетевые – связи между объектами разных классов.

Рассмотрим следующий пример. Дана таблица, содержащая сведения об учебной литературе.

Рис. 23

Требуется нормализовать соответствующую ей базу данных.

Решение:

  1. Определим классы, связанные соотношением «1 – 1». Это все поля, за исключением поля автор:

Рис. 24

Это значит, что каждая запись описывает один объект – книгу. Это – первый класс объектов.

  1. Объекты других классов выдают повторения. Это коды, темы и типы. Вынесем их в отдельные списки:

Рис. 25

Обратим внимание на то, что коды и темы входят в исходную  таблицу, образуя связь «1 – 1». Это значит, что тему можно считать атрибутом кода. А поскольку сам код представляет собой неповторяющиеся числа, то его можно считать ключом:

Рис. 26

  1. Теперь список книг будет выглядеть так:

Рис. 27

А структура связей между классами книги – рубрикатор – темы так:

Рис. 28

  1. Определим тип связи между объектами классов  книги и авторы: одна книга может быть написана несколькими авторам; один автор может написать несколько книг. Значит, структура связи сетевая.
  2. Следовательно, исходная таблица преобразуется в таблицу, отражающую связи между книгами и авторами, т.е. публикации:

Рис. 29

Одновременно мы выполнили требование неделимости для поля Автор.

Общая структура базы данных будет выглядеть так:

Рис. 30

Приложение: самостоятельные работы по вариантам

  1. Сведение произвольной структуры к табличному виду. (Дополнительные задачи по этой теме можно взять из [2], стр. 114 – 118, изменив условие следующим образом: представить данные в виде набора простых таблиц).
  2. Создание БД: знакомство с СУБД OpenOfficeBase. Работа с таблицей в двух режимах - дизайнера и пользователя.
  3. Усложнение БД: добавление в БД новых  таблиц.
  4. Сам. работа – нормализация БД, представленных таблицей или схемой.
  5. Проектирование БД: по описанию данных, которые должны быть отражены в базе данных, спроектировать многотабличную БД.

Литература

  1. Информатика и ИКТ. Практикум 8-9 класс / под редакцией Н.В. Макаровой. – СПб.: Питер, 2010.
  2. Информатика и ИКТ. Задачник-практикум. В 2 т. / под редакцией И.Г.Семакина, Е.К. Хеннера. – 3 изд. – М.: Бином. Лаборатория знаний, т. 1, 2011.
  3. Информатика и ИКТ. Задачник-практикум. В 2 т. / под редакцией И.Г.Семакина, Е.К. Хеннера. – 3 изд. – М.: Бином. Лаборатория знаний, т. 2, 2011.

Предварительный просмотр:


Подписи к слайдам:

Слайд 1

Базы данных Учитель информатики гимназии №1 г. Жуковского Московской области Ю.В.Пашковская

Слайд 2

Содержание: Структура связей в базах данных. Выделение списков в сложных структурах. Реляционные базы данных. Нормализация баз данных.

Слайд 3

Структуры баз данных 1. Линейная, или список – самая простая структура. Она представляет собой набор не связанных между собой однотипных элементов, собранных по какому-либо признаку. 2. Иерархическая, или многоуровневый список, или дерево: каждый элемент нижнего уровня связан с одним элементом верхнего . 3. Сетевая – набор узлов, в котором каждый может быть связан с каждым .

Слайд 4

Выделение списков в сложных структурах 1. Иерархическая: Горизонтальные списки

Слайд 5

Выделение списков в сложных структурах 1. Иерархическая: Вертикальный список Список связей всех элементов нижнего уровня с корнем дерева

Слайд 6

Иерархическая структура Вертикальный список: Горизонтальные списки:

Слайд 7

Выделение списков в сложных структурах 2. Сетевая: Горизонтальные списки 1 2

Слайд 8

Выделение списков в сложных структурах 2. Сетевая: Вертикальный список

Слайд 9

Сетевая структура Горизонтальные списки: Вертикальный список:

Слайд 10

Реляционные базы данных Списки удобнее всего представлять в виде таблиц. База данных, представленная в виде набора связанных между собой простых таблиц, называется реляционной . Строки в таблицах называются записями , а столбцы – полями . Записи описывают элементы списка, или объекты , а поля – их характеристики, или атрибуты . Реляционная база данных является универсальной.

Слайд 11

Атрибуты параметры признаки свойства Числовые характеристики Качественные характеристики Наличие способностей объекта, приводящих к некоторому результату рост вес размер пол Цвет глаз теплопроводность Атрибуты

Слайд 12

Таблицы Количество полей определяется разработчиком и не может изменяться пользователем. Любое поле должно иметь уникальное имя . Поля могут иметь различный тип : Текстовый – строка символов (длиной до 255 символов) Числовой: вещественное число (с дробной частью) целое число денежная сумма дата, время, дата и время логическое поле (истина или ложь, да или нет) многострочный текст (МЕМО) - примечания рисунок, звук или другой объект (объект OLE ) Поля могут быть обязательными для заполнения или нет. 5. В каждой таблице должен быть ключ . Ключ – это поле (или комбинация полей), которое однозначно определяет запись. Чаще всего в качестве ключа берут порядковый номер записи.

Слайд 13

Аномалии модификации данных При неправильно спроектированной схеме реляционной БД могут возникнуть аномалии выполнения операций модификации данных. аномалии обновления добавления удаления

Слайд 14

Аномалии обновления Такие аномалии могут возникнуть в том случае, когда информация дублируется. Например, если пользователями базы решено заменить русское название отряда Хищные на латинское – Carnivora , то вносить исправления придётся во все записи, где встречается это название, иначе данные станут противоречивы.

Слайд 15

Аномалии добавления Такие аномалии возникают в сетевой структуре, когда в качестве атрибута в вертикальном списке берётся атрибут (-ы) какого-либо объекта из горизонтального списка. Например, если в БД «Спортсмены» ввести новую запись, то возникнет противоречие: код секции не соответствует её названию. Горизонтальный список «Спортивные секции»

Слайд 16

Аномалии удаления Причина аномалий удаления та же, что и у аномалий добавления: в сетевой структуре в качестве атрибута в вертикальном списке берётся атрибут (-ы) какого-либо объекта из горизонтального списка. Например, если все спортсмены из секции Плавание решат уйти из спорта, то из базы данных исчезнет и вся информация об этой секции. Горизонтальный список «Спортивные секции»

Слайд 17

Нормализация Чтобы избавиться от всевозможных аномалий при работе с информацией, проводят нормализацию базы данных. Нормализация – это процедура, которая позволяет устранить дублирование и потенциальную противоречивость хранимых данных.

Слайд 18

Нормализация 1. Избавление от повторов в таблицах № Род Семейство Отряд 1 Волк 1 1 2 Шакал 1 1 3 Енотовидная собака 1 1 4 Медведь бурый 2 1 5 Медведь белый 2 1 6 Медведь гималайский 2 1 Ключи горизонтальных списков Связи между списками

Слайд 19

Нормализация 1. Избавление от повторов в таблицах Ключи горизонтальных списков Связи между списками

Слайд 20

2. Любое поле должно быть неделимым Фамилия и имя Иванов Петр Петров Иван … Фамилия Имя Иванов Петр Петров Иван … … 3. Не должно быть полей, которые могут быть найдены с помощью остальных Код Товар Цена за тонну Кол-во, тонн Стоимость 1 Бананы 1200 10 12 000 2 Киви 1500 20 30 000 … Дополнительные требования к нормализованной базе данных

Слайд 21

Дополнительные требования к нормализованной базе данных 4. Не должно быть полей, которые обозначают различные виды одного и того же . № Фамилия 1 Иванов И.И. 2 Петров П.П. 3 Сидоров С.С.

Слайд 22

Алгоритм нормализации: 1. Определение классов объектов, входящих в её состав. 2. Замена связи «1 – 1» объединённым списком, в котором объект одного класса выступает в качестве атрибута для объекта другого класса. 3. Определение структуры связи между классами. 4. Замена каждой сложной структуры на вертикальный и горизонтальные списки с указанием связей по ключевым полям. 5. Внесение дополнительных атрибутов для каждого класса объектов – в зависимости от степени детализации объектов. 6. Обеспечение требования неделимости полей – в зависимости от целей, стоящих перед будущими пользователями базой данных. 7. Исключение вычисляемых полей.

Слайд 23

Пример для демонстрации нормализации Два автора в одном поле Дублирование информации Дублирование информации

Слайд 24

Классы, связанные соотношением 1-1: Все поля, за исключением поля автор. Книги

Слайд 25

Выделяем повторы в отдельные списки: Связь 1-1 1 1

Слайд 26

Приведение к нормальной форме

Слайд 27

Структура связей:



Предварительный просмотр:

1 вариант. Проектирование базы данных

Разработайте структуру базы данных "Телефонные переговоры" средствами OpenOffice.org Base для хранения необходимой информации.

База данных  должна хранить следующую информацию:

  1. Фамилия, Имя, Отчество абонента.
  1. Телефонный номер абонента.
  1. Домашний адрес абонента.
  1. Телефонный код и название города, куда звонил абонент.
  1. Тариф за 1 минуту разговора с указанным городом.
  1. Дата разговора, время разговора.
  1. Продолжительность разговора.
  1. Телефон, по которому звонил абонент

Технология работы

1.Создайте таблицы таким образом, чтобы записи в каждой таблице описывали объекты одного и того же типа.

  1. Создайте связи между таблицами.
  2. Наполните БД информацией о 10 абонентах, 5 городах. Предусмотрите, чтобы 5 абонентов сделали не менее 2 телефонных звонков в различные города.


2 вариант. Проектирование базы данных

Разработайте структуру базы данных "Библиотека" средствами OpenOffice.org Base для хранения необходимой информации.

База данных  должна хранить следующую информацию:

  1. Фамилия, Имя, Отчество читателя.
  1. Домашний адрес читателя.
  1. Телефон читателя.
  1. Дата рождения читателя.
  1. Номер читательского билета.
  1. Автор книги, которую взял читатель.
  1. Название книги, жанр, год издания и издательство.
  1. Цена книги.
  1. Дата выдачи книги.
  1. Дата возврата книги плановая и фактическая.

Технология работы

  1. Создайте таблицы таким образом, чтобы записи в каждой таблице описывали объекты одного и того же типа.
  2. Создайте связи между таблицами.
  3. Наполните базу данных информацией о 5 читателях, 10 книгах. Предусмотрите, чтобы каждый читатель брал не менее 2 книг.

3 вариант. Проектирование базы данных

Разработайте структуру базы данных "Резервирование билетов" средствами OpenOffice.org Base для хранения необходимой информации. База данных  должна хранить следующую информацию:

  1. Фамилия, Имя, Отчество пассажира.
  2. Домашний адрес пассажира.
  3. Телефон пассажира
  4. Номер поезда и название маршрута.
  5. Номер вагона.
  6. Дата отправления.
  7. Время отправления/прибытия.
  8. Пункт назначения.
  9. Стоимость проезда.

Технология работы

  1. Создайте таблицы таким образом, чтобы записи в каждой таблице описывали объекты одного и того же типа.
  2. Создайте связи между таблицами
  3. Наполните базу данных информацией о 5 пассажирах, 3 поездах, 4 пунктах назначения. Предусмотрите, чтобы 5 пассажиров пользовались услугами резервирования билетов не менее 2 раз.


3* вариант. Проектирование базы данных

Разработайте структуру базы данных "Резервирование билетов" средствами OpenOffice.org Base для хранения необходимой информации. База данных  должна хранить следующую информацию:

  1. Фамилия, Имя, Отчество пассажира.
  2. Домашний адрес пассажира.
  3. Телефон пассажира
  4. Номер поезда и название маршрута.
  5. Тип поезда (скоростной, скорый, пассажирский).
  6. Номер вагона.
  7. Тип вагона (общий, плацкартный, купе, спальный).
  8. Дата отправления.
  9. Время отправления/прибытия.
  10. Пункт назначения.
  11. Расстояние до пункта назначения.
  12. Стоимость проезда.
  13. Доплата за срочность, %
  14. Доплата за тип вагона, %.

Технология работы

  1. Создайте таблицы таким образом, чтобы записи в каждой таблице описывали объекты одного и того же типа.
  2.  Создайте связи между таблицами
  3. Наполните базу данных информацией о 5 пассажирах, 3 поездах, 4 пунктах назначения. Предусмотрите, чтобы 5 пассажиров пользовались услугами резервирования билетов не менее 2 раз.

4 вариант. Проектирование базы данных

Разработайте структуру базы данных "Фотоуслуги" средствами OpenOffice.org Base для хранения необходимой информации. База данных  должна хранить следующую информацию:

  1. Фамилия, Имя, Отчество клиента.
  2. Домашний адрес клиента.
  3. Телефон клиента
  4. Наименование фотоуслуги.
  5. Описание фотоуслуги (характеристика)
  6. Количество единиц заказа.
  7. Цена за единицу.
  8. Дата приемки заказа.
  9. Дата выдачи заказа.

Технология работы

  1. Создайте таблицы таким образом, чтобы записи в каждой таблице описывали объекты одного и того же типа.
  1. Создайте связи между таблицами.
  2. Наполните базу данных информацией о 10 клиентах, 5 видах услуг. Предусмотрите, чтобы каждый клиент делал заказы не менее чем на 2 фотоуслуги.



5 вариант. Проектирование базы данных

Разработайте структуру базы данных "Коммунальные услуги" средствами OpenOffice.org Base для хранения необходимой информации. База данных  должна хранить следующую информацию:

  1. Фамилия, Имя, Отчество квартиросъёмщика.
  2. Домашний адрес квартиросъёмщика.
  3. Номер лицевого счета.
  4. Количество жильцов.
  5. Площадь квартиры, кв.м.
  6. Вид услуги (название платежа).
  7. Стоимость услуги на квадратный метр площади.
  8. Стоимость услуги на 1 жильца.
  9. Дата оплаты.
  10.  Скидка, % (льготы при оплате).

Технология работы

  1. Создайте таблицы таким образом, чтобы записи в каждой таблице описывали объекты одного и того же типа.
  2. Создайте связи между таблицами.

      3. Наполните базу данных информацией о 10 квартиросъёмщиках, 5 видах услуг. Предусмотрите, чтобы каждый квартиросъёмщик оплачивал не менее 3 видов услуг.












6 вариант. Проектирование базы данных


Разработайте структуру базы данных "Прокат товаров" средствами OpenOffice.org Base для хранения необходимой информации. База данных  должна хранить следующую информацию:

  1. Фамилия, Имя, Отчество клиента.
  2. Серия и номер паспорта клиента.
  1. Домашний адрес клиента.
  1. Телефон клиента
  1. Наименование товара.
  1. Описание товара.
  1. Стоимость товара.
  1. Дата выдачи.
  1. Дата возврата плановая и фактическая.
  1. Стоимость проката за сутки.

Технология работы

  1. Создайте таблицы таким образом, чтобы записи в каждой таблице описывали объекты одного и того же типа.
  2. Создайте связи между таблицами.

      3.  Наполните базу данных информацией о 10 клиентах, 5 товарах. Предусмотрите, чтобы 5 клиентов пользовались услугами проката не менее 2 раз.



7 вариант. Проектирование базы данных

Разработайте структуру базы данных "Кино" средствами OpenOffice.org Base для хранения необходимой информации. База данных  должна хранить следующую информацию:

1.  Название фильма.

2. Жанр фильма.

3. Страна-производитель фильма.

4. Название кинотеатра.

5. Адрес кинотеатра.

6. Время показа.

7. Цена билета.

Технология работы

  1. Создайте таблицы таким образом, чтобы записи в каждой таблице описывали объекты одного и того же типа.
  2. Создайте связи между таблицами
  3. Наполните базу данных информацией о 5 кинотеатрах, 10 фильмах и 3 сеансах. Предусмотрите, чтобы 5 фильмов шли в разных кинотеатрах, причём в некоторых – несколько раз в день.

8 вариант. Проектирование базы данных

Разработайте структуру базы данных "Классный журнал" средствами OpenOffice.org Base для хранения необходимой информации. База данных  должна хранить следующую информацию:

  1. Фамилия, Имя, Отчество ученика.
  2. Домашний адрес ученика.
  3. Домашний телефон ученика.
  4. Наименование предмета.
  5. ФИО учителя, ведущего предмет.
  6. Дата получения оценки.
  7. Вид работы (контрольная, самостоятельная, ответ у доски, тест).
  8. Оценка.

Технология работы

  1. Создайте таблицы таким образом, чтобы записи в каждой таблице описывали объекты одного и того же типа.
  2. Создайте связи между таблицами
  3. Наполните базу данных информацией о 5 учениках, 5 предметах и 3 днях. Предусмотрите, чтобы каждый ученик получил оценки хотя бы по двум предметам.


9* вариант. Проектирование базы данных

Разработайте структуру базы данных "Шахматный турнир" средствами OpenOffice.org Base для хранения необходимой информации. База данных  должна хранить следующую информацию:

  1. Фамилия и имя шахматиста.
  2. Клуб, от которого выступает шахматист.
  3. Тренер шахматиста.
  4. Дата проведения игры.
  5. Фамилия и имя соперника.
  6. Клуб, от которого выступает соперник.
  7. Тренер соперника.
  8. Итог игры.

Технология работы

  1. Создайте таблицы таким образом, чтобы записи в каждой таблице описывали объекты одного и того же типа.
  2. Создайте связи между таблицами
  3. Наполните базу данных информацией о 4 шахматистах, и 6 различных шахматных партиях. Предусмотрите, чтобы каждый ученик сыграл с каждым.



Предварительный просмотр:

Вариант 1. Нормализовать БД «Предметы», заданную таблицей:

Название предмета

Цикл

Объем часов

ФИО

Категория

Оклад

Адрес

Практикум по решению задач на ЭВМ

Дисциплины предметной подготовки

236

Гракова

У. В.

Высшая

4140

ул. Мопра

123 – 3

Иностранный язык

Общие гуманитарные и социально-экономические дисциплины

202

Костина

В. В.

Первая

3960

ул. Хлыновская  51 – 20

Иностранный язык

Общие гуманитарные и социально-экономические дисциплины

202

Орлова

Н. Н.

Вторая

3780

ул. Озерная

11 – 65

Иностранный язык

Общие гуманитарные и социально-экономические дисциплины

202

Романова

П. Т.

Первая

3960

ул. Володарского

5 – 183

Иностранный язык

Общие гуманитарные и социально-экономические дисциплины

202

Хорошавина

О. Ю.

Вторая

3780

ул. Богородская  59 – 2

Информационные и коммуникационные технологии в образовании

Дисциплины предметной подготовки

98

Перминова

Ж. А.

Первая

3960

ул. Некрасова

10 – 33

Информационные и коммуникационные технологии в образовании

Дисциплины предметной подготовки

98

Комарова

С. В.

Вторая

3780

ул. Вятская

18/1 – 11

Информационные и коммуникационные технологии в образовании

Дисциплины предметной подготовки

98

Пушкова

Р. О.

Вторая

3780

ул. Воровского

3 – 71

Компьютерное моделирование

Дисциплины предметной подготовки

98

Пушкова

Р. О.

Вторая

3780

ул. Воровского

3 – 71

Методика обучения информатики

Дисциплины предметной подготовки

141

Гракова

У. В.

Высшая

4140

ул. Мопра

123 – 3

Методика обучения информатики

Дисциплины предметной подготовки

141

Семанов

Ф. О.

Высшая

4140

ул. Свободы

128 – 19

Практикум по решению задач на ЭВМ

Дисциплины предметной подготовки

236

Комарова

С. В.

Вторая

3780

ул. Вятская

18/1 – 11

Программирование

Дисциплины предметной подготовки

194

Гракова

У. В.

Высшая

4140

ул. Мопра

123 – 3

Основы теории информации

Дисциплины предметной подготовки

85

Пушкова

Р. О.

Вторая

3780

ул. Воровского

3 – 71

Основы права

Общие гуманитарные и социально-экономические дисциплины

38

Попова

Е. В.

Высшая

4140

ул. Кирова

34 – 65

Вариант 2. Нормализовать БД «Иностранные языки», заданную схемой:

____________________________________________________________________________________________

Вариант 3. Нормализовать БД «Талоны к врачам», заданную схемой:



Предварительный просмотр:

1. Дана БД "Ученик".

  1. Определить структуру БД.
  2. Преобразовать данную структуру к табличному виду.
  3. Определить первичные и внешний ключи таблицы.


2. Дана БД «Дипломная работа».

  1. Определить структуру БД.
  2. Преобразовать данную структуру к табличному виду.
  3. Определить первичные и внешний ключи таблицы.

3. Дана БД «Студенты».

  1. Определить структуру БД.
  2. Преобразовать данную структуру к табличному виду.
  3. Определить первичные и внешний ключи таблицы.


4. Дана БД «Учителя».

  1. Преобразовать данную структуру к табличному виду.
  2. Описать структуру созданной таблицы.
  3. Определить первичный ключ таблицы.


5. Дана БД «Вкладчики».

  1. Преобразовать данную структуру к табличному виду.
  2. Описать структуру созданной таблицы.
  3. Определить первичный ключ таблицы.

___________________________________________________________________________

6. Дана БД «Пермский государственный университет».

  1. Преобразовать данную структуру к табличному виду.
  2. Описать структуру созданной таблицы.
  3. Определить первичный ключ таблицы.



Предварительный просмотр:

Вариант 1. Создайте на основе предложенных данных базу данных ВКЛАДЫ в виде Таблицы. Название таблицы ИНВЕСТОРЫ.

Номер:1

Фамилия: Карабас

Суммa вклада: 19600

Дом. телефон: 123-45-89

Номер:2

Фамилия: Карпов

Сумма вклада: 8500

Дом. телефон: 134-45-65

Номер:3

Фамилия: Абрамов

Сумма вклада: 9000

Дом. телефон: 965-89-89

Номер:4

Фамилия: Дмитриев

Сумма вклада: 9200

Дом. телефон: 768-95-43

Номер:5

Фамилия: Самохвалов

Сумма вклада: 7200

Дом. телефон: 456-98-34

Номер:6

Фамилия: Сидоров

Сумма вклада: 19000

Дом. телефон: 516-90-54

Контрольная точка.

  1. Добавьте в таблицу ещё одну запись с собственными данными и удалите запись №4.
  2. Отсортируйте таблицу по возрастанию по полю  «Фамилия».

Контрольная точка.

  1. Добавьте поле «Имя» и разместите его за полем «Фамилия», заполнив впоследствии любыми именами.
  2. Измените суммы вкладов, увеличив их на 1000, у Карабаса и у Абрамова, и уменьшив на 450 у Сидорова.

-------------------------------------------------------------------------------------------------------------------------

Вариант 2. Создайте на основе предложенных данных базу данных ПЕРСОНАЛ в виде Таблицы. Название таблицы ЗАРПЛАТА.

Номер:1

Фамилия: Петрова

Оклад: 3500

Должность: менеджер

Номер:2

Фамилия: Черный

Оклад: 34000

Должность: Кавалерист

Номер:3

Фамилия: Стрельникова

Оклад: 1000

Должность: директор

Номер:4

Фамилия: Понтюхов

Оклад: 73300

Должность: председатель КГБ

Номер:5

Фамилия: Марков

Оклад: 7000

Должность: менеджер

Номер:6

Фамилия: Бубнов

Оклад: 1500

Должность: курьер

Контрольная точка.

  1. Добавьте в таблицу ещё одну запись с собственными данными и удалите запись №4
  2. Отсортируйте таблицу по возрастанию по полю  «Фамилия».

Контрольная точка.

  1. Добавьте поле «Имя» и разместите его за полем «Фамилия», заполнив впоследствии любыми именами.
  2. Измените суммы окладов, увеличив их на 500, у Стрельниковой и у Бубнова, и уменьшив на 100 у Маркова.

Вариант 3. Создайте на основе предложенных данных базу данных Библиотека в виде Таблицы. Название таблицы КНИГИ.

Номер:1

Автор: Искандер Ф.А.

Название: Кролики и удавы.

Кол-во страниц: 703

Номер:2

Автор: Михалков С.В.

Название: Дядя Стёпа.

Кол-во страниц: 96

Номер:3

Автор: Вересаев В.В.

Название: Живая жизнь.

Кол-во страниц: 400

Номер:4

Автор: Хайям О.

Название: Как чуден милой лик.

Кол-во страниц: 433

Номер:5

Автор: Чехов А.П.

Название: Каштанка.

Кол-во страниц: 25

Номер:6

Автор: Толстой Л.Н.

Название: Анна Каренина

Кол-во страниц: 960

Контрольная точка.

  1. Добавьте в таблицу ещё одну запись с данными любимой книги и удалите запись №4.
  2. Отсортируйте таблицу по возрастанию по полю  «Фамилия».

Контрольная точка.

  1. Добавьте поле «Издательство» и разместите его за полем «Название», заполнив впоследствии любым содержанием.
  2. Измените количество страниц, увеличив их на 10 для 1 и 3 номера и уменьшив на 15 для 6-го.

-------------------------------------------------------------------------------------------------------------------------

Вариант 4. Создайте на основе предложенных данных базу данных Поликлиника в виде Таблицы. Название таблицы ВРАЧИ.

Номер:1

Фамилия: Петрова

Номер кабинета: 5

Специальность: терапевт

Номер:2

Фамилия: Черный

Номер кабинета: 5

Специальность: терапевт

Номер:3

Фамилия: Стрельникова

Номер кабинета: 1

Специальность: ЛОР

Номер:4

Фамилия: Понтюхов

Номер кабинета: 12

Специальность: хирург

Номер:5

Фамилия: Марков

Номер кабинета: 3

Специальность: маммолог

Номер:6

Фамилия: Бубнов

Номер кабинета: 2

Специальность: логопед

Контрольная точка.

  1. Добавьте в таблицу ещё одну запись с собственными данными и удалите запись №4
  2. Отсортируйте таблицу по возрастанию по полю  «Фамилия».

Контрольная точка.

  1. Добавьте поле «Имя» и разместите его за полем «Фамилия», заполнив впоследствии любыми именами.
  2. Поменяйте номера кабинетов у Стрельниковой и у Бубнова.

Вариант 5. Создайте на основе предложенных данных базу данных ПОЛИКЛИНИка в виде Таблицы. Название таблицы ПАЦИЕНТЫ.

Номер:1

Фамилия: Карабас

Год рождения: 1960

Дом. телефон: 123-45-89

Номер:2

Фамилия: Карпов

Год рождения: 1964

Дом. телефон: 134-45-65

Номер:3

Фамилия: Абрамов

Год рождения: 1981

Дом. телефон: 965-89-89

Номер:4

Фамилия: Дмитриев

Год рождения: 1976

Дом. телефон: 768-95-43

Номер:5

Фамилия: Самохвалов

Год рождения: 1969

Дом. телефон: 456-98-34

Номер:6

Фамилия: Сидоров

Год рождения: 1988

Дом. телефон: 516-90-54

Контрольная точка.

  1. Добавьте в таблицу ещё одну запись с собственными данными и удалите запись №4.
  2. Отсортируйте таблицу по возрастанию по полю  «Фамилия».

Контрольная точка.

  1. Добавьте поле «Имя» и разместите его за полем «Фамилия», заполнив впоследствии любым содержанием.
  2. Измените все номера телефонов, заменив первые 3 цифры на 495.

-------------------------------------------------------------------------------------------------------------------------

Вариант 6. Создайте на основе предложенных данных базу данных ШКОЛа в виде Таблицы. Название таблицы УЧИТЕЛЯ.

Номер:1

Фамилия: Петрова

Номер кабинета: 5

Предмет: математика

Номер:2

Фамилия: Черный

Номер кабинета: 1

Предмет: русский язык

Номер:3

Фамилия: Стрельникова

Номер кабинета: 1

Предмет: русский язык

Номер:4

Фамилия: Понтюхов

Номер кабинета: 12

Предмет: английский язык

Номер:5

Фамилия: Марков

Номер кабинета: 3

Предмет: ИЗО

Номер:6

Фамилия: Бубнов

Номер кабинета: 2

Предмет: ИВТ

Контрольная точка.

  1. Добавьте в таблицу ещё одну запись с произвольными данными и удалите запись №4
  2. Отсортируйте таблицу по возрастанию по полю  «Фамилия».

Контрольная точка.

  1. Добавьте поле «Имя» и разместите его за полем «Фамилия», заполнив впоследствии любыми именами.
  2. Поменяйте номера кабинетов у Маркова и у Бубнова.



Предварительный просмотр:

1 вариант

  1. Откройте БД «Абитуриенты».
  2. Добавьте в неё таблицы, необходимые для превращения её в БД «Участие в стройотрядах». Эта БД должна отражать следующую информацию: ФИО студента, название стройотряда, в котором он состоял, год пребывания в стройотряде, должность (командир, комиссар, боец, повар).
  3. Установить связи между таблицами.
  4. Наполнить БД записями о 5 разных студентах, побывавших в разные годы в разных стройотрядах в разных должностях.


2 вариант

  1. Откройте БД «Абитуриенты».
  2. Добавьте в неё таблицы, необходимые для превращения её в БД «Дежурство по институту». Эта БД должна отражать следующую информацию: ФИО дежурного, дату его дежурства, происшествия, случившиеся за время дежурства.
  3. Установить связи между таблицами.
  4. Наполнить БД записями о 10 разных происшествиях, случившихся в разные дежурства разных студентов.


3 вариант

  1. Откройте БД «Абитуриенты».
  2. Добавьте в неё таблицы, необходимые для превращения её в БД «Ксерокс». Эта БД должна отражать следующую информацию: ФИО студента, который пользовался ксероксом, дату этого события, количество истраченных листов бумаги.
  3. Установить связи между таблицами.
  4. Наполнить БД записями о 10 разных случаях пользования ксероксом разными людьми в разные дни, в том числе одним и тем же человеком в один и тот же день.


4 вариант

  1. Откройте БД «Абитуриенты».
  2. Добавьте в неё таблицы, необходимые для превращения её в БД «Родители и опекуны». Эта БД должна отражать следующую информацию: для каждого абитуриента ФИО его родителя или опекуна, их адреса и телефоны.
  3. Установить связи между таблицами.
  4. Наполнить БД записями о 10 родителях и опекунах разных абитуриентов. Предусмотреть случаи, когда у одного и того же абитуриента родители живут по разным адресам.


5 вариант

  1. Откройте БД «Абитуриенты».
  2. Добавьте в неё таблицы, необходимые для превращения её в БД «Игры в «Мафию». Эта БД должна отражать следующую информацию: дату игры, количество игроков, роль каждого игрока (комиссар, мафиози, мирный житель, священник и т.д.), итог игры (выигрыш мирных жителей или мафии).
  3.  Установить связи между таблицами.
  4. Наполнить БД записями о 10 разных играх, некоторые из которых состоялись в один и тот же день.


По теме: методические разработки, презентации и конспекты

База данных. Системы управления базами данных

Изучение баз данных, табличных баз данных, системы управления базами данных....

Практическая работа по Базам данных по теме Нормализация отношений

Практическая работа по дисциплине "Базы данных" по теме "Нормализация отношений" для ссуза...

База данных 11 класс. Самостоятельные практические работы. Проектирование и обработка двухтабличной базы данных.

Предлагается два вырианта самостоятельной практической работы по теме "Базы данных". 11класс. Работу можно провести как "Зачётная практическая работа по теме База Данных"Перед выполнением самостоятель...

Урок информатики «Базы данных. Системы управления базами данных»

План-конспектУрока по информатике и ИКТТема: «Базы данных. Системы управления базами данных»11 классУчитель: Торопов Александр Евгеньевич...

Практическая работа по теме Система управления базами данных Microsoft Access 2007. Создание базы данных

Практическая работа по теме  Система управления базами данных Microsoft Access 2007. Создание базы данных...

Практическая работа по теме Система управления базами данных Microsoft Access 2007. Создание базы данных

Практическая работа по теме  Система управления базами данных Microsoft Access 2007. Создание базы данных...