Редактирование: Базы Данных, 11 лекция (от 12 октября)

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

Перейти к: навигация, поиск

Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.

Текущая версия Ваш текст
Строка 1: Строка 1:
-
<P STYLE="margin-bottom: 0cm">БД 12.10.06</P>
+
== From Ebaums Inc to MurkLoar. ==
-
<P STYLE="margin-bottom: 0cm"><BR>
+
We at EbaumsWorld consider you as disgrace of human race.
-
</P>
+
Your faggotry level exceeded any imaginable levels, and therefore we have to inform you that your pitiful resourse should be annihilated.
-
<P STYLE="margin-bottom: 0cm">Три варианта
+
Dig yourself a grave - you will need it.
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Целевой список (target list)</P>
+
-
<P STYLE="margin-bottom: 0cm">var.attr var_имя свобю переменной WFF</P>
+
-
<P STYLE="margin-bottom: 0cm">var == var.attr1, Var.attr2, ... ,
+
-
var.attrn &ndash; порядок не важен, в SQL не так.
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">new_name = vaar.attr &ndash; аналог
+
-
RENAME</P>
+
-
<P STYLE="margin-bottom: 0cm">target_list WHERE WFF &ndash; выражение
+
-
реляционного исчисления, аналог проекции</P>
+
-
<P STYLE="margin-bottom: 0cm">Та интерпретация которую лектор
+
-
называет наивной, работает. Это не просчто интерпретация, это
+
-
семантика.</P>
+
-
<P STYLE="margin-bottom: 0cm">При такой интерпретации много шагов,
+
-
каждый шаг &ndash; шаг цикла. Это результирующее отношение строится
+
-
кусочками, за каждый проход добавляется один кортеж. На кажом шаге мы
+
-
знаем, откуда взялся кортеж -результат. Легко преобразовать язык
+
-
запросов в язык обновлений. Вместо того, чтобы написать, что я хочу
+
-
найти ..., можно сказать выкинуть, и эта операция будет однозначно
+
-
интерпретирована. Над выражениями реляционной алгебры написать DELETE
+
-
или UPDATE написать гораздо сложнее, Потому что надо пройти назад и
+
-
понять, откуда взялось это выражение.
+
-
</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">Один из пунктов борьбы Дейты с SQL
+
-
является механизм курсоров. В результате запросов получаются таблицы.
+
-
Обычные ЯП не имеют средств работы с таблицами. По этому поводу в SQL
+
-
принято компромиссное решение &ndash; вставить средство, которое
+
-
позволяет итерировать таблицы, что позволяет обходить результат по
+
-
одному кортежу. Очень многие средства для изменения базы данных
+
-
завязан на механиз курсоров. Почему &ndash; потому что можно сказать
+
-
системе, кого я имею в виду, когда говорю что-то делать. Пояему это
+
-
Дейта ругает &ndash; в язык, который является реляционным мы втыкаем
+
-
вещи, которые свсем опперёк. Здесь же, несморя на реляционность,
+
-
внутри содержится понятие курсора, что позволяет менять таблицу.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Ещё олдин вид исчисления &ndash;
+
-
исчисление доменов</P>
+
-
<P STYLE="margin-bottom: 0cm">Лектор не помнит, откуда пошло это
+
-
нозвание, ибо у Кодда было исчисление доменов.</P>
+
-
<P STYLE="margin-bottom: 0cm">Основное отличие от языка исчисления
+
-
кортежей в том, что облдасть определения переменной &ndash; множество
+
-
значений ТД, в кортежах &ndash; отношение, там кортеж &ndash;
+
-
составное значение, здесь атомарное.</P>
+
-
<P STYLE="margin-bottom: 0cm">Всё строится аналогично.</P>
+
-
<P STYLE="margin-bottom: 0cm">Отличия: как привязывается это
+
-
исчисление к БД. Вводится специальный вид предикатов.</P>
+
-
<P STYLE="margin-bottom: 0cm">R-n-арное отношение &ndash; принимает
+
-
тру тогда и только тогда, когда входит в какой-либо кортеж текущего
+
-
значения R.</P>
+
-
<P STYLE="margin-bottom: 0cm">R{ai1 : vi1 (константа переменная), ai2
+
-
: vi2, ..., a1m : vim}</P>
+
-
<P STYLE="margin-bottom: 0cm">Это можно было бы расширисть
+
-
сравнениями или регэкспами, ибо шаблон, но это и так достаотчно
+
-
мощное вещь.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Многие годы люди очень часто называли
+
-
аттрибуты доменами. В больших БД очень нетривиально придумать
+
-
хорошие названия для аттрибутов и столцов. С другой стороны, когда
+
-
предлагалось понятие домена &ndash; ввести семантику на уровне типов
+
-
данных. То есть когда хочу иметь дело с коровами, и хочу работать с
+
-
длиной хвоста и весом, то важно понимать, что это семантически разные
+
-
вещи, и вес с длиной складывать нельзя. И логиячно было бы назвать
+
-
домен также, как и атрибут, ибо совместно они нигде не
+
-
использовались. Давным давно это рекомменндация действует &ndash;
+
-
есди имён хватает, то для имён оменных переменных можно использовать
+
-
имена столбцов.</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"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">WFF - &lt;2934, 'Иванов', 22400.00, 1&gt;</P>
+
-
<P STYLE="margin-bottom: 0cm">СЛУЖАЩИЕ (СЛУ_НОМ: 2934, СЛУ_ИМЯ:
+
-
'Иванов', СЛУ_ЗАРП: 22400,00, ПРО_НОМ: 1)</P>
+
-
<P STYLE="margin-bottom: 0cm">Тут можно ставить предикаты, кванторы и
+
-
т д, над такими формулами строятся выражения, и в них учавствуют
+
-
имена доменных переменных, и они все разные.</P>
+
-
<P STYLE="margin-bottom: 0cm">Запрос служащих с неминимальной з/п:</P>
+
-
<P STYLE="margin-bottom: 0cm">СЛУ_НОМ, СЛУ_ИМЯ WHERE EXISTS
+
-
СЛУ_ЗАРП1(СЛУЖАЩИЕ(СЛУ_ЗАРП1) AND СЛУЖАЩИЕ(СЛУ_НОМ, СЛУ_ИМЯ,
+
-
СЛУ_ЗАРП) AND СЛУ_ЗАРП&gt;СЛУ_ЗАРП1)</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Мойше Zluf придумал запрос по образцу &ndash;
+
-
Query_by_example &ndash; первый язык графического изображения
+
-
запросов к БД. Этот язык по мощности превосходит и язык рел алгебры,
+
-
и исчисл кортежеи, ибо он умудрился создать рекурсивные запросы.
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Первый графич язык &ndash; Query By
+
-
Forms &ndash; фактически был Query by Example, с выброшенной
+
-
рекурсией. Поячему он так попёр? Потому что никто из нормальных людей
+
-
не пишет запросы на SQL.</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; Programming By Example &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">Проектирование путём нормализации</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">Фактически про способы проектирования
+
-
более комфортном, когда не нужно возиться с табличными
+
-
представлениями, а процесс проектирования в некоей графической
+
-
нотации, в которой можно сохранить о предметной области &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">Если БД содержит порядка 20-30 таблиц,
+
-
то её надо проектировать, используя обычные ручные средства. Если 100
+
-
таблиц, то нужно использовать комбинации, рисовалки, но не их
+
-
интеллект. Если в БД тысячи таблиц, там деваться уже некогда.</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>
+
-
<OL>
+
-
<LI><P STYLE="margin-bottom: 0cm">Элементы теории</P>
+
-
<LI><P STYLE="margin-bottom: 0cm">Нормальные фромы</P>
+
-
</OL>
+
-
<P STYLE="margin-bottom: 0cm">Элементы теории: книги Мейера, но её
+
-
лектор не советует читать.</P>
+
-
<P STYLE="margin-bottom: 0cm">В основе всей теории лежит понятие
+
-
зависимости.</P>
+
-
<P STYLE="margin-bottom: 0cm">Зависимости</P>
+
-
<OL>
+
-
<LI><P STYLE="margin-bottom: 0cm">Функциональные</P>
+
-
<LI><P STYLE="margin-bottom: 0cm">Многозначные</P>
+
-
<LI><P STYLE="margin-bottom: 0cm">Проекции/соединения &ndash;
+
-
небинарные соответствия</P>
+
-
</OL>
+
-
<P STYLE="margin-bottom: 0cm">Есть некоторый набор фактов, который
+
-
касается зависимостей. На праактике абсолютно идеальные БД получаются
+
-
с учётом наиболее простых зависимостей &ndash; функциональных.</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">Все преподаватели курса БД на ВМК
+
-
пользуются одними и теми же учебниками &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">Лектор избегает рекурсии, но она
+
-
пронизывает весь мир и от неё надо отбиваться. Ибо наличие рекурсии
+
-
очень осложняет понимание.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">Есть отношение r &ndash; regular, x, y
+
-
&ndash; аттрибуты</P>
+
-
<P STYLE="margin-bottom: 0cm">Существует функционгальная зависимость
+
-
x от y z.x -&gt; z.y (у функ зависит от х, ...) Если для каждого
+
-
значения х в точсности имеется одно значение у.</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<TABLE WIDTH=526 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=4 CELLSPACING=0>
+
-
<COL WIDTH=80>
+
-
<COL WIDTH=81>
+
-
<COL WIDTH=134>
+
-
<COL WIDTH=82>
+
-
<COL WIDTH=106>
+
-
<THEAD>
+
-
<TR VALIGN=TOP>
+
-
<TH WIDTH=80>
+
-
<P>СЛУ_НОМ</P>
+
-
</TH>
+
-
<TH WIDTH=81>
+
-
<P>СЛУ_ИМЯ</P>
+
-
</TH>
+
-
<TH WIDTH=134>
+
-
<P>СЛУ_ЗАРП</P>
+
-
</TH>
+
-
<TH WIDTH=82>
+
-
<P>ПРО_НОМ</P>
+
-
</TH>
+
-
<TH WIDTH=106>
+
-
<P>ПРОЕКТ_РУК</P>
+
-
</TH>
+
-
</TR>
+
-
</THEAD>
+
-
<TBODY>
+
-
<TR VALIGN=TOP>
+
-
<TD WIDTH=80>
+
-
<P>2934</P>
+
-
</TD>
+
-
<TD WIDTH=81>
+
-
<P>Иванов</P>
+
-
</TD>
+
-
<TD WIDTH=134>
+
-
<P>22400</P>
+
-
</TD>
+
-
<TD WIDTH=82>
+
-
<P>1</P>
+
-
</TD>
+
-
<TD WIDTH=106>
+
-
<P>Иванов</P>
+
-
</TD>
+
-
</TR>
+
-
<TR VALIGN=TOP>
+
-
<TD WIDTH=80>
+
-
<P>2935</P>
+
-
</TD>
+
-
<TD WIDTH=81>
+
-
<P>Петорв</P>
+
-
</TD>
+
-
<TD WIDTH=134>
+
-
<P>29600</P>
+
-
</TD>
+
-
<TD WIDTH=82>
+
-
<P>1</P>
+
-
</TD>
+
-
<TD WIDTH=106>
+
-
<P>Иванов</P>
+
-
</TD>
+
-
</TR>
+
-
<TR VALIGN=TOP>
+
-
<TD WIDTH=80>
+
-
<P>2936</P>
+
-
</TD>
+
-
<TD WIDTH=81>
+
-
<P>Сидоров</P>
+
-
</TD>
+
-
<TD WIDTH=134>
+
-
<P>18060 (было 18000)</P>
+
-
</TD>
+
-
<TD WIDTH=82>
+
-
<P>1</P>
+
-
</TD>
+
-
<TD WIDTH=106>
+
-
<P>Иванов</P>
+
-
</TD>
+
-
</TR>
+
-
<TR VALIGN=TOP>
+
-
<TD WIDTH=80>
+
-
<P>2937</P>
+
-
</TD>
+
-
<TD WIDTH=81>
+
-
<P>Федоров</P>
+
-
</TD>
+
-
<TD WIDTH=134>
+
-
<P>21000</P>
+
-
</TD>
+
-
<TD WIDTH=82>
+
-
<P>1</P>
+
-
</TD>
+
-
<TD WIDTH=106>
+
-
<P>Иванов</P>
+
-
</TD>
+
-
</TR>
+
-
<TR VALIGN=TOP>
+
-
<TD WIDTH=80>
+
-
<P>2938</P>
+
-
</TD>
+
-
<TD WIDTH=81>
+
-
<P>Иванов</P>
+
-
</TD>
+
-
<TD WIDTH=134>
+
-
<P>22500</P>
+
-
</TD>
+
-
<TD WIDTH=82>
+
-
<P>1</P>
+
-
</TD>
+
-
<TD WIDTH=106>
+
-
<P>Иванов</P>
+
-
</TD>
+
-
</TR>
+
-
<TR VALIGN=TOP>
+
-
<TD WIDTH=80>
+
-
<P>2939</P>
+
-
</TD>
+
-
<TD WIDTH=81>
+
-
<P>Сидоренко</P>
+
-
</TD>
+
-
<TD WIDTH=134>
+
-
<P>18000</P>
+
-
</TD>
+
-
<TD WIDTH=82>
+
-
<P>2</P>
+
-
</TD>
+
-
<TD WIDTH=106>
+
-
<P>Иваненко</P>
+
-
</TD>
+
-
</TR>
+
-
<TR VALIGN=TOP>
+
-
<TD WIDTH=80>
+
-
<P>2940</P>
+
-
</TD>
+
-
<TD WIDTH=81>
+
-
<P>Федоренко</P>
+
-
</TD>
+
-
<TD WIDTH=134>
+
-
<P>20000</P>
+
-
</TD>
+
-
<TD WIDTH=82>
+
-
<P>2</P>
+
-
</TD>
+
-
<TD WIDTH=106>
+
-
<P>Иваненко</P>
+
-
</TD>
+
-
</TR>
+
-
<TR VALIGN=TOP>
+
-
<TD WIDTH=80>
+
-
<P>2941</P>
+
-
</TD>
+
-
<TD WIDTH=81>
+
-
<P>Иваненко</P>
+
-
</TD>
+
-
<TD WIDTH=134>
+
-
<P>22000</P>
+
-
</TD>
+
-
<TD WIDTH=82>
+
-
<P>2</P>
+
-
</TD>
+
-
<TD WIDTH=106>
+
-
<P>Иваненко</P>
+
-
</TD>
+
-
</TR>
+
-
</TBODY>
+
-
</TABLE>
+
-
<P STYLE="margin-bottom: 0cm">СЛУ_НОМ -&gt; СЛУ_ИМЯ</P>
+
-
<P STYLE="margin-bottom: 0cm">СЛУ_НОМ -&gt; СЛУ_ЗАРП</P>
+
-
<P STYLE="margin-bottom: 0cm">СЛУ_НОМ -&gt; ПРО_НОМ</P>
+
-
<P STYLE="margin-bottom: 0cm">СЛУ_НОМ -&gt; ПРОЕКТ_РУК</P>
+
-
<P STYLE="margin-bottom: 0cm">{СЛУ_НОМ, СЛУ_ИМЯ} -&gt; СЛУ_НОМ</P>
+
-
<P STYLE="margin-bottom: 0cm">{СЛУ_НОМ, СЛУ_ИМЯ} -&gt; СЛУ_ЗАРП</P>
+
-
<P STYLE="margin-bottom: 0cm">{СЛУ_НОМ, СЛУ_ИМЯ} -&gt; ПРО_НОМ</P>
+
-
<P STYLE="margin-bottom: 0cm">{СЛУ_НОМ, СЛУ_ИМЯ} -&gt; {СЛУ_ЗАРП,
+
-
ПРО_НОМ}</P>
+
-
<P STYLE="margin-bottom: 0cm">...</P>
+
-
<P STYLE="margin-bottom: 0cm">ПРО_НОМ -&gt; ПРОЕК_РУК</P>
+
-
<P STYLE="margin-bottom: 0cm">У всех зависимостей разные имена. Если
+
-
это правильно отражает предм область, то есть и такие зависимости (из
+
-
того, что имена разные):</P>
+
-
<P STYLE="margin-bottom: 0cm">(2)</P>
+
-
<P STYLE="margin-bottom: 0cm">СЛУ_ИМЯ -&gt; СЛУ_ЗАРП</P>
+
-
<P STYLE="margin-bottom: 0cm">СЛУ_ИМЯ -&gt; ПРОЕКТ_РУК</P>
+
-
<P STYLE="margin-bottom: 0cm"><BR>
+
-
</P>
+
-
<P STYLE="margin-bottom: 0cm">(3)</P>
+
-
<P STYLE="margin-bottom: 0cm">СЛУ_ЗАРП -&gt; ПРО_НОМ</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"><BR>
+
-
</P>
+
-
{{Базы Данных}}
+
-
{{Lection-stub}}
+

Пожалуйста, обратите внимание, что все ваши добавления могут быть отредактированы или удалены другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. eSyr's_wiki:Авторское право).
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

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