18.5.9. Конфликтующие факты

Конфликты фактов могут происходить по разным причинам, включая нарушение первой, второй или третьей нормальных форм.

Рисунок 18.18. Ребёнок

Ребёнок


Таблица 18.8. Экземпляры сущности Ребенок

Сотрудник#

 Ребенок#

Имя ребенка

Адрес жены

Е1

С1

Коля

Сурикова,10

Е2

Сl

Маша

Мира, 23

Е2

С2

Оля

Ботаническая, 24


Атрибут «Адрес жены» включен в сущность «Ребенок» (рис. 18), что привело к нарушению 2НФ. Данные на табл. 16 показывают, что сотрудник Е2 имеет двух детей – Машу и Олю и два различных адреса жены. Возможно, Е2 имеет две жены (одна живет на Мира, 23, другая на Ботанической, 24), или у Оли и Маши разные мамы. Или Е2 имеет одну жену, проживающую по разным адресам. Какой вариант является правильным? Проблема в том, что выбрать правильный вариант из имеющихся данных невозможно.

Для приведения к 2НФ:

  1. создадим новую сущность «Жена»,

  2. поместим атрибут «Адрес жены» в сущность «Жена»,

  3. установим идентифицирующую связь от сущности «Сотрудник» к сущности «Жена».

Результат приведения сущности «Ребенок» к 2НФ на рис. 19. Можно увидеть, что сотрудник Е2 имеет двух жен, одну нынешнюю (текущая) и одну бывшую (табл. 18).

Рисунок 18.19. Сотрудник

Сотрудник


Таблица 18.9. Экземпляры сущности Сотрудник

Сотрудник#

 Ребенок#

Имя ребенка

Е1

С1

Коля

Е2

Сl

Маша

Е2

С2

Оля


Таблица 18.10. Экземпляры сущности Жена

Сотрудник#

 Жена#

Адрес жены

Текущая

Е1

S1

Сурикова,10

Да

Е2

Sl

Мира, 23

Да

Е2

S2

Ботаническая, 24

Нет