
- •Содержание
- •Основные понятия
- •Понятие данных
- •Файловые системы
- •Системы баз данных
- •История развития субд
- •Трехуровневая архитектура ansi/sparc
- •Общая характеристика моделей данных
- •Основные понятия модели данных
- •Представление статических и динамических свойств
- •Общая характеристика структурных компонентов. Множества: домены и атрибуты
- •Общая характеристика структурных компонентов. Отношения: сущности
- •Общая характеристика структурных компонентов. Отношения: связи
- •Общая характеристика ограничений целостности
- •Модель данных «сущность – связь»
- •Уровни представления информации
- •Уровень 1 – информация о сущностях и связях
- •Уровень 2. Структура информации
- •Ограничения целостности в модели сущность-связь
- •Расширенная модель данных сущность-связь: нотация idef1x
- •Реляционная модель данных
- •Базовые структурные компоненты реляционной модели данных
- •Целостная часть реляционной модели данных
- •Языковые средства описания данных
- •Манипуляционная часть реляционной модели данных
- •Подмножество sql для манипулирования данными
- •Примеры написания запросов
- •I. И еще несколько примеров написания запросов из документации [10]
- •Краткая характеристика языка sql pl db2® udb
- •Дополнительные возможности описания ограничений целостности
- •Дополнительные возможности db2
- •Описание данных
- •Манипулирование данными
- •Дополнительные возможности формирования запросов
- •Типы данных, определенные пользователем
- •Функции, определенные пользователем
- •Теория проектирования реляционных баз данных
- •Цели проектирования
- •Функциональные зависимости
- •1. Рефлексивность
- •2. Пополнение
- •3. Транзитивность
- •4. Псевдотранзитивность
- •5. Аддитивность (объединение)
- •6. Декомпозиция (проективность)
- •7. Композиция
- •Нормализация отношений
- •Внутренние структуры хранения
- •Структурная схема обработки запроса
- •Бинарные деревья
- •Многоходовые деревья
- •Сравнение методов индексирования
- •Создание индексов в db2®
- •Организация файлов базы данных в db2®
Реляционная модель данных
Реляционная модель данных (РМД) была разработана сотрудником IBM Э.Ф. Коддом (E.F. 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>}.
Свойства отношения:
кортежи отношения не упорядочены,
домены внутри кортежей упорядочены.
Определение
Атрибуты задают способ использования домена внутри отношения.
В связи с введением понятия атрибута в реляционной модели данных вводится понятие схемы отношения:
Определение
Схема отношения – это именованная совокупность пар <имя атрибута : имя домена>.
Схема отношения представляет собой интенсионал отношения.
Рассмотрим пример. Пусть даны два домена: ЧИСЛО и СТРОКА. В отношении ОТДЕЛ домен ЧИСЛО используется для задания номера отдела – вводим атрибут Номер отдела, а домен СТРОКА используется для задания названия отдела – атрибут Название. Тогда отношению ОТДЕЛ соответствует следующая схема отношения:
ОТДЕЛ ( Номер отдела: ЧИСЛО, Название: СТРОКА )
В реляционной модели данных, как упоминалось выше, может существовать составной домен. В соответствии со своим определением, составной домен представляет собой отношение, построенное также на простых доменах. Но в таком отношении не появляются атрибуты. Вернемся к домену ИСТОРИЯ ЗАРПЛАТЫ. Он построен на простых доменах ГОД и ДЕНЬГИ и может быть задан следующим образом:
ИСТОРИЯ ЗАРПЛАТЫ ( ГОД, ДЕНЬГИ )
В задании схемы отношения могут использоваться и составные домены. Рассмотрим отношение СОТРУДНИК. Его атрибутами могут быть Номер сотрудника (определен на домене ЧИСЛО), Имя (на домене СТРОКА) и Зарплата, определенный на домене ИСТОРИЯ ЗАРПЛАТЫ:
СОТРУДНИК ( Номер сотрудника: ЧИСЛО, Имя: СТРОКА, Зарплата: ИСТОРИЯ ЗАРПЛАТЫ )
Конкретная реализация (экстенсионал) данного отношения может иметь следующий вид (Рис. 4.1):
Номер сотрудника |
Имя |
Зарплата |
1 |
Иванов |
1985, 500 2000, 1000 |
2 |
Петров |
1985, 850 2000, 500 2003, 1000 |
Рис. 4.1. Пример представления отношения СОТРУДНИК
Основополагающее требование реляционной модели данных: все отношения должны быть нормализованными.
Определение
Нормализованное отношение – это отношение, в котором каждое значение атрибутов является атомарным.
В соответствии с данным определением приведенный пример (Рис. 4.1) представляет ненормализованное отношение, которое не допускается в реляционной модели данных.
Ненормализованные отношения очень легко преобразовать в нормализованные. Для этого в схеме отношения составной домен заменяется составляющими его простыми доменами, а в реализации отношения значения атрибутов, определенных на других доменах, повторяются для каждого кортежа составного домена. Так, нормализация приведенного выше отношения даст следующее – нормализованное – отношение (Рис. 4.2):
Номер сотрудника |
Имя |
Зарплата |
1 |
Иванов |
1985, 500 |
1 |
Иванов |
2000, 1000 |
2 |
Петров |
1985, 850 |
2 |
Петров |
2000, 500 |
2 |
Петров |
2003, 1000 |
Рис. 4.2. Нормализованное отношение СОТРУДНИК
Свойства отношения реляционной модели данных:
Каждый атрибут отношения имеет уникальное в данном отношении имя.
Каждый атрибут определен на каком-то одном домене.
На одном и том же домене может быть определено несколько атрибутов.
Имя атрибута может совпадать с именем домена.
Порядок следования атрибутов не устанавливается (атрибуты в определении схемы отношения не упорядочены).
В отношении нет совпадающих кортежей (каждый кортеж уникален).
Порядок следования кортежей не устанавливается (кортежи в отношении не упорядочены).
Отношение имеет имя, которое в схеме базы данных отличается от имен всех других отношений.
Примечание: часто в качестве доменов используются интуитивно понятные множества – например, в предыдущем примере интуитивно ясно, что Номер отдела – это число, а Название – это строка. В соответствии с этим в схеме отношения часто опускается указание имени домена:
ОТДЕЛ ( Номер отдела, Название )
В реляционной модели данных отношение представляет собой единственный структурный компонент, используемый и для представления сущности, и для представления связи.
Представление сущности
Представление сущности означает возможность уникальной идентификации каждого отдельного кортежа отношения по значениям его атрибутов. Так как в отношении нет дубликатов кортежей, каждый кортеж уникален и может быть идентифицирован значениями всех своих атрибутов. Тем не менее, как правило, в кортежах можно выделить некоторое подмножество атрибутов, значения которых уникальны для всех реализаций отношения – настоящих, бывших в прошлом и будущих. Такие подмножества атрибутов представляют собой ключи.
Определение
Ключ – это совокупность атрибутов, которая однозначно идентифицирует каждый кортеж данного отношения.
Ключ может содержать дополнительные атрибуты, которые не обязательны для уникальной идентификации кортежа. Поэтому в РМД вводится понятие первичного ключа, состоящего только из тех атрибутов, которые действительно необходимы для уникальной идентификации кортежа.
Определение
Первичный ключ (PK – Primary Key) – не избыточный набор атрибутов, значения которых однозначно определяют кортеж отношения.
Первичный ключ не избыточен, если:
состоит из одного атрибута,
состоит из нескольких атрибутов, но ни один из этих атрибутов не является лишним для однозначной идентификации каждого кортежа (если ключ состоит из нескольких атрибутов, он называется составным).
Таким образом, в соответствии с определением, первичный ключ отношения обладает следующими двумя свойствами:
уникальность – в каждом кортеже отношения значение ключа единственным образом идентифицирует этот кортеж;
неприводимость – никакое собственное подмножество ключа не обладает свойством уникальности.
Отношение может иметь только один первичный ключ. Если в отношении можно выделить несколько наборов атрибутов, каждый из которых уникально и не избыточно идентифицирует каждый кортеж отношения, в таком случае один из них выбирается в качестве первичного ключа, а все остальные являются альтернативными ключами (AK – Alternate Key). Например, в отношении
КАФЕДРА ( Номер кафедры, Название )
каждый из атрибутов уникально идентифицирует каждый кортеж. Если в качестве первичного ключа выбран атрибут Номер кафедры, тогда атрибут Название является альтернативным ключом.
В схеме отношения первичный ключ будем подчеркивать, а после альтернативных ключей добавлять аббревиатуру АК: КАФЕДРА ( Номер кафедры, Название (АК) )
Связи
Связи между сущностями отражают взаимосвязи между конкретными экземплярами сущностей. Эти взаимосвязи представляются с помощью внешних ключей.
Определение
Внешний ключ (FK – Foreign Key) – это атрибут или некоторое множество атрибутов отношения R1, которые не являются собственными атрибутами отношения R1, но их значение совпадает со значениями первичного ключа некоторого отношения R2 (возможность идентичности R1 и R2 не исключается).
Атрибуты внешнего ключа представляют собой некоторые дополнительные атрибуты, которые не определяют саму сущность, но позволяют установить ассоциации с другой сущностью.
Основными типами связей между сущностями являются связи 1 : n и n : n. Рассмотрим представление этих связей. Начнем со связи типа 1 : n.
Рассмотрим следующие отношения:
СОТРУДНИК с атрибутами Номер сотрудника (первичный ключ), Имя и Год рождения
ОТДЕЛ с атрибутами Номер отдела (первичный ключ) и Название.
Между этими отношениями определена связь типа 1 : n – каждый сотрудник работает в одном определенном отделе, и в каждом отделе работают много сотрудников. Диаграмма сущность-связь П.Чена имеет следующий вид (Рис. 4.3):
Рис. 4.3. Представление связи типа 1 : n в диаграмме П. Чена
Эта связь определяется атрибутом внешнего ключа в отношении СОТРУДНИК: в это отношение включается внешний ключ Номер отдела, значения которого совпадают со значениями первичного ключа Номер отдела отношения ОТДЕЛ. В схеме отношения атрибуты внешнего ключа будем помечать аббревиатурой FK. Схемы отношений будут выглядеть следующим образом:
ОТДЕЛ ( Номер отдела, Название (АК) )
СОТРУДНИК ( Номер сотрудника, Имя, Год рождения, Номер отдела (FK) )
Этим схемам отношений удовлетворяют следующие реализации (Рис. 4.4):
ОТДЕЛ |
Номер отдела |
Название |
|
Первичный ключ |
Альтернативный ключ |
|
1 |
Бухгалтерия |
|
2 |
АХО |
|
3 |
Библиотека |
СОТРУДНИК |
Номер сотрудника |
Имя |
Год рождения |
Номер отдела |
|
Первичный ключ |
|
|
Внешний ключ |
|
1 |
Иванов |
1953 |
1 |
|
2 |
Петров |
1970 |
3 |
Рис. 4.4. Пример представления связи типа 1 : n в РМД
В данном примере в отношении СОТРУДНИК может появиться кортеж <3, Сидоров, 1985, 3>, но не может появиться кортеж <3, Сидоров, 1983, 5>, так как в этом кортеже значению «5» внешнего ключа отношения СОТРУДНИК не соответствует никакое значение первичного ключа отношения ОТДЕЛ.
Таким образом, связи типа 1 : n никак специально не представляются, только в отношении на стороне «много» появляются атрибуты внешнего ключа.
Следует отметить, что нотация IDEF1x полностью соответствует представлению связи в РМД (Рис. 4.5).
Рис. 4.5. Представление связи типа 1 : n в нотации IDEF1x
Рассмотрим представление связи типа n : n. Например, рассмотрим отношение ПОСТАВЩИК с атрибутами Номер поставщика (первичный ключ), Имя и Адрес, и отношение ДЕТАЛЬ с атрибутами Номер детали (первичный ключ), Название и Цена. Между этими отношениями определена связь типа n : n – каждый поставщик поставляет много деталей, и каждая деталь поставляется многими поставщиками. Диаграмма сущность-связь П.Чена имеет следующий вид (Рис. 4.6):
Рис. 4.6. Представление связи типа n : n в диаграмме П. Чена
В этом случае в РМД связь ПОСТАВКА ( ПОСТАВЩИК, ДЕТАЛЬ ) представляется собственным отношением, в котором будут атрибуты внешних ключей, ссылающиеся на отношения ПОСТАВЩИК и ДЕТАЛЬ. Эти атрибуты могут войти в состав первичного ключа отношения связи. Кроме того, отношение связи может иметь собственный атрибут. Схемы отношений будут выглядеть следующим образом:
ПОСТАВЩИК ( Номер поставщика, Имя, Адрес )
ДЕТАЛЬ ( Номер детали, Название, Цена )
ПОСТАВКА ( Номер поставщика (FK1), Номер детали (FK2), Количество )
Пример реализации этих отношений (Рис. 4.7):
ПОСТАВЩИК |
Номер поставщика |
Имя |
Адрес |
|
Первичный ключ |
|
|
|
S1 |
Иванов |
Москва |
|
S2 |
Сидоров |
Санкт Петербург |
|
S3 |
Петров |
Тюмень |
ДЕТАЛЬ |
Номер детали |
Название |
Цена |
|
Первичный ключ |
|
|
|
P1 |
Болт |
18 |
|
P2 |
Винт |
14 |
|
P3 |
Гайка |
10 |
|
P4 |
Шуруп |
|
ПОСТАВКА |
Первичный ключ отношения связи |
Количество |
|
Номер поставщика |
Номер детали |
||
|
Внешний ключ отношения ПОСТАВЩИК |
Внешний ключ отношения ДЕТАЛЬ |
Собственный атрибут связи |
|
S1 |
P1 |
100 |
|
S1 |
P2 |
200 |
|
S2 |
P3 |
150 |
Рис. 4.7. Пример представления связи типа n : n в РМД
И в этом случае нотация IDEF1x полностью соответствует РМД. На ранних этапах проектирования могут появиться связи типа n : n, которые в дальнейшем, на следующих этапах, заменяются дополнительным отношением сущности и двумя связями типа 1 : n (Рис. 4.8). Поэтому в дальнейшем, для иллюстрации схем отношений и связей между отношениями будет использована нотация IDEF1x.
Рис. 4.8. Преобразование связи типа n : n в связь типа 1 : n в нотации IDEF1x