В данном упражнении необходимо проанализировать ER-диаграмму, построенную в практической работе №2, на соответствие правилам нормализации.
Все отношения находятся в 1NF, так как все атрибуты являются атомарными (каждый кортеж содержит только одно значение для каждого из атрибутов, а не список).
Сущность роль (role
) не соответствует 2NF, так как атрибут name
зависит только от атрибута role_id
, то есть от части составного ключа. Чтобы исправить это, выделим 13-ую сущность функция (function
), которая будет связана с ролью через отдельную таблицу role_with_function
(одна связь многие-ко-многим преобразуется в две связи один-ко-многим).
Сущность место (seat
) также не соответствует 2NF, так как атрибуты number
и type
зависят только от атрибута seat_id
. Кроме того, логичнее связывать место не с идентификатором вагона coach_id
, а с его типом. Таким образом, выделим 14-ую сущность тип вагон (coach_type
), которая будет связана с местом через отдельную таблицу coach_type_with_seat
(одна связь многие-ко-многим преобразуется в две связи один-ко-многим).
Теперь все отношения находятся в 2NF, так как у всех сущностей все атрибуты зависят от первичного ключа целиком, а не от какой-то его части.