Таблица 18.7. Экземпляры сущности Ребенок
Сотрудник# |
Ребенок# |
Имя ребенка |
Адрес сотрудника |
Е1 |
С1 |
Коля |
Сурикова, 10 |
Е2 |
С1 |
Маша |
Мира, 23 |
E2 |
C2 |
Оля |
Мира, 23 |
Одна из целей БД заключается в максимальной поддержке целостности данных, чтобы таким образом гарантировать, что информация, содержащая в БД, правильна, и факты «внутри» БД не находятся в противоречии. Поэтому важно представить каждый факт в БД один и только один раз! Если факт появляется в двух (или более) местах, ошибки могут «проникнуть» в данные. Единственное исключение из этого правила (один факт в одном месте) – в случае атрибутов первичных ключей.
Включение атрибута «Адрес сотрудника» в сущность «Ребенок» – это ошибка (табл. 15). Теперь, если сотрудник имеет несколько детей, то его адрес будет храниться для каждого ребенка.
Атрибут «Адрес сотрудника» – признак сущности «Сотрудник», но не сущности «Ребенок». Фактически, это нарушение 2НФ, которая говорит: при наличии составного первичного ключа все атрибуты должны зависеть от полного ключа, а не от его частей. Адрес сотрудника не зависит от полного первичного ключа «Сотрудник# Ребенок#», а зависит от его части – атрибута «Сотрудник#».
Для приведения сущности «Ребенок» к 2НФ:
перенесем атрибут «Адрес сотрудника» в сущность «Сотрудник».
Результат приведения сущности «Ребенок» к 2НФ на рис. 15.