Изменения

Перейти к: навигация, поиск
м
rollbackEdits.php mass rollback
=== Проекция <tex>\pi_{A_1,\ldots,A_n}(R)</tex> ===
Проекция выражается, как select необходимого набора атрибутов:
<font color = blue>select</font> A1<font color = gray>, $,\ldots$,$</font>An <font color = blue>from</font> R
=== Фильтр <tex>\sigma_\theta(R)</tex> ===
Проблема исчисления кортежей заключается в том, что можно записать любую сколь угодно большую формулу, но не понятно, что с ней дальше делать. То есть должен быть какой-то способ исполнять соответствующие запросы, иначе с практической точки зрения это все совершенно бессмысленно, хотя с теоретической это бы продолжало иметь смысл.
Рассмотрим, как можно преобразовать формулук языку реляционной алгебры. Далее Для этого сначала нам потребуется определить понятие предваренной нормальной формы:
{{Определение
|definition=
* Теперь это декартово произведение необходимо отфильтровать по глобальному условию из предваренной нормальной формы. Для каждого кортежа из декартово произведения зафиксированы все значения, поэтому для каждого из них можно проверить, истинно оно или нет.
* После того, как проверили глобальное условие, то есть сделали фильтр по нему, необходимо применить кванторы.
Применение кванторов не является тривиальной операциейтривиальными операциями, поэтому рассмотрим его применение подробнее.
=== Применение кванторов ===
Рассмотрим подробнее, как применять кванторы.
==== Квантор существования ====
Квантор существования соответсвует соответствует проекции. Проецируем, исключая атрибуты, порожденные переменной.
* Если существует хотя бы одно значение кортежной переменной, удовлетворяющее условию, то проекция окажется не пустой.
* Если такого значения не окажется, то проекция окажется пустой.
Получаем в точности поведение квантора существования.
==== Квантор всеобщности ====
=== Пример преобразования ===
Рассмотрим пример {{---}} группы, в которых хотя бы один студент полностью аттестован. То есть существует такой студент, что для любого курса существует оценка не меньше 60 баллов. На языке исчислений запросбудет выглядеть так:
<font color = blue>select</font> G<font color = grey>.</font>GId <font color = blue>where $\exists$</font>S <font color = grey>(</font><font color = blue>$\forall$</font>C <font color = grey>(</font><font color = blue>$\exists$</font>P
<font color = grey>(</font>G<font color = grey>.</font>GId <font color = grey>=</font> S<font color = grey>.</font>GId <font color = blue>$\land$</font> S<font color = grey>.</font>SId <font color = grey>=</font> P<font color = grey>.</font>SId <font color = blue>$\land$</font>
C<font color = grey>.</font>CId <font color = grey>=</font> P<font color = grey>.</font>CId <font color = blue>$\land$</font> P<font color = grey>.</font>Points <font color = blue>$\geq$</font> <font color = #056967>60</font><font color = grey>)))</font>
Выражению соответствуют такие группы, в которых есть что существует хотя бы один студент, аттестованный учащийся в этой группе, у которого по всем дисциплинамкурсам существует положительная оценка. Для удобства выражение уже записано в предваренной нормальной форме. Преобразуем:* Для простоты равенства соответствующих атрибутов уже неявно записаны как естественные соединения: <tex>T_0=\sigma_{P.Points\geq60}((G \bowtie S \times C) \bowtie P)</tex>. Для простоты равенства соответствующих атрибутов уже неявно записаны как естественные соединения.* Самый внутренний квантор существования, поэтому проецируем на оставшиеся атрибуты соответствующих отношений: <tex>T_1=\pi_{G_∗,S_∗,C_∗}(T_0)</tex>. Самый внутренний * Следующий квантор существованиявсеобщности, поэтому проецируем делим на оставшиеся все атрибуты соответствующих отношений.* , принадлежащие отношению C: <tex>T_2=T_1 \div C</tex>. Следующий * Еще один квантор всеобщностисуществования, поэтому делим на все атрибуты, принадлежащие отношению C.* снова проецируем: <tex>T_3=\pi_{G_∗}(T_2)</tex>. Еще один квантор существования, снова проецируем. * Можем записать как одно большое выражение в терминах реляционной алгебры: <tex>T=\pi_{G_∗}(\pi_{G_∗,S_∗,C_∗}(\sigma_{P.Points\geq60}((G \bowtie S \times C) \bowtie P)) \bowtie C)</tex>. Можем записать как одно большое выражение в терминах реляционной алгебры.
== Реляционная полнота ==
1632
правки

Навигация