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

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

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

нить программа пользователя. Однако что касается сохранения, то за­ пись-член может быть исключена из набора без удаления его из базы данных или других наборов. (Замечание. Эта комбинация используется очень часто.)

Такие комбинации могут быть представлены с помощью приводимой ниже символики:

Как отмечалось в гл. 4, графическое обозначение сетевой модели было введено Ч. Бахманом (С. УЛ ВасНшап). Прямоугольник представляет объект или тип записи. Направленная стрелка, называемая «стрелкой Бахмана», соединяет два или более типа записи. Тип записи, из которого исходит стрелка, является владельцем, а тип записи, в который стрелка входит,— членом.

Ш5ЕКТ и КЕМОУЕ

Наряду с ручным включением и необязательным сохранением ис­ пользуются две функции: Ш5ЕКТ и КЕМОУЕ, Ш5ЕКТ задает взаимо­ связи члена набора с другими членами и с владельцем, в то время как КЕМОУЕ разрывает взаимосвязи члена набора с другими членами и с владельцем. В языке Кобол эти функции реализуются командами ООШЕСТ и 015С0Ш ЕСТ

 

5ТОКЕ и РЕЬЕТЕ

 

 

 

 

По

5 ТОНЕ. Глагол

5ТОКЕ

добавляет

новую запись в базу данных.

команде

5ТОКЕ

СУБД

с помощью

значения ключа

(каким

бы

оно

ни было)

определяет размещение в базе данных новой

записи

со

способом размещения САСЬ.

Для каждого типа набора, в котором новый экземпляр записи автоматически становится его членом, СУБД определяет размещение набора в соответствии с предложением ЗЕТ ОССШШЫСЕ ЗЕЬЕСТКЖ (ВЫБОР ЭКЗЕМПЛЯРА НАБОРА).

Записи У1А хранятся по возможности рядом со своими логическими предшественниками. Их размещение зависит от способа упорядочения набора, посредством VIА которого они размещаются.

йЕЬЕТЕ. Этот глагол удаляет текущую запись процесса из базы данных. Он позволяет также удалять или исключать из базы данных

и другие записи.

При удалении записи-члена из набора указатель (указатели) преды­ дущей (и следующей) записи должны быть изменены. Если в наборе присутствует только указатель ЫЕХТ, определить предшествующую за­ пись непросто, а наличие указателей РКЮК упрощает удаление. ОЕЬЕТЕ требует аккуратного применения, поскольку может приводить

кпоявлению в программе труднообнаруживаемых ошибок.

Всетевой модели данных РГБД возможно представление еще не­ скольких типов наборов (кроме определенных в гл. 4). Они показаны на

рис. 8.26, 8.27, 8.28. База данных, основывающаяся на модели РГБД, может представлять собой сочетание таких типов наборов.

 

 

Универсальный[

 

Универсальный

магазин

 

магазин

 

 

Существующие-

Фабрика~игрушек-

Существующие-

Фабрики-игрушек-

абеспечивающие-

фабрикиигрушек

по- специальной'комиссии

Фабрики-игрушек

универсальные-

 

 

 

магазины

 

Фабрика

Фабрика

 

 

игрушек

игрушек

 

ю

«)

1

о

Рис. 8.26. а) Два типа набора между двумя типами записей;

б)

Миницикл

с

ручным

включением

и обязательным сохранением;

в)

Миницикл

с

ручным

включением

и необязательным сохранением

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

Логически последовательное упорядочение в наборе (т. е. записичлены упорядочиваются по полю упорядочения).

Первый. Добавляемая запись становится первым членом в цепочке;

фактически это метод ЫРО (последним поступил, первым выбыл).

• Последний. Добавляемая запись становится последним членом в це­ почке; фактически это метод ПРО (первым поступил, первым выбыл).

Следующий. Добавляемая запись становится следующей за текущим членом или владельцем (то же, что и «Первый»).

Предыдущий. Добавляемая запись становится предыдущей по отноше­ нию к текущему члену или владельцу (то же, что и «Последний»).

Перечислим еще раз методы доступа внутренней и внешней модели в системе управления базами данных РГБД.

Рис.

8.27 Иерархическая струк­

Рис. 8.28. У-структура с тремя типами' на­

тура

с тремя типами наборов:

(О Т Д Е Л , П Р О Е К Т ), (П Р О ЕК Т ,

боров: (Ш К О Л А , Ф А К У Л Ь Т Е Т ), (С У Б ­

С Л У Ж А Щ И Е ) и (О Т Д Е Л , М Е ­

СИ Д И И Н А И С С Л ЕД О В А Н И Я , Ф А К У Л Ь ­

С Т О П О Л О Ж Е Н И Е)

Т Е Т ) и (Ф А К У Л Ь Т ЕТ , К У Р С )

Методы доступа внутренней модели:

произвольный (САЬС);

ОШЕСТ;

физический последовательный внутри набора с использованием спо­ соба размещения У1А ЗЕТ или между любых записей;

5У5ТЕМ;

индексный.

Методы доступа внешней модели:

ЫЕХТ;

РКЮК;

СМУМЕК.

Общие функции для модификации взаимосвязей наборов:

КЕМОУЕ;

Ш5ЕКТ;

ЭЕЬЕТЕ;

ЗТОКЕ.

8.3.СУБД С ИНВЕРТИРОВАННЫМИ ФАЙЛАМИ

Некоторые современные СУБД допускают отсутствие какой-либо спе­ цифической формальной структуры данных. Здесь нет необходимости свя­ зывания записей в иерархию или сеть. Ни исходных, ни владельцев, ни порожденных, ни членов, ни подобных не требуется. Иными словами, записи могут быть просто записями, и они могут инвертироваться от4

носительно нескольких полей данных, т. е. база данных такой, СУБД состоит из нескольких файлов. Файлы инвертируются относительно не­ скольких или всех полей данных, и, кроме того, они могут связываться при использовании метода инверсии. Взаимосвязь может быть постоян­ ной или устанавливаться «по ходу» ответа на запрос. Сиртема АБАВАЗ (Адаптируемая система баз данных), поставляемая (в США и Канаде)

фирмой 5о!1^аге АО о! ]Чог1Н Атепса,— одна из наиболее крупных систем, использующих инвертированные файлы.

8.3.1. АОАВА5 (Адаптируемая система баз данных)

Система АЭАВАЗ по существу представляет собой систему управле­ ния базами данных, использующую инверсированные файлы. База дан­ ных компонуется из нескольких файлов. Файлы определяются независимо. Допускается как наличие, так*и отсутствие логической взаимосвязи между файлами, или их структурной организации.

Все записи файла АОАВА5 определяются одинаково. В файле любое поле, подполе или сочетание полей можно задать как дескриптор (ключ) как во время создания файла, так и впоследствии с помощью программы обслуживания.

Каждой физической записи назначается уникальный ссылочный но­ мер, который называется внутренним последовательным номером (т- 1егпа1 зециепсе питЬег—151Ч). Во время загрузки записи файла разме­ щаются физически последовательно, и каждой физической записи при­ сваивается внутренний последовательный номер (15Ы). 15Ы — это не физический адрес записи, а, скорее, идентификатор логической записи.

На рис. 8.29 показаны два файла: файл Полисов и файл Вла­ дельцев полисов. Записям каждого файла присвоены внутренние по­ следовательные номера. В файле Полисов дескрипторами являются но­ мер-полиса и тип-полиса, а в файле Владельцев полисов — фамилия владельца.

 

Файл Полисов

 

Файл Владельцев полисов

1 3 И

Н о м е р - п о л и с а

Т и п - п о л и с а

15Ы

И м я

Ф а м и л и я

2

245867

Страхование

88

Томас

Финнеран

 

856745

жизни

105

Джоан

Кэррол

8

 

1

643489

 

75

Анна

Карел

12

468912

Страхование

284

Сюзанна

Симон

51

679435

 

 

 

35

346512

жизни

 

 

 

 

 

 

 

 

Дескрипторы

(ключи)

 

Дескриптор

(ключ)

Рис. 8.29. Файл Полисов с полями «номер-полиса» и «тип-полиса»; «номер-полиса» и «типполиса»— дескрипторы (ключи). Файл Владельцев полисов с полями «имя» и «фамилия». «Фамилия» является дескриптором (ключом).

Для обеспечения уникальной идентификации владельца полиса в файл Владельцев полисов можно добавить поле «дата рождения» или «адрес»

Если файл Владельцев полисов расширить путем добавления еще одного поля — поля «номер-полиса» (на рис. 8.30 оно также определено как поле дескрипторов), то этот файл можно связать с файлом'Поли­ сов. Поля «номер-полиса» в файле Полисов и в файле Владельцев полисов используются в качестве дескрипторов, связывающих два файла.

Как показано на рис. 8.30, поле «номер-полиса» обеспечивает взаи­ мосвязь файла Полисов и файла Владельцев полисов. Владельцу полиса может принадлежать более одного полиса, и полис может принадлежать нескольким владельцам. Это могут быть взаимосвязи типа «многие ко многим». Такие взаимосвязи позволяют осуществить ^двунаправленный

1 5 Ы Н о м е р - п о л и с а Т и п - п о л и с а 1 5 Ы И м я Ф а м и л и я Н о м е р - п о л и с а

2

245867

Страхование

88

Томас

Финне-

643489

8

856745

жизни

105

Джоан

ран

 

 

Кэррол

856745

1

643489

 

75

Анна

Карел

679435

12

468912

 

284

Сюзанна

Симон

468912

51

679435

Страхование

95

Джоан

Кэррол

346512

35

346512

жизни

 

 

 

 

т

 

 

л

т

 

 

 

 

 

 

 

 

 

 

Дескрипторы

(ключи)

 

Дескрипторы

(ключи)

Рис. 8.30. По сравнению с рис. 8.29 здесь добавлено поле «номер-полиса». Это поле обеспечи­ вает взаимосвязь двух файлов — файла Полисов и файла Владельцев полисов. Владельцу полиса может принадлежать более одного полиса, например, Джоан Кэррол принадлежит два полиса. Другой способ представить эту взаимосвязь — сделать поле «номер-полиса» многозначным полем файла Владельцев полисов (использование многознач­ ных полей рассматривается ниже). Это решение может оказаться предпочтительным с точки зрения снижения или устранения избыточности данных.

доступ. Одно лицо, Джоан Кэррол, является владельцем двух полисов с номерами 856745 и 346512.

Таким образом, АОАВА5 поддерживает сетевую модель данных,

состоящую

из множества файлов с двунаправленными (типа «многие

ко многим»)

взаимосвязями между записями. Взаимосвязи устанавлива­

ются с помощью одинаковых полей различных файлов, как, например, на рис. 8.31.

Система АЭАВА5, кроме того, поддерживает иерархические пред­ ставления, основывающиеся на общих дескрипторах различных файлов. Представления пользователя (называемые в гл. 1 внешними моделями) определяются как иерархические файлы, содержащие поля данных свя­ занных записей базы данных. На рис. 8.32а и б показаны некоторые иерар­ хические представления структуры файлов, изображенной на рис. 8.31.

В АЭАВАЗ записи хранятся сжатыми, в виде строк байтов пере­ менной длины. Сжатие данных скрыто от пользователя, поскольку си­ стема выдает значения полей в представлениях пользователя. Сжатие осуществляется на уровне полей. Оно выполняется по умолчанию при загрузке файла последовательно, поле за полем. При необходимости выполняемое по умолчанию сжатие может быть подавлено во время загрузки. Алгоритм сжатия таков:

Конечные пробелы буквенно-цифровых полей исключаются.

Предшествующие нули числовых данных исключаются.

Неупакованные десятичные числовые данные упаковываются.

Ряд последовательных пустых полей может быть представлен одним «счетчиком пустого поля» длиной в байт.

На рис. 8.33 показан результат сжатия данных.

Система поддерживает два основных типа поля: элементарное и многозначное. Элементарное поле в одной записи может иметь только одно значение, многозначное же — множество значений. Ряд последова­ тельных полей можно объединить в группу. Группа, повторяющаяся внутри записи, называется периодической. В периодических группах допускается определение многозначных полей.

Хранение записей. Каждая запись файла АОАВА5 хранится в виде строки сжатых значений полей, имеющей переменную длину; записи

7*

Файл

Полисов

 

 

 

 

^Файл Владельцев п о л и с о е

 

—:------ N' .

 

 

 

 

________ *

15Ы

Н о м е р - п о л и с а

Ф а м и л и я -

1 5 Ы

И м я

ф а м и л и я

Н о м е р

Т и п - п о л и с а

Н о м е р - п о л и с а

 

 

в л а д е л ь ц а - п о л и с а

 

 

 

п р е д с т а в и т е л я

2

245867

Страхование

8

856745

жизни

 

1

643489

Страхование

12

468912

51

679435

жизни

 

35

346512

 

-•

 

Файл Исков

1 5 Ы Н о м е р - п о л и с а Д а т а - и с к а

855

643489

15 января

1980

931

346512

30

марта

1980

863

: 856745

18 февраля 1981

845

468912

11

апреля

1982

698

643489

5

марта

1980

567

245867

8

февраля 1980

■ •

 

 

 

Смит

88

Томас

финнеран

643489

2345

Кэррол

105

Джоан

Кэррол

856745

6748

679435

1367

Финнеран

75

Анна

Карел

Симон

284

Сюзанна

Симон

468912

4589

Карел

95

Джоан

Кэррол

346512

6748

Кэррол

 

 

 

 

 

.

*

 

 

Файл Представителей

 

 

 

1 5 Ы

Н о м е р - п р е д с т а в и т е л я

Н о м е р - п о л и с а

 

 

581

6748

 

856745

 

 

530

1367

 

679435

 

 

356

4589

 

468912

 

 

289

2345

 

643489

 

 

685

6748

 

346512

 

 

 

Рис. 8.31. Файлы Полисов, Владельцев полисов, Исков и Представителей взаимно связаны по некоторым дескрипторам (ключам)

Рис. 8.32а. Одно лицо может являться владельцем нескольких полисов и предъявлять несколько исков

Рис. 8.326. По одному полису воз­ можно предъявление нескольких исков

Данные до сжатия

I I

I

I

I

 

1

1

1 1 1

ж\и\з\н\ь\ | | |

|

 

 

 

10Вайт

_

10 Вайт

>

 

 

 

с описаниемполя)

с описанием паля)

 

 

 

Данные после сжатия

 

7

2 4 5

8 6

7

6

\и\з\ н

 

I

Г 1

1

 

I

I

I I

I ж

 

V"

 

 

 

Длина, Включая

 

Длина7 Включая

 

Вайт длины

 

 

Вайт длины

 

Рис. 8.33. Сжатие данных

исключает конечные пробелы в алфавитно-цифровых полях;

упаковывает неупакованные числовые данные и исключает предшествующие пробелы всех числовых данных;

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

присваивается логический

идентификатор — внутренний

последователь­

ный номер (15Ы). Как

правило, I5N присваивается

СУБД, однако

он может присваиваться и пользователем.

 

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

Р а н д о м и з и р о в а н н ы й с п о с о б х р а н е н и я . АОАВА5 пре­ доставляет возможность применения прямого метода доступа, называемо­ го АЭАМ (прямой метод доступа АОАВА5). Адрес физического блока хранения записи вычисляется методом доступа АОАМ по значению поля. При этом необходимость в просмотре индекса отпадает.

Л и н е й н ы й

с п о с о б х р а н е н и я . Допускается

хранение

запи­

сей с линейным

использованием блоков при начальной

загрузке

файла

и размещение затем вновь вводимых записей в любом резидентном в

оперативной памяти блоке, в котором достаточно свободного простран­ ства.

Ф и з и ч е с к о е у п о р я д о ч е н и е з а п и с е й . При хранении за­ писи могут быть^ физически упорядочены по значению любого полядескриптора, что обеспечивает эффективный логически последователь­ ный доступ по этому дескриптору.

Доступ к записям. Для чтения записей в АОАВА5 служит либо физический последовательный доступ, либо инвертированный список. 15Ы не являются физическими адресами. Чтобы исключить необходи­ мость изменять инвертированный список в случае пересылки физических записей (например, в результате увеличения размеров записи), приме­ няется преобразователь адреса. Это способ косвенной адресации к внут­ ренним последовательным номерам (рис. 8.34). Адрес записи — это относительный номер блока, и поиск записей осуществляется с помощью базисного прямого метода доступа. Если 15Ы искомой записи известен, он может быть непосредственно использован для доступа к записи.

Ассоциатор

и а

а

-

 

ПреойразоВа-

 

Файл полисов

ИнВертироВанныисписок

 

тель адреса

 

опичениеичстчикчапюп

 

пимер олоки

 

 

 

Страхов* 8010

 

|

-----

1

18Н

Номер-полиса

Тип-полиса

жизни

 

1

 

/

 

 

 

 

 

 

 

2

245867

Страхованиежизни

 

 

 

 

 

 

 

 

 

 

8

856745

 

 

 

 

 

 

1

643489

 

 

 

 

 

 

12

Ш Я12

 

 

 

 

 

1

51

679435

страхованиежизни

 

 

 

 

 

35

346512

 

 

 

 

 

2

:

:

$

 

 

 

 

 

 

 

Рис. 8.34

Инвертированный список для дескриптора «тип-полиса» в файле Полисов. Значение «Страхование жизни» появляется 8010 раз, в том числе в записях с 1814 = 2 и 51.

Преобразователь адреса показывает, что записи с 1814= 1,2 и 8 находятся в блоке 1. За­ пись с 18Ы = 12 находится в блоке 2.

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

Преобразователь адреса существует для каждого файла базы дан­ ных и отображает каждый 15Ы в адрес физической записи. Преобразо­ ватель адреса представляет собой список, в котором любой записи файла соответствует один элемент. Логический адрес записи (ее 15Ы) служит индексом элемента преобразователя адреса, соответствующего записи, и этот элемент содержит номер физического блока, в котором хранится запись.

Возможно чтение записи файла с привлечением упорядоченных по определенному значению дескриптора внутренних последовательных

номеров (15Ы). По существу, это логически последовательный метод доступа. Чтение записей с 15Ы = 2, 35, 12, 1, 51 и 8 обеспечивает логиче­ ски последовательную (в соответствии с дескриптором «номер-полиса») обработку файла Полисов, изображенного на рис. 8.34.

Инвертированный список. АОАВА5 ведет инвертированный список для каждого поля файла, объявленного дескриптором. Дескрипторы мо­ гут определяться во время создания файла или впоследствии при выпол­ нении программы обслуживания. Дескриптор может быть объявлен уни­ кальным., в этом случае СУБД обеспечивает отсутствие дубликатов значений в файле.

Для каждого дескриптора инвертированный список упорядочен по его значениям. Каждый элемент содержит число записей, в которых присутствует соответствующее значение и 15Ы этих записей. На рис. 8.34 показан инвертированный список для дескриптора «тип-полиса». Значение «Страхование жизни» повторяется в данном файле 8010 раз, в частности в записях с 15Ы = 2 и IЗЫ = 51.

Инвертированный список применяется главным образом для отбора записей. Простейший случай — отбор с помощью одного значения одного дескриптора. Если задан «тип-полиса = страхование жизни», будет про­ веден отбор 8010 записей, а затем многократное использование преоб­ разователя адреса обеспечит выборку этих записей. Запись с 15Ы= 2 находится в блоке 1, в то время как запись с IЗЫ = 51 — в блоке 2. Таким образом, очевидно, что выбор полей, определяемых как дескрип­ торы, решающим образом влияет на производительность создаваемой базы данных.

Возможно определение составных критериев выбора записей, напри­ мер «тип-полиса = страхование жизни» и «номер-полиса = от 200 000 до 400 000 включительно». СУБД объединяет инвертированные списки для подходящих значений, в данном случае «тип-полиса = страхование жизни» и «номер-полиса =245867» для формирования списка 15Ы записей, удов­ летворяющих всем критериям. Единственная отобранная запись — это запись с 15Ы = 2. Инвертированных списков вполне достаточно для осуществления проверки по всем критериям поиска без доступа к записям данных. Индексная структура, обеспечивающая поиск, содержит от трех до шести уровней индексов в зависимости от числа дескрипторов, длин их значений и общего числа записей в файле. Некоторые из этих индек­ сов: гипер-индекс, супер-индекс, основной и обычный. Структура индексов недоступна пользователю и является функцией СУБД.

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

«многие ко многим». Если файл

Полисов и фа! л Исков, изображенные

на рис. 8.31, попарно связаны,

можно осуществить следующий отбор:

• Найти все полисы с типом-полиса страхование жизни и попарно

связанные с датами-предъявления-иска =от 1 января 1980 до 31 марта 1980 включительно.

В ответ на этот запрос будут отобраны следующие записи: Номер-полиса =245867

Тип-полиса =страхование жизни

Дата-предъявления-иска=8 февраля 1980 Номер-полиса =643489

Тип-полиса =страхование жизни Дата-предъявления-иска = 15 января 1980 Дата-предъявления-иска = 5 марта 1980

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

Представления пользователя. Пользователь имеет дело с файлами и полями. Организация данных для конкретного пользователя называется представлением пользователя. Для приведенного примера попарного свя­ зывания файла Полисов с файлом Исков (рис. 8.31) соответствующее представление пользователя показано на рис. 8.35.

Рис. 8.35. Представление пользователя: иерархическое представление, отража­ ющее возможность наличия нескольких исков по данному полису

Существует еще одна система управления базами данных с инверти­ рованными файлами — это 5У5ТЕМ 2000 (фирма ШТЕЬ, поставляется фирмой МК1).

В ^заключение перечислим методы доступа внутренней и внешней моделей в АОАВА5.

Методы доступа внутренней модели:

физически последовательный;

инвертированный;

логически последовательный по внутреннему последовательному но­ меру при использовании инверсии;

• прямой по внутреннему последовательному номеру *.

* А также произвольный

по одному из полей записи (АОАМ) по аналогии с САЬС

в сетевых системах,— Примеч.

ред.

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