Нормализованное отношение находится в НФБК тогда и только тогда, когда каждый детерминант является потенциальным ключом.
Напомню, что в определении функциональной зависимости: f: X Y левая часть (X) называется детерминантом. Кроме того, рассматриваются только нетривиальные функциональные зависимости.
В приведенном выше примере определена функциональная зависимость T P, но детерминант T не является потенциальным ключом. Следовательно, данное отношение не находится в НФБК.
Для данного отношения можно выполнить декомпозицию, используя функциональную зависимость
T P: E1(T, P) – преподаватель проводит занятия по определенным предметам, и E2(S, T) – студент обучается у определенного преподавателя. При наличии первой функциональной зависимости всегда можно узнать, какой именно предмет изучает студент под руководством конкретного преподавателя. Однако следует отметить, что такая декомпозиция не сохраняет функциональные зависимости, а значит, некоторые данные в этих двух отношениях не могут обновляться независимо. Например, если вместо какого-либо преподавателя, проводящего занятия по предмету, назначается другой преподаватель, необходимо изменить соответствующие кортежи и в отношении E1, и в отношении E2.
|
|
Примечание: при проектировании с использованием IDEF1x подобная ситуация выглядит следующим образом. В соответствии с заданными функциональными зависимостями определяются сущности ПРЕДМЕТ, ПРЕПОДАВАТЕЛЬ и ПРЕДМЕТ СТУДЕНТА (предмет, изучаемый студентом). Очевидно, что имеются связи типа 1:n между сущностями ПРЕДМЕТ и ПРЕПОДАВАТЕЛЬ, ПРЕДМЕТ и ПРЕДМЕТ СТУДЕНТА (Рис. 6.6). Поскольку, как было показано выше, отношение ПРЕДМЕТ СТУДЕНТА имеет второй ключ, схема может быть представлена и по-другому (Рис. 6.7).
Рис. 6.6. Отображение требований предметной области: нарушение НФБК
Рис. 6.7. Второй вариант отображения требований предметной области
Кроме того, так как студент изучает предмет под руководством определенного преподавателя, имеет место и связь между сущностями ПРЕДМЕТ СТУДЕНТА и ПРЕПОДАВАТЕЛЬ. В результате сущность ПРЕДМЕТ СТУДЕНТА не удовлетворяет НФБК.
Из концептуальной схемы видно, что связь между сущностями ПРЕДМЕТ и ПРЕДМЕТ СТУДЕНТА является лишней: так как каждый преподаватель ведет занятия только по одному предмету, можно выяснить, какой предмет изучает студент, зная, какой преподаватель проводит занятия с этим студентом. Эту связь следует удалить, в результате чего сущность ПРЕДМЕТ СТУДЕНТА будет удовлетворять НФБК (Рис. 6.8).
Рис. 6.8. Обеспечение НФБК
Следует иметь в виду, что подобные связи не всегда являются лишними.
|
|
Рассмотрим следующий пример. Имеются сущности ПОСТАВЩИК и ТОВАР, для которых определено следующее условие: каждый товар поставляется только одним поставщиком (но поставщик может поставлять много товаров). Кроме того, имеется сущность ГОРОД. Каждый поставщик дислоцируется в определенном городе, и каждый товар производится в определенном городе (Рис. 6.9).
Рис. 6.9. Схема, удовлетворяющая НФБК
Можно увидеть, что данная схема внешне напоминает схему, приведенную выше (Рис. 6.7).
Однако в данном примере связь между сущностями ГОРОД и ПОСТАВЛЯЕМЫЙ ТОВАР не является лишней, так как поставщик может быть дислоцирован в одном городе, а поставляемый им товар производится в другом городе. Это означает, что, по сравнению с предыдущим примером, здесь отсутствует функциональная зависимость (G, C) P, и в сущности ПОСТАВЛЯЕМЫЙ ТОВАР нет альтернативного ключа (G, C).
Многозначные зависимости
Рассмотрим некоторое ненормализованное отношение, задающее расписание занятий:
Учебный курс | День занятий | Студент |
C1 | Понедельник Среда | Иванов Петров Сидоров |
C2 | Пятница | Мягков Быков |
Каждый кортеж такого отношения содержит индекс учебного курса, список дней недели, когда проводятся занятия, и список студентов, изучающих данный курс. Такое расписание означает, что занятия по каждому курсу проводятся во все указанные дни недели, и все студенты посещают все занятия по курсу.
Предположения, которые могут быть сделаны:
• Каждый курс может иметь произвольное количество дней занятий.
• Каждый курс могут изучать произвольное количество студентов.
• Дни занятий и студенты совершенно не зависят друг от друга, т.е. независимо от дня занятий состав группы студентов один и тот же.
• День занятий может быть связан с любыми курсами.
• Каждый студент может быть связан с любым курсом.
Преобразуем данное отношение в нормализованное отношение CDS:
CDS | Учебный курс | День занятий | Студент |
C1 | Понедельник | Иванов | |
C1 | Понедельник | Петров | |
C1 | Понедельник | Сидоров | |
C1 | Среда | Иванов | |
C1 | Среда | Петров | |
C1 | Среда | Сидоров | |
C2 | Пятница | Мягков | |
C2 | Пятница | Быков |
Важно отметить, что для рассматриваемых данных функциональные зависимости, кроме тривиальных, не заданы. Нормализованное отношение CDS означает, что кортеж
<Учебный курс:c, День занятий:d, Студент:s>
появляется в отношении тогда и только тогда, когда занятия по курсу c проводятся в день недели d и посещаются студентом s.
Тогда, принимая во внимание допустимость существования для заданного отношения всех возможных комбинаций дней занятий и студентов, можно утверждать, что для отношения CDS верно следующее ограничение:
Если в отношении существуют кортежи <c, d1, s1> и <c, d2, s2>, то также присутствуют и кортежи <c, d2, s1> и <c, d1, s2>.
Очевидно, что в данном отношении имеет место избыточность, которая может привести к проблемам.
Проблема вставки. Чтобы добавить в приведенное отношение информацию о том, что занятия по курсу C2 могут проводиться еще и в четверг, надо включить в отношение два кортежа: <C2, четверг, Мягков> и <C2, четверг, Быков>.
Проблема обновления. Чтобы перенести, например, день занятий по курсу C2 с пятницы на вторник, надо изменить данные в двух кортежах.
Проблема удаления. Чтобы отменить, например, занятия в понедельник по курсу C1, надо удалить из отношения три кортежа.
Тем не менее, отношение CDS находится в НФБК, так как все атрибуты отношения образуют первичный ключ.
Интуитивно ясно, что эти проблемы вызваны тем, что студенты и дни занятий никак не связаны друг с другом. Можно исправить эту ситуацию, если разбить данное отношение на два:
CD(Учебнвый курс, День занятий) и CS (Учебный курс, Студент).
|
|
CD | Учебный курс | День занятий | CS | Учебный курс | Студент | |
C1 | Понедельник | C1 | Иванов | |||
C1 | Среда | C1 | Петров | |||
C2 | Пятница | C1 | Сидоров | |||
C2 | Мягков | |||||
C2 | Быков |
Оба отношения находятся в НФБК; более того, исходное отношение CDS может быть восстановлено с помощью операции естественного соединения отношений CD и CS, т.е. выполнена декомпозиция без потери информации, но эта декомпозиция выполнена не на основе функциональной зависимости.
Эти интуитивные идеи были теоретически сформулированы Фейгином (Fagin) в 1971 г. с помощью понятия многозначных зависимостей. Приведенная выше декомпозиция выполняется на основе многозначных зависимостей.