Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Базы данных.doc
Скачиваний:
114
Добавлен:
16.03.2016
Размер:
5.67 Mб
Скачать

6.2.2. Целевые списки и выражения реляционного исчисления

Итак, WFF обеспечивают средства формулировки условия выборки из отношений БД. Чтобы можно было использовать исчисление для реальной работы с БД, требуется еще один компонент, который определяет набор и имена атрибутов результирующего отношения. Этот компонент называется целевым списком (target list).

Целевой список строится из целевых элементов, каждый из которых может иметь следующий вид:

  • var.attr, гдеvar– имя свободной переменной соответствующей WFF, аattr– имя атрибута отношения, на котором определена переменнаяvar;

  • var, что эквивалентно наличию подспискаvar.attr1, var.attr2, ..., var.attrn, где{attr1, attr2, ..., attrn}включает имена всех атрибутов определяющего отношения;

  • new_name = var.attr;new_name– новое имя соответствующего атрибута результирующего отношения.

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

Выражением реляционного исчисления кортежейназывается конструкция видаtarget_list WHERE WFF. Значением выражения является отношение, тело которого определяется WFF, а множество атрибутов и их имена – целевым списком.

В качестве простого примера покажем выражение реляционного исчисления кортежей, результат которого совпадает с результатом операции СЛУЖАЩИЕ DIVIDE BY НОМЕРА_ПРОЕКТОВ(рис. 4.10из лекции 4):

СЛУ1, СЛУ2 RANGE IS СЛУЖАЩИЕ

НОМЕР_ПРОЕКТА range is НОМЕРА_ПРОЕКТОВ

СЛУ1.СЛУ_НОМЕР, СЛУ1.СЛУ_ИМЯ, СЛУ1.СЛУ_ЗАРП

WHERE FORALL НОМЕР_ПРОЕКТА EXISTS СЛУ2

(СЛУ1.СЛУ_НОМЕР = СЛУ2.СЛУ_НОМЕР AND

СЛУ1.ПРО_НОМ = НОМЕРА_ПРОЕКТОВ.ПРО_НОМ)

Конечно, результатом этого выражения является отношение

СЛУ_НОМЕР

СЛУ_ИМЯ

СЛУ_ЗАРП

2934

Иванов

22400.00

2935

Петров

29600.00

6.3. Исчисление доменов

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

6.3.1. Условия членства

Основным формальным отличием исчисления доменов от исчисления кортежей является наличие дополнительного множества предикатов, позволяющих выражать так называемые условия членства. ЕслиR– этоn-арное отношение с атрибутамиa1, a2, ..., an, то условие членства имеет видR (ai1 : vi1, ai2 : vi2, ..., aim : vim) (m n), гдеvij– это либо литерально задаваемая константа, либо имя доменной переменной. Условие членства принимает значениеtrueв том и только в том случае, если в отношенииRсуществует кортеж, содержащий указанные значения указанных атрибутов. Еслиvij– константа, то на атрибутaijнакладывается жесткое условие, не зависящее от текущих значений доменных переменных; если жеvij– имя доменной переменной, то условие членства может принимать разные значения при разных значениях этой переменной.

Для большей ясности приведем пару примеров. Для простоты будем считать, что мы определили доменные переменные, имена которых совпадают с именами атрибутов отношения СЛУЖАЩИЕ, а в случае, когда требуется несколько доменных переменных, определенных на одном домене, мы будем добавлять в конце имени цифры. WFF исчисления доменов

СЛУЖАЩИЕ (СЛУ_НОМ:2934, СЛУ_ИМЯ:'Иванов',

СЛУ_ЗАРП:22400.00, ПРО_НОМ:1)

примет значение trueв том и только в том случае, когда в теле отношенияСЛУЖАЩИЕсодержится кортеж<2934, 'Иванов', 22400.00, 1>. Соответствующие значения доменных переменных образуют область истинности этой WFF. С другой стороны, WFF

СЛУЖАЩИЕ (СЛУ_НОМ:2934, СЛУ_ИМЯ:'Иванов',

СЛУ_ЗАРП:22400.00, ПРО_НОМ:ПРО_НОМ)

будет принимать значение trueдля всех комбинаций явно заданных значений и допустимых значений переменнойПРО_НОМ, которые соответствуют кортежам, входящим в тело отношенияСЛУЖАЩИЕ. При наличии тела отношенияСЛУЖАЩИЕ, показанного нарис. 6.1, областью истинности этой WFF являются два следующих набора значений доменных переменных:<2934, 'Иванов', 22400.00, 1>и<2934, 'Иванов', 22400.00, 2>.