Третья нормальная форма
Определение
Отношение находится в 3НФ тогда и только тогда, когда оно находится в 2НФ, и каждый его не ключевой атрибут не транзитивно зависит от ключа.
Так как в отношении ПОСТАВЩИК есть транзитивная зависимость S# à CODE, используя правило декомпозиции с сохранением функциональных зависимостей, разобьем его на следующие два: ПОСТАВЩИК ( S#, SNAME, CITY) и ГОРОД ( CITY, CODE). В первом отношении первичный ключ S# сохраняется, а во втором отношении первичным ключом является атрибут CITY.
Примечание: если при проектировании базы данных используется IDEF1x, тогда на этапе построения полноатрибутной концептуальной схемы для каждой сущности определяются не ключевые атрибуты. При этом:
- устанавливаются владельцы каждого атрибута (т.е. фактически определяются функциональные зависимости между атрибутами);
- применяется правило отсутствия повторений.
Например, для сущности ПОСТАВЩИК владельцем атрибута CITY (место размещения поставщика) является поставщик, а владельцем атрибута CODE (код города) является атрибут CITY. В этом случае выделяется новая сущность – в данном примере, ГОРОД:
Второй пример. Если значение некоторого «неудобного» атрибута встречается часто, вместо этого атрибута лучше отдельную сущность, экземпляры которой представляют собой некоторые справочные данные. Так, если определяется сущность СОТРУДНИК с атрибутом ДОЛЖНОСТЬ, значениями которого являются длинные строки, например, «Инженер первого разряда» или «Инженер высшей категории», тогда имеет смысл выделить справочную сущность ДОЛЖНОСТЬ: