![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Выражение исчисления с переменными на доменах, эквивалентное выражению исчисления с переменными-кортежами { t | y(t) }, конструируется в соответствии со следующими правилами.
Пусть е6сть переменная-кортеж t(R), где R = (A1A2…An) имеет арность n. Тогда вместо переменной-кортежа t вводятся n новых переменных на доменах t1, t2, …, tn и заданное выражение исчисления с переменными-кортежами заменяется выражением {t1, t2, …, tn | j΄(t1, t2, …, tn)}. Здесь j΄ представляет собой j, в которой:
Любой атом r(t) заменяется атомом r(t1, t2, …, tn);
Каждое свободное вхождение t[Ai] заменено переменной ti;
Для каждого квантора $u или "u вводится m новых переменных u1, u2, …, um, где m – арность u. Кванторы $u (или "(u)) заменяются кванторами $u1 $u2 … $um ("u1 "u2 … "um, соответственно), и в подчиненных кванторам выражениях u[Ai] заменяются на ui и r(u) на r(u1, u2, …, um).
Теорема
Для каждого безопасного выражения с переменными-кортежами существует эквивалентное безопасное выражение с переменными на доменах.
Пример:
Даны отношения со схемами S(S#, SNAME, CITY) – поставщик,
P(P#, PNAME, PRICE) – деталь,
SP(S#, P#, QTY) – поставка.
Написать выражение реляционного исчисления, позволяющее получить имена поставщиков, поставляющих деталь с номером P2.
a) Выражение исчисления с переменными-кортежами:
{t(SNAME) | $u(S) $v(SP) (S(u) Ù SP(v) Ù u[SNAME] = t[SNAME] Ù u[S#] = v[S#] Ù v[P#] = “P2”)}
b) Выражение исчисления с переменными на доменах:
{t(SNAME) | $u1(S#) $u2(SNAME) $u3(CITY) $v1(S#) $v2(P#) $v3(QTY) (S(u1,u2,u3) Ù SP(v1,v2,v3) Ù u2 = t Ù u1 = v1 Ù v2 = “P2”)}
Дата публикования: 2014-11-26; Прочитано: 235 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!