Полная версия

Главная arrow Информатика arrow Базы данных: проектирование

  • Увеличить шрифт
  • Уменьшить шрифт


<<   СОДЕРЖАНИЕ   >>

Реляционная операция "Деление"

Операция "Деление" ввиду возможности ее представления с помощью других реляционных операций в язык Б()Б не включается, но понимание ее сути позволяет разработчику понимать определенные процессы над данными, которые такой операцией определяются. Данная операция предполагает, что для ее проведения необходимо обладать тремя исходными отношениями, два из которых представляются делимым и делителем, а третье — посредником вычисления. В результирующем отношении должны быть представлены такие кортежи, которые представлены в отношении-посреднике полностью совпадающими кортежами.

Здесь появляется понятие "равенство кортежей", которое определяет точное совпадение значений сравниваемых кортежей по всем имеющимся у них атрибутам, с учетом того, что перечень атрибутов является полностью одинаковым.

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

Как очевидно из примера, отношения Л и Б являются исходными отношениями, содержащими определенные сведения о сотрудниках и должностях. При этом оба отношения содержат не все кортежи, которые могут быть в общей совокупности значений, а только те, которые получены в результате выполнения каких-либо ранее рассмотренных реляционных операций.

Отношение В является посредником, атрибутивный состав которого представляется совокупностью атрибутов по отношениям Л и Б в их полном составе. Таким образом, операция "Деление" может быть полностью выполнена с учетом правила ее выполнения по равенству кортежей исходных отношений и отношения-посредника.

Алгоритмически операция "Деление" выполняется следующим образом.

1. Над отношениями А и Б выполняется операция "Скалярное произведение" (рис. 1.32), которая приводит к появлению всех возможных пересечений кортежей обоих исходных отношений.

image32

Рис. 1.31. Пример выполнения операции "Деление"


image33

Рис. 1.32. Пример операции "Деление": скалярное произведение исходных отношений


2. Полученное отношение после скалярного произведения сравнивается с отношением-посредником, содержащим наборы значений, которые определяют совокупность допустимых комбинаций значений по генеральным данным исходных для операции "Деление" отношений. Данное действие обладает одной особенностью — кортеж исходного отношения А должен

быть представлен в отношении-посреднике В вместе со всеми кортежами исходного отношения Б (рис. 1.33).

image34

Рис. 1.33. Пример операции "Деление": сравнение кортежей


3. Из результата выделяем только те домены (рис. 1.34), которые соответствуют отношению-делимому (отношение А).

image35

Рис. 1.34. Пример операции "Деление": выделение доменов


4. Поскольку операция "Деление" в качестве результата выделяет только уникальные кортежи (рис. 1.35), то последним действием является ликвидация дублирования кортежей.

image36

Рис. 1.35. Пример операции "Деление": выделение уникальных кортежей


Представленный пример показывает, что ранее рассмотренные операции реляционной алгебры дают исчерпывающий инструментарий для выполнения операции "Деление", что не требует отдельной реализации данной операции в рамках языка БОД., являющегося стандартом языка обработки манипулирования данными в реляционных базах данных.

 
<<   СОДЕРЖАНИЕ   >>