18.5.6. Повторяющиеся группы данных

Повторяющиеся группы данных могут быть определены как списки, повторяющиеся элементы, как внутренняя структура внутри атрибута. Эта структура нарушает 1НФ и поэтому должна быть удалена из модели.

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

Сотрудник


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

Сотрудник#

Фамилия

Адрес

Имя ребенка

Е1

Седов

Сурикова, 10

Коля

Е2

Куликов

Мира, 23

Маша, Оля


Сущность «Сотрудник» содержит повторяющуюся группу данных в атрибуте «Имя ребенка» (рис. 14). Это нарушает 1НФ, которая говорит, что сущность находится в 1НФ, если каждый из атрибутов имеет не больше чем одно значение для каждого экземпляра. Экземпляр атрибута «Имя ребенка» имеет два значения: Маша и Оля (табл. 10).

Это нарушение 1НФ приводит к проблемам. Запись значения атрибута через запятую «Маша, Оля» приводит к тому, что размера столбца может не хватить для хранения данных (ведь сотрудник может иметь и 4, и 5 детей). Проблема и в том, что по такому атрибуту невозможно построить индекс.

Для приведения сущности «Сотрудник» к 1НФ:

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

  2. перенесем в нее повторяющийся атрибут «Имя ребенка»,

  3. определим атрибут «Ребенок#» в качестве первичного ключа сущности «Ребенок»,

  4. установим идентифицирующую связь от сущности «Сотрудник» к сущности «Ребенок». Первичный ключ «Сотрудник#» сущности «Сотрудник» будет в сущности «Ребенок» внешним ключом.

Результат приведения сущности «Сотрудник» к 1НФ на рис. 15.

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

Сотрудник


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

Сотрудник#

Фамилия

Адрес

Е1

Седов

Сурикова, 10

Е2

Куликов

Мира, 23


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

Сотрудник#

Ребенок#

Имя ребенка

Е1

С1

Коля

Е2

С1

Маша

E2

C2

Оля