Домены, атрибуты и отношения

Базовые структурные компоненты реляционной модели данных

Реляционная модель данных

Реляционная модель данных (РМД) была разработана сотрудником IBM Коддом (Codd) еще в 1969-70 г.г. на основе математической теории отношений. В настоящее время это наиболее распространенная модель данных, используемая коммерческими СУБД. Имеет свои достоинства и недостатки.

Достоинства:

- наличие небольшого набора абстракций

- наличие простого и в то же время мощного математического аппарата

- возможность ненавигационного манипулирования данными

Недостатки:

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

- невозможность адекватного отображения семантики предметной области.

Как и любая другая, реляционная модель данных определяет

- структурную часть,

- целостную часть,

- манипуляционную часть.

Соответственно, для описания структуры используется язык описания данных (ЯОД), для манипуляций с данными используется язык манипулирования данными (ЯМД). Особенности реляционной модели данных, отличающие ее от моделей сущность-связь:

- определена манипуляционная часть – конкретный набор операций, функциональные возможности,

- имеются конкретные языки описания данных и манипулирования данными,

- современные реляционные СУБД используют единый язык – SQL, в котором объединены и ЯОД, и ЯМД.

Базовыми структурными компонентами РМД являются:

- домены и атрибуты

- отношения

- связи

Определение

Домен – множество элементов одного типа.

Кодд определил простой домен, элементы которого имеют простые (атомарные) значения, и составной домен, элементы которого представляют собой отношения, построенные на простых доменах.

Примеры простых доменов: ГОД = {1985, 2003, 2000}; ДЕНЬГИ = {500, 1000, 850}

Пример составного домена, построенного на простых доменах ГОД и ДЕНЬГИ:

ИСТОРИЯ ЗАРПЛАТЫ = {{<1985, 500>, <2000, 1000>}, {<2000, 850>}, {<1985, 850>, <2000, 500>, <2003, 1000>}}

В данном примере значением одного элемента составного домена является множество пар вида <ГОД, ДЕНЬГИ>

 

Отношение реляционной модели определяется в соответствии с его определением в теории множеств:

Определение

Пусть дана совокупность множеств D1, D2, …, Dn, не обязательно различных. Тогда отношение R, определенное на этих множествах, есть множество упорядоченных кортежей <d1, d2, …, dn> таких, что di Î Di для каждого i из [1:n].

В реляционной модели данных множества Di представляют собой домены.

Пример: даны два домена D1 = {a, b, c} и D2 = {1, 2}. Отношением, построенным на данных доменах, может быть R1 = {<a, 2>, <c, 1>}. Другое отношение, построенное на этих же доменах:
R2 = {<a, 2>, <b, 2>, <a, 1>}.

Свойства отношения:

- кортежи отношения не упорядочены,

- домены внутри кортежей упорядочены.

Определение

Атрибуты задают способ использования домена внутри отношения.

В связи с введением понятия атрибута в реляционной модели данных вводится понятие схемы отношения:

Определение

Схема отношения – это именованная совокупность пар <имя атрибута : имя домена>.

Схема отношения представляет собой интенсионал отношения.

Рассмотрим пример. Пусть даны два домена: ЧИСЛО и СТРОКА. В отношении ОТДЕЛ домен ЧИСЛО используется для задания номера отдела – вводим атрибут Номер отдела, а домен СТРОКА используется для задания названия отдела – атрибут Название. Тогда отношению ОТДЕЛ соответствует следующая схема отношения:

ОТДЕЛ ( Номер отдела: ЧИСЛО, Название: СТРОКА )

В РМД, как упоминалось выше, может существовать составной домен. В соответствии со своим определением, составной домен представляет собой отношение, построенное также на простых доменах. Но в таком отношении не появляются атрибуты. Вернемся к домену ИСТОРИЯ ЗАРПЛАТЫ. Он построен на простых доменах ГОД и ДЕНЬГИ и может быть задан следующим образом:

ИСТОРИЯ ЗАРПЛАТЫ ( ГОД, ДЕНЬГИ )

В задании схемы отношения могут использоваться и составные домены. Рассмотрим отношение СОТРУДНИК. Его атрибутами могут быть Номер сотрудника (определен на домене ЧИСЛО), Имя (на домене СТРОКА) и Зарплата, определенный на домене ИСТОРИЯ ЗАРПЛАТЫ:

СОТРУДНИК ( Номер сотрудника: ЧИСЛО, Имя: СТРОКА, Зарплата: ИСТОРИЯ ЗАРПЛАТЫ )

Конкретная реализация (экстенсионал) данного отношения может иметь следующий вид:

Номер сотрудника Имя Зарплата
Иванов 1985, 500 2000, 1000
Петров 1985, 850 2000, 500 2003, 1000

 

Основополагающее требование РМД: все отношения должны быть нормализованными.

Определение

Нормализованное отношение – это отношение, в котором каждое значение атрибутов является атомарным.

В соответствии с данным определением приведенный пример представляет ненормализованное отношение, которое не является отношением РМД.

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

Номер сотрудника Имя Зарплата
Иванов 1985, 500
Иванов 2000, 1000
Петров 1985, 850
Петров 2000, 500
Петров 2003, 1000

 

Свойства отношения реляционной модели данных.

1) Каждый атрибут отношения имеет уникальное в данном отношении имя

2) Каждый атрибут определен на каком-то одном домене

3) На одном и том же домене может быть определено несколько атрибутов

4) Имя атрибута может совпадать с именем домена

5) Порядок следования атрибутов не устанавливается (атрибуты в определении схемы отношения не упорядочены)

6) В отношении нет совпадающих кортежей (каждый кортеж уникален)

7) Порядок следования кортежей не устанавливается (кортежи в отношении не упорядочены)

8) Отношение имеет имя, которое в схеме базы данных отличается от имен всех других отношений

Примечание: часто в качестве доменов используются интуитивно понятные множества – например, в предыдущем примере интуитивно ясно, что Номер отдела – это число, а Название – это строка. В соответствии с этим в схеме отношения часто опускается указание имени домена:

ОТДЕЛ ( Номер отдела, Название )

В РМД отношение представляет собой единственный структурный компонент, используемый и для представления сущности, и для представления связи.