Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Редукция операций реляционной алгебры к реляционному исчислению с переменными - кортежами

 

Теорема. [ Дж. Ульман Основы систем баз данных. «Финансы и статистика», 1983. ] Если E – выражение реляционной алгебры, то существует эквивалентное ему безопасное выражение в реляционном исчислении с переменными – кортежами.

В данном случае E эквивалентно выражению {t ï R (t)}.

Выражение {t ï y (t)} называют безопасным, если выполняются следующие условия:

1. Всякий раз, когда t удовлетворяет y, каждый компонент t является элементом dom(y).

2. Для любого подвыражения y вида ( $ u) ( w (u)) каждый компонент u принадлежит dom( w ), если u удовлетворяет w.

3. Если для любого подвыражения y вида ( " u) ( w (u)) каждый компонент u не принадлежит dom( w ), то u удовлетворяет w.

Условия 2 и 3 позволяют установить истинность квантифицированной формулы ( $ u) ( w (u)) и ( " u) ( w (u)), рассматривая только u, составленные из принадлежащих dom( w ) значениям. Например, любая формула ( $ u) (R(u) Ú …) удовлетворяет условию 2, а любая формула ( " u) (ØR(u) Ú …) удовлетворяет условию 3. Фактически это подтверждает тождества 1-4.

 

Безопасность выражений

 

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

{t ½Ø R(t)}

Выражения такого рода называют опасными. Для того чтобы избежать возникновения этой проблемы, необходимо ввести ограничение, согласно которому все значения, присутствующие в полученных результатах, должны принадлежать к области определения исходного выражения Ai; для этого используется обозначение dom(Ai). Областью определения выражения Ai являются все значения, явно присутствующие в Ai.

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

 

Выразим некоторые операции реляционной алгебры через формулы реляционного исчисления кортежей.

 

1). Объединение отношений R и S выражается следующим образом:

{t ï R(t) Ú S(t)}

или

{t ï ( $ u) ( R (u)) Ú ($ v) (S(v)) Ù (t [1] = u [1] Ú t [1] = v [1]) }

Например:

R(u)   S(v)   R È S(t)
         
a   d   a
b   c   b
c       c
        d

 

 

Это означает: «множество кортежей t, таких, что t принадлежит R или t принадлежит S». Отметим, что объединение имеет смысл, только если R и S обладают одной и той же арностью.

2). Разность RS может быть представлена следующим выражением:

{t ï R(t) Ù Ø S(t)}

или

{t ï ( $ u) (R(u) Ù ( " v) (S(v) Ù (t [1] =u [1] Ù u [1] ≠ v [1] )))}

3). Если R и S — отношения арности соответственно r и p, то декартовое произведение R ´ S в исчислении можно записать в виде:

{t(r+p) ï ( $ u(r)) ( $ v(p)) (R(u) Ù S(v) Ù t [1]= u [1] Ù t [ 2 ]= u [ 2 ] Ù … Ù t [ r ]=

= u [ r ] Ù t [ r+ 1]= v [1] Ù t [ r+2 ]= v [ 2 ] Ù... Ù t [ r+p ]= v [ p ] )}

Здесь, ti указывает, что t имеет арность i. Приведенное выражение означает, что R ´ S есть множество кортежей t (рассматриваемых как кортежи длины r+p), таких, что существует кортеж и, принадлежащий отношению R, и кортеж v, принадлежащий отношению S, причем r первых компонентов t образуют и, а следующие p компонентов – v.

4). Проекция p i1, i2, …, ik(R) выражается следующим образом:

{t(k) ï ( $ u) (R(u) Ù t [1]= u [ i1 ] Ù … Ù t [ k ]= u [ ik ] )}

5). Селекция sF (R) может быть выражена в виде:

{t ï R(t) Ù F ¢ }

или

{t ï ( $ u) ( R (u) Ù F ¢ )}

где формула F ¢ есть F, в которой каждый операнд i, обозначающий i -й компонент, заменяется на t [ i ].

То есть если sA1=a1 AND A2=a2 AND Ak=ak(R), то

{t ï R(t) Ù (t [ A1 ]= a1 Ù … Ù t [ Ak ]= ak)}

 

В качестве самостоятельного примера можно представить отношение R арности 2, которое отображает экземпляр R, когда оно имеет два или более кортежа, и пустое отношение, когда R пусто или имеет только один кортеж, формулой исчисления следующим образом:

{t(2) ï ( $ u) (R(t) Ù R(u) Ù (t [ 1 ] ¹ u [ 1 ] Ú t [ 2 ] ¹ u [ 2 ] ))}

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

p1,4 (s2=3 (R´S)),

тогда это выражение можно записать в виде безопасного выражения в реляционном исчислении:

1. первый шаг: выразим декартово произведение R´S:

{t ï ( $ u) ( $ v) (R(u) Ù S(v) Ù t [1] = u [1] Ù t [2] = u [2] Ù t [3] = v [1] Ù t [4] = v [2] )}

2. второй шаг: для s2=3 (R´S) добавим к этой формуле терм

Ù t [2] = t [3]

3. третий шаг: определим для проекции новые компоненты w и получим общий вид запроса:

{w ï ( $ t) ( $ u) ( $ v) (R(u) Ù S(v) Ù t [1] = u [1] Ù t [2] = u [2] Ù t [3] = v [1] Ù t [4] = v [2] ) Ù t [2] = t [3] Ù w [1] = t [1] Ù w [2] = t [4] }

это выражение можно записать короче, если не использовать t, а выразить все через u и w:

{w ï ( $ u) ( $ v) (R(u) Ù S(v) Ù u [2] = v [1] Ù w [1] = v [1] Ù w [2] = v [2] }

 

Примеры.

 

Список   Экзамен
Группа ФИО №зк   №зк Предмет Оценка
             

 

1. Создать список предметов, которые сдавали студенты.

 

{(t[Предмет] ï ($t) (Экзамен (t))}

 

SELECT Предмет

FROM Экзамен

 

2. Создать список оценок по предмету БД и Математика.

 

{t[Предмет, Оценка] ï ($t) (Экзамен (t)) Ù (t[Предмет] = ‘БД’ Ú t[Предмет] = ‘Математика’)}

 

SELECT Предмет, Оценка

FROM Экзамен

WHERE Предмет = ‘БД’ OR Предмет = ‘Математика’

 

3. Создать список студентов, которые сдали экзамен по БД.

Этот запрос можно сформулировать по-другому: Для всех студентов, данные о которых нужно привести в списке, в отношении ‘Экзамен’ существуют кортежи, соответствующие этим студентам кортежи, причем значение атрибута ‘Предмет’ в каждом таком кортежи равно ‘БД’.

Эквивалентная формулировка данного запроса в реляционной алгебре будет выглядеть так: Выбрать такие кортежи отношения ‘Список’, в которых значение атрибута ‘Предмет’ равно ‘БД’, и выполнить их соединение с отношением ‘Экзамен’.

 

{t[Предмет] ï ($t) (Список(t)) Ù ($s) (Экзамен(s)) Ù (t[№зк] = s[№зк]) Ù (s[Предмет] = ‘БД’)}

 

 

В соответствии с исчислением

a) SELECT Предмет

FROM Список AS a

<== предыдущая лекция | следующая лекция ==>
Реляционное исчисление кортежей | Anda. ФИО not IN
Поделиться с друзьями:


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


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



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




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