Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Белобжеский_Лекции_по_ББД.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
5.5 Mб
Скачать

Представление многозначных атрибутов при помощи слабых сущностей

Многозначные атрибуты представляются в модели «сущность—связь» путем создания новой слабой сущности и построения связи вида «один ко многим». В качестве примера на рис. 3.9, а изображено представление многозначного атри­бута ДоверенноеЛицо сущности КЛИЕНТ. Создается новая сущность под с именем ДОВЕРЕННОЕ_ЛИЦО с единственным атрибутом ДоверенноеЛицо. Связь между сущностями ДОВЕРЕННОЕ_ЛИЦО и КЛИЕНТ имеет вид «один ко многим». Созданная таким образом сущность должна быть слабой, поскольку она логически зависит от сущности, имеющей многозначный атрибут.

На рис. 3.9, б изображено представление многозначного составного атрибута Адрес. Новая слабая сущность АДРЕС содержит всю совокупность атрибутов, а именно атрибуты Улица, Город, Штат и ПочтовыйИндекс.

Подтипы сущностей

Некоторые сущности имеют необязательные наборы атрибутов; эти сущности час­то представляются с помощью подтипов (subtypes) (Подтипы были добавлены в модель «сущность—связь» после публикации оригинальной статьи Чена, и они являются частью того, что называется расширенной моделью «сущность—связь»).

Рассмотрим, например, сущ­ность КЛИЕНТ с атрибутами НомерКлиента, ИмяКлиента и СуммаКОплате. Предполо­жим, что клиент может быть физическим лицом, товариществом или корпорацией и что необходимо указывать некоторую дополнительную информацию, завися­щую от типа клиента. Пусть эта информация имеет следующее содержание:

ФИЗИЧЕСКОЕ_ЛИЦО: Адрес, НомерСоциальнойСтраховки

ТОВАРИЩЕСТВО:ИмяУправляющегоПартнера,Адрес,ИдентификационныйНалоговый-Номер

КОРПОРАЦИЯ: КонтактноеЛицо, Телефон, ИдентификациониыйНалоговыйНомер

Одна из возможностей — отнести все эти атрибуты к сущности КЛИЕНТ, как показано на рис. 3.10, а. В этом случае, однако, некоторые атрибуты будут непри­менимы. Например, такой атрибут, как имя управляющего партнера, не имеет смысла для индивидуального или корпоративного клиента, и таким образом, он не может иметь какого-либо значения.

В модели, более близкой к реальной ситуации, вместо этого будет определено три подтипа сущностей, как показано на рис. 3.10, б. Здесь сущности ФИЗИЧЕСКОЕ_ ЛИЦО, ТОВАРИЩЕСТВО и КОРПОРАЦИЯ изображены как подтипы сущности КЛИЕНТ. Последняя, в свою очередь, является подтипом (supertype) для сущностей ФИЗИЧЕСКОЕ_ЛИЦО, ТОВАРИЩЕСТВО и КОРПОРАЦИЯ.

Символ е рядом с линиями связи указывает, что сущности ФИЗИЧЕСКОЕ_ЛИЦО, ТОВАРИЩЕСТВО и КОРПОРАЦИЯ являются подтипами сущности КЛИЕНТ. Каждый подтип должен принадлежать надтипу КЛИЕНТ. Кривая линия с цифрой 1 рядом показывает, что сущность КЛИЕНТ должна принадлежать к одному и только одно­му подтипу. Это означает, что подтипы являются взаимоисключающими и что требуется только один из них.

Сущности со связью типа «ЕСТЬ» должны иметь один и тот же идентифика­тор, поскольку они представляют различные аспекты одного и того же. В данном

случае таким идентификатором является НомерКлиента. Сравните эту ситуацию со связью типа «ИМЕЕТ», показанной на рис. 3.3, где сущности представляют различные вещи.

Иерархии генерализации имеют специальную характеристику, называемую наследованием (inheritance), которая означает, что подтипы классов сущностей наследуют атрибуты от надтипа. Сущность ТОВАРИЩЕСТВО, к примеру, наследует атрибуты ИмяКлиента и СуммаКОплате от сущности КЛИЕНТ.

Причины, по которым подтипы используются в моделировании данных, отли­чаются от причин, по которым они используются в объектно-ориентированном программировании. Фактически, в модели данных они применяются с единствен­ной целью: избежать ситуаций, при которых некоторые атрибуты должны иметь нулевые значения. Например, на рис. 3.10, а, если атрибуту НомерСоциальнойСтра-ховки присвоено значение, то остальные четыре атрибута должны быть равны нулю. Эта ситуация наиболее ярко проявляется в медицинских приложениях: представьте себе, например, что пациенту мужского пола задается вопрос о коли­честве беременностей. Нулевые значения более детально обсуждаются в главе 6.