Базовая («классическая») алгебра отношений



Дата17.06.2016
өлшемі75.5 Kb.
#143066
Базовая («классическая») алгебра отношений (реляционная алгебра).
Небольшой набор операторов, которые позволяют манипулировать соотношениями и имеют достаточно богатые возможности.

Операторы:



  1. Объединение, пересечение и разность: Обычный набор операторов над множествами.

  • Схемы отношений должен быть одинаковыми.

  1. Выборка: Выбор некоторых строк из отношения.

  2. Проекция: Выбор некоторых столбцов.

  3. Произведение и соединение: Композиция отношений.

  4. Переименование отношений и их атрибутов.



Выборка.
R1 = C(R2),

где C – это условие включающее атрибуты R2.


Пример:

Отношение Sells


bar beer price


Joe's Bud 2.50

Joe's Miller 2.75

Sue's Bud 2.50

Sue's Coors 3.00

Имеется в продаже у Joe JoeMenu = bar=Joes(Sells):


bar beer price


Joe's Bud 2.50

Joe's Miller 2.75
Проекция.
R1 = L(R2), где L – это список атрибутов отношения R2.
Пример: bar,price(Sells):
bar price


Bud 2.50


Miller 2.75

Bud 2.50


Coors 3.00



  • Замечание: в результат включаются и одинаковые кортежи (строки).


Произведение.




R = R1 х R2. Каждый кортеж t1 отношения R1 соединяется с каждым кортежем t2 отношения R2 и кортеж t1 t2 добавляется в отношение R.




-соединение.
R = R1 C R2. Эта операция эквивалентна R = C (R1х R2).
Пример:
Sells =

bar beer price




Joe's Bud 2.50

Joe's Miller 2.75

Sue's Bud 2.50

Sue's Coors 3.00

Bars =

name addr


Joe's Maple St.

Sue's River Rd.

BarInfo = Sells Sells.bar=Bars.nameBars:


bar beer price name addr


Joe's Bud 2.50 Joe's Maple St.

Joe's Miller 2.75 Joe's Maple St.

Sue's Bud 2.50 Sue's River Rd.

Sue's Coors 3.00 Sue's River Rd.

Естественное соединение.

R = R1 R2

Выполняется -соединение отношений R1 и R2 с условием равенства атрибутов с одинаковыми именами. В результат будет включен один столбец для каждой пары одинаковых атрибутов.
Пример: Предположим, что имя атрибута name отношения Bars изменили на bar, т.е. теперь имена атрибутов, определяющих название бара в отношениях Bars и Sells совпадают.
BarInfo = Sells Bars:

bar beer price addr




Joe's Bud 2.50 Maple St.

Joe's Miller 2.75 Maple St.

Sue's Bud 2.50 River Rd.

Sue's Coors 3.00 River Rd.

Переименование.
S(A1, . . . , An ) (R) создаст отношение идентичное отношению R, но с именем S и с атрибутами, порядок и имена которых определены A1,..., An.
Пример: Отношение Bars
name addr


Joe's Maple St.

Sue's River Rd.

R(bar,addr) (Bars) =

name addr


Joe's Maple St.

Sue's River Rd.


  • Имя последнего отношения R.



Комбинирование операций.
Алгебра =

  1. Аргументы +

  2. Способы построения выражений.

Алгебра отношений (реляционная алгебра):



  1. Аргументы = переменные, обозначающие отношения + кнечные (константные) отношения.

  2. Выражения, построенные с использованием каких-либо операторов и круглых скобок.




  • Запрос = выражение алгебры отношений (реляционной алгебры).

Приоритеты операторов.
Обычный способ группировки операторов:

  1. Унарные операторы ,  и  имеют самый высокий приоритет.

  1. Затем следуют “мультипликативные” операторы , С и х.

  2. Самый низкий приоритет имеют «аддитивные» операторы ,  и -.

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

Пример:


R   S T

Операторы будут сгруппированы:

R  ( (S) T).
Каждое выражение требует схемы отношения.


  • Если в выражении присутствуют операторы ,  и -, то структура всех отношений должна быть одинаковой, поэтому используется любая из структур.

  • Проекция: используется список атрибутов этой операции.

  • Выборка: структура не изменяется.

  • Произведение R х S: используются атрибуты R и S.

  • -соединение: так же как и произведение.

  • Естественное соединение: используются атрибуты каждого отношения, общие атрибуты присутствуют только один раз.

  • Переименование: используется все, о чем сказано в операции.

Пример 1. Найти бар, который расположен на Maple Str. или в котором имеется в продаже пиво Bud по цене меньше $3.


Sells (bar, beer, price)

Bars (name, addr)




R(name)



name bar



addr=Maple Str. beer=bud AND price<3




Bars Sells




Пример 2. Найти бары, где есть разные сорта пива по одинаковой цене. Sells (bar, beer, price)
bar

beer <> beer1







S(bar, beer1, price)



Sells Sells




Запись выражений «в строку».


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

  • Переименование атрибутов в схеме нового отношения может быть неявным.

Пример:

Найти бар, который расположен на Maple Str. или в котором имеется в продаже пиво Bud по цене меньше $3.

Sells (bar, beer, price)

Bars (name, addr)


R1(name) := name(addr=Maple Str. (Bars))

R2(name) := bar(beer=Bud AND price<$3 (Sells))

Ответ(name) := R1 R2


Семантика для наборов.
Отношение (в SQL, по крайней мере) - действительно набор или множество с повторениями.


  • Может содержать одинаковые (равные) кортежи более одного раза, хотя нет никакого определенного порядка (в отличие от списка).

  • Например: {1; 2; 1; 3} – набор, а не множество.

  • Выболрка, проекция и соединения для наборов выполняются также как для множеств.

  • Работают на основе кортеж-с-кортежем и не устраняют дублированные кортежи.

Объединение наборов.
Суммируется количество вхождений элемента в обоих наборах.

Пример: {1; 2; 1}  {1; 2; 3} = {1; 1; 1; 2; 2; 3}.



Пересечение наборов.
Выбирается минимум количества вхождений в каждый набор.

Пример: {1; 2; 1}  {1; 2; 3; 3} = {1; 2}.



Разность наборов.
Результат - разность количества вхождений в набор.

Пример: {1; 2; 1} – {1; 2; 3; 3 } = {1}.



Законы для множеств и наборов отличаются.


  • Некоторые знакомые законы поддерживаются для наборов.

  • Например: операторы объединения и пересечения - коммутативны и ассоциативны.

  • Но другие законы, которые поддерживаются для множеств, не поддерживаются для наборов.

Пример:


R  (S  T)  (R  S)  (R  T) поддерживается для множеств.

  • Пусть R, S, и T – наборы из одного элемента {1}.

  • Левая сторона: S  T = {1; 1}; R  (S  T) = {1}.

  • Правая сторона: R  S = R  T = {1};

( R  S)  (R  T) = {1}  {1} = {1; 1}  {1}.
Расширенная (“неклассическая”) реляционная алгебра.
Добавляется несколько операторов, необходимых для SQL, операций над наборами.

1. Оператор устранения дублирования .

2. Расширенная проекция.

3. Оператор сортировки .

4. Оператор группировки-агрегирования  .

5. Оператор внешнего соединения .




Устранение дублирования.

(R) = отношению, где присутствует только один кортеж из нескольких одинаковых, имеющихся в отношении R.

Например:

R = A B  (R) = A B



1 2 1 2

3 4 3 4


1 2

Сортировка.

L(R) = список кортежей R, отсортированных по значениям атрибутов из списка L.



  • Замечание: тип результата отличается от обычного типа (набор или множество) реляционной алгебры.

  • Следствие: другие реляционные операторы не могут следовать  .

Например:

R = A B

1 3


3 4

  1. 2

B(R) = [(5; 2), (1; 3), (3; 4)].



Расширенная проекция.
В качестве столбца в проекции допускается функция, имеющая в качестве аргумента один или несколько столбцов отношения R.
Например:

R = A B A+B,A,A(R) = A + B A1 A2




1 2 3 1 1

3 4 7 3 3

Операторы агрегирования.


  • Это не реляционные операторы; как правило, эти операторы позволяют определить каким-либо способом итоговое значение столбца.

  • Пять стандартных операторов: SUM, AVERAGE, COUNT, MIN и MAX.

Оператор группировки.
L (R), где L - список элементов, каждый из которых

a) Единичный ( группирующий) атрибут или

b) Форма (A), где  - оператор агрегирования, а А - атрибут, к которому этот оператор применяется.

Оператор выполняется путем:



  1. Группировки R согласно всем атрибутам (одинаковым множествам значений) из списка L.

  2. Внутри каждой группы, вычисляет  (A), для каждого элемента (A) из списка L.

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


Пример. Пусть R =

Bar beer price




Joe's Bud 2.00

Joe's Miller 2.75

Sue's Bud 2.50

Sue's Coors 3.00

Mel's Miller 3.25


Выполнить beer, AVG(price) (R).

1. Определяются группы, согласно атрибутам группировки, в нашем примере, это сорт пива:

Bar beer price


Joe's Bud 2.00

Sue's Bud 2.50

- - - - - - - - - - - - - - - - - - - -


Joe's Miller 2.75


Mel's Miller 3.25

- - - - - - - - - - - - - - - - - - - -

Sue's Coors 3.00

­- - - - - - - - - - - - - - - - - - - -

2. Вычисляется средняя цена внутри группы:

beer AVG(price)




Bud 2.25


Miller 3.00

Coors 3.00



Внешнее соединение.
Естественное соединение может привести к потере информации, т.к. кортеж, который не может быть соединен с каким-либо другим кортежем, «повисает», т.е. не включается в результат.

  • Пустое значение (NULL ) может быть использовано для отметки «висящих» кортежей в результате.

  • Оператор внешнего соединения также используется для этой цели.

  • Варианты оператора внешнего соединения:  - внешнее соединение, левое внешнее соединение, правое внешнее соединение (левое внешнее соединение позволит включить все «висящие» кортежи из левого отношения, правое внешнее соединение – из правого).


Пример.
R = A B S = B C R S = A B C


1 2 4 5 3 4 5



3 4 6 7 1 2 

 6 7

Достарыңызбен бөлісу:




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет