- •Новосибирский государственный университет экономики и управления
- •«Проектирование информационных систем» Раздел «Моделирование и проектирование данных»
- •Новосибирск 2009
- •1. Концепции er-модели
- •Примеры сущностей с физическим и концептуальным существованием
- •Способы представления сущностей на диаграмме
- •Представление атрибутов на диаграммах
- •1.3. Типы связей
- •Представление связей на диаграммах
- •1.4. Атрибуты связей
- •Date_View и Comments
- •2. Структурные ограничения
- •2.1. Показатель кардинальности
- •Связи «один к одному»
- •Связь „один ко многим"
- •Связи "многие ко многим"
- •2.2. Степень участия
- •3. Проблемы er-моделирования
- •3.1. Ловушки разветвления
- •3.2. Ловушки разрыва
- •4. Eer-модель
- •4.1. Суперклассы и подклассы типов сущностей
- •4.2. Наследование атрибутов
- •4.3. Специализация
- •4.4. Генерализация
- •4.5. Ограничения, накладываемые на процедуры специализации и генерализации
- •4.6. Категоризация
4.6. Категоризация
Категоризация: моделирование одного подкласса со связью, которая охватывает несколько разных суперклассов.
Каждая связь "суперкласс/подкласс" (включая совместно используемые подклассы) в иерархии специализации/генерализации обладает единственным и отличным от других суперклассом. Например, совместно используемый подкласс Sales Trainee (см. рис. 4.3) имеет две разные связи типа "суперкласс/подкласс", каждая из которых включает единственный суперкласс. Однако в некоторых ситуациях может потребоваться смоделировать связь "суперкласс/подкласс", включающую сразу несколько разных суперклассов. В этом случае создаваемый подкласс будет называться категорией (category) (Elmasri, 1994).
Например, на рис. 4.4 показаны две категории Property Owner и Property. Категория Property Owner связана с двумя суперклассами с разными типами сущности, а именно с Person и Business. Категория Property связана с двумя другими, но также различными суперклассами, а именно с Property_for_Sale и Property_for_Rent. Линия, соединяющая подкласс-категорию с кружком категоризации, помечается символом принадлежности множеству (), а в кружок категоризации помещается символ объединения (u).
Рис. 4.4. Категории Property Owner и Property
Подкласс категории обладает выборочным наследованием (selective inheritance). Это означает, что каждый экземпляр сущности категории наследует атрибуты только одного суперкласса. Например, на рис. 4.4 каждая сущность типа Property Owner может наследовать атрибуты только суперкласса Person (Name, Address и Tel No) или только суперкласса Business (BName, BAddress, Tel_No и Fax No).
Как и операция специализации/генерализации, операция категоризации может быть дополнительно детализирована с учетом полного или частичного участия сторон. При полном участии каждый экземпляр всех суперклассов должен быть представлен в данной категории, что обозначается двойной линией, соединяющей подкласс-категорию с кружком категоризации. При частичном участии это ограничение устраняется и всем экземплярам всех суперклассов присутствовать в данной категории не обязательно, что обозначается одинарной линией, соединяющей подкласс-категорию с кружком категоризации. Например, категория Property_Owner характеризуется частичным участием, так как не все экземпляры суперклассов Person и Business должны быть представлены в этой категории. В то же время категория Property характеризуется полным участием, поскольку каждый член суперклассов Property_for_Sale и Property_for_Rent является членом этой категории.
Если категория характеризуется полным участием (например, как категория Property), то существует возможность представления сущностей с помощью операций специализации/генерализации. Хотя выбор конкретного используемого варианта остается за разработчиком, тем не менее, операции специализации/генерализации целесообразнее применять для представления сущностей одного типа, чтобы они могли совместно использовать наибольшее количество атрибутов, включая первичный ключ. Таким образом, представление сущности Property_Owner выгоднее сохранять в виде категории, а представление сущности Property эффективнее осуществлять с помощью средств специализации/генерализации — как показано на рис. 4.5.
Рис. 4.5. Пример специализации/генерализации сущности Property