Московский государственный университет печати

Чертовской В.Д.


         

Базы и банки данных

Учебное пособие


Чертовской В.Д.
Базы и банки данных
Начало
Печатный оригинал
Об электронном издании
Оглавление

Введение

Часть 1. ОСНОВНЫЕ ПОЛОЖЕНИЯ

Раздел 1. Основные понятия

1.

Глава 1. Общие сведения

1.1.

Данные, информация, знания

1.2.

Основные понятия и определения

1.3.

Классификация БД и СУБД

1.4.

Состав СУБД и работа БД

2.

Глава 2. Концепция баз данных

2.1.

Требования, предъявляемые к базам данных

2.2.

Концепция построения БД

2.3.

Методология проектирования баз данных

2.4.

Методология использования баз данных

Раздел 2. Теория баз данных

3.

Глава 3. Общая теория

3.1.

Модели представления данных

3.2.

CASE-технология

3.3.

CASE-средства

4.

Глава 4. Теория реляционных баз данных

4.1.

Математические основы теории

4.2.

Построение БД

4.3.

Использование БД

4.3.1.

Запросы к данным

4.3.2.

Синхронизация процессов доступа

Часть 2. Централизованные базы данных

Раздел 3. Реализация бд (модели БД)

5.

Глава 5. Реляционные БД SQL

5.1.

Логическая структура

5.2.

Создание БД

5.3.

Использование БД

5.3.1.

Язык SQL

5.3.2.

Язык QBE

6.

Глава 6. Сетевые БД

6.1.

Логическая структура

6.2.

Программная реализация

6.2.1.

Создание БД (ЯОД)

6.2.2.

Использование БД (ЯМД)

7.

Глава 7. Иерархические БД

7.1.

Логическая структура

7.2.

Программная реализация

7.2.1.

Создание БД (ЯОД)

7.2.2.

Использование БД (ЯМД)

8.

Глава 8. Взаимосвязь МД

8.1.

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

8.2.

Преобразование моделей данных

8.3.

Выбор моделей данных

9.

Глава 9. Физическая БД

9.1.

Вопросы программной реализации БД

9.2.

Организация хранения и доступ

9.3.

Доступ к данным и их обновление

Раздел 4. Современные направления развития БД

10.

Глава 10. Автоматизация проектирования

10.1.

Классический подход к проектированию

10.1.1.

Однопользовательский режим

10.1.2.

Многопользовательский режим

10.2.

Современный подход к проектированию

10.3.

Автоматизация проектирования

11.

Глава 11. Объектно-ориентированные базы данных

11.1.

Недостатки реляционных баз данных

11.2.

Состояние развития ООБД

11.3.

Сущность ООБД

11.4.

Недостатки и перспективы развития ООБД

Часть 3. Распределенные базы данных (РБД)

Раздел 5. Основы теории РБД

12.

Глава 12. Общая характеристика РБД

12.1.

Новые требования, предъявляемые к БД

12.2.

Состав и работа РБД

12.3.

Система клиент/сервер

Раздел 6. Основы теории РБД

13.

Глава 13. Создание РБД

13.1.

Обеспечение целостности

13.2.

Фрагментация и локализация

13.3.

Процесс интеграции

13.4.

Преобразование структуры и данных

13.5.

Однородные и неоднородные РБД

14.

Глава 14. Использование РБД

14.1.

Одновременный доступ

14.2.

Защита

14.3.

Восстановление РБД

14.4.

Запросы

Заключение

Контрольные вопросы

Литература

Указатели
11  именной указатель
360  предметный указатель
163  указатель иллюстраций
25  указатель компаний

6.
Глава 6. Сетевые БД

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

Сначала описывается логическая структура модели данных (МД),затем - процессы использования построенной База данныхБД с помощью предложенного Кодд Э.Ф.Э.Ф. Коддом языка Альфа ссылка на источники литературы и, наконец, процедура программного описания (создания и использования) БД. Поскольку Альфа-описание указанных моделей данных не отличается от Альфа-описания реляционной модели данных, оно будет опущено.

6.1.
Логическая структура

При различных способах реализации База данных сетеваясетевых моделей ссылка на источники литературы наибольшее распространение получила модель КОДАСИЛ (CODASYL)КОДАСИЛ (CODASYL COnference on DAta SYstems Language - Ассоциация по языкам систем обработки данных), предложенная Рабочей группой по базам данных (DTBG - Data Base Task Group). Эта модель считается наиболее развитой сетевой моделью данных, постоянно развивается, поддерживается и сопровождается, являясь как бы стандартом ссылка на источники литературы.

Ассоциация КОДАСИЛ образовалась в 1959 году, а Рабочая группа БД начиная с 1969 года выпускала спецификации. Основы сетевой модели были заложены в 1971 году Комитетом по Язык описания данныхЯОД. Вместо Рабочей группы БД стала работать Рабочая группа языков БД, начавшая с расширения КОБОЛа. Серьезные результаты были получены в 1973 году. В отчетах группы была описана сетевая модель данных, фактически мало изменившаяся с тех пор. Основная цель КОДАСИЛ - создание База данных иерархическаяиерархической модели, позволяющей описывать отношения M:M, т.е. уменьшить недостатки иерархической модели.

Разрабатывались и соответствующие Система управления базы данныхСУБД: DMS корпорации UNIVACUNIVAC, IDMSIDMS (Cullinane), DBMS (DEC)DBMS (DEC), IDS (Honeywell)IDS (Honeywell). В настоящее время широко известна db_Vista, работающая на персональных компьютерах в DOS и Windows.

Структурными элементами сетевой модели данных (МД) КОДАСИЛ являются элемент данных, агрегат данных и запись (рис. 6.1),Рис. 06.01. Структурные элементы сетевой БД которым присваиваются имена.

Элемент данных(ЭД) - наименьшая поименованная единица данных (аналог поля в файловых системах), с помощью которой осуществляется построение всех остальных структур. Примеры элементов данных: ТАБЕЛЬНЫЙ_НОМЕР, ШИФР_ДЕТАЛИ, ГОД_РОЖДЕНИЯ. Имя элемента данных используется для его идентификации в схеме структуры данных более высокого уровня. Значение элемента данных может быть числовым (целым, вещественным), нечисловым (символьным, логическим). В некоторых приложениях может использоваться «неопределенное» значение элемента данных и говорит о том, что значение соответствующего свойства объекта не определено в БД.

Агрегат данныхАгрегат данных - поименованная совокупность элементов данных внутри записи, которую можно рассматривать как единое целое. Имя агрегата используется для его идентификации в схеме структуры данного более высокого уровня. Агрегат данных может быть простым (рис. 6.1, б),Рис. 06.01. б) Структурные элементы сетевой БД если состоит только из элементов данных, и составным (рис. 6.1, в),Рис. 06.01. в) Структурные элементы сетевой БД если включает в свой состав другие агрегаты.

Различают агрегаты типа «вектор» и типа «повторяющаяся группа». Агрегат, повторяющийся компонент которого является простым элементом данных, называется «вектором». Например, агрегат ЗАРАБОТНАЯ_ ПЛАТА, в котором экземпляр элемента данных может повторяться до 12 раз (за каждый месяц года). Агрегат, повторяющийся компонент которого представлен совокупностью данных, называется повторяющейся группой. В повторяющуюся группу могут входить отдельные элементы данных, векторы, агрегаты или повторяющиеся группы. На рис. 6.1, г Рис. 06.01. г) Структурные элементы сетевой БД представлен агрегат ЗАКАЗ_НА_ПОКУПКУ, имеющий в своем составе повторяющуюся группу ПАРТИЯ_ТОВАРА.

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

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

Записи являются фактически простейшими структурными элементами, через которые осуществляются связи: элементом связи служит набор.

Набор записейНабор записей - поименованная совокупность записей, образующая двухуровневую иерархическую структуру подчинения: каждый тип набора представляет собой отношение (связь) между двумя или несколькими типами записей. В силу иерархичности набора для каждого его типа один тип записи объявляется «владельцем», тогда остальные типы записей - «члены», т.е. имеют место «запись-владелец» и «запись-член (набора)». Каждый экземпляр набора должен содержать только один экземпляр записи-владельца и любое количество экземпляров записей-членов.

Структуры БД строятся на основании следующих основных композиционных правил.

  1. База данных может содержать любое количество типов записей и типов наборов.

  2. Между двумя типами записи может быть определено любое количество типов наборов.

  3. Тип записи может быть владельцем и одновременно членом нескольких типов наборов.

Допускается добавление новой записи в качестве экземпляра владельца, если экземпляр-член отсутствует.

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

Наборы могут быть нескольких разновидностей.

  1. С одними и теми же типами записей, но разными типами наборов.

  2. Наборы из трех записей и более, в том числе с обратной связью.

  3. Сингулярный набор (только один экземпляр). У такого набора нет естественного владельца и в качестве него выступает система (рис. 6.2).Рис. 06.02. Сингулярный набор В дальнейшем такие наборы могут приобрести запись - владельца. Количество объявляемых сингулярных наборов произвольно. Один и тот же тип записи может быть объявлен членом сингулярного набора и одновременно владельцем либо членом других наборов.

Обычно тип набора задается между двумя типами записей. Однако в модели можно представлять типы связей, заданных между несколькими типами сущностей. Для этого используют многочленные наборы, которые представляют собой отношение между тремя или более типами записей, один из которых назначается владельцем набора, а остальные - членами набора. На рис. 6.3. Рис. 06.03. Многочленный набор показан пример многочленного набора НАУЧНЫЕ_ТРУДЫ, владельцем которого является запись типа НАУЧНЫЙ_СОТРУДНИК, а членами - записи типа НАУЧНЫЙ_ОТЧЕТ, ДОКЛАД_НА_КОНФЕРЕНЦИИ, СТАТЬЯ_В_ЖУРНАЛЕ, МОНОГРАФИЯ. Экземпляр некоторого типа многочленного набора включает в себя один экземпляр записи-владельца и все связанные с ним экземпляры записей-членов заданных типов. В конкретных Система управления базы данныхСУБД концепция многочленного набора может быть не реализована.

В База данных сетеваясетевой БД возможны следующие способы доступа:

    1) последовательный просмотр записей основного файла;

    2) просмотр всех записей зависимого файла, связанного с конкретной записью основного файла;

    3) прямой поиск записи основного файла по ее ключу (точка доступа).

Отметим, что если запись используется для представления сущности, то набор - для представления связей между рассматриваемыми сущностями.

Сетевые модели данных могут быть представлены в форме графов: вершины графа используются для интерпретации типов сущностей, а дуги - для интерпретации типов связей между сущностями.

На графической диаграмме схемы БД тип набора изображается поименованной дугой между соответствующими типами записей: дуга исходит из типа записи-владельца набора и заходит в тип записи-члена набора.

В модели КОДАСИЛ (CODASYL)КОДАСИЛ основным внутренним ограничением целостности является функциональность связей, т.е. с помощью наборов можно реализовать непосредственно связи типа 1:1, 1:М, М:1. В модели это первое внутреннее ограничение выражается утверждением: в конкретном экземпляре набора экземпляр записи-члена набора может иметь не более одного экземпляра записи-владельца набора. Следовательно, число экземпляров набора некоторого типа в точности равно числу экземпляров записей-владельцев этого типа набора в БД. При этом экземпляр набора может быть и пустым, т.е. состоять из экземпляра записи-владельца (экземпляры записей-членов могут отсутствовать в некоторые моменты времени при функционировании системы).

Из функционального характера реализуемых в МД связей следует второе внутреннее ограничение целостности - экземпляр записи может быть членом только одного экземпляра среди всех экземпляров набора одного типа (он может входить в состав двух и более экземпляров наборов, но различных типов).

Функциональный характер реализуемых связей не позволяет непосредственно представлять в модели тип «многие ко многим». Для представления связи типа М:N вводят вспомогательный тип записи и две функциональные связи типа 1:М (рис. 4.7.).Рис. 04.07. Промежуточный ключ

6.2.
Программная реализация

Представим в виде База данных сетеваясетевой модели БД «Учебный процесс». Возьмем за основу связи, показанные на рис. 3.4, б.Рис. 03.04. Модель БД 'Учебный процесс' Здесь по-прежнему присутствуют связи M:N. Их замена возможна двумя способами:

    1) использованием нормализации (рис. 3.4, в);Рис. 03.04. Модель БД 'Учебный процесс'

    2) введением, наряду с прямыми, обратных связей.

Второй путь характерен для База данных иерархическаяиерархических МД. Поскольку в сетевой МД используются и ключи, ей более присущ первый путь.

Тогда сетевая модель получит вид, показанный на рис. 6.4,Рис. 06.04. Структура сетевой БД а некоторые экземпляры логических записей - на рис. 6.5.Рис. 06.05. Экземпляры логических записей

Отметим, что в отчетах КОДАСИЛ (CODASYL)КОДАСИЛ первоначально предполагалось обязательное участие программиста в работе БД. В последующих версиях предусматривалось минимальное участие программиста и потому ряд команд был аннулирован.

В сетевой модели данных нет полной независимости логической БД от физической БД. Это хорошо заметно из рис. 6.5. Рис. 06.05. Экземпляры логических записей и программы на языке СУБД DBMS в табл. 6.1.

Таблица 6.1.

Программа на языке сетевой СУБД DBMS

SCHEMA NAME IS DB_2
AREA NAME IS DB2_AREA
RECORD NAME IS PART
LOCATION MODE IS CALC HASH_PS
USING PS in PART
DUPLICATES NOT ALLOWED
WITHIN DB2_AREA
PS TYPE IS CHAR 5
PD TYPE IS CHAR 25
CL TYPE IS CHAR 2
RECORD NAME IS WH
WITHIN DB2_AREA
WS TYPE IS CHAR 5
WD TYPE IS CHAR 25
SET NAME IS INVENTORY
OWNER IS PART
MEMBER IS WH
MANDATORY AUTOMATIC
ASCENDING KEY IS WS in WH
DUPLICATES NOT ALLOWED
SET OCCYRENCE SELECTION IS THRU
LOCATION MODE of OWNER

 

Базовыми языками в сетевых СУБД могут быть COBOL, PL/I. В частности, для СУБД DBMS базовым языком служит COBOL, а соответствие его команд командам языка БД приведено в табл. 6.2.

Таблица 6.2.

Соответствие команд нга языке БД и COBOL

Язык БД COBOL
AREA REALM
OPEN READY
CLOSE FINISH
FIXED нет
MANDATORY PREMANENT
OPTIONAL TRANSIENT
AUTOMATIC AUTOMATIC
MANUAL MANUAL
INSERT CONNECT
REMOVE DISCONNENCT
MODIFY MODIFY
STORE STORE
DELETE ERASE

























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

База данныхБаза данных физически состоит из областей, которые разделены на блоки, называемые Страницастраницами. Размер страницы, каждая из которых имеет уникальный номер в одной и той же области, определяется пользователем. Номер страницы и строки в ней образует физический ключ записи, а логическая структура реализуется с помощью указателей. Поиск в логической структуре может осуществляться по ключу, что в физической структуре реализуется Указательуказателями. Указатели (абсолютные или относительные) могут иметь цепочечную организацию (от записи к записи) или в виде массива указателей.

6.2.1.
Создание БД (ЯОД)

Иллюстрацию Язык описания данныхЯОД удобно провести с помощью программы (табл. 6.2).

Таблица 6.2.

Соответствие команд нга языке БД и COBOL

Язык БД COBOL
AREA REALM
OPEN READY
CLOSE FINISH
FIXED нет
MANDATORY PREMANENT
OPTIONAL TRANSIENT
AUTOMATIC AUTOMATIC
MANUAL MANUAL
INSERT CONNECT
REMOVE DISCONNENCT
MODIFY MODIFY
STORE STORE
DELETE ERASE

























Программа определяет имена схемы (SCHEMA), области (AREA), возможно, и объявлением начальной и конечной страниц. В область возможно копирование (CALL) из других схем. Задаются записи (RECORD) и вводится метод их размещения (LOCATION MODE IS ..), определяющий способ хранения. Различают методы DIRECT, CALC, VIA SET,SYSTEM, INDEX.

Метод DIRECT самый быстрый: управление осуществляет пользователь путем присваивания адресов. В последних версиях этот метод исключен.

Метод CALC (ключ указывается после слова USING) предусматривает хеширование. Подробно оно будет рассмотрено в физической БД, а здесь покажем лишь его суть.

При хешированнии адрес записи вычисляется по заданному ключу с помощью специальных алгоритмов (хеш-функций). Записи, приобретающие в результате хеширования один адрес (синонимы), размещаются на одной странице, что резко ускоряет процедуру доступа.

Размещение через набор VIA (SET) применяется, когда запись-член направляется на ту же страницу, где находится запись-владелец.

Метод SYSTEM применяется по умолчанию, а метод INDEX используется редко.

Указывается возможность (DUPLICATES) повторяющихся данных, расположенных в начале (FIRST) или конце (LAST) записей-членов, либо их запрет (NOT).

Необходимо указать и связи набора: запись-владелец (OWNER), запись-член (MEMBER), размещение записи-члена после экземпляра записи-владельца (FIRST), после последней записи-члена (LAST), после текущей записи (NEXT), перед текущей записью (PRIOR), отсортированные записи (SORTED), тип указателей (NET, PRIOR).

Предусматриваются своеобразные процедуры включения (и исключения) записей (рис. 6.6),Рис. 06.06. Процедуры присоединения  и отсоединения записей на языке сетевой СУБД DMBS более подробно описываемые в ЯМД.

Устанавливается выбор экземпляра набора, в частности, по способу размещения владельца (SET OCCYRENCE SELECTION IS THRU LOCATION MODE of OWNER).

Может устанавливаться и блокировка монопольная (EXCLUSIVE) и немонопольная (KEEP).

6.2.2.
Использование БД (ЯМД)

Команды Язык манипулирования даннымиЯМД возможно разделить на несколько групп.

Открытие и закрытие База данныхБД производится командами OPEN и CLOSE.

Доступ осуществляется командами FIND, GET, OBTAIN. Команда FIND (FIND RECORD <имя записи> DB_KEY <ключ БД, точка входа>) осуществляет поиск экземпляров, GET - пересылку записи в промежуточную память. Команда OBTAIN «совмещает» функции двух предыдущих команд. У всех этих команд имеется несколько форматов.

Модификация данных проводится командой MODIFY.

Сложнее другие процедуры обновления, связанные с присоединением и отсоединением записей (рис. 6.6). Дело в том, что для изменения структуры связей их необходимо сначала разорвать, а затем установить вновь.

При отсоединении (MANDATORY) данные уничтожаются (DELETE), а при исключении (OPTIONAL) сохраняются (REMOVE: REMOVE <имя записи> RECORD FROM <имя набора> SET), возможно, и в виде сингулярного набора. Аналогично при ручном (MANUAL) присоединении, осуществляемом пользователем, например при придании владельца сингулярному набору, необходимо установить связь в наборе (INSERT: INSERT <имя записи> RECORD INTO <имя набора> SET). При автоматическом (AUTOMATIC) включении, выполняемом FROM <имя набора> SET) СУБД, запись помещается в набор (STORE: STORE <имя записи> RECORD).

© Центр дистанционного образования МГУП