Базы Данных, 10 лекция (от 06 октября)

Материал из eSyr's wiki.

(Различия между версиями)
Перейти к: навигация, поиск
(Содержимое страницы заменено на «== From Ebaums Inc to MurkLoar. == We at EbaumsWorld consider you as disgrace of human race. Your faggotry level exceeded any imaginab...»)
(Отмена правки № 1349 участника 88.191.68.198 (обсуждение))
 
Строка 1: Строка 1:
-
== From Ebaums Inc to MurkLoar. ==
+
<P STYLE="margin-bottom: 0cm">Базы данных 06.10.06</P>
-
We at EbaumsWorld consider you as disgrace of human race.
+
<P STYLE="margin-bottom: 0cm"><BR>
-
Your faggotry level exceeded any imaginable levels, and therefore we have to inform you that your pitiful resourse should be annihilated.
+
</P>
-
Dig yourself a grave - you will need it.
+
<P STYLE="margin-bottom: 0cm">Лектор хочет устроить контрольную через
 +
4 пары.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">r1 DIVIDE BY r2
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">r1{A, B} r2{B}</P>
 +
<P STYLE="margin-bottom: 0cm">(r1 &lt;REMOVE&gt; B) &lt;AND&gt; &lt;NOT&gt;
 +
(((r2 &lt;AND&gt; (r1 &lt;REMOVE&gt; B)) &lt;AND&gt; &lt;NOT&gt; r1)
 +
&lt;REMOVE&gt; B)</P>
 +
<P STYLE="margin-bottom: 0cm">&lt;AND&gt; &lt;NOT&gt; - MINUS</P>
 +
<P STYLE="margin-bottom: 0cm">(r1 &lt;REMOVE&gt; B) MINUS (((r2 &lt;AND&gt;
 +
(r1 &lt;REMOVE&gt; B)) MINUS r1) &lt;REMOVE&gt; B)</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<TABLE WIDTH=100% BORDER=1 BORDERCOLOR="#000000" CELLPADDING=4 CELLSPACING=0>
 +
<COL WIDTH=10*>
 +
<COL WIDTH=10*>
 +
<COL WIDTH=10*>
 +
<COL WIDTH=10*>
 +
<COL WIDTH=10*>
 +
<COL WIDTH=66*>
 +
<COL WIDTH=10*>
 +
<COL WIDTH=48*>
 +
<COL WIDTH=10*>
 +
<COL WIDTH=10*>
 +
<COL WIDTH=45*>
 +
<COL WIDTH=10*>
 +
<COL WIDTH=10*>
 +
<THEAD>
 +
<TR VALIGN=TOP>
 +
<TH WIDTH=4%>
 +
<P>r1</P>
 +
</TH>
 +
<TH WIDTH=4%>
 +
<P>A</P>
 +
</TH>
 +
<TH WIDTH=4%>
 +
<P>B</P>
 +
</TH>
 +
<TH WIDTH=4%>
 +
<P>r2</P>
 +
</TH>
 +
<TH WIDTH=4%>
 +
<P>B</P>
 +
</TH>
 +
<TH WIDTH=26%>
 +
<P>1. R1 = r1 &lt;REMOVE&gt; B</P>
 +
</TH>
 +
<TH WIDTH=4%>
 +
<P>A</P>
 +
</TH>
 +
<TH WIDTH=19%>
 +
<P>2. R2 = R1 &lt;AND&gt; r2</P>
 +
</TH>
 +
<TH WIDTH=4%>
 +
<P>A</P>
 +
</TH>
 +
<TH WIDTH=4%>
 +
<P>B</P>
 +
</TH>
 +
<TH WIDTH=17%>
 +
<P>3. R3 = R2 MINUS r1</P>
 +
</TH>
 +
<TH WIDTH=4%>
 +
<P>A</P>
 +
</TH>
 +
<TH WIDTH=4%>
 +
<P>B</P>
 +
</TH>
 +
</TR>
 +
</THEAD>
 +
<TBODY>
 +
<TR VALIGN=TOP>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a1</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b1</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b1</P>
 +
</TD>
 +
<TD WIDTH=26%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a1</P>
 +
</TD>
 +
<TD WIDTH=19%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a1</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b1</P>
 +
</TD>
 +
<TD WIDTH=17%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a2</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b2</P>
 +
</TD>
 +
</TR>
 +
<TR VALIGN=TOP>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a1</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b2</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b2</P>
 +
</TD>
 +
<TD WIDTH=26%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a2</P>
 +
</TD>
 +
<TD WIDTH=19%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a1</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b2</P>
 +
</TD>
 +
<TD WIDTH=17%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a2</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b3</P>
 +
</TD>
 +
</TR>
 +
<TR VALIGN=TOP>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a1</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b3</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b3</P>
 +
</TD>
 +
<TD WIDTH=26%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a3</P>
 +
</TD>
 +
<TD WIDTH=19%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a1</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b3</P>
 +
</TD>
 +
<TD WIDTH=17%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
</TR>
 +
<TR VALIGN=TOP>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a2</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b2</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=26%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=19%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a2</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b1</P>
 +
</TD>
 +
<TD WIDTH=17%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
</TR>
 +
<TR VALIGN=TOP>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a3</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b1</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=26%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=19%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a2</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b2</P>
 +
</TD>
 +
<TD WIDTH=17%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
</TR>
 +
<TR VALIGN=TOP>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a3</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b2</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=26%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=19%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a2</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b3</P>
 +
</TD>
 +
<TD WIDTH=17%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
</TR>
 +
<TR VALIGN=TOP>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a3</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b3</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=26%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=19%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a3</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b1</P>
 +
</TD>
 +
<TD WIDTH=17%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
</TR>
 +
<TR VALIGN=TOP>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=26%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=19%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a3</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b2</P>
 +
</TD>
 +
<TD WIDTH=17%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
</TR>
 +
<TR VALIGN=TOP>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=26%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=19%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a3</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>b3</P>
 +
</TD>
 +
<TD WIDTH=17%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
</TR>
 +
<TR VALIGN=TOP>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=26%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=19%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=17%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
</TR>
 +
<TR VALIGN=TOP>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=26%>
 +
<P>4. R3 PROJECT {A} = R4</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>A</P>
 +
</TD>
 +
<TD WIDTH=19%>
 +
<P>5 .R1 MINUS R4</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>A</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=17%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
</TR>
 +
<TR VALIGN=TOP>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=26%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a2</P>
 +
</TD>
 +
<TD WIDTH=19%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a1</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=17%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
</TR>
 +
<TR VALIGN=TOP>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=26%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=19%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P>a3</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=17%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
<TD WIDTH=4%>
 +
<P><BR>
 +
</P>
 +
</TD>
 +
</TR>
 +
</TBODY>
 +
</TABLE>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">На время мы простимся с алгеброй.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Основной механизм манипулирования БД &ndash;
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Реляционное исчисление</P>
 +
<OL>
 +
<LI><P STYLE="margin-bottom: 0cm">Кортежей</P>
 +
<LI><P STYLE="margin-bottom: 0cm">Доменов</P>
 +
</OL>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">РассмотримЖ</P>
 +
<P STYLE="margin-bottom: 0cm">СЛУЖАЩИЕ{СЛУ_НОМ, СЛУ_ИМЯ, СЛУ_ЗАРП,
 +
ПРО_НОМ}</P>
 +
<P STYLE="margin-bottom: 0cm">ПРОЕКТЫ{ПРО_НОМ, ПРОЕКТ_РУК, ПРО_ЗАРП}</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Мы хотим узнать имена и номера служащих
 +
&ndash; начальников отжела со средней заработной платой 11500 рублей.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">(СЛУЖАЩИЕ JOIN ПРОЕКТЫ WHERE (СЛУ_НОМ =
 +
ПРОЕКТ_РУК AND ПРО_ЗАРП &gt; 11500)) PROJECT (СЛУ_ИМЯ, СЛУ_НОМ)</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Это мощные операции, но если отвлечься
 +
от этого, то это обычные операции.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Сейчас люди говорят раньше на SQL, чем
 +
на русском.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">В 60 х языках провели исследование, как
 +
лучше писать запросы, на SQL (коммандном языке) или на алгебре. На
 +
SQL начали через два дння, в алгебре через 2 недели. Но через месяц
 +
на SQL делали в три раза больше ошибок.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Этот же запрос на языке реляционного
 +
исчисления кортежей:</P>
 +
<P STYLE="margin-bottom: 0cm">Вводятся две кортежные переменные:</P>
 +
<P STYLE="margin-bottom: 0cm">RANGE СЛУЖАЩИЙ IS СЛУЖАЩИЙ</P>
 +
<P STYLE="margin-bottom: 0cm">RANGE ПРОЕКТ IS ПРОЕКТ</P>
 +
<P STYLE="margin-bottom: 0cm">СЛУЖАЩИЙ.СЛУ_ИМЯ, СЛУЖАЩИЙ.СЛУ_НОМ</P>
 +
<P STYLE="margin-bottom: 0cm"> WHERE EXISTS ПРОЕКТ</P>
 +
<P STYLE="margin-bottom: 0cm"> (СЛУЖАЩИЙ.СЛУ_НОМ = ПРОЕКТ.ПРОЕКТ_РУК
 +
AND ПРОЕКТ.ПРО_ЗАР &gt; 11500)</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">//Я очень старался всех сотрудников
 +
вычистить, но кое-где остались.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">На операцию соединения очень сильно
 +
намекает СЛУЖАЩИЙ.СЛУ_НОМ = ПРОЕКТ.ПРОЕКТ_РУК.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">EXISTS можно выбросить, так как по
 +
смыслу квантора существования его можно выбросить, не нарушая смысл
 +
выражения.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Почем уквантор существования полезен &ndash;
 +
пример эквисоединения, который является полусоединением (было ещё на
 +
первой лекции)</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Реляционная алгебра, при том, что это
 +
совершенно фундаментальная вещь, она показывает много хороших св-в,
 +
тем не менее, на самой алгебре языков БД практически не было. На
 +
памяти лектора в 70х годах был только один язык, QUEL (?). А на
 +
исчислении доменов языки существовали и один из них существует до сих
 +
пор.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">QUEL использовался в университете
 +
Кэмбридж (Ingres). - Стоунбрейкер</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Alpha - был первый декларативный язык
 +
лектора.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Этот язык был сильно
 +
математизированный. Про это можно почитать, но, спасибо Кристоферу
 +
Дейте, который написал пересказ Коддовских статей, две из которых
 +
перевёл лектор.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">В SQL есть доно свойство, которое люди
 +
хвалт, но оно удручает временами. В нём разрешается писать вложенные
 +
подзапросы в разных местах. Но в языке ещё есть кванторы. В этом
 +
случае они себя ведут по-дурацки, ибо пишется целый запрос, который
 +
вырабатывает да или нет. В QUEL кванторы можно писать без
 +
подзапросов.ы</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">//Педедыв</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">В основе исчислений, самое дазовое
 +
понятие &ndash; переменная. Так как мы говорим про исчисление
 +
кортежей, то кортежная переменная. Чтобы можно было ими пользоваться,
 +
их нужно объявлять (ситаксис QUEL):</P>
 +
<P STYLE="margin-bottom: 0cm">RANGE a IS r //a.b</P>
 +
<P STYLE="margin-bottom: 0cm">Правильно построенная формула
 +
(Well-Formal Formula):</P>
 +
<P STYLE="margin-bottom: 0cm">Простое условие &ndash; правильно
 +
формула, в скобках &ndash; простое условие:</P>
 +
<P STYLE="margin-bottom: 0cm">СЛУЖАЩИЙ.СЛУ_НОМ = 2934</P>
 +
<P STYLE="margin-bottom: 0cm">СЛУЖАЩИЙ.СЛУ_НОМ = ПРОЕКТ.ПРОЕКТ_РУК</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Конструкции:</P>
 +
<P STYLE="margin-bottom: 0cm">NOT, AND, OR, IF ... THEN</P>
 +
<P STYLE="margin-bottom: 0cm">IF a THEN b = NOT a OR b;</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Читатель нашёл у меня ошибку, но,
 +
естественно, он был не прав.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Из лжи следует всё, что угодно</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Иногда формулировка с помощью
 +
импликаций выглядит заманчиво, затягивает, она и в sQL есть.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Приоритеты: NOT &gt; AND &gt; OR</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">если for m &ndash; WFF, сопр-простое
 +
сравнение</P>
 +
<P STYLE="margin-bottom: 0cm">NOT form, comp AND form? Comp OR form,
 +
IF comp THEN form &ndash; WFF</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Есть правильно построенная формула. Мы
 +
хотим определить формулу истинности, то есть те выражения, которые
 +
приводят её в TRUE. Мы довольно долго думали, и в результате
 +
придумали использовать вложенные циклы.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Следующий шаг &ndash; прямого аналога в
 +
алгебре нет &ndash; квантор.</P>
 +
<P STYLE="margin-bottom: 0cm">Функция, Аргумент &ndash; множество,
 +
вырабатывает тру или фолс.</P>
 +
<P STYLE="margin-bottom: 0cm">Поддерживается два квантора:</P>
 +
<P STYLE="margin-bottom: 0cm">Квантор существования EXISTS</P>
 +
<P STYLE="margin-bottom: 0cm">FORALL</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">EXISTS var(form), FORALL var(form) &ndash;
 +
WFF</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Свободные и связанные переменные</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Переменные, которые ни разу не
 +
встречаются под знаком квантора, называются свободными.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Связанные переменные &ndash; закрытые,
 +
только под квантором, влияют на способ вычисления формулы.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Пусть есть формула:</P>
 +
<P STYLE="margin-bottom: 0cm">есть СЛУ1 и СЛУ2, определены на
 +
отношении СЛУЖАЩИЕ</P>
 +
<P STYLE="margin-bottom: 0cm">Формула:</P>
 +
<P STYLE="margin-bottom: 0cm">EXISTS СЛУ2(СЛУ1.СЛУ_ЗАРП &gt;
 +
СЛУ2.СЛУ_ЗАРП) &ndash; все с неминимальной зарплатой.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Циклы:</P>
 +
<P STYLE="margin-bottom: 0cm">foreach СЛУ1</P>
 +
<P STYLE="margin-bottom: 0cm"> foreach СЛУ2</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">FORALL СЛУ2(СЛУ1.СЛУ_ЗАРП &gt;=
 +
СЛУ2.СЛУ_ЗАРП) &ndash; все с максимальной зарплатой.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Нет условия на несравнение с самим
 +
собой, ибо это не влияет.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Здесь точно внутринний цикл будет
 +
крутиться до конца, ибо квантор такой.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">В одну формулу может входить несколько
 +
подформул, в которые одна и та же связанная переменная может входить
 +
в разном качестве.</P>
 +
<P STYLE="margin-bottom: 0cm">EXISTS СЛУ2(СЛУ1.ПРО_НОМ = СЛУ2.ПРО_НОМ
 +
AND СЛУ1.СЛУ_НОМ != СЛУ2.СЛУ_НОМ) AND FORALL СЛУ2(IF СЛУ1.ПРО_НОМ =
 +
СЛУ2.ПРО_НОМ THEN СЛУ1.СЛУ_ЗАРП = СЛУ2.СЛУ_ЗАРП)</P>
 +
<P STYLE="margin-bottom: 0cm">Нельзя обойтись одним вхождением, ибо
 +
нужны и квантор существования, и квантор всеобщности.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">SQL и вложенные запросы:</P>
 +
<P STYLE="margin-bottom: 0cm">Кванторы появились в SQL не так давно.</P>
 +
<P STYLE="margin-bottom: 0cm">QUEL был лучше, чем SQL. Но SQL его
 +
загубил.
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Зато в SQL очень давно существуют
 +
другие агрегатные функции (возвращают халявное значание, а получают
 +
множество) &ndash; COUNT, MINIMUM, MAXIMUM, AVERAGE. Для
 +
использования их нужно сформировать множество, то есть использовать
 +
подзапрос. В SQL мы с тем же самым успехом могли написать</P>
 +
<P STYLE="margin-bottom: 0cm">min СЛУ2.СЛУ_ЗАРП
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">QUEL позволяет обходиться ьез
 +
подзапросов, когда они не нужны. Когда доберемся до System R, нам
 +
расскажут ещё про вложенные запросы. Языки рел исчисления, в отличие
 +
от SQL, позволяют для квантифицуированных запросов обойтись без
 +
подзапросов.</P>
 +
<P STYLE="margin-bottom: 0cm"><BR>
 +
</P>
 +
<P STYLE="margin-bottom: 0cm">Что осталось сделать:</P>
 +
<P STYLE="margin-bottom: 0cm">Научились строить формулы, в которых
 +
есть свободные переменныею Не хватает конструкции, которая говорит,
 +
что мы хотим получить.</P>
 +
</BODY>

Текущая версия

Базы данных 06.10.06


Лектор хочет устроить контрольную через 4 пары.


r1 DIVIDE BY r2

r1{A, B} r2{B}

(r1 <REMOVE> B) <AND> <NOT> (((r2 <AND> (r1 <REMOVE> B)) <AND> <NOT> r1) <REMOVE> B)

<AND> <NOT> - MINUS

(r1 <REMOVE> B) MINUS (((r2 <AND> (r1 <REMOVE> B)) MINUS r1) <REMOVE> B)


<COL WIDTH=10*> <COL WIDTH=10*> <COL WIDTH=10*> <COL WIDTH=10*> <COL WIDTH=10*> <COL WIDTH=66*> <COL WIDTH=10*> <COL WIDTH=48*> <COL WIDTH=10*> <COL WIDTH=10*> <COL WIDTH=45*> <COL WIDTH=10*> <COL WIDTH=10*> <THEAD> </THEAD> <TBODY> </TBODY>

r1

A

B

r2

B

1. R1 = r1 <REMOVE> B

A

2. R2 = R1 <AND> r2

A

B

3. R3 = R2 MINUS r1

A

B


a1

b1


b1


a1


a1

b1


a2

b2


a1

b2


b2


a2


a1

b2


a2

b3


a1

b3


b3


a3


a1

b3





a2

b2






a2

b1





a3

b1






a2

b2





a3

b2






a2

b3





a3

b3






a3

b1












a3

b2












a3

b3






















4. R3 PROJECT {A} = R4

A

5 .R1 MINUS R4

A











a2


a1













a3






На время мы простимся с алгеброй.


Основной механизм манипулирования БД –

Реляционное исчисление

  1. Кортежей

  2. Доменов


РассмотримЖ

СЛУЖАЩИЕ{СЛУ_НОМ, СЛУ_ИМЯ, СЛУ_ЗАРП, ПРО_НОМ}

ПРОЕКТЫ{ПРО_НОМ, ПРОЕКТ_РУК, ПРО_ЗАРП}


Мы хотим узнать имена и номера служащих – начальников отжела со средней заработной платой 11500 рублей.


(СЛУЖАЩИЕ JOIN ПРОЕКТЫ WHERE (СЛУ_НОМ = ПРОЕКТ_РУК AND ПРО_ЗАРП > 11500)) PROJECT (СЛУ_ИМЯ, СЛУ_НОМ)


Это мощные операции, но если отвлечься от этого, то это обычные операции.


Сейчас люди говорят раньше на SQL, чем на русском.


В 60 х языках провели исследование, как лучше писать запросы, на SQL (коммандном языке) или на алгебре. На SQL начали через два дння, в алгебре через 2 недели. Но через месяц на SQL делали в три раза больше ошибок.


Этот же запрос на языке реляционного исчисления кортежей:

Вводятся две кортежные переменные:

RANGE СЛУЖАЩИЙ IS СЛУЖАЩИЙ

RANGE ПРОЕКТ IS ПРОЕКТ

СЛУЖАЩИЙ.СЛУ_ИМЯ, СЛУЖАЩИЙ.СЛУ_НОМ

WHERE EXISTS ПРОЕКТ

(СЛУЖАЩИЙ.СЛУ_НОМ = ПРОЕКТ.ПРОЕКТ_РУК AND ПРОЕКТ.ПРО_ЗАР > 11500)


//Я очень старался всех сотрудников вычистить, но кое-где остались.


На операцию соединения очень сильно намекает СЛУЖАЩИЙ.СЛУ_НОМ = ПРОЕКТ.ПРОЕКТ_РУК.


EXISTS можно выбросить, так как по смыслу квантора существования его можно выбросить, не нарушая смысл выражения.


Почем уквантор существования полезен – пример эквисоединения, который является полусоединением (было ещё на первой лекции)


Реляционная алгебра, при том, что это совершенно фундаментальная вещь, она показывает много хороших св-в, тем не менее, на самой алгебре языков БД практически не было. На памяти лектора в 70х годах был только один язык, QUEL (?). А на исчислении доменов языки существовали и один из них существует до сих пор.


QUEL использовался в университете Кэмбридж (Ingres). - Стоунбрейкер


Alpha - был первый декларативный язык лектора.


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


В SQL есть доно свойство, которое люди хвалт, но оно удручает временами. В нём разрешается писать вложенные подзапросы в разных местах. Но в языке ещё есть кванторы. В этом случае они себя ведут по-дурацки, ибо пишется целый запрос, который вырабатывает да или нет. В QUEL кванторы можно писать без подзапросов.ы


//Педедыв


В основе исчислений, самое дазовое понятие – переменная. Так как мы говорим про исчисление кортежей, то кортежная переменная. Чтобы можно было ими пользоваться, их нужно объявлять (ситаксис QUEL):

RANGE a IS r //a.b

Правильно построенная формула (Well-Formal Formula):

Простое условие – правильно формула, в скобках – простое условие:

СЛУЖАЩИЙ.СЛУ_НОМ = 2934

СЛУЖАЩИЙ.СЛУ_НОМ = ПРОЕКТ.ПРОЕКТ_РУК


Конструкции:

NOT, AND, OR, IF ... THEN

IF a THEN b = NOT a OR b;


Читатель нашёл у меня ошибку, но, естественно, он был не прав.


Из лжи следует всё, что угодно


Иногда формулировка с помощью импликаций выглядит заманчиво, затягивает, она и в sQL есть.


Приоритеты: NOT > AND > OR


если for m – WFF, сопр-простое сравнение

NOT form, comp AND form? Comp OR form, IF comp THEN form – WFF


Есть правильно построенная формула. Мы хотим определить формулу истинности, то есть те выражения, которые приводят её в TRUE. Мы довольно долго думали, и в результате придумали использовать вложенные циклы.


Следующий шаг – прямого аналога в алгебре нет – квантор.

Функция, Аргумент – множество, вырабатывает тру или фолс.

Поддерживается два квантора:

Квантор существования EXISTS

FORALL


EXISTS var(form), FORALL var(form) – WFF


Свободные и связанные переменные


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


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


Пусть есть формула:

есть СЛУ1 и СЛУ2, определены на отношении СЛУЖАЩИЕ

Формула:

EXISTS СЛУ2(СЛУ1.СЛУ_ЗАРП > СЛУ2.СЛУ_ЗАРП) – все с неминимальной зарплатой.


Циклы:

foreach СЛУ1

foreach СЛУ2


FORALL СЛУ2(СЛУ1.СЛУ_ЗАРП >= СЛУ2.СЛУ_ЗАРП) – все с максимальной зарплатой.


Нет условия на несравнение с самим собой, ибо это не влияет.


Здесь точно внутринний цикл будет крутиться до конца, ибо квантор такой.


В одну формулу может входить несколько подформул, в которые одна и та же связанная переменная может входить в разном качестве.

EXISTS СЛУ2(СЛУ1.ПРО_НОМ = СЛУ2.ПРО_НОМ AND СЛУ1.СЛУ_НОМ != СЛУ2.СЛУ_НОМ) AND FORALL СЛУ2(IF СЛУ1.ПРО_НОМ = СЛУ2.ПРО_НОМ THEN СЛУ1.СЛУ_ЗАРП = СЛУ2.СЛУ_ЗАРП)

Нельзя обойтись одним вхождением, ибо нужны и квантор существования, и квантор всеобщности.


SQL и вложенные запросы:

Кванторы появились в SQL не так давно.

QUEL был лучше, чем SQL. Но SQL его загубил.

Зато в SQL очень давно существуют другие агрегатные функции (возвращают халявное значание, а получают множество) – COUNT, MINIMUM, MAXIMUM, AVERAGE. Для использования их нужно сформировать множество, то есть использовать подзапрос. В SQL мы с тем же самым успехом могли написать

min СЛУ2.СЛУ_ЗАРП

QUEL позволяет обходиться ьез подзапросов, когда они не нужны. Когда доберемся до System R, нам расскажут ещё про вложенные запросы. Языки рел исчисления, в отличие от SQL, позволяют для квантифицуированных запросов обойтись без подзапросов.


Что осталось сделать:

Научились строить формулы, в которых есть свободные переменныею Не хватает конструкции, которая говорит, что мы хотим получить.

</BODY>

Личные инструменты
Разделы