Реферат Курсовая Конспект
UNION|INТERSECT|MINUS|TIМES|JOIN|DIVIDEBY - раздел Информатика, ИНФОРМАЦИЯ И ИНФОРМАТИКА. АЛГЕБРА ЛОГИКИ. СИСТЕМЫ СЧИСЛЕНИЯ По Приведенной Грамматике Можно Сделать Следующие Замечания. 1) Р...
|
По приведенной грамматике можно сделать следующие замечания.
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
– Конец работы –
Эта тема принадлежит разделу:
Ассоциация московских вузов... Московский государственный технический университет...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: UNION|INТERSECT|MINUS|TIМES|JOIN|DIVIDEBY
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов