Зачем нужны квантификаторы в реляционном исчислении кортежей?

Зачем нужны квантификаторы в реляционном исчислении кортежей?
Допустим, у меня есть это утверждение:

{S.sname | S в Студент и (существует G в классе)(Ss# = Gs#)};

Почему я не могу просто использовать это вместо этого?

{S.sname | S в ученике и G в классе и Ss# = Gs#};

1 ответ

Запросы возвращают одно и то же значение. Но во втором примере вы также можете попросить G.grade студента, тогда как в первом вы не можете. Правая часть выражения Tuple Relational Calculus описывает набор кортежей, из которых сохраняются только атрибуты с левой стороны. Здесь два выражения с правой стороны описывают различные наборы кортежей, но проекция с левой стороны оставляет одинаковое значение от обоих.

Разница между
r IN R AND EXISTS s IN S (etc)
r IN R AND s IN S ANDetc
является то, что отношение, описываемое первым, имеет только атрибуты R тогда как отношение, описанное вторым, имеет атрибуты R & S,

Предположим, какое-либо отношение T с атрибутами ... содержит строки, где какое-то выражение T(...) держит. затем <...> IN T если и только если T(...),

Тогда мы можем описать два вышеупомянутых отношения как кортежи, удовлетворяющие (соответственно)
R(...) AND EXISTSattributes in S & etc but not in R(S(...) ANDetc)
R(...) AND S(...) ANDetc
Это обозначение (более или менее) называется предметным реляционным исчислением.

Предположим, мы определили следующие операторы отношений:
PROJECTsome attributes of TT содержит строки где EXISTSother attributes of TT(...)
T NATURAL JOIN U содержит строки где T(...) AND U(...)

Тогда мы можем описать два вышеупомянутых отношения как кортежи в (соответственно)
R NATURAL JOIN PROJECTattributes in S & etc also in R(S NATURAL JOINetc)
R NATURAL JOIN S NATURAL JOINetc
Это обозначение называется реляционной алгеброй.

Другие вопросы по тегам