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

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

4.6.2 Декартово произведение

Определение. Декартовым произведением отношений r и s арностей k_r и k_s, с непересекающимися множествами атрибутов, соответственно R и S, называется отношение t=r \times s арности k_r+k_s, состоящее из кортежей, первые k_r компонентов которых есть кортежи из r, а последние k_s компонентов выбираются из s. Иначе говоря, кортежи t образованы конкатенацией каждого кортежа из r с каждым кортежем из s. Поэтому, если в текущем состоянии r и s имеют n_r и n_s кортежей, то в t их n_r*n_s.

Замечание. В одном отношении недопустим повтор имен. Поэтому, в частности, не существует декартов квадрат. При соединении отношений с одноименными атрибутами некоторые из них могут быть переименованы исходя из семантики данных и соединения.

Рассмотрим пример декартова произведения:

r: \begin{array}{|c|c|c|} \hline A & B & C \\ \hline a_1 & b_1 & c_1 \\  \hline a_2 & b_1 & c_2 \\ \hline a_3 & b_3 & c_2 \\ \hline \end{array}

s: \begin{array}{|c|c|} \hline D & E \\ \hline d_1 & e_1 \\  \hline d_2 & e_2 \\ \hline \end{array}

r \times s: \begin{array}{|c|c|c|c|c|} \hline A & B & C & D & E\\ \hline a_1 & b_1 & c_1 & d_1 & e_1\\  \hline a_1 & b_1 & c_1 & d_2 & e_2 \\ \hline a_2 & b_1 & c_2 & d_1 & e_1 \\ \hline a_2 & b_1 & c_2 & d_2 & e_2 \\ \hline a_3 & b_3 & c_2 & d_1 & e_1 \\ \hline a_3 & b_3 & c_2 & d_2 & e_2 \\ \hline \end{array}

4.6.3 Селекция (выбор)

Определение. Пусть F — формула, образованная:

  • операндами в виде констант и имен столбцов (номеров столбцов);
  • операторами сравнения <,=,>,\le,\ge,\not =;
  • логическими операторами\vee,\wedge,\rceil (дизъюнкция, конъюнкция, отрицание).

Тогда результат селекции sel_F(r)selp(r) есть множество кортежей t из r, для которых формула F истинна.

Рассмотрим пример селекции по условию (C=c_2)\wedge(B=b_1):

r: \begin{array}{|c|c|c|} \hline A & B & C \\ \hline a_1& b_1 & c_1 \\  \hline a_2 & b_1 & c_2 \\ \hline a_3& b_3 & c_2 \\ \hline \end{array}

sel_{C=c_2 \cap B=b_1}(r): \begin{array}{|c|c|c|} \hline A & B & C \\  \hline a_2 & b_1 & c_2 \\  \hline \end{array}

4.6.4 Булевы операции

Два отношения r_1 и r_2 с одной и той же схемой R могут рассматриваться как подмножества множества всех возможных кортежей в схеме R. Поэтому к ним применимы булевы операции пересечения, объединения и разности \cup, \cap,- .

r_1: \begin{array}{|c|c|c|} \hline A & B & C \\ \hline a_1& b_1 & c_1 \\  \hline a_2 & b_1 & c_2 \\ \hline a_3& b_2 & c_1 \\ \hline \end{array}

r_2: \begin{array}{|c|c|c|} \hline A & B & C \\ \hline a_1& b_1 & c_1 \\  \hline a_2 & b_1 & c_1 \\ \hline a_3& b_3 & c_2 \\ \hline \end{array}

r_1\cap r_2: \begin{array}{|c|c|c|} \hline A & B & C \\ \hline a_1& b_1 & c_1 \\ \hline \end{array}

r_1\cup r_2: \begin{array}{|c|c|c|} \hline A & B & C \\ \hline a_1& b_1 & c_1 \\ \hline a_2& b_1 & c_2 \\ \hline a_3& b_2 & c_1 \\ \hline a_2& b_1 & c_1 \\ \hline a_3& b_2 & c_2 \\ \hline \end{array}

r_1-r_2: \begin{array}{|c|c|c|} \hline A & B & C \\ \hline a_2& b_1 & c_2 \\ \hline a_3& b_2 & c_1 \\ \hline \end{array}

Естественно, отношения с разными схемами несовместимы. Однако, операция переименования атрибутов, которую мы рассмотрим позже, в отдельных случаях может сделать разносортные отношения совместимыми.

4.6.5 Дополнение

В определении дополнения возникают трудности. Пусть dom(R) есть множество всех возможных кортежей над атрибутами схемы R с определенным для каждого атрибута доменом.

Если хотя бы один домен бесконечен, то полное отношение r^*, включающее все элементы из dom(R), не будет отношением в понимании реляционной алгебры.

Не будет отношением и дополнение к конечному отношению r:

\bar{r}=r^*-r

Поэтому реляционную алгебру естественно рассматривать, не включая в неё дополнения.

4.6.6 Частное

Рассмотрим самую странную, на первый взгляд, операцию —частное.

Определение. Пусть даны отношение r с арностью k_r и схемой R и отношение s с арностью k_s<k_r и схемой S, такой что S\subset R и S\not=0. Тогда частным называется отношение r \div S арности k_s-k_r, которое содержит столбцы отношения r, отсутствующие в s. Часть записи r включается в r \div S, если в r она сцеплена с каждой записью из s.

Смысл этой операции будет понятен позднее при изучении многозначных функциональных зависимостей (MV-зависимостей).

Обозначение: r \mathbf {division} s или division(r,s) или r \div s

Рассмотрим пример частного:

r: \begin{array}{|c|c|c|c|} \hline A & B & C & D \\ \hline a_1 & b_2 & c_3 & d_1 \\  \hline a_1 & b_2 & c_4 & d_3  \\ \hline a_2 & b_3 & c_4 & d_3 \\ \hline a_3 & b_4 & c_3 & d_1  \\ \hline a_3 & b_4 & c_4 & d_3  \\ \hline \end{array}

s: \begin{array}{|c|c|} \hline C & D \\ \hline c_3 & d_1 \\ \hline c_4 & d_3 \\ \hline \end{array}

r\div s: \begin{array}{|c|c|} \hline A & B \\ \hline a_1 & b_2 \\ \hline a_3 & b_4 \\ \hline \end{array}

4.7 Совместимость отношений и переименование атрибутов

Переименование атрибутов — самая необычная операция реляционной алгебры. Выясним, зачем она может понадобиться. Уже говорилось, что операции объединение, пересечение и разность, требуют, чтобы отношения-операнды были совместимы, то есть относились к одному сорту. Такие отношения отличаются только именами и состояниями. Сигнатуры у них одинаковы, то есть количество атрибутов одно и то же и атрибуты попарно совпадают по типам, а в простейшем случае, ещё и по именам.

Если же имена отношений и/или атрибутов не совпадают, необходимо установить соответствие между именами или изменить некоторые из имён. Естественно, приводить к одному имени можно только атрибуты, имеющие одинаковый смысл.

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

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

Рассмотрим несколько примеров переименования.

Пример

Необходимо объединить отношения "Employee" и "Работники" для расчета суммарной заработной платы. Схемы отношений:

Employee (empno, ename, salary, mgr)
Работники (Тно, ФИО,  зарплата, Тно_нач)

где Тно — табельный номер, Тно_нач — табельный номер начальника.

Выполняем переименования атрибутов: Тно — empno, ФИО ename, зарплата —salary, Тно_нач — mgr. Типы и смысл соответствующих атрибутов считаются одинаковыми.

Один из вариантов команды переименования атрибутов выглядит так: [имя_отношения] RENAME список_старых_атр AS список_новых_атр.

В рассмотренном примере имена объединялись.

Пример

Переименование атрибутов необходимое для объединения отношения с собой.

Скажем, необходимо выбрать всех сотрудников и их непосредственных начальников. Ответ можно получить из декартова произведения только что введённого отношения Employee с собой после переименования. Его схема после переименования атрибутов empno, ename, salary, mgr для начальников в empno_mgr, ename_mgr, salary_mgr, mgr_mgr, соответственно, выглядит так:

(empno, ename, salary, mgr, empno_mgr, ename_mgr, salary_mgr, mgr_mgr).

В этом примере имена разделялись. Смысл атрибутов с суффиксом _mgr тот же, что раньше, но характеризует только сотрудников как начальников.