Моделирование взаимосвязей между сущностями

Правила для атрибутов


Следующие несложные правила позволяют создавать точные, полные и гибкие модели. См. также Приложение A.

Атрибут служит для описания одной сущности

Атрибут должен определять именно ту сущность, под которой он подписан.

Это может показаться очевидным, однако наиболее часто возникающие ошибки связаны с атрибутами. Так, например, "номер места" является атрибутом купона, билета, посадочного талона, самолета или места в самолете? Очевидно, это атрибут МЕСТА, однако в реальной жизни этот номер зачастую многократно дублируется, появляясь, например, в том числе и на посадочном талоне, включенном в схему в качестве сущности (Рисунок 3-12).

Почему так? В реальном мире номер места очень удобно использовать для представления связи. Если вам известны подобные случаи, добавьте в схему линии таких связей (при необходимости, создавая недостающие сущности).

Рисунок 3-12. Передача атрибута "истинному владельцу"

Как правило, для описания большинства сущностей используется от двух до восьми атрибутов. Превышение этого числа может быть следствием слишком большого количества связей и/или отсутствия некоторых необходимых сущностей.

Чтение названий атрибутов

В названии атрибута не следует использовать имя сущности. Это будет излишним, ибо атрибут описывает только одну сущность. В вышеприведенном примере "номер места" в действительности идентифицировал отсутствующую сущность МЕСТО, которая кроме атрибута "номер" может иметь и другие атрибуты, например "тип".

Чтобы прочитать атрибуты, названные таким образом, вы можете воспользоваться одной из следующих двух форм:

Имя сущности Название атрибута или Название атрибута Имя сущности , например: номер места.



В классическом примере со служащими и отделами "номер отдела" не является атрибутом сущности СЛУЖАЩИЙ. Он выступает атрибутом сущности ОТДЕЛ.

Убирайте повторяющиеся атрибуты

В одно и то же время сущность не может иметь более одного значения каждого из ее атрибутов. Если значений атрибута оказывается много, вам нужно создать новую сущность с передачей ей этого атрибута и с установлением связи типа "многие к одному" с первой сущностью.
Воспользуемся старым примером:

Рисунок 3-13. Повторяющийся атрибут указывает на отсутствие сущности



Следуя указанному правилу, мы получим:

Рисунок 3-14. Добавление недостающей сущности



Это правило часто называют "Первой формой нормализации" (см. Приложение A).

Использование единственного числа в наименованиях

Название атрибута должно быть дано в единственном числе. Множественное число часто является отражением проблемы повторяющихся атрибутов. Для сущности САМОЛЕТ такими атрибутами могут стать - места, экипаж, двери и двигатели. Еще раз обратите внимание на отсутствие на схеме тех сущностей, которым могут принадлежать эти атрибуты.

Может это сущность?

Атрибут становится сущностью, если он представляет самостоятельный объект или явление со своими собственными связями и атрибутами.

В предыдущем примере мы использовали "регистрационный номер" в качестве атрибута самолета. И это будет иметь смысл до той поры, пока у авиалинии не появится подсистема регистрации, которая потребует также учета "даты регистрации", "места регистрации", "цели регистрации", "признака перерегистрации" и т.п. Наша схема может превратиться в нечто подобное следующему:

Рисунок 3-15. Атрибут может стать сущностью



Будьте осторожны ! Таким путем можно дойти до подробностей, не относящихся к делу. В нашем случае такая подсистема нас не интересует и мы возвращаемся к предыдущей модели, расширив наше представление путем добавления к регистрационному номеру прилагательного "текущий".

Рисунок 3-16




Содержание раздела