Конфликты фактов могут происходить по разным причинам, включая нарушение первой, второй или третьей нормальных форм.
Таблица 18.8. Экземпляры сущности Ребенок
Сотрудник# |
Ребенок# |
Имя ребенка |
Адрес жены |
Е1 |
С1 |
Коля |
Сурикова,10 |
Е2 |
Сl |
Маша |
Мира, 23 |
Е2 |
С2 |
Оля |
Ботаническая, 24 |
Атрибут «Адрес жены» включен в сущность «Ребенок» (рис. 18), что привело к нарушению 2НФ. Данные на табл. 16 показывают, что сотрудник Е2 имеет двух детей – Машу и Олю и два различных адреса жены. Возможно, Е2 имеет две жены (одна живет на Мира, 23, другая на Ботанической, 24), или у Оли и Маши разные мамы. Или Е2 имеет одну жену, проживающую по разным адресам. Какой вариант является правильным? Проблема в том, что выбрать правильный вариант из имеющихся данных невозможно.
Для приведения к 2НФ:
создадим новую сущность «Жена»,
поместим атрибут «Адрес жены» в сущность «Жена»,
установим идентифицирующую связь от сущности «Сотрудник» к сущности «Жена».
Результат приведения сущности «Ребенок» к 2НФ на рис. 19. Можно увидеть, что сотрудник Е2 имеет двух жен, одну нынешнюю (текущая) и одну бывшую (табл. 18).
Таблица 18.9. Экземпляры сущности Сотрудник
Сотрудник# |
Ребенок# |
Имя ребенка |
Е1 |
С1 |
Коля |
Е2 |
Сl |
Маша |
Е2 |
С2 |
Оля |
Таблица 18.10. Экземпляры сущности Жена
Сотрудник# |
Жена# |
Адрес жены |
Текущая |
Е1 |
S1 |
Сурикова,10 |
Да |
Е2 |
Sl |
Мира, 23 |
Да |
Е2 |
S2 |
Ботаническая, 24 |
Нет |