Базы данных

Моделирование объединений с помощью категорий


Последнее расширение этой модели данных состоит в том, чтобы позволить классу сущностей быть подмножеством объединения суперклассов. Такая ситуация может возникнуть, когда сущность является членом подкласса и членом множества суперклассов. В информационной системе BigHit Video этот случай может возникнуть при расширении деятельности предприятия, когда помимо проката будет осуществляться и продажа видеокассет. В рамках одной транзакции клиент может взять напрокат несколько видеокассет или приобрести несколько других позиций из каталога. Квитанция о реализации для транзакции клиента включает в себя детали реализации, присущие или прокату, или покупке. На 3.5 отображена EER-диаграмма для этой ситуации.

 Символ наследования (указывающий вниз) на 3.5 расположен на двойной линии, соединяющей подкласс Transactionltem с кружком специализации, внутри которого находится буква “u” (union, объединение). Как и на 3.3, двойная линия означает ограничение полноты, т.е. каждая транзакция должна быть или прокатом, или продажей.

Два суперкласса, Rental и Sale, также соединены с кружком специализации. Класс Rental в точности повторяет аналогичный класс на 2.8 и представляет операцию проката видеофильма клиентом. Класс сущностей Sale представляет продажу некоторого количества определенной позиции инвентарной описи.

Говорят, что класс сущностей Transactionltem имеет тип объединения (union type) или называется категорией (category). Сущность класса Transactionltem должна быть членом одного и только одного из своих суперклассов. Категория отличается от класса сущностей тем, что, в частности, сущности в категории не имеют одинакового для них всех ключевого атрибута. Сущность Rental получает свой ключ от ключевого атрибута videold связанной сущности класса Videotape. Сущность Sale получает свой ключ от ключевого атрибута itemld связанной сущности класса Inventoryltem.

Комментарии закрыты