1. Создать универсальное отношение, содержащее все требуемые атрибуты (в отношении не должно быть пустых ячеек);
2. Определить все функциональные зависимости между атрибутами в этом отношении. При этом рассматриваются все сочетания по два атрибута, и в каждом случае доказывается или отвергается функциональная зависимость. Затем рассматриваются сочетания по три атрибута, и т.д. При нахождении функциональных зависимостей нужно помнить, что в левой части практически никогда не может находиться атрибут-основание.
3. Получить минимальное покрытие функциональных зависимостей. Минимальным покрытием называется список тех функциональных зависимостей, которые остаются в общем списке после вычеркивания функциональных зависимостей, являющихся производными. В частности, объединяются все функциональные зависимости с одинаковой левой частью, исключаются транзитивные зависимости.
4. Определить первичный ключ отношения.
5. С помощью операции проекции разбить исходное отношение на части по следующему принципу:
|
|
Ri = R [Xi], где Xi - список атрибутов из i -той функциональной зависимости. Количество отношений будет равно числу функциональных зависимостей.
6. Если первичный ключ не вошел ни в одно из полученных отношений, то для него создается отдельное отношение.
7. Атрибуты, входящие во взаимооднозначное соответствие, выделяются в отдельные отношения. Среди них выбирается один, по смыслу являющийся основным. Он будет представлять остальные атрибуты в других отношениях.
Пример:
Приведите отношение к третьей нормальной форме при известном списке атрибутов и функциональных зависимостей:
Табельный номер
ФИО рабочего
Цех
Участок
Дата
Сумма зарплаты
Участок® Цех
Табельный номер® Цех
Табельный номер® Участок
Табельный номер, Дата® Сумма зарплаты
Табельный номер® ФИО рабочего
Табельный номер® ФИО рабочего, Участок
Связывание таблиц. Основные виды связей
При проектировании реальных БД информацию обычно размещают в нескольких таблицах. Суть связывания таблиц состоит в установлении соответствия полей связи основной и дополнительной таблиц. Поля связи основной таблицы могут быть обычными и ключевыми. В качестве полей связи подчиненной таблицы чаще всего используют ключевые поля.
Между двумя таблицами в общем случае могут устанавливаться следующие четыре основных вида связи:
· один к одному (1:1);
· один ко многим (1:М);
· многие к одному (М:1);
· многие ко многим (М:М);
Связь вида 1:1
Данный вид связи образуется в случае, когда все поля связи основной и дополнительной таблиц являются ключевыми. Поскольку значения в ключевых полях обеих таблиц не повторяются, обеспечивается взаимно-однозначное соответствие записей из этих таблиц. На практике связи вида 1:1 используются достаточно редко, т.к. хранимую в двух таблицах информацию легко объединить в одну таблицу, которая занимает меньше места в памяти ЭВМ. Но существуют случаи, когда удобнее иметь не одну, а две таблицы, например из соображений безопасности
|
|
Связь вида 1:М
Этот вид связи имеет место в случае, когда одной записи основной таблицы соответствует несколько записей вспомогательной таблицы. Это наиболее распространенный вид связей в РМД.
Связь вида М:1
Является разновидность связи 1:М.
Связь вида М:М
Самый общий вид связи, возникает в случаях, когда нескольким записям основной таблицы соответствует несколько записей дополнительной таблицы.