Теория и практика построения баз данных (1088289), страница 30
Текст из файла (страница 30)
Оеобьектный атрибут (иоп-ОЬ)ссс асспЬисс)— это простой или групповой атрибут. Типы объектов 138 10/12/2001 Номер 10/12/2001 Едв 10/12/2001 Твпвфон 10/12/2001 Напог $99.00 $37.55 $2.50 $15.00 10/13/2001 Номер 10/13/2001 Едв 1О/13/2001 Твпвфон $99.00 $4?.90 $15,00 Сумма к оплата $315.95 Композитные объекты 138 Глава 4. Семантическая объектная модель Простые объекты Простой обьект (5!шр! е оЬ)ест) — это семантический объект, имеющий только однозначные, простые или групповые атрибуты. Пример такого объекта показан на рис.
4.14. В левой части этого рисунка представлены два экземпляра отчета под названием Ярлык для оборудоеа//ия. Такие ярлыки, накленваемые на офисное оборудование, помогают вести его учет. Их можно рассматривать как отчеты. На рис. 4.14, б изображен простой объект ОБОРУДОВАНИЕ, с помощью которого моделируется ярлык для оборудования. Атрибуты объекта включают в себя то, что указано на ярлыке: ИнвентарныйНомер, Описание, ДатаПриобретения и Стоимость.
Обратите внимание, что ни один из этих атрибутов нс является многозначным, как ни один из них нс является и объектным. Следовательно, объект ОБОРУДОВАНИЕ является простым объектом. в б Рис. 4.14. Пример простого объекта: в — отчеты, основанные нв простом объекте; б — простой объект ОБОРУДОВАНИЕ Композит//ый объект (сошроз1те оЬ)ест) — это семантический объект, содержащий один или несколько многозначных, простых или групповых атрибутов, но не имеющий объектных атрибутов. Счет за услуги гостиницы, изображенный на рис.
4.15, а, демонстрирует потребность в композитном объекте. Этот счет содержит данные, относящиеся к счету в целом: НомерСчета, ДатаПрибытия, ИмяКпиента и СуммаКОплате. Кроме того, в нем имеется повторяюшаяся группа атрибутов, которая описывает предоставленные клиенту услуги. Каждая /руппа включает в себя атрибуты Датабказанияуспугк, Описаниеуслуги и Стоимость. На рис.
4.15, б показана диаграмма объекта СЧЕТ ИЗ ОТЕЛЯ. Атрибут Строка- Расходов — это групповой атрибут, имеющий максимальное кардинальное числа !ч, что означает, что группа !Датабказанияуслуги, Описаниеуслуги и Стоимость! может появляться многократно в одном и том же экземпляре семантического объекта СЧЕТ ИЗ ОТЕЛЯ. Строка расходов не моделируется как самостоятельный семантический объект, а вводится как атрибут объекта СЧЕТ ИЗ ОТЕЛЯ.
Такая организация оправдана тем, что гостиница не рассматривает каждую строку расходов в счете клиента как нечто отдельное, и строки расходов не имеют собственных идентификаторов. Служагцие не вводят данные в строку расходов иначе как в контексте счета. Сна- чала служащий вводит данные для счета /зъ 1234, а затем, в контексте данного счета, вводит суммы.
Бывает и так, что служаьций берет уже существующий счет и вносит в него дополнительныс расходы. ОТЕЛЬ ОЯАНОУ/ЕУУ Си Блефе, Калифорния Номер счета: 1234 Дата прибытия: 10/12(2001 Имв клиента: Мэри Джонс в б Рис. 4.15. Пример компоэитного объекта; в — отчет, основанный нв ксмпоэитнсм объекте; б — компоэитный объект СЧЕТ Из ОТЕЛЯ Минимальное кардинальное число атрибута СтрокаРасходоа равно О, что означает, что объект СЧЕТ ИЗ ОТЕЛЯ может существовать без единой строки расхолов. Это позволяет открывать счет в тот момент, когда клиент вселяется в тосттшцу, и до того, как появятся какие-либо расходы. Бели бы минимальное кардиналь/юе число равнялось 1, то нельзя было бы открыть счет, прежде чем будет начислена хотя бы одна сумма.
Решение об этом должно приниматься в свете имеющегося делового регламента. Политика отеля может заключаться в том, чтобы не открывать счет, пока не будут начислены какие-либо расходы. В таком случае минимальное кардинальное число атрибута Строкарасходоа должно равняться 1. Композитный объект может иметь более одного многозначного атрибута. На рис. 4.16, а показан счет за услуги гостиницы, в котором имя клиента и стоимость услуг представлены мцогозначнымп атрибутами.
Каждая из этих групп независима от другой. Например, второе имя в группе ИмяКлиента не связано логически со второй строкой расходов. На рис. 4.16, б представлена объектная диаграмма для счета, показанного ца рис. 4,16, а. Атрибут ИмяКлиента показан как многозначный.
Он не помещен в скобку Строкарасходоа, поскольку повторения имен не имеют ничего обгцего с повторениями услуг. Они независимы, как мы только что отметили. И простые, и групповые атрибуты могут быть многозначными. На рис. 4.16, а, например, ИмяКлиента является простым многозначным атрибутом. Одного этого достаточно, чтобы объект можно было назвать композитным. Многозначные атрибуты могут также быть вложенными.
Представьте себе, к примеру, что требуется веспт учет отлельных видов расходов в рамках одной строки, В форме на рис. 4.17, а расходы подразделяются на виды. Например, еда Типы объектов 141 Составные обьекты $99.00 $37. 55 $2.50 $15.00 Номер Еда Телефон Налог 10Л 2/2001 10/1 2/2001 10/12/2001 10/12(2001 $99.00 $47.90 $15.00 10/1 3/2001 Номер 1ОН З(2ОО1 Еда 10/13/2001 Телефон Сумме к оплате $315.95 Номер Еда Завтрак Обед $99,00 $15.25 $22.30 $37.50 $2.50 $15.00 10/12(2001 10!12/2001 Телефон Налог 10Л2/2001 10/1 2/2001 10/1 3/2001 10М 3/2001 $99.00 Номер Еда Завтрак Закуски Обед $15.25 $5.50 $22.30 $47.90 $15.00 10/13/2001 Телефон $315.95 Сумма к оплате 140 Глава 4. Семантическая объектная модель делится на завтрак, обед и ужин.
Объектная диаграмма с такими вложенными атрибутами, представленная на рис. 4.17, б, показывает, что оплата любых услуг может быль разделена на составляющие. ОТЕЛЬ ОЯАНОЧ/ЕУУ Си Блафс, Калифорния Номер счета: 1234 Дата прибытия: 10!12/2001 Имя клиента: Мэри Джонс Фред Джонс Салли Джонс а б Рис. 4.16. Композитный объект с двумя группами: е — объект СЧЕТ ИЗ ОТЕЛЯ многозначным именем клиента; б — объект СЧЕТ ИЗ ОТЕЛЯ с двумя многоэначными группами ОТЕЛЬ ОЙАНОЧ/ЕУУ Си Блафс, Калифорния Номер счета: 1234 Дата прибытия: 10П 2/2001 Имя клиента; Мэри Джонс Рис. 4.17. Компоэитный обьект с вложенными группами: а — объект СЧЕТ ИЗ ОТЕЛЯ с разновидностями услуг; б — объект СЧЕТ ИЗ ОТЕЛЯ с вложенными многозначными группами Для закрепления повторим, что композитный объект — это объект, имеющий один или несколько простых или групповых атрибутов.
Объектных атрибутов он не содержит. Составной объект (сошроппг( оЬ)есг) имеет минимум один объектный атрибут. На рис. 4.18, а показаны две различные формы для ввода данных. Одна из них используется автомобильным парком компании для учета имеюшихся транспортных средств. Во вторую форму вводятся данные о сотрудниках. Согласно этим формам, конкретное транспортное средство закрепляется не более чем за одним сотрудником, и за конкретным сотрудником может быть закреплено не более одного автомобиля.
Мы не можем определить из этих форм, должен ли каждый автомобиль закрепляться за каким-либо сотрудником и должен ли каждый сотрудник иметь автомобиль. Чтобы получить эту информацию, нам пришлось бы спросить об этом пользователей, работающих в автопарке или в отделе кадров. Предположим, мы выяснили, что сотрудник не обязан иметь транспортное средство, но каждое транспортное средство должно быть закреплено за каким-либо сотрудником.
На рис. 4.18, 6 представлены диаграммы для объектов СОТРУДНИК и ТРАНСПОРТНОЕ СРЕДСТВО. Объект СОТРУДНИК содержит в качестве одно~о из атрибутов объект ТРАНСПОРТНОЕ СРЕДСТВО, а ТРАНСПОРТНОЕ СРЕДСТВО, в свого очередь, содержит в качестве одного из атрибутов объект СОТРУДНИК. Поскольку и СОТРУДНИК, и ТРАНСПОРТНОЕ СРЕДСТВО имеют объектные атрибуты, оба они являются составными объектами. Более того, так как ни один из атрибутов не является многозначным, связь между объектами СОТРУДНИК и ТРАНСПОРТНОЕ СРЕДСТВО имеет вид «один к одному» — 1:1. На рис. 4.18, а формы ДАННЫЕ СОТРУДНИКА и ДАННЫЕ ТРАНСПОРТНОГО СРЕДСТВА включают одна другую. То есть в форме ДАННЫЕ ТРАНСПОРТНОГО СРЕДСТВА имеется поле «Закреплено за сотрудником», а в форме ДАННЫЕ СОТРУДНИКА имеется поле «Закреплен автомобиль».
Но это не всегда так: иногда связь может казаться однонаправленной. Рассмотрим отчет и форму ва рис. 4.19, б, в которых описываются два объекта ООКМ1ТОКУ (обшежитие) и 5ТООЕНТ (студент). Из отчета ООКМ1ТОКУ ОССО РАИСУ КЕРОКТ (занятость общежития) мы можем видеть, что в представлении пользователей общежитие имеет атрибуты, относящиеся как к самому общежитию — название общежития, имя ответственного жильца, телефон (Оогюйогу, Кез/деп1Аззгзтапц Рйопе), так и к проживающим в нем студентам — имя студента, номер студента, группа (51идеп1 паве, 51идеп1 Нитоег, С!355).
С другой стороны, форма с данными о студенте (51идепг Вага Гопп) на рис. 4.19, а содержит информацию, касающуюся исключгпельно самого студента, — никаких данных об обшсжитии в этой форме не имеется. (Местный адрес может быть адресом общежития, но даже если и так, этот факт явно недостаточно важен, чтобы документировать его в форме. При разработке базы данных возможность этого следует выяснить в ходе опроса пользователей.
Здесь мы предположим, что форма 51идеп1 Вага Гога не содержит информации об общежитии.) Типы объектав 143 142 Глава 4. Семантическая объектная модель б Рис. 4.18. Составные объекты со связью вида 1:1 между свойствами: а — примеры форм дпя ввода данных об автомобиле и сотруднике; б — составные объекты СОТРУДНИК и ТРАНСПОРТНОЕ СРЕДСТВО Как мы уже отмстили ранее, объектные атрибуты всегда появляются парами. Даже если формы, отчеты и запросы демонстрируют только одну сторону связи, у связи всегда имеется две стороны.