Теория и практика построения баз данных (1088289), страница 32
Текст из файла (страница 32)
4.29, а. Некоторые атрибуты объекта СОТРУДНИК относятся ко всем сотрудникам, а некоторые — только к тем сотрудникам, которые являются менеджерами. Объект на рис. 4.29, а не слишком точно отражает действительность, поскольку атрибуты, свойственные менелжерам, не подхолят для сотрудников, не являющихся менеджерами.
Более удачная модель показана на рис. 4.29, б. Здесь объект СОТРУДН ИК содержит объект подтипа МЕНЕДЖЕР. Все атрибуты, относящиеся к менелжерач, перене- Типы объектов 153 Отчет с назначении на проект Дом Абернати Дж, Смит 11/11/1099 Название проекта Менеджер проекта Начало проекта Окончание проекта Архитектор Телефон Номер офиса Б. Джексон 232-8878 Ъ1133 Данные сотрудника Данные менеджера 152 Глава 4. Семантическая объектная модель сены в объект МЕНЕДЖЕР. Сотрудники, не являющиеся менеджерами, имеют один экземпляр объекта СОТРУДНИК и ни одного экземпляра объекта МЕНЕДЖЕР. Сотрудники-менеджеры имеют по одному экземпляру объектов СОТРУДНИК и МЕНЕДЖЕР.
В этом примере объект СОТРУДНИК называется родительским обьектом (рагепс оЪ)есс), или объектом надтипа (зцреггурс оЬ)есс), а объект МЕНЕДЖЕР называется обьектпом подтипа (ьцЬсуре оЬ)ест). Начало работы по назначению 12/15/2001 Окончание работы по назначению 3/15/2002 НссгаК Максимальное количество часов е бюджете 345 Максимальная стоимость труда $27,500 Максимальная стоимость материалов $17,500 Рис. 4.28. Ассоциативный объект НАЗНАЧЕНИЕ: а — пример отчета о назначении; б — объект НАЗНАЧЕНИЕ с семантическим обьектным идентификатором Первым атрибутом подтипа янляется родительский объект, обозначенный индексом Р. Указание родительского атрибута является обязательным всегда.
Идентификаторы у подтипа те же, что и у родителя. На рис. 4.29 атрибуты НоиерСотрудника и ИмяСотрудника являются идентификаторами как объекта СОТРУДНИК, так и объекта МЕНЕДЖЕР. Атрибуты подтипа показываются с гюмощью индексов О.БТ или 1.ЯТ. Первая цифра (О или 1) — это минимальное кардинальное число подтиг1а. Если оно равно О, подтип является необязательным, а если 1, то подтип является обязательным. (Обязательный подтип не имеет смысла для этого примера, но необ- ходимость в нем появится в последую1цих. более сложных случаях.) Буквы ЯТ (зцЬгуре — подтип) указывают на то, что атрибут является подтипом, или атрибутом типа «ЕСТЬ»ъ Объекты вида родитель/подтип обладают важной характеристикой, называемой наследованием.
Подтип приобретает, или наследует, все атрибуты своего родителя, и поэтому объект МЕНЕДЖЕР наследует все атрибуты объекта СОТРУДНИК. Вдобавок родитель приобретает все атрибуты своих подтипов, и сотрудник, являю1цийся менеджером, приобретает все атрибуты менеджера. Семантический объект может содержать более одного атрибута подтипа. На рис. 4.30 показан второй вариант объекта СОТРУДНИК, который имеет два атрибута полтина — МЕНЕДЖЕР и ПРОГРАММИСТ.
Посколъку оба этих атрибута являются необязательными, объект СОТРУДНИК может иметь, один или оба эти подтипа пли не иметь ни одного. Это означает, что некоторые сотрудники не являются ни менеджерами, ни программистами, некоторые являются менеджерами, но не являются программистами, некоторые являются программистами, но не являются менеджерами, а некоторые одновременно являются программистами и менеджерами. б Рис.
4.29. Необходимость введения псдтипа МЕНЕДЖЕР: а — объект СОТРУДНИК без подтнпа; б — объект СОТРУДНИК с псдтипсм МЕНЕДЖЕР Иногда подтипы исключают друг друга. То есть транспортное средство может быть легковь1м автомобилем или грузовиком, но не тем и другим одновременно. Клиент может быть индивидуальным клиентом, товариществом или корпорацией, но только одним из этих трех типов. Когда подтипы исключают друг друга, они помещаются в группу подтипов, и группе присваивается индекс в формате ХХ.4.. Х вЂ” это минимальное кардинальнос число, равное О или 1, в зависимости Типы объектов 155 154 Глава 4. Семантическая объектная модель от того, является ли группа подтипов обязательной.
У и Х указывают количество атрибутов в группе, которым разрешается иметь значение. У вЂ” минимальное количество, Х вЂ” максимальное. На рис. 4.31, а три типа клиентов изображены как группа подтипов. Индекс группы, 0.1.1, означает, что подтип не требуется, но если он существует, в группе должен существовать минимум один и максимум один подтип (иначе говоря, ровно один).
Заметьте, что каждый из подтипов имеет инлекс 05Т, то есть все они являются необязательными, как и должно быть. Если бы все они были обязательными, максимальное количество атрибутов было бы 3, а не 1. Эта запись достаточно надежна, чтобы предусмотреть ситуации, когда обязательными являются три из пяти или семь из десяти подтипов. Рис. 4.30.
Обьект СОТРУДНИК с двумя подтипеми Можно смоделировать и более сложные ограничения, если ввести вложенные подтипы. Группа подтипов на рис. 4.31, б моделирует ситуацию, когда корпорация может быть либо налогооблагаемой, либо не налогооблагаемой. Если корпорация не является налогооблагаемой, это должна быть либо правительственная организация, либо школа. В этом примере показано только несколько необьектных атрибутов. В реальности, если бы требовалась такая сложная структура, в ней, скорее всего, было бы больше атрибутов. Обьекты вида архетип/версия Последний тип объектов — это объекты вида архетип/версия (агсЬегуре/уегз1оп оЪ)есгз). Объект-архетип (агсЬесуре оЬ)есс) — это семантический объект, порождающий другие семантические объекты, которые представляют версии 1уегебоп оЬ)есгз), выпуски или издания архетипа. Например, на рис. 4.32 объект-архетип УЧЕБНИК порождает обьекты-версип ИЗДАНИЕ.
Согласно этой модели, атрибуты Название, Автор и Издательство принадлежат объекту УЧЕБНИК, а атрибуты Порядковыйноиериздания, ДатаВыхода и количествоетраниц — объекту изДАние. б Рис. 4.31. Взаимоисключающие (а) и вложенные (б) подтипы Идентификационная группа объекта ИЗДАНИЕ состоит пз двух частей; УЧЕБНИК » ПорядковыйНоиерИздания. Это типичный образец идентификатора объекта-версии. Одна часть идентификатора содержит объект-архетип, а вторая часть — это »ростой атрибут, идентифицирующий версию архетипа. На рнс. 4.33 изображен сгце один пример объектов вида архетип/версия. 156 Глава 4. Семантическая объектная модель Рис. 4.32.
Пример объекта вида архетип/версия Рис. 4.33. Еще один пример объекта вида архетипУ«врсия Сравнение семантической объектной модели и модели «сущность — связь» Модель сущность — связь» и семантическая объектная модель имеют как сходства, так и различия. Они похожи тем, что обе являются инструментами для уяснения и документирования структуры пользовательских данных. Обе они имеют своей целью моделирование структуры вещей в мире пользователей в связей между ними.
Принципиальное различие между двумя моделямп заключается в ориентации. Модель «сущность — связь» в качестве базовой концепции рассматривает конпспцию суи1иости. Сущности и пх связи выступают, если хотите, как атомы»тодели данных. Эти атомы могут быть организованы в структуры, которые модель «сущность — связь» называет пользовательскими првгвтаатввиями (озсг темь). Пользовательские представления — это комбинации сущностей, строение которых напоминает строение семантических обьектов.
Базовое понятие семантической объектной модели — семантический объект. Набор семантических объектов в модели данных — зто карта структуры вещей, которые пользователи считают существенными. Эти объекты являются атомами мира пользователей и представляют собой наименьшие различимые единицы, которыми пользователи желают оперировать. Они могут разбиваться на более мелкие части внутри СУБД (или в приложении), но зтн более мелкие части не представляют интереса для пользователей. С точки зрения семантической объектной модели, сущности, в том виде как они определены в модели «сущность — связь», не существуют.
Они являются лишь фрагментами, кусками реальных сущностей. Фактически, единственные Сравнение семантической объектной модели 157 сущности, которые имеют смысл для пользователей, — зто семантические объекты. По-другому можно выразить это, сказав, что семантические объекты являются семантически самодостаточньгми, или семантически завершенньни Рассмотрим пример. На рис. 4.34 представлены четыре семантических объекта: ЗАКАЗ, КЛИЕНТ, ПРОДАВЕЦ и ТОВАР. Когда пользователь говорит; «Покажите мне заказ № 2000», он имеет в виду, что следует показать объект ЗАКАЗ так, как он смоделирован на рис.
4.34. Сюда входят, среди прочего, данные о покупателе. Поскольку информация о покупателе является частью заказа, объект ЗАКАЗ содержит объект КЛИЕНТ. Рис. 4.34. Объект ЗАКАЗ и связанные с ним семантические обьекты Рис. 4.33. Модель «сущность — связь» дпя объекта ЗАКАЗ и КЛИЕНТ 158 Глава 4. Семантическая объектная модель Резюме 159 Па рис. 4.35 изображена модель «сущность — связь» для тех же данных, которая содержит сущности ЗАКАЗ, КЛИЕНТ, ПРОДАВЕЦ, ТОВАР и СКЛАД. Сущность ЗАКАЗ имеет атрибуты НомерЗаказа, Дата, ПромежуточныйИтог, Налог и Итог. Теперь, если пользователь попросит: «Покажите мне заказ № 2000», он будет разочарован и, скорее всего, задаст вопрос: «А где же остальные данные?» То есть сущность ЗАКАЗ нс соответствует пользовательскому представлению о заказе как об отдельном феномене.
Эта сущность является лишь частью реального заказа. В то же время, когда пользователь (возможно, даже тот же самый) попросит: «Покажите мне покупателя № 12345», он будет иметь в виду, что следует показать все данные, которые на рис. 4.34 относятся к покупателю, включая имя клиента, все составляющие адреса и все заказы этого покупателя. Сущность КЛИЕНТ на рис. 4.35 имеет только атрибуты ИмяКяиента, Улица, Город, Штат и Индекс. Если бы пользователю, который попросил: «Покажите мне покупателя АВС, предоставили только эти данные, он был бы снова разочарован: «Нет, это только часть того, что мне нужно».
С точки зрения семантической объектной модели, в сущностях, как они представлены в модели «сущность †свя», нет необходимости. Семантические объекты можно сразу преобразовывать в структуру базы данных, никак не рассматривая ЕК-сугцности. Они являют собой, так сказать, недостроенные дома, воздвигнутые в процессе ухода от парадигмы компьютерных структур данных к парадигме пользователей. Еще одно отличие состоит в том, что семантические объекты содержат в себе больше метаданных, чем сущности.
В семантической объектной модели на рис. 4.34 отражено то, что НомерКлиента является уникальным идентификатором в представлении пользователей. Он может использоваться нли не использоваться в качестве идентификатора в соответствующей таблице, но данный факт не существенд ля модели данных. Мьг также можем видеть, что НомерКлиента является для пользователей неуникальным идентификатором. Более того, семантическая объектная диаграмма указывает на тот факт, что существует семантическая группа атрибутов под названием Адрес. Эта группа содержит друг»ге атрибуты, составляющие вместе адрес.