Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Структурный подход к организации баз данных

..pdf
Скачиваний:
4
Добавлен:
12.11.2023
Размер:
14.79 Mб
Скачать

Иерархическая модель, представленная на рис. 4.7, содержит еще пять записей базы данных для пациентов Мэри Джонс, Чарльза Брауна,

1111

Джон

15Ньюстриг,

 

Уайт

Нью-Йорк,Нп

 

1

 

311

Майкл

12.00.77

Удаление

 

 

 

 

Даймонд

 

камней из

 

 

 

 

почек

 

 

145

бет

01.01.77

Удаление

Пенициллин

Сыпь

 

 

Литл

 

камней из

 

 

 

 

 

 

 

желчного

 

 

 

 

 

 

 

пузыря

 

 

 

 

Рис. 4.8. Экземпляр записи

иерархической базы данных, модель которой представлена

на рис. 4.7. Запись базы данных содержит сведения

о Джоне Уайте. Здесь имеются

два экземпляра

зависимого

(порожденного) узла,

в

которых

содержатся

сведения об

операциях удаления камней из желчного пузыря и из почек

Хола Кейна, Пола Кошера и Энн Худ. Экземпляр записи базы данных для пациента Хола Кейна показан на рис. 4.9.

Рис. 4.9. Экземпляр записи иерархической базы данных, модель которой представлена на рис. 4.7. Запись базы данных содержит сведения о пациенте Холе Кейне. Имеется один экземпляр зависимого узла, в котором содержатся сведения об операции удаления желчного пузыря

Информация о ПАЦИЕНТЕ, ХИРУРГЕ, ПАЦИЕНТЕ-И-ХИРУРГЕ и ПРЕПАРАТЕ может быть представлена с помощью другой версии иерар­ хической модели данных (рис. 4.10). Корневой узел соответствует объекту

 

 

Номер

Имя

 

Уровень1

 

 

 

патента

хирурга

Корневой(исходный)

 

 

хирурга

\

 

тип узла

 

 

 

 

 

 

 

 

Уровень2 (Порожденныйтипузла)

 

 

 

 

ПАЦИЕНТ

 

 

 

 

 

 

 

Номер

Имя

Адрес

Дата

Операция Препарат,

Подочный

пациента

пациента

пациента

операции

 

назначенный

эффект

послеоперации

Рис. 4.10. Представление с помощью иерархической модели данных базы данных ХИРУРГ, в которой содержатся сведения обо всех операциях, проведенных хирургами. Здесь узел ХИРУРГ находится на более высоком уровне, чем узел ПАЦИЕНТ. Такая структура отражает намерение АБД реализовать между ХИРУРГОМ и ПАЦИЕНТОМ взаимосвязь «один ко многим»

ХИРУРГ. Для каждого хирурга имеется экземпляр корневого узла. В некоторый момент времени база данных содержит записи для хирургов

Бет Литл

(145), Дэвида Роузена (189), Чарльза Филда

(243), Майкла

Даймонда

(311) и Патриции Голд (467). Запись базы данных для

Бет Литл

(145) показана на рис. 4.11. Иерархическая

модель данных

Рис. 4.11. Экземпляр записи иерархической базы данных, которая описывается мо­

делью данных, представленной

на рис. 4.10. Запись базы данных содержит

сведения

о хирурге Бет Литл. Зависимый

(порожденный) узел имеет три экземпляра,

в которые

включены сведения о пациентах Джоне Уайте, Холе Кейне и Поле Кошере

 

позволяет представлять сведения о нескольких пациентах для каждого хирурга (см. рисунок).

Иерархические модели данных, представленные на рис. 4.7 и 4.10, отличаются ^руг от друга, хотя и являются моделями одной и той же предметной области. Различия между ними определяются способами представления взаимосвязей между объектами. На рис. 4.7. ПАЦИЕНТ находится на более высоком уровне иерархии, чем ХИРУРГ. Это озна­ чает, что АБД трактует взаимосвязь между ПАЦИЕНТОМ и ХИРУРГОМ как взаимосвязь «один ко многим». На рис. 4.10 ХИРУРГ находится на более высоком уровне иерархии по сравнению с ПАЦИЕНТОМ. Здесь АБД рассматривает взаимосвязь между ХИРУРГОМ и ПАЦИЕНТОМ как взаимосвязь «один ко многим». Выбор иерархической модели дан­ ных должен определяться операционными характеристиками. Детальное рассмотрение операционных характеристик приводится в части 3.

С помощью модели, представленной на рис. 4.12, могут быть изо­ бражены другие взаимосвязи между теми же данными. Экземпляр записи

Уробень 1

 

Номер

Имя

 

 

Корнебой. (исходный)

 

патента

хирурга

 

 

тин узла

 

хирурга

 

 

 

Уробень 2

 

| Дата операции

I

 

Уробень 3

 

 

 

 

 

 

Номер

Имя

Адрес

Операция

Препарату

Лодочный

пациента

пациента

пациента

 

назначенный

эффект

после операции

Рис. 4.12. Представление с помощью иерархической модели данных базы данных ХИРУРГ, в которой содержатся сведения обо всех днях проведения операций и обо всех операциях, проведенных в конкретный день

базы данных, описываемой моделью рис. 4.12, изображен на рис? 4.13. В этом примере для каждого экземпляра узла второго уровня имеется только один экземпляр узла третьего уровня. Однако вполне вероятно, что однажды хирург сделает операцию более чем одному пациенту. В рассматриваемой упрощенной модели имеется только по одному узлу второго и третьего уровня, хотя иерархическая модель позволяет для каждого хирурга представить несколько дат проведения операций и несколько пациентов, перенесших операцию в указанный день (см. ри­ сунок) .

Один

Один

Рис. 4.13. Экземпляр

записи иерархической базы данных, модель

которой представлена

на рис. 4.12. Запись

базы данных содержит сведения о хирурге

Бет

Литл. В

1977 г.

Бет Литл провела по одной операции в день .трижды: 1 января, 10

мая и 5

ноября.

1 января пациентом был Джон Уайт, 10 мая — Пол Кошер, 5 ноября — Хол Кейн

 

4.4.2.Включение и удаление данных

Виерархической модели на рис. 4.7 исходным узлом является ПАЦИЕНТ, а порожденным, в котором хранятся сведения о лечении пациента,— ХИРУРГ. Если один хирург оперирует более одного пациента, то сведения о хирурге дублируются для каждого пациента. Например,

взаписях базы данных (см. рис. 4.8 и 4.9) информация о хирурге с номером патента 145 (Бет Литл) является избыточной.

Вклю чение дан ны х. Экземпляр порожденного узла не может суще­

ствовать в отсутствие экземпляра исходного узла. Если иерархическая модель данных подобна представленной на рис. 4.7, то в такую базу данных невозможно включить сведения о хирурге, который не оперировал ни одного пациента.

У даление данны х. При удалении экземпляра исходного узла также удаляются и все экземпляры порожденных узлов. Например, в иерархи­ ческой модели данных, показанной на рис. 4.10, при удалении экземпляра узла ХИРУРГ одновременно удаляются и все экземпляры узлов, содер­ жащих сведения о пациентах, прооперированных данным хирургом. Это приводит к потере информации о прооперированных пациентах.

Аномалии запоминания и удаления связаны с тем, что в иерархи­ ческой модели данных взаимосвязи «многие ко многим» непосредственно не поддерживаются, а реализуется только взаимосвязь «один ко многим». Эти аномалии могут быть частично устранены за счет введения двух иерархических моделей, связанных между собой так, как показано на рис. 4.14. В первой модели данных корневым узлом является ПАЦИЕНТ, а

Рис. 4.14. Представление данных в базах данных ПАЦИЕНТ и ХИРУРГ с помощью двух иерархических моделей данных. В первой модели корневым является узел ПАЦИЕНТ, а узел ОПЕРАЦИЯ находится на втором уровне. Во второй модели корневой узел — ХИРУРГ, а узел ОПЕРАЦИЯ находится на втором уровне. Узел ОПЕРАЦИЯ первой модели соединен с узлом ХИРУРГ второй модели; узел ОПЕРАЦИЯ второй модели соединен с узлом ПАЦИЕНТ первой модели

на втором уровне расположен узел ОПЕРАЦИЯ. Во второй модели дан­ ных корневой узел — ХИРУРГ, а узел ОПЕРАЦИЯ находится на втором уровне. Узел ОПЕРАЦИЯ второго уровня первой модели связывается с корневым узлом ХИРУРГ второй модели. Узел ОПЕРАЦИЯ второго уровня второй модели связывается с корневым узлом ПАЦИЕНТ первой модели. В подобной «комбинированной» иерархической модели данных информация о дате операции и об ОПЕРАЦИИ хранится с избыточно­ стью, однако таким путем удается устранить аномалии включения и уда­ ления сведений о ПАЦИЕНТЕ и об ОПЕРАЦИИ. В системах управления базами данных, основанных на иерархической модели, проблемы избы­ точности данных решаются различными способами.

4.4.3. Достоинства модели

Главные достоинства иерархической модели данных:

наличие хорошо зарекомендовавших себя систем управления базами данных, основанных на ее применении;

•.простота понимания и использования. Пользователи систем обработки данных хорошо знакомы с иерархическими структурами;

обеспечение определенного уровня независимости данных. Так, с по­

мощью двух иерархических моделей, показанных на рис. 4.14, можно реализовать различные представления пользователей (рис. 4.15);

простота оценки операционных характеристик благодаря заранее заданным взаимосвязям.

4.4.4. Недостатки модели

Взаимосвязи «многие ко многим» в иерархической модели могут быть реализованы искусственно, но структура становится громоздкой. При этом может потребоваться хранение избыточных данных. Из-

 

 

Номер

 

Имя

Адрес

 

 

 

 

пациента

пациента

пациента

 

 

 

 

Препарат,

1

 

 

 

Лата

Операция

Подочный

Номер

Имя

 

операции

назначенный

эффект

патента

хирурга

 

 

 

послеопера-

 

хирурга

 

 

 

Представление прикладного программиста 1>

 

 

основанное на иерархических моделях данных рис. 4.14

 

 

 

Номер

 

Имя

 

 

 

 

 

патента

 

 

 

 

 

хирурга

 

 

 

 

 

хирурга

 

 

 

 

 

 

 

 

$

 

Имя

Адрес

Дата

Операция

Препарат,

Подочный

Номер

операции

назначенный эффект

пациента

пациента

пациента

 

 

послеопе^-

 

 

 

 

 

Представление

прикладного программиста 2,

 

 

основанное на

иерархических моделях данных рис. 4.14

 

Рис. 4.15. Представление прикладного программиста, которое в терминологии АЫ51 (Амери­ канский национальный институт стандартов) называется «внешней моделью» (см. рис. 1.7)

вестно, что на логическом уровне избыточность не обязательно недо­ статок, напротив, она обеспечивает простоту. Однако на физическом уровне избыточность нежелательна.

Из-за строгой иерархической упорядоченности объектов модели зна­ чительно усложняются операции включения и удаления.

Удаление исходных объектов влечет удаление порожденных. Поэто­

му выполнение операции УДАЛИТЬ требует особой осторожности.

Особенности иерархических структур обусловливают процедурность операций манипулирования данными.

Корневой тип узла является главным. Доступ к любому порожденному узлу возможен только через исходный.

4.5.СЕТЕВАЯ МОДЕЛЬ ДАННЫХ

Внастоящее время наиболее обстоятельные исследования концепций баз данных проводятся в рамках Ассоциации КОДАСИЛ (СопГегепсе Оп

Оа1е 8у51егп5 Ьапдиадез — ССЮАЗУЬ) и ее комитетов.

Ассоциация КОДАСИЛ образована в 1959 г. на проходившей в Ва­ шингтоне встрече представителей 40 организаций и учреждений — поль­ зователей ЭВМ, предприятий по производству вычислительной техники

иправительственных учреждений. Это — добровольное общество, финан­ сируемое организациями-участниками. Оно не устанавливает стандарты

ине контролирует их соблюдение. Задача комитетов КОДАСИЛ — раз­ работка методов и языков, используемых в системах обработки данных при их анализе, реализации и эксплуатации. Разработанные спецификации через журнал развития предоставляются группам по стандартизации.

Первым проектом, выполненным в рамках Ассоциации КОДАСИЛ, стало создание спецификаций языка Кобол. В 1966 г. Ассоциация КОДАСИЛ приступила к исследованию и разработке спецификаций по обраб/Ьтке баз данных, расширяющих возможности языка Кобол. Позднее

группа, проводящая эти исследования, была названа Рабочей группой по базам данных (РГБД).

Первоначальные спецификации РГБД вышли в свет в 1969 г. и цпоследствии неоднократно пересматривались. Следующим этапом дея­ тельности РГБД явилась публикация отчета в 1971 г. В дальнейшем РГБД опубликовала еще ряд отчетов. Однако поскольку большинство реали­ заций СУБД сетевого типа базируется на предложениях, сформулиро­ ванных в отчете в 1971 г., им и будет уделено здесь основное внимание.

Вскоре после выпуска отчета организовался Комитет по языкам описания данных (КЯОД). Его задачей стало исследование проблем описания данных. Вместо РГБД начала работать РГЯБД — Рабочая труппа по языкам баз данных, приступившая к разработке спецификаций расширений языка Кобол по обработке баз данных. Эти спецификации вошли в Журнал развития Кобола, опубликованный Ассоциацией КОДАСИЛ.

РГЯБД добивалась совместимости спецификаций, опубликованных в отчете РГБД 1971 г., со спецификациями языка Кобол ассоциации КОДАСИЛ. Достигнутые ею результаты сформулированы в отчете, опуб­ ликованном в 1973 г.

В отчетах 1969, 1971 и 1973 гг. описана сетевая модель данных. Предложения Ассоциации КОДАСИЛ реализованы в ряде систем управ­ ления базами данных: ОМЗ 1100 корпорации 1ЖГУАС, предназначенной для использования на ЭВМ 1ЖГУАС серий 1108 и 1110, ШМ5 корпорации СиШпапе, ориентированной на ЭВМ корпорации 1ВМ 6вМ 5-10/20 корпо­ рации БЕС для ЭВМ ОЕСЗУЗТЕМ-10 и ОЕС8У5ТЕМ-20 и в системе 105/11 и корпорации Нопеу^еН и др.

Составляющие базы данных, описываемой сетевой моделью, пока­ заны на рис. 4.16 и 4.17.

Рис. 4.16. База данных состоит из

нескольких областей. Область содержит записи.

В свою очередь запись состоит из

полей. Набор, который объединяет записи, может

размещаться в одной или нескольких

областях

Рассмотрим основные компоненты сетевой модели данных: записи

инаборы.

Всетевой модели данных объекты предметной области объединяются

в«сеть». Графически сетевая модель представляется с помощью прямо-

угольников и стрелок. Эта система обозначений предложена Ч. Бахманом (Эа{а 51гис4иге 01а§;гагпз.— Оа1аЬа5е, 1969, уо1. 1, р. 2). Каждый тип записи может содержать нуль, один или несколько атрибутов (употреб­ ляются также термины «элемент данных» и «поле»).

Рис. 4.17. Область — это поименованная часть базы данных, в которой могут содержаться экземпляры записей и наборов или частей наборов. Каждая область может обладать собственными уникальными физическими характеристиками. Области могут обрабатывать­ ся как по отдельности, так и вместе с другими областями

Поясним различие между типом и экземпляром записи. ПАЦИЕНТ является типом записи, а строка символов «1111 Джон Уайт 15 НьюСтрит, Нью-Йорк, Н.-Й.» — экземпляром типа записи ПАЦИЕНТ (рис. 4.18 и 4.19). Таким образом в базе данных может иметься один или несколько экземпляров записи некоторого типа *.

Направленные стрелки соединяют два или более типов записей и слу­ жат для изображения типов набора. Тип записи, из которого исходит стрелка, называется владельцем набора, а тип записи, к которому на-

Записьбладелец ПАЦИЕНТ

ПАЦИЕНТ-ПЕРЕНЕС- 11ПЕРАЦИЮ (тип набора)

Запись-

член ОПЕРАЦИЯ

Рис. 4.18. В наборе. ПАЦИЕНТ-ПЕРЕНЕС-ОПЕРАЦИЮ владельцем является запись ПАЦИЕНТ, а членом — запись ОПЕРАЦИЯ.

Набор — это поименованная совокупность связанных записей.

В каждом экземпляре набора имеется только один

экземпляр владельца.

Экземпляр набора может содержать нуль, один

или несколько записей-членов.

Набор считается пустым, если ни один экземпляр записи-члена не связан с соот­ ветствующим экземпляром записи-владельца.

Экземпляр набора существует после запоминания записи-владельца

* В базе данных может и не иметься ни одного экземпляра записи дан­ ного типа.— Примеч. пер.

правлена стрелка,— членом набора. Стрелка, направленная от владельца набора к его члену, обозначает тип набора. Тип набора представляет логическую взаимосвязь «один ко многим» между владельцем и членом набора (рис. 4.18). При этом не предполагается, что экземпляры членов набора должны располагаться вблизи экземпляра владельца набора в фи­ зической памяти, хотя, как мы увидим в гл. 8, это возможно.

Рис. 4.19. Экземпляр набора ПАЦИЕНТ-ПЕРЕНЕС-ОПЕРАЦИЮ содержит один экземпляр записи-владельца и два экземпляра записи-члена. Набор реализован в виде кольцевой структуры. Известны и другие способы его реализации

Каждому типу набора присваивается имя, что позволяет одной и той же паре типов объектов участвовать в нескольких взаимосвязях. Этот случай рассматривается ниже. Отметим попутно, что термин «тип набора» не имеет ничего общего с математическим термином «теория множеств» *.

Необходимо различать тип и экземпляр набора. В примере на рис. 4.19 тип набора — ПАЦИЕНТ-ПЕРЕНЕС-ОПЕРАЦИЮ. Экземпляр этого типа набора представлен экземпляром типа записи-владельца ПАЦИЕНТ «1111 Джон Уайт 15 Нью-стрит, Нью-Йорк, Н.-Й.» и экземпля­ рами типа записи-члена «01.01.77 Удаление камней из желчного пузыря Пенициллин Сыпь» и «12.06.77 Удаление камней из почек-------- ». Таким образом, экземпляр типа набора состоит из одного экземпляра типа за­ писи-владельца и нуля или более экземпляров типа записи-члена данного типа набора. Между экземпляром типа записи-владельца и экземплярами типа записи-члена существует взаимосвязь «один ко многим». Определен­ ный экземпляр типа записи-члена в экземпляре данного типа набора не может одновременно принадлежать более чем одному экземпляру типа записи-владельца. Иными словами уникальность владельца типа набора обязательна.

4.5.1.^Представление взаимосвязи «один ко многим»

Вмодели данных, представляющей взаимосвязь «один ко многим»,

тип записи-владелец «владеет» 0— п экземплярами типа записи-члена.

* В оригинале используются термины зе* — множетсво, набор и зе! 1Ьеогу — теория множеств.— Примеч. пер.

В свою очередь тип записи-член в другом типе набора может играть роль типа записи-владельца *. Запись-владелец данного набора может играть ту же роль в нескольких наборах. Такая структура представляет собой иерархию. Следовательно, иерархическая модель данных является част­ ным случаем сетевой модели.

В модели данных КОДАСИЛ взаимосвязи «многие ко многим» не мо­ гут быть реализованы непосредственно. С помощью принятых обозначений попытаемся смоделировать такую структуру.

На рис. 4.20 приведены сведения о пациенте, перенесшем несколько операций, и о конкретном типе операции, сделанной нескольким пациен-

Рис. 4.20. В структуре такого типа нарушается правило уникальности владения, поскольку операция, перенесенная двумя или более паци­ ентами, может быть членом одновременно в двух или более экземплярах одного набора

там. Операция, которой подверглись несколько пациентов, будет одновре­ менно членом в двух или более экземплярах одного и того же типа набора, что нарушает правило уникальности владельца. Взаимосвязь «многие ко многим» может быть реализована двумя взаимосвязями «один ко мно­ гим». Как мы увидим в дальнейшем, это только один пример того, как из-за ограничений, накладываемых конкретной СУБД, приходится моди­ фицировать концептуальную модель. Рассмотрим данный случай подроб­ нее.

Типами объектов здесь служат: ПАЦИЕНТ, ХИРУРГ и ОПЕРАЦИЯ. Один хирург может прооперировать нескольких пациентов. Один пациент мог быть в свое время прооперирован несколькими хирургами. ПАЦИЕНТ, ХИРУРГ и ОПЕРАЦИЯ образуют сеть. Между ПАЦИЕНТОМ и ХИРУР­ ГОМ существует взаимосвязь «многие ко многим». ПАЦИЕНТ и ХИРУРГ могут рассматриваться как различные типы записей. Для того чтобы преобразовать взаимосвязь «многие ко многим» между ПАЦИЕНТОМ и ХИРУРГОМ в две взаимосвязи «один ко многим», воспользуемся в качестве связки записью ОПЕРАЦИЯ, которая характеризуется датой операции, видом операции, назначенным после операции препаратом и побочным эффектом от его применения. Отметим, что запись-связка может и не содержать никаких данных. В большинстве случаев она, как правило, включает некоторую полезную информацию, описывающую взаи­ мосвязь между двумя остальными записями.

На рис. 4.21 показаны два типа записи: ПАЦИЕНТ и ОПЕРАЦИЯ. В сетевой модели данных на рис. 4.22 два типа записей образуют набор. Записи ПАЦИЕНТ и ОПЕРАЦИЯ образуют набор ПАЦИЕНТ- ПЕРЕНЕС-ОПЕРАЦИЮ. Владельцем является запись ПАЦИЕНТ, а членом — запись ОПЕРАЦИЯ. Записи ХИРУРГ и ОПЕРАЦИЯ образуют

набор ОПЕРАЦИЯ-ПАЦИЕНТА.

* В дальнейшем для простоты

изложения словосечетания тип записи и тип

набора будут заменены словами запись

или набор.— Примеч. ред.

Соседние файлы в папке книги