Атрибут X многозначно определяет атрибут Y в R (или Y многозначно зависит от X), если каждому значению атрибута X соответствует множество (возможно, пустое) значений атрибута Y, никак не связанных с другими атрибутами R. То есть для наличия в отношении многозначной зависимости необходимо иметь как минимум три атрибута.
Многозначная зависимость обозначается двойной стрелкой: X→→Y.
Рассмотрим отношение Преподаватель (Номер, Имя_ребенка, Предмет, Должность). Предметная область накладывает следующие ограничения:
· каждый преподаватель может иметь несколько детей,
· каждый преподаватель может вести несколько предметов,
· каждый преподаватель может занимать только одну должность,
· каждый предмет могут вести несколько преподавателей.
Тогда отношение Преподаватель имеет две многозначные зависимости и одну функциональную:
· Номер→→Имя_ребенка,
· Номер→→Предмет,
· Номер→Должность.
Преподаватель | |||
Номер | Имя_ребенка | Предмет | Должность |
Ольга | Алгебра | Доцент | |
Иван | Геометрия | Доцент | |
Ольга | Геометрия | Доцент | |
Иван | Алгебра | Доцент | |
Сергей | Алгебра | Профессор |
Отношение Преподаватель, во-первых, содержит избыточную информацию – должность преподавателя повторяется несколько раз. Во-вторых, оно не свободно от аномалий обновления: если у преподавателя появляется еще один ребенок, необходимо добавить в отношение не один кортеж, а столько, сколько предметов ведет этот преподаватель. Аналогично, при добавлении еще одного предмета требуется добавить столько кортежей, сколько детей имеет преподаватель. А если преподаватель не имеет детей, то информацию о том, какие предметы он ведет, вообще нельзя занести в отношение.
Для избавления от этих аномалий необходимо привести отношение к четвертой нормальной форме.
Отношение находится в четвертой нармальной форме (4НФ), если оно находится в нормальной форме Бойса–Кодда и в нем отсутствуют многозначные зависимости, которые не являются функциональными.
После приведения отношения Преподаватель к 4НФ мы получим три отношения:
Преподаватель_1 (Номер, Должность),
Преподаватель_2 (Номер, Имя_ребенка),
Преподаватель_3 (Номер, Предмет).
Преподаватель_1 | Преподаватель_2 | Преподаватель_3 | |||||
Номер | Должность | Номер | Имя_ре-бенка | Номер | Предмет | ||
Доцент | Ольга | Алгебра | |||||
Профессор | Иван | Геометрия | |||||
Сергей | Алгебра |