Домены, атрибуты и отношения
Базовые структурные компоненты реляционной модели данных
Реляционная модель данных
Реляционная модель данных (РМД) была разработана сотрудником 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) Отношение имеет имя, которое в схеме базы данных отличается от имен всех других отношений
Примечание: часто в качестве доменов используются интуитивно понятные множества – например, в предыдущем примере интуитивно ясно, что Номер отдела – это число, а Название – это строка. В соответствии с этим в схеме отношения часто опускается указание имени домена:
ОТДЕЛ ( Номер отдела, Название )
В РМД отношение представляет собой единственный структурный компонент, используемый и для представления сущности, и для представления связи.