Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

UNION|INТERSECT|MINUS|TIМES|JOIN|DIVIDEBY




По приведенной грамматике можно сделать следующие замечания.

1) Реляционные операторы UNION, INTERSECT и MINUS требуют, чтобы отношения были совместимыми по типу, т. е. имели идентичные заголовки.

2) Легко проверить, что операторы UNION, INTERSECT, TIMES и JOIN ассоциативны и коммутативны.

3) Если отношения A и B не имеют общих атрибутов, то операция соединения A JOIN B эквивалентна операции A TIMES B, т. е. в таком случае соединение вырождается в декартово произведение. Такое соединение называют естественным.

4) Другой допустимый синтаксис для синтаксической категории переименования таков:

(терм RENAМE список-переименований). Здесь каждый из элементов списка переименований представляет собой выражение имя_атрибута AS имя_атрибута.

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

 

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

 

Оператор естественного соединения по атрибуту Y определяется через оператор декартового произведения и оператор ограничения:

 

A JOIN B = ((A TIMES (B RENAME Y AS Y1)) WHERE Y=Y1)[X, Y, Z]

 

Оператор пересечения выражается через вычитание следующим образом:

 

A INTERSECT B = A MINUS (A MINUS B)

Оператор деления выражается через операторы вычитания, декартового произведения и проекции следующим образом:

 

A DIVIDEBY B = A[X] MINUS ((A[X] TIMES B) MINUS A)[X]

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

 

В качестве примера рассмотрим запросы на языке реляционной алгебры для схемы базы данных «Поставщики и детали», представленной следующими схемами отношений:

 

S(Sno: integer, Sname: string, Status: integer, City: string)

P(Pno: integer, Pname: string, Color: string, Weight: real, City: string)

SP(Sno: integer, Pno: integer, Qty: integer)

 

В данном примере имена доменов представлены именами типов, имена типов отделяются от имен атрибутов двоеточием, первичные ключи выделены подчеркиванием, а имена внешних ключей схемы отношения SP (ПОСТАВКА) совпадают с именами первичных ключей схем отношений S (ПОСТАВЩИК) и P (ДЕТАЛЬ).

 

1) Получить имена поставщиков, которые поставляют деталь под номером 2.

 

((SP JOIN S) WНEPE Рno = 2) [ Sname ]

 

2) Получить имена поставщиков, которые поставляют по крайней мере одну красную деталь.

 

(((Р WНERE Color = 'Красный') JOIN SP) [ Sno ] JOIN S) [ Sname ]

 

Другая формулировка того же запроса:

 

(((Р WНERE Color = 'Красный') [ Рno ] JOIN SP) JOIN S) [ Sname ]

 

Этот пример подчеркивает одно важное обстоятельство: возможность сформулировать один и тот же запрос несколькими способами.

 

3) Получить имена поставщиков, которые поставляют все детали.

 

((SP [ Sno, Рno] DIVIDE BY Р [ Рno ] JOIN S) [ Sname ]

 

4) Получить номера поставщиков, поставляющих по крайней мере все те детали, которые поставляет поставщик под номером 2.

 

SP [ Sno, Рno ] DIVIDE ВY (SP WНEPE Sno = 2) [ Рno ]

 

5) Получить все пары номеров поставщиков, размещенных в одном городе

 

(((S RENAМE Sno AS FirstSno) [ FirstSno, City ] JOIN

(S RENAМE Sno AS SecondSno) [ SecondSno, City ])

WНEPE FirstSno < SecondSno) [ FirstSno, SecondSno ]

 

6) Получить имена поставщиков, которые не поставляют деталь под номером 2.

 

((S[ Sno ] MINUS (SP WНEPE Рno = 2) [ Sno ]) JOIN S) [Sname]

 

Вычислительные возможности реляционной алгебры можно увеличить путем введения дополнительных операторов.

 

Реляционное исчисление основано на разделе математической логики, который называется исчислением предикатов. Реляционное исчисление существует в двух формах: исчисление кортежей и исчисление доменов. Основное различие между ними состоит в том, что переменные исчисления кортежей яв­ляются переменными кортежей (они изменяются на отношении, а их значения являются кортежами), в то время как переменные исчисления доменов являются переменными доменов (они изменяются на доменах, а их значения являются скалярами).

 

Упрощенный синтаксис выражений исчисления кортежей в форме БНФ имеет вид.

 

объявление-кортежной-переменной::=

RANGE OF переменная IS список-областей

область::=

отношение |

реляционное-выражение

реляционное-выражение::=

(список-целевых-элементов)[ WHERE wff ]

целевой-элемент::=

переменная |

переменная.атрибут [ AS атрибут ]

wff::=

условие |

NOT wff |

условие AND wff |

условие OR wff |

IF условие THEN wff |

EXISTS переменная (wff) |

FORALL переменная (wff) |

(wff)

условие::=

(wff) |

компаранд операция-отношения компаранд

 

По приведенной грамматике можно сделать следующие замечания.

1) Квадратные скобки здесь указывают на компоненты, которые по умолчанию могут быть опущены.

2) Категории отношение, атрибут и переменная – это идентификаторы (т. е. имена).

3) Реляционное выражение содержит заключенный в скобки список целевых элементов и выражение WHERE, содержащее формулу wff («правильно построенную формулу»). Такая формула wff составляется из кванторов (EXISTS и FORALL), свободных и связанных переменных, констант, операторов сравнения, логических (булевых) опе­раторов и скобок. Каждая свободная переменная, которая встречается в формуле wff, должна быть также перечислена в списке целевых элементов.

4) Категория условие представляет или формулу wff, заключенную в скобки, или простое скалярное сравнение, где каждый компаранд оператора сравнения – это либо скалярная константа, либо значение атрибута в форме переменная.атрибут.

 

Пусть кортежная переменная T определяются следующим образом:

 

RANGE OF T IS R1, R2,..., Rn

 

Тогда отношения R1, R2,..., Rn должны быть совместимы по типу т. е. они должны иметь идентичные заголовки, и кортежная переменная T изменяется на объединении этих отношений, т. е. её значение в любое заданное время будет некоторым текущим кортежем, по крайней мере одного из этих отношений.

 

Примеры объявлений кортежных переменных.

 

RANGE OF SX IS S

RANGE OF SPX IS SP




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 443; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.018 сек.