Материал: Базы данных и их безопасность. Плотников Д.Г

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

{х | Р(х)}

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

Реляционное исчисление кортежей

В реляционном исчислении кортежей задача состоит в нахождении таких кортежей, для которых предикат является истинным. Это исчисление основано на переменных кортежа. Переменными кортежа являются такие переменные. Областью определения которых является указанное отношение – т.е. переменные, для которых допустимые значения могут быть только кортежи данного отношения. Понятие «область определения» в данном случае относится не к используемому диапазону значений, а к домену, на котором определены эти значения.

Например, для указания отношения Staff в качестве области определения переменной кортежа S используется следующая форма записи:

RANG OF S IS Saff

Кроме того. Запрос «найти множество всех кортежей S, для которых Р(S) является истинным» можно записать следующим образом:

(S | P(S))

Здесь предикат Р называется формулой.

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

- и квантор общности - .

76

Переменные кортежа называются свободными переменными, если они не квалифицируются кванторами или , в противном случае они называются связанными переменными.

Не каждая последовательность формул является допустимой. Допустимыми формулами могут быть только недвусмысленные и небессмысленные последовательности. Формула (или правильно построенная формула) в исчислении предикатов определяется следующими правилами.

Если Р является n-арной формулой, а t1, t2,...,tn – это константы или переменные, то выражение Р(t1,t2,...,tn) является правильно построенной формулой.

Если t1 и t2 являются константами или переменными из одного домена, а представляет собой один из операторов сравнения, то выражение t1 t2 является правильно построенной формулой.

Если выражения F1 и F2 являются формулами, то их конъюнкция обозначается как F1 ^ F2, дизъюнкция – F1 V F2 и отрицание – как – F1.

 

Если выражение F1

является

формулой со

свободной переменной Х, то выражение (X)

и F(X) также

являются формулами.

 

 

Примеры. Реляционное исчисление кортежей

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

RANG of S is «Персонал»

{S.ФИО | S.должность = «Менеджер» ^ S.оклад > 3000 }

2.Создать список всех сотрудников, которые отвечают за работу с объектами недвижимости в Воронеже.

RANG of S is «Персонал» RANG of P is «Объекты»

{S | P (P.личн№ = S.№сотрудника ) ^ P.город = «Воронеж»}

77

Атрибут «№ сотрудника» в отношении «Объекты» содержит номер того сотрудника, который отвечает за работу с данным объектом недвижимости. Этот запрос можно сформулировать иначе: «Для всех сотрудников, данные о которых нужно привести в списке, в отношении «Объекты» имеются кортежи, соответствующие этим сотрудникам, причем значение атрибута «Город» в каждом таком кортеже равно «Воронеж».

3. Создайте список всех сотрудников, которые в данный момент не работают с объектами недвижимости.

RANG of S is «Персонал» RANG of P is «Объекты»

{S.ФИО | -( P (P.личн№ = S.№сотрудника ))}

4. Создать список всех клиентов, осматривавших объекты недвижимости в городе Воронеже, с указанием их имен и комментариев, сделанных по поводу проведенного осмотра

RANG of R is «Арендатор» RANG of P is «Объекты» RANG of V is «Осмотр»

{R.ФИО, V.комментарии | V (R.№ = V.№арендатора ) ^(V.№объекта = P.№объекта ^ P.город = «Воронеж»)}

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

В реляционном исчислении доменов используются переменные, значения которых берутся из доменов, а не из кортежей отношений. Если P(d1, d2,...,dn) обозначает предикат с переменными d1, d2,...,dn , то множество всех переменных домена d1, d2,...,dn, для которых предикат или формула P(d1, d2,...,dn) истинны, обозначается следующим выражением:

{d1, d2,...,dn | P(d1, d2,...,dn) }

78

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

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

1. Найдите имена всех менеджеров, оклад которых превышает 3000 руб.

{фамилия, имя, отчество | должность, оклад (Персонал(фамилия, должность, оклад) ^ должность = «Менеджер» ^ оклад > 3000)}

2. Создать список всех сотрудников, которые отвечают за работу с объектами недвижимости в Воронеже.

{фамилия, имя, отчество | личный № Персонал(личный № , фамилия, имя, отчество) ^ город (Объекты (№ объекта, личный № ) ^ город = «Воронеж»)}

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

79

3.5. Задания для самостоятельной работы

Задание 1.

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

 

 

 

 

Таблица 3.22

 

 

Клиент

 

 

 

R1

 

ФИО

№

№ счета

Остаток

Кредит

клиента

филиала

 

 

 

 

 

 

 

 

Использованием языка реляционной алгебры составить запросы, позволяющие не выбрать:

1)Филиалы, клиенты которых имеют счета с остатком, превышающим $1000.

2)Клиентов, которые имеют счета во всех филиалах данного банка.

3)Клиентов, которые имеют только по одному счету в разных филиалах банка. То есть в общем у этих клиентов может быть несколько счетов, но в одном филиале не более одного счета.

4)Клиенты, которые имеют счета в нескольких филиалах банка, расположенных только в одном районе.

5)Филиалы, которые не имени ни одного клиента.

6)Филиалы, которые имеют клиентов с остатком на счету 0 (ноль).

7)Филиалы, у которых есть клиенты с кредитом, превышающим остаток на счету в 2 раза.

80

Источник: https://studfile.net/preview/16563653/