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

План:

  1. определение типов и моделей данных
  2. иерархическая и сетевая модели
  3. реляционная модель.

В языке высокого уровня поддерживаются достаточно развитые типы данных, включая простые, структурированные, ссылочные и абстрактные (объекты). Простые типы являются базовыми по отношению к ЭВМ и различаются как целый, вещественный, логический, литерный и т.д. Тип данных – это совокупность структуры данных, операций, накладываемых на данные, и ограничений целостности, то есть мероприятий, которые обеспечивают корректную работу операций с данным типом. Структурный тип предназначен для конструирования из конечного набора базовых типов сложных структур данных. Выделим три основные структурных типа: запись (структура), массив, файл, рекурсивная структура. Массив – совокупность данных одного типа. Операции работы с массивом: создание, задание изначальных значений элементов массива, выбор элементов по значению индексов (порядковому номеру) и избирательное обновление элементов. Ограничения целостностями – это то, что все элементы одного типа и индекс – целое число. Структура (тип записи) – совокупность элементов разного типа. Например, структура – сотрудник включает элементы табельный номер, ФИО, дата рождения. Структура не используется в чистом виде, а для конструирования более сложных типов, в частности файлов. Файл – это совокупность записей одинаковой структуры (массив структур). Файл хранится на жестком диске и предназначен для хранения данных. Функции с файлом: создать, установить указатель на начало файла, записать в конец файла новую запись, считать информацию по указателю и получить указатель на конец файла. Рекурсивный тип – образуется суперпозиция типов данных в целях получения более сложных структур, например, деревьев, поддерживается с помощью указателей.

Ссылочный тип – указатель – это адрес памяти. Всё дисковое пространство разделено на страницы (2, 4, 8 и т.д. килобайт), и адрес памяти – это номер страницы + относительный номер байта внутри страницы. Абстрактный тип (объект) – это интерпретируемый структурированный тип с функциями, определенными над его элементами. При этом определяются имена, типы элементов, функции (методы), а также правила (ограничения целостности) применения этих функций к описанным элементам. Для поддержания во внешней дисковой памяти более сложных структур данных на уровне СУБД поддерживаются модели данных, включая иерархическую, сетевую и реляционную. Модель данных – это совокупность структур данных и правил их порождения, операций над ними и ограничений целостности как перечень мероприятий, направленных на поддержание БД в актуальном состоянии. Целостность – это точность, корректность данных в базе в любой момент времени. Ограничение целостности – набор мероприятий, направленных на поддержание целостности базы и корректности выборки информации.

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

На первых этапах внедрения БД (50–80 годы) широко использовались СУБД первого поколения на ЕС ЭВМ – иерархические и сетевые СУБД.

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

Достоинством иерархической модели является простота и интуитивное восприятие информации. В настоящее время поисковые системы (над реляционными базами) основаны на построении навигационного иерархического интерфейса. Недостатком этой модели является искусственный с избыточностью подход реализации связей «многие ко многим» и процедурность операций манипулирования данными.

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

Город Клиент Материал Материал
Поставщик Отпуск Деталь Деталь
Поставка Строка отпуска Поставка Отпуск
Деталь Деталь Поставщик Клиент

Для реализации базы «склад деталей» на иерархической СУБД необходимо формирование как минимум четырех иерархических структур (лес). Так как отношение «поставщик–деталь», «клиент–деталь» являются «многие ко многим», поэтому необходима избыточность на уровне модели БД. Связь «многим ко многим» развязываются 2 иерархиями.

Сетевая модель.

Это ориентированный граф, в узлах которого расположены типы записей, граф произвольного вида и в вершину может входить несколько дуг. Идея сетевой модели предложена ассоциацией КОДАСИЛ. Характеристика модели КОДАСИЛ:

  1. элемент данных – базовая поименованная единица
  2. агрегат – совокупность данных: массив, структура
  3. запись – поименованная совокупность элементов и/или агрегатов данных
  4. набор – поименованная совокупность записей, образующих двухуровневую иерархическую структуру «исодный–порожденный». Каждый тип набора представляет собой отношение между двумя типами записей. Каждый экземпляр набора содержит один экземпляр записи «владелец» и ноль, один или несколько экземпляров «член набора».

Сеть – это совокупность иерархий.

Ограничением целостности является следующее: в конкретном экземпляре набора экземпляр «член набора» не может иметь более одного экземпляра записи «владелец». Таким образом сеть набирается совокупностью иерархий «один ко многим». Операции: извлечь – извлечь запись можно по ключу, от извлеченной записи возможен переход к подчиненным; включить – можно в ранее объявленный набор, а можно в т.н. сингулярный набор, у которого пока нет владельца; переключить – из одного набора в другой; удалить – удаляется не запись, а связи; модифицировать – изменить значение аргументов в выбранной записи. Достоинства – простота реализации связи «многие ко многим».

Сетевые СУБД – IDMS –> СЕТЬ и СЕТОР.

Сетевые модели хороши для реализации технических коммуникаций (описание электрических сетей, тепловых сетей) и применяются в инженерных расчетах. В настоящее время реализуются либо как собственные разработки, либо на ОО СУБД.

Пример сетевой модели базы «склад деталей».

Таким образом в БД хранятся экземпляры типов записей «город», «поставщик», «поставка», «деталь» и т.д., которые связаны в рамках определенных экземпляров наборов отношениями «один ко многим». Например, деталь 1 в типе набора «деталь – поставка» является владельцем экземпляров поставка 2 и поставка 6, а деталь 2 в этом типе набора является владельцем поставки 1, 2, 7. Деталь 1 и 2 находятся в разных связках, то есть в разных экземпляров набора.

К ранним видом СУБД относятся псевдореляционные. Они получили распространение на ПЭВМ, это системы dBase группы. К ним относятся Clipper, FoxPro, FoxBase. В этих системах каждая таблица (тип записи) хранится в отдельном файле с расширением dbf, например, отдельно файл «Город», файл «Поставщик» и т.д. Между файлами связи поддерживались на программном уровне в клиентском приложении. Для каждого файла создавались индексы для обеспечения быстрого доступа к записям файлов по ключу. Далее мы перейдем к реляционной модели, которая поддерживает ссылочную целостность между сущностями.