КАТЕГОРИИ: Архитектура-(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; Просмотров: 466; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |