В ряде случаев для полного определения ключа некоторого множества сущностей используются атрибуты, которые частично или полностью принадлежат другому множеству сущностей. Множество с таким ключом называется слабым множеством сущностей.
Появление слабых множеств сущностей связано с двумя основными причинами. Во-первых, часто множества сущностей выстраиваются в иерархию. Когда сущности множества Е являются составными частями сущностей множества F, возможно, что имена сущностей Е не уникальны до тех пор, пока не будет учитываться имя той сущности из F, которой подчинена сущность из Е.
Во-вторых, слабые множества сущностей могут быть результатом использования множеств связующих сущностей, которые вводятся для устранения многосторонних связей. Эти множества сущностей часто не имеют собственных атрибутов, их ключи формируются из атрибутов, являющихся ключевыми для множеств, с которыми они связаны.
Пример 4.24.
Данный пример иллюстрирует описание иерархии, которая отображается с использованием слабых множеств сущностей. В цехе может работать несколько бригад, которые обозначаются "бригада 1", "бригада 2" и т.д. Но так же могут обозначить свои бригады и другие цеха, поэтому атрибут номер не является ключом для бригад. Для определения уникального имени бригады необходимы название цеха, которому она принадлежит, и номер. Такая ситуация изображена на рис. 61. Ключ для слабого множества сущностей Бригады состоит из его собственного атрибута номер и атрибута название единственного цеха, с которым данная бригада находится в связи Часть_ от типа "многие-к-одному".
Ключевые атрибуты для слабого множества сущностей нельзя получить произвольным образом. Если Е– слабое множество сущностей, то каждое из множеств F, поставляющих один ключевой атрибут для Е или более, должно быть соединено с Е связью R. Кроме того, необходимо выполнить следующие условия:
1. R должно быть бинарной связью типа "многие-к-одному" между E и F.
2. Атрибуты F, используемые в ключе для Е, должны быть ключевыми атрибутами множества F.
3. Если F само является слабым, атрибуты F, используемые в ключе для Е, могут быть атрибутами множества сущностей, с которым F соединено связью типа "многие-к-одному.
4. Если есть несколько связей типа "многие-к-одному" между Е и F, эти связи можно использовать для получения копий ключевых атрибутов F, позволяющих сформировать ключ для Е. Заметим, что сущность е из Е может быть связана с многими сущностями в F посредством различных связей из Е. Поэтому ключи многих различных сущностей из F могут появляться в ключевых значениях, идентифицирующих отдельную сущность е из Е.
Для обозначения слабого множества сущностей и описания его ключевых атрибутов принимаются следующие соглашения.
1. Слабое множество обозначается двойным прямоугольником.
2. Связи типа "многие-к-одному" слабого множества с другими множествами сущностей, поставляющими для него ключевые атрибуты, обозначаются двойными ромбами.
3. Если множество сущностей поставляет атрибуты для собственного ключа, эти атрибуты подчеркиваются.
Эти соглашения суммируются в виде правила:
Множество сущностей с двойной границей является слабым. Его ключ состоит из его собственных подчеркнутых атрибутов (если таковые имеются) и ключевых атрибутов тех множеств, с которыми данное слабое множество соединено связями типа "многие-к-одному", имеющими двойную границу.
В объектно-ориентированных системах вопрос о поиске ключа никогда не возникает, всегда можно построить ключ путем описания атрибута или атрибутов, хотя это и необязательно. Объект обладает свойством "целостности объекта" и в результате имеет адрес, по которому его можно найти, a ID объекта уникальным образом отличает один объект от другого даже тогда, когда их невозможно различить по значениям их атрибутов или связям. А E/R-модель "ориентирована на значение", и сущности различимы только по связанным значениям их атрибутов. Поэтому нужно всегда учитывать, что в E/R-моделях сущности любого множества можно различать только по значениям, не обращаясь ни к какой "идентичности объектов".