Отношение связи может дополнительно определяться с помощью указания мощности отношения. Мощность отношения определяет, какое количество экземпляров сущности-потомков может существовать для каждого экземпляра сущности-родителя.
Существует четыре типа мощности отношения:
- каждый экземпляр сущности-родителя может иметь ноль, одну и более связанных с ним экземпляров сущностей-потомков;
- каждый экземпляр сущности-родителя может иметь не менее одного связанного с ним экземпляра сущности-потомка (P);
- каждый экземпляр сущности-родителя может иметь не более одного связанного с ним экземпляра сущности-потомка (Z);
- каждый экземпляр сущности-родителя связан с некоторым фиксированным числом экземпляров сущности-потомка (N).
Отношения связи отображаются линией с точкой на конце у сущности-потомка. Рядом с этой линией указывается мощность отношения (P, Z или N).
Идентифицирующее отношение между сущностью-родителем и сущностью-потомком изображается сплошной линией. Сущность-потомок в идентифицирующем отношении всегда является зависимой от идентификатора сущности, блок рисуется с закругленными углами. Сущность-роди-тель в идентифицирующем отношении может быть как независимой от идентифицируемой сущности, так и зависимой в силу ее отношения с другими сущностями. При этом первичный ключ сущности-родителя наследуется атрибутом первичного ключа сущности-потомка (внешние ключи).
Неидентифицирующие отношения между сущностями изображаются пунктирной линией. В таком отношении и сущность-родитель и сущность-потомок будут независимы от идентификатора сущности.
Отношению дается имя, выраженное грамматическим оборотом глагола, и помещается рядом с отношением. Имя каждого отношения между двумя данными сущностями должно быть уникально, но имена отношений в модели не обязаны быть уникальными. Имя отношения формируется всегда с точки зрения (со стороны) сущности-родителя. Следует обратить внимание на то, что отношение должно оставаться по-прежнему верным при формулировке от сущности-потомка к сущности-родителю, хотя на диаграмме оно не именуется.
Правила отношений:
1. Экземпляр сущности-потомка всегда должен быть связан в точности с одним экземпляром сущности-родителя.
2. Экземпляр сущности-родителя может быть связан с любым числом (0 и более) экземпляров сущности-потомка, в зависимости от указанной мощности отношения.
3. В идентифицирующем отношении сущность-потомок всегда является зависимой от идентификатора сущностью.
4. Сущность может быть связана с любым количеством других сущностей как в качестве потомка, так и в качестве родителя.
4.2. Отношения категоризации
Некоторые объекты являются категориями других существующих объектов, поэтому сущности могут быть категориями других сущностей.
Отношение полной категоризации - это отношение между двумя или более сущностями, в которых каждый экземпляр одной сущности, которая называется общей сущностью, связан в точности с одним экземпляром одной и только одной из других сущностей, которые называются сущностями-категориями (рис. 11).
Рис. 11. Фрагмент ER-диаграммы с отношением полной категоризации
Каждый экземпляр общей сущности и связанный с ним экземпляр сущности-категории изображает один и тот же предмет реального мира и поэтому обладает одним и тем же уникальным идентификатором и имеет один и тот же набор атрибутов. Сущности-категории всегда являются взаи-моисключающими, т.е. экземпляр общей сущности может соответствовать только экземпляру одной категории.
Допускается существование неполного множества категорий. Например, если существует экземпляр общей сущности, не связанный ни с одним экземпляром сущности-категории, то такое отношение называется отношением неполной категоризации.
При наличии между сущностями отношений категоризации в экземп-
ляре общей сущности значение некоторого атрибута определяет, с какой из возможных сущностей-категорий он связан, и этот атрибут называется дискриминатором.
Отношение категоризации обозначается линией, ведущей от общей сущности к подчеркнутому кругу. Отдельные линии ведут из подчеркнутого круга к каждой из сущности-категории. Для сущности-категории мощность не указывается, т.к. она всегда равна нулю или единице. Сущности-категории всегда зависимы от идентификаторов, а общая сущность всегда независима от них. Имя атрибута общей сущности, которая используется в качестве дискриминатора, записывается рядом с кружком.
Отношение категоризации не именуется, но может звучать как “может быть”.
Общая сущность и сущность-категория должны иметь те же ключевые атрибуты. Однако в сущностях-категориях могут использовать имена ролей.
Правила отношений категоризации
1. Сущность-категория может иметь только одну общую сущность.
2. Сущность-категория может быть общей сущностью.
3. Атрибуты первичного ключа общей сущности и сущности-катего-рии должны совпадать.
4. Все экземпляры сущности-категории имеют одно и то же значение дискриминатора.
При первоначальной разработке модели иногда бывает удобно устанавливать неспецифические отношения (много-ко-многому) между двумя сущностями, а затем эти неспецифические отношения детализировать на более поздних стадиях построения модели.
Рис.12. Пример неспецифического отношения
При дальнейшей разработке неспецифические отношения заменяются на специфические путем введения третьей сущности, называемой сущностью-пересечением или ассоциативной сущностью.
Рис. 13. Пример введения сущности-пересечения
Неспецифическое отношение может быть определено с помощью указания мощности отношения на обоих направлениях отношений.
4.3. Синтаксис атрибутов и ключей
Атрибут представляет собой характеристику объектов. Сущность должна обладать атрибутом или комбинацией атрибутов, чьи значения однозначно определяют каждый экземпляр сущности. В дополнение к собственным атрибутам сущность-потомок может наследовать атрибуты через специфические отношения или отношения категоризации от сущности-ро-дителя. Через отношения могут передаваться только атрибуты первичных ключей. В сущности-потомке он становится внешним ключом (FK).
Каждый атрибут идентифицируется уникальным именем и выражается грамматическим оборотом существительного. Каждый атрибут внутри блока сущности занимает одну строку, атрибуты, определяющие первичный ключ, размещаются наверху списка и отделяются горизонтальной чертой.
Правила атрибутов:
1. Сущность может обладать любым количеством атрибутов.
2. Сущность может обладать любым количеством наследуемых атрибутов, но наследуемый атрибут должен являться частью первичного ключа
сущности-родителя или общей сущности.
3. Каждый экземпляр сущности должен иметь значение для каждого атрибута.
Каждая сущность должна обладать хотя бы одним возможным ключом, под которым понимается один или несколько атрибутов, которые однозначно определяют экземпляр сущности. При существовании нескольких возможных ключей один из них обозначается в качестве первичного ключа (PK), а все другие в качестве альтернативных ключей (AK).
Альтернативные ключи размещаются в блоке сущности, и каждому из них присваивается уникальный номер.
Правило первичных и альтернативных ключей
1. Каждая сущность должна обладать первичным ключом.
2. Каждая сущность может обладать любым числом альтернативных ключей.
3. Первичный или альтернативный ключ может состоять из одного или нескольких атрибутов.
4. Атрибуты, входящие в первичные или альтернативные ключи сущностей-потомков или сущностей-категорий могут наследоваться через отношения.
5. Первичные или альтернативные ключи должны содержать только необходимые для однозначной идентификации атрибуты, т.е. при исключении из ключа любого атрибута уже не все экземпляры сущности могут быть однозначно определены.
Если между двумя сущностями имеется специфическое отношение связи или категоризации, то атрибуты, входящие в первичный ключ родительской или общей сущности, наследуются в качестве атрибутов сущностей потомков или сущностей-категорий соответственно. Эти наследуемые атрибуты являются внешними ключами. Внешний ключ может использоваться в сущности-потомке в качестве целого или части первичного ключа, альтернативного ключа или неключевого атрибута.
Если все атрибуты первичного ключа родителя наследуются в качестве части первичного ключа сущности-потомка, то отношение называется идентифицирующим.
Если какой-либо из наследуемых атрибутов не является частью первичного ключа, то отношение называется неидентифицирующим.
В отношении категоризации и общая сущность, и сущность-категория изображают один и тот же предмет реального мира. Поэтому для всех сущ-ностей-категорий первичный ключ наследуется через отношения категоризации из ключа общей сущности.
В некоторых случаях сущность-потомок может иметь несколько отно-шений с одной и той же сущностью-родителем.
Первичные ключи сущности-родителя в этом случае появляются в сущности-потомке в качестве наследуемых атрибутов для каждого отноше
ния.
Внешний ключ помещается внутри блока сущности как наследуемый атрибут с буквами (FK) - Foreign Key (рис. 10).