Кубанский государственный университет
Опубликован: 24.12.2013 | Доступ: свободный | Студентов: 682 / 9 | Длительность: 24:28:00
Лекция 4:

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

4.2 Операции проекции и соединения. Декомпозиция отношений.

Изучим две операции над отношениями — проекцию и естественное соединение. Это позволит рассмотреть разбиение (декомпозицию) отношения на его проекции и восстановление исходного отношения путём соединения этих проекций. Обнаружатся неожиданные для начинающих неполные декомпозиции.

Описания всех остальных операций даны в разделе 4.6.

Определение. Проекция —это набор унарных операций выбора подмножества атрибутов отношений proj_X(r)projx(r), где R — схема отношения r и X\subseteq R — набор атрибутов.

Пример проекции отношения с атрибутами C_1, C_2, C_3 на подмножество \{C_1, C_2\} приведён ниже:

r: \begin{array}{|c|c|c|} \hline C_1 & C_2 & C_3 \\ \hline \end{array}

proj_{\{c1,c2\}}r: \begin{array}{|c|c|} \hline C_1 & C_2 \\ \hline \end{array}

Свойство. Если Y\subseteq X\subseteq R, то proj_y(proj_x(r))=proj_y(r).

Определение (Естественное соединение). Пусть отношения r_1 и r_2 имеют схемыR_1(A_1,\dots,A_k,B_1,\dots,B_n) и R_2(A_1,\dots,A_k,C_1,\dots,C_m). Тогда естественное соединение отношений r_1 и r_2 есть отношение r_3 со схемой R_3(A_1,\dots,A_k,B_1,\dots,B_n,C_1,\dots,C_m), в котором каждая запись(экземпляр) получена конкатенацией каждой записи из r_1 с теми записями из r_2, у которых совпадают значения в общих атрибутах A_1,\dots,A_k.

Естественное соединение отношений r_1, r_2 с общим атрибутом A приведено ниже:

r_1: \begin{array}{|c|c|} \hline B & A \\ \hline b_1 & 3 \\ \hline b_2 & 7 \\ \hline b_3 & 4 \\ \hline b_4 & 4 \\ \hline \end{array}

r_2: \begin{array}{|c|c|} \hline A & C \\ \hline 3 & c_1 \\ \hline 3 & c_2 \\ \hline 4 & c_3 \\ \hline \end{array}.

r_1 join\ r_2: \begin{array}{|c|c|c|} \hline A & B & C \\ \hline 3& b_1 & c_1 \\ \hline 3 & b_1 & c_2 \\ \hline 4 & b_3 & c_3 \\ \hline 4 & b_4 & c_3 \\ \hline \end{array}

Обозначение естественного соединения: join(r_1,r_2) или join_{=A}(r_1,r_2) или r_1join r_2.

Рассмотрим декомпозицию отношения подробнее.

Определение. Полная декомпозиция отношения — это набор его проекций, соединение которых идентично отношению.

Существуют неполные декомпозиции!

Пример полной декомпозиции приведен ниже.

Декомпозируемое отношение:

r: \begin{array}{|c|c|c|} \hline a_1 & b_1 & c_1 \\ \hline a_1 & b_2 & c_2 \\ \hline a_2 & b_3 & c_1 \\ \hline a_2 & b_2 & c_2 \\ \hline \end{array}

Проекции, дающие полную декомпозицию (вычеркиваем повторяющиеся записи):

proj_{\{A,B\}}(r): \begin{array}{|c|c|} \hline A & B \\ \hline a_1 & b_1 \\ \hline a_1 & b_2 \\ \hline a_2 & b_3 \\ \hline a_2 & b_2 \\ \hline \end{array}

proj_{\{B,C\}}(r): \begin{array}{|c|c|}\hline B & C \\ \hline b_1 & c_1 \\ \hline b_2 & c_2 \\ \hline b_3 & c_1 \\ \hline \not{b_2} & \not{c_2} \\ \hline \end{array}

Для исходного отношения r_1 получены проекции на атрибуты \{A,B\} и \{B,C\}. Соединение их даст исходное отношение. Соедините проекции сами.

Для некоторых проекций декомпозиция оказывается неполной. Это означает появление так называемых присоединённых записей, которых не было в исходном отношении.

Соединение проекций r_1,r_2 того же отношения r создает присоединенные записи:

r_1=proj_{\{A,C\}}(r): \begin{array}{|c|c|} \hline A & C \\ \hline a_1 & c_1 \\ \hline a_1 & c_2 \\ \hline a_2 & c_1 \\ \hline a_2 & c_2 \\ \hline \end{array}

r_2=proj_{\{B,C\}}(r): \begin{array}{|c|c|} \hline b_1 & c_1 \\ \hline b_2 & c_2 \\ \hline b_3 & c_1 \\ \hline \end{array}

join_{\{C\}}(r_1,r_2): \begin{array}{|c|c|c|} \hline A & B & C \\ \hline a_1 & b_1 & c_1 \\ \hline \underline {a_1} & \underline{b_3} & \underline{c_1} \\ \hline a_1 & b_2 & c_2 \\ \hline  \underline{a_2} & \underline{b_1} & \underline{c_1} \\ \hline a_2 & b_3 & c_1 \\ \hline a_2 & b_2 & c_2 \\ \hline \end{array}

В восстановленном исходном отношении появились выделенные (подчерктутые) две записи, которых в исходном отношении r не было.

4.3 Первичный ключ. Роль функциональных зависимостей

Уточнение понятия ключа (Первичный ключ отношения). Атрибут или набор атрибутов, значения которых позволяют однозначно выбрать кортеж отношения, называется первичным ключом.

Определение. Ключ, состоящий из одного атрибута, называют простым.

Определение. Ключ, состоящий из двух или более атрибутов, называют составным или конкатенированным.

Определение (Суррогатный ключ). Суррогатным называется ключ, не имеющий прототипа в предметной области. Обычно он генерируется приложением.

Утверждение. Из того, что кортежи отношений не повторяются, следует, что любое отношение имеет ключ.

Заметим, что в ключ могут войти все атрибуты отношения.

Утверждение. Пополнение ключа еще одним (не ключевым) атрибутом есть ключ.

Определение (Минимальный ключ). Если удаление одного атрибута лишает ключевой набор атрибутов статуса ключа, то такой ключ называют минимальным.

Замечание. Первичным ключом называют в действительности минимальный первичный ключ (рисунок 4.4).

 Говорим "первичный ключ", а подразумеваем "минимальный первичный ключ"

Рис. 4.4. Говорим "первичный ключ", а подразумеваем "минимальный первичный ключ"

Замечание. Изучая базы данных, следует понимать, что все приводимые примеры по необходимости сделаны простыми. Всегда следует ограничиваться контекстом примера и не пытаться рассуждать "как в жизни" или "как может быть". Так в отношении на рисунке 4.4. можно было спросить: "А как быть с теми, у кого нет ИНН?". Так вот, в примере предполагается, что ИНН есть у всех и другие варианты не рассматриваются.

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

Функциональные зависимости (ФЗ) на отношениях и зависимости связанные с обобщениями функций играют важную роль в теории баз данных. В частности, ключи определяются через функции (рисунок 4.5).

 Функциональные зависимости на отношении

Рис. 4.5. Функциональные зависимости на отношении

Утверждение. Любой атрибут находится в функциональной зависимости от ключа. Могут существовать и другие функциональные зависимости.