Шаг 11.
Работа с локальными БД в Delphi.
Нормализация. Вторая нормальная форма (2NF)

    На этом шаге мы рассмотрим особенности второй нормальной формы.

    Говорят, что сущность находится во второй нормальной форме, если она уже находится в 1NF, и каждой неидентифицрующий атрибут зависит от всего уникального идентификатора сущности, значит, он внесен ошибочно и должен быть удален. Нормализуйте такой атрибут, найдя сущность, к которой он относится, либо, создав новую сущность, в которую он должен быть помещен.

    В нашем примере "Петлюра" является Названием ансамбля для двух разных CD. Это показывает, что Название ансамбля не полностью зависит от идентификатора CD ID. Это дублирование представляет собой проблему, поскольку если мы допустили ошибку при вводе "Петлюра", придется исправить значение в нескольких местах. Это указывает нам, что Название ансамбля должно быть частью новой сущностью, связанной с CD. Как и раньше, мы решим эту задачу, задав вопрос: "Что описывает название ансамбля?" Оно описывает исполнителя. Исполнитель - еще один объект, о котором мы собираем данные, и потому, возможно, является сущностью. Мы добавим его к нашей схеме. На рисунке 1 показано новое состояние модели.


Рис.1. Модель данных с новой сущностью Исполнитель

    Вначале атрибут Название ансамбля принадлежал сущности CD. Поэтому было естественно установить прямую связь между Исполнитель и CD. Но верно ли это? При ближайшем рассмотрении оказывается, что следует установить прямую связь между Исполнитель и Песня. У каждого исполнителя есть одна или много песен. Но каждая песня исполняется одним и только одним исполнителем. Правильные связи показаны на рисунке на рисунке 2. Это не только более разумно, чем связь между Исполнителем и CD, но и решает проблему дисков-сборников.


Рис.2. Связь между Исполнителем и остальной частью базы данных

    Наша модель все еще не приобрела вторую нормальную форму. Значение атрибута Год записи имеет только одно значение для каждого CD, но одно и то же значение его присутствует в нескольких CD. Ситуация сходна с той, которая была с атрибутом Название ансамбля. И точно также дублирование указывает на то, что Год записи должна быть частью отдельной сущности. В год выпускают один или много CD. Каждый CD выпускается в определенный год, модель этой связи представлена на рисунке 3.


Рис.3. Модель данных в 2NF

    На следующем шаге мы рассмотрим виды связей.




Предыдущий шаг Содержание Следующий шаг