Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Материалы по БД / Лекция-6-2.ppt
Скачиваний:
21
Добавлен:
13.02.2016
Размер:
124.42 Кб
Скачать

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

Целевой Список WHERE Формула.

Значением выражения является отношение, тело которого определяется формулой, а набор атрибутов и их имена - целевым списком. На основе рассмотренного исчисления построен язык SQL.

Реляционное исчисление доменов

В этом исчислении переменные являются доменами. Например, в базе данных СОТРУДНИКИ- ОТДЕЛЫ можно говорить о доменных переменных ИМЯ (значения - допустимые имена) или НОМЕР (значения - допустимые номера сотрудников). Основным отличием исчисления доменов от

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

Если R - это отношение с атрибутами a1, a2, ..., an, то условие членства имеет вид

R (ai1: vi1, ai2: vi2,..., aim: vim) (m <= n), где vij - это либо константа, либо имя доменной переменной. Условие членства истинно в том и только в том случае, если в отношении R существует кортеж, содержащий указанные значения указанных атрибутов.

Во всем остальном формулы и выражения этих двух видов реляционного исчисления похожи. Реляционное исчисление доменов является основой для большинства языков запросов, основанных на использовании форм, в частности, для популярного табличного языка запросов к БД Query-by- Example ("запрос по образцу").

Примеры.

1. Пусть отношение R описывает сведения о студентах специальности 0719, а отношение S - сведения о студентах специальности 0608. Как на языке реляционного исчисления описать всех студентов факультета ФЭМ? - Это будет следующая формула:

V = { t | R(t) Ъ S(t) } - множество кортежей t таких, что t О R или t I S.

2. Пусть задано отношение R(t) = СТУДЕНТ (Код, ФИО, Группа). Напишем формулу для выделения имен всех студентов группы 95Э1:

{ t | R(t) Щ t [3] = ‘95Э1’ } или в "словесной форме":

t.ФИО WHERE EXISTS t ( СТУДЕНТ (t) AND t.Группа = ‘95Э1’)

3. Опишем на языке реляционного исчисления доменов запрос к БД СОТРУДНИКИ/ОТДЕЛЫ - "Выдать номера и имена сотрудников, получающих заработную плату больше минимальной". Будем считать для простоты, что имена доменных переменных совпадают с именами атрибутов отношения СОТРУДНИКИ. Если же на одном домене определены несколько переменных, мы будем добавлять в конце имени цифры. Выражение для данного запроса имеет вид:

Номер, Имя WHERE EXISTS Оклад1 (СОТРУДНИКИ(Оклад1)

AND СОТРУДНИКИ(Номер, Имя, Оклад)

AND Оклад > Оклад1).

4. Пусть дана БД СОТРУДНИКИ (номер, имя, оклад, отдел) и ОТДЕЛЫ (отдел, начальник, телефон, численность). Определим имена сотрудников, работающих в отделах с количеством сотрудников меньше 10. Выражение исчисления кортежей:

t.Имя WHERE EXISTS t (СОТРУДНИКИ(t) AND t.Отдел = x.Отдел

AND EXISTS x (ОТДЕЛ(x) AND x.Численность < 10) )

Заключение : Рассмотренные математические аппараты эквивалентны по своей выразительной силе.

Языки запросов реальных реляционных СУБД основаны на применении одного (или смеси) этих аппаратов. Например, язык СУБД семейства dBASE основан на аппарате реляционной алгебры. Язык

SQL, широко применяемый в различных СУБД, основан на реляционном исчислении с переменными - кортежами, язык Query By Example основан на исчислении с переменными - доменами.