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

Различают три вида моделей базы данных логического уровня представления: иерархические; сетевые; реляционные.

Иерархическая модель – набор древовидных структур данных, объединяющих группу взаимосвязанных полей (рис. 10.24, а). В иерархической структуре присутствует единственный корневой сегмент, а прочие сегменты могут иметь не более одного "родителя" и любое число подчиненных сегментов. Экземпляр записи иерархической структуры формируется путем "левостороннего" обхода дерева. Для поддержания структуры данных используется физическое соположение экземпляров сегментов, а также адресные и символические указатели.

Рис. 10.24. Модели данных базы данных

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

Реляционная модель определена в виде совокупности отношений (таблиц), каждое из которых представляет собой плоский файл (flat file). Для реляционного отношения задается схема R(A1,A2,..., Ап), где {A1, A2,..., An} – множество имен атрибутов, размерно́сть отношения п носит название -арности отношения. Каждый атрибут Аi принадлежит домену – Di. Кортеж отношения – отдельный экземпляр (строка таблицы), в которой заданы значения атрибутов. Порядок атрибутов и порядок кортежей в отношении несуществен. Ключ отношения – один или более атрибутов, обеспечивающих идентификацию кортежей. Отношение может иметь несколько ключей, один из которых принимается за первичный ключ (Primary Key), а остальные – за возможные или альтернативные ключи (Alternative Key). Первичный ключ часто используется как ключ связи отношений (Foreign Key – FK) или внешний ключ (рис. 10.24, в). Например, несколько экземпляров записи (кортежей) отношения Е3 связаны с одним и тем же кортежем отношения Е1 через ключ связи Р1, который не входит в состав первичного ключа отношения Е3. Такая связь называется неидентифицирующей. Напротив, идентифицирующая связь между отношениями Е2 и Ek поддерживается с помощью ключа связи Р2, который входит в состав первичного ключа отношения Ek.

Логическая структура записи реляционного отношения соответствует требованиям нормализации, которая основана на функциональной зависимости неключевых атрибутов от ключа: атрибут Y функционально зависит от атрибута X в том и только в том случае, когда каждому значению X соответствует в точности одно значение Y в кортежах от – ношения.

Функциональная зависимость записывается как предикат[1]: R.X→R.Y и называется полной, если атрибут Y не зависит функционально от любого подмножества X. Функциональная зависимость R.XR.Y называется транзитивной, если существует такой атрибут Z, что имеются функциональные зависимости: R.XR.Z и R.ZR. Y, но при этом отсутствует функциональная зависимость R.ZR.X. Два или более атрибута взаимно независимы, если ни один из этих атрибутов не является функционально зависимым от одних и тех же атрибутов. Наиболее востребованы следующие нормальные формы реляционных отношений[2]:

первая (1НФ) все кортежи содержат атомарные значения атрибутов;

вторая (2НФ) – отношение в 1НФ, в котором каждый неключевой атрибут функционально полно зависит от первичного ключа;

третья (ЗНФ) – отношение в 2НФ, в котором каждый неключевой атрибут не транзитивно зависит от первичного ключа.

Пример нормализации отношения приведен на рис. 10.25. Отношение R1 находится в 1НФ, атрибут А1 может быть ключом отношения R2. Отношение R1 содержит транзитивную зависимость атрибута А4 от ключа А1 (через атрибут А2). Отношения R2 и R3 находятся в ЗНФ.

Рис. 10.25. Нормализация отношения R1

Для представления реляционной модели применяются ER-диаграммы (Entity-Relationship – "сущность-связь"). Сущность – реальный или абстрактный объект, информация о котором должна храниться в базе данных, связь – ассоциация, устанавливаемая между двумя сущностями. Сущности являются аналогом реляционных отношений (таблиц) – они состоят из атрибутов, которые имеют имя и тип данных. Сущность вида супертип может быть расщеплена на взаимно исключающие подтипы, каждый из которых включает общие атрибуты и/или связи, явно определяемые один раз, а также собственные атрибуты и/или связи. Связь двух сущностей имеет смысловое ОГЛАВЛЕНИЕ, размерность (кардинальность), признак обязательности (рис. 10.26).

Рис. 10.26. Связь экземпляров сущностей

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

Для обеспечения ссылочной целостности внешние ключи связанных сущностей должны совпадать.

Известны три подхода для поддержания ссылочной целостности:

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

• при удалении кортежа, на который имеются ссылки, во всех ссылающихся кортежах значение внешнего ключа автоматически становится неопределенным;

• каскадное удаление – при удалении кортежа из отношения, на которое ведет ссылка из ссылающегося отношения, автоматически удаляются все ссылающиеся кортежи.