Суперклассы и подклассы типов сущностей
Суперкласс – тип сущности, включающий разные подклассы, которые необходимо представить в модели данных.
Подкласс – подкласс является типом сущности, который исполняет отдельную роль, а также является членом суперкласса. В некоторых случаях тип сущности может иметь несколько разных подклассов.
Существует две причины введения понятий суперклассов и подклассов в ER-модель. Во-первых, это позволяет избежать повторного описания сходных понятий, что сэкономит время проектировщика и повысит читабельность ЕR-диаграмм. Во-вторых, при проектировании в базы данных включается больше семантической информации в форме, более привычной для многих людей.
Символ принадлежности множеству (C) изображается на каждой линии, соединяющей подкласс с кружком, указывает направление связи «подкласс/суперкласс».
Связь между суперклассом и любым его подклассом называется связью "суперкласс/подкласс". Каждый член подкласса является членом суперкласса. Другими словами, член подкласса является сущностью суперкласса и в то же время играет собственную отдельную роль. Связь между суперклассом и подклассом относится к типу "один к одному" (1:1). Некоторые суперклассы могут содержать перекрывающиеся подклассы. Например, сотрудник может быть одновременно менеджером и торговым агентом. В этом примере подклассы Manager и Sales_Personnel. являются перекрывающимися подклассами суперкласса Staff. Однако не каждый член суперкласса обязательно должен быть членом какого-либо подкласса - например, это могут быть рядовые сотрудники, не играющие какой-либо особой роли в организации.
Суперклассы и подклассы могут использоваться с целью исключения описания различных типов персонала с (возможно) разными атрибутами внутри одной сущности. Если все атрибуты сотрудников и особые атрибуты для выполнения отдельных работ будут описаны в одной сущности Staff, то это может привести к появлению большого количества неопределенных значений (NULL) атрибутов, описывающих отдельные виды работ.
Можно также показать связи, которые имеются только для отдельных групп работников (подклассов), но не для всех сотрудников в целом. Так, подкласс Sales_Personnel может иметь отдельные связи, которые не подходят для всех сотрудников, например связь Re-quires (Требует) между сущностями Sales Personnel и Car (Автомобиль).
Наследование атрибутов
Как упоминалось выше, сущность в подклассе представляет тот же объект реального мира, что и ее суперкласс и может обладать атрибутами, как связанными с суперклассом, так и специфическими для данного подкласса. Например, подкласс Sales Personnel обладает всеми атрибутами суперкласса Staff (т.е. атрибутами Staff-No, Name, Address и ООВ), а также специфическими атрибутами подкласса Sales=Personnel (т.е. атрибутами Car_Allowance и Sales_Area).
Подкласс также является сущностью, а потому может иметь свои собственные пoдклассы. Сущность, ее подклассы, подклассы данных подклассов и так далее - все это называется иерархией типа (type hierarchy). Иерархии типов могут иметь разные названия: иерархия специализации (specialization hierarchy) - например, подкласс Manager является специализацией суперкласса Staff; иерархия генерализации (generalization hierarchy) - например, суперкласс Staff является генерализацией подкласса Manager; иерархия принадлежности (IS-A hierarchy) - например, менеджер (подкласс Manager) является сотрудником (принадлежит суперклассу Staff).
Специализация
Специализация – процесс увеличения различий между отдельными членами типа сущности за счет выделения их отличительных характеристик.
При выявлении набора подклассов некоторого типа сущности выполняется также выделение специфических для каждого подкласса атрибутов (в случае необходимости), а также выделение любых связей, существующих между каждым подклассом и другими типами сущностей или подклассами (также в случае необходимости).
Обратите внимание на то, что на ЕRR-диаграмме могут быть указаны связи, которые применимы только к отдельным подклассам. Например, подкласс Manager связан с сущностью Branch посредством связи Manages, в то время как сущность Staff связана с сущностью Branch посредством связи IsAllocated.
Подкласс с несколькими суперклассами называется совместно используемым подклассом (shared subclass). Подобный процесс называется множественным наследованием(multiple inheritance).
Генерализация
Генерализация – процесс сведения различий между сущностями к минимуму путем выделения их общих характеристик.
Процесс генерализации можно рассматривать как противоположный процессу специализации.
Существуют ограничения, накладываемые на процедуры специализации и генерализации.
Ограничение непересечения - если подклассы некоторой специализации не пересекаются, то каждая отдельная сущность может быть членом только одного из подклассов данной специализации.
Для представления непересекающейся (disjoint) специализации используется символ "d", который располагается в центре кружка, соединяющего подклассы данного суперкласса.
Подклассы видов принятых соглашений о найме (Full_Time_Permanent и Part_Time_TempOrary) являются непересекающимися. Этот значит, что сотрудник может установить с компанией либо соглашение о полной постоянной занятости, либо соглашение о частичной временной занятости.
Если подклассы специализации пересекаются, в таком случае сущность может быть членом сразу нескольких подклассов специализации. Для представления пересекающейся (nondisjoint) специализации используется символ "о", который располагается в центре кружка, соединяющего подклассы данного суперкласса. Подклассы специализации служебных ролей (Manager, Secre-tary, Sales_Реrsоnnеl) являются пересекающимися. В данном примере это значит, что сотруднк может быть одновременно и менеджером (т.е. членом подкласса Manager), и торговым агентом (т.е. членом подкласса Sales_Personnel).
Второе ограничение специализации называется ограничением участия (participation constraint), оно может быть полным или частичным. Специализация с полным участием означает, что каждая сущность суперкласса должна быть членом подкласса этой специализации. Для обозначения полного участия между суперклассом и кружком специализации проводят двойную линию. Специализация типов соглашений о найме характеризуется полным участием, при котором каждый сотрудник компании должен установить с ней соглашение о полной постоянной или частичной временной занятости.
Специализация с частичным участием означает, что сущность не обязательно должна быть членом любого подкласса этой специализации. Для обозначения частичного участия между суперклассом и кружком специализации проводят одинарную линию. Например, специализация служебных ролей характеризуется частичным участием, при котором сотрудник не обязательно должен выполнять одну из дополнительных служебных ролей - менеджера (т.е. быть членом подкласса Manager), секретаря (т.е. быть членом подкласса Secretary) или торгового агента (т.е. быть членом подклассаSales _personnel).
Категоризация
Категоризация – моделирование одного подкласса со связью, которая охватывает несколько разных суперклассов.
В некоторых ситуациях может потребоваться смоделировать связь "суперкласс/подкласс", включающую сразу несколько разных суперклассов. В этом случае создаваемый подкласс будет называться категорией (category).
Категория Property_owner связана с двумя суперклассами с разными типами сущности, а именно с Person и Business. Категория Property связана с двумя другими, но также различными суперклассами, а именно с Property_for_Sale и Property_for_Rent. Линия, соединяющая подкласс-категорию с кружком категоризации, помечается символом принадлежности множеству (C), а в кружок категоризации помещается символ объединения (U).
Как и операция специализации/генерализации, операция категоризации может быть дополнительно детализирована с учетом полного или частичного участия сторон. При полном участии каждый экземпляр всех суперклассов должен быть представлен в данной категории, что обозначается двойной линией, соединяющей подкласс-категорию с кружком категоризации. При частичном участии это ограничение устраняется и всем экземплярам всех суперклассов присутствовать в данной категории не обязательно, что обозначается одинарной линией, соединяющей подкласс-категорию с кружком категоризации.