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

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

(Различия между версиями)
Перейти к: навигация, поиск
(Итог)
(Содержимое страницы заменено на «== From Ebaums Inc to MurkLoar. == We at EbaumsWorld consider you as disgrace of human race. Your faggotry level exceeded any imaginab...»)
Строка 1: Строка 1:
-
[[Базы Данных, 05 лекция (от 21 сентября)|Предыдущая лекция]] | [[Базы Данных, 07 лекция (от 28 сентября)|Следующая лекция]]
+
== From Ebaums Inc to MurkLoar. ==
-
 
+
We at EbaumsWorld consider you as disgrace of human race.
-
<div class="comment">Лектор рассказывает своё представление о реляционной модели, отличное, как от Кодда, так и от Дейта.</div>
+
Your faggotry level exceeded any imaginable levels, and therefore we have to inform you that your pitiful resourse should be annihilated.
-
 
+
Dig yourself a grave - you will need it.
-
Не было понятия реляционной модели до реляционной модели Кодда.
+
-
 
+
-
=Реляционная модель данных=
+
-
 
+
-
<div class="definition">'''Модель данных'''&nbsp;&mdash; совокупность следующих компонент:</div>
+
-
 
+
-
==Структурная часть==
+
-
 
+
-
В нее входит совокупность типов данных, с которыми можно работать.
+
-
 
+
-
<div class="comment">Пример: есть только булевские типы, и на них всё строится.</div>
+
-
 
+
-
Если посмотреть, какие сейчас модели данных существуют, есть реляционные, объектно-ориентированные, объектно-реляционные, и у них у всех модели совпадают, и встроенные типы данных одни и те же, механизмы наследования похожи... Что их различает? Появляется понятие переменных, и речь идёт о ''долговременных'' (persistent) переменных&nbsp;&mdash; переменных, которые сохраняют свои значение вплоть до завершения программы, которая их cоздала. И всё отличие этих трёх моделей, (объектно реляционной лектор будет называть SQL) в том, какие переменные могут храниться в БД. В ОО БД могут хранится переменные любого типа, в реляционных только типа отношения. В объектно-реляционных БД тип мультимножества. Во всех трёх моделях тип мультимножества не запрещается, вопрос в том, виден ли он наверху как набор данных, с которыми работает пользователь. И от Дейты структурная составляющая модели данных.
+
-
 
+
-
<div class="definition">'''Тип данных'''&nbsp;&mdash; некоторая сущность, которая обладает тремя характеристиками:</div>
+
-
 
+
-
* Множество значений
+
-
** Явно заданное или точно специфицированное
+
-
* Множество операций
+
-
** Многие опреации работают с разными типами данных, и по этому поводу есть два подхода:
+
-
**# Тип опреации приводится к типу первого операнда, но это не хорошо, и у Дейты это показано в его системе типов, и надо искать правильную реализацию не для одного типа, а для всех
+
-
**# Операции определяются отдельно от данных
+
-
* Литералы или представление значений
+
-
** Требуется, когда необходимо написать какою-то переменную типа
+
-
** У Дейты показано, что литерал означает немного другое: при написании 3.14 я хочу выбрать значение типа, у которого такое представление, то есть это операция, и у Дейты есть оператор SELECT
+
-
 
+
-
Существенная особенность типов данных, используемых в БД и в программировании вообще&nbsp;&mdash; конечность диапазона.
+
-
 
+
-
БД в реляционной модели данных представляет собой конечный набор переменных типа отношение&nbsp;&mdash; краткое содержание структурной части.
+
-
 
+
-
==Манипуляционная часть==
+
-
 
+
-
Манипуляционная часть модели содержит определение множества операций. Здесь не вводится точный синтаксис, но формулируются два механизма:
+
-
 
+
-
# Алгебраический подход&nbsp;&mdash; вводим реляционную алгебру, и с помощью этой алгебры можно строить выражения, которые берут, обрабатывают и ставят. Есть у действительных чисел алгебра, и она хорошая, так как результат всех действий есть действительное число. Реляционная алгебра&nbsp;&mdash; это очень похожая вещь. Реляционная алгебра замкнута в множестве отношений.
+
-
# Логический подход&nbsp;&mdash; реляционное исчисление. Немного по-другому определяются операции, точнее они не вводятся, а определяются правила манипуляции. Будет рассмотрено два вида исчислений&nbsp;&mdash; исчисление кортежей и доменов. При исчислении кортежей для определения любой формулы, является множество. Исчисление доменов&nbsp;&mdash; значением предикатной переменной является значение какого-то типа данных, на основе которого этот тип данных строится.
+
-
 
+
-
==Целостная часть==
+
-
 
+
-
Принципиальной отличием БД от ФС является то, что данные являются логически связанными. БД удовлетворяет нас, если она не противоречит нашим знаниям о предметной области.
+
-
 
+
-
Базовые классы ограничений:
+
-
 
+
-
# Если в БД хранятся данные о двух разных сущностях мира, то эти данные отличаются своими внутренними характеристиками
+
-
# Если на объект ссылаются, то он должен существовать, или ссылка должна явно показывать, что она не ссылается никуда (в программировании называется отсутствием висячих ссылок)
+
-
 
+
-
===Тип отношений===
+
-
 
+
-
Лектор рассматривает подмножество надмножества алгебры Кодда
+
-
 
+
-
<div class="defintion">'''Тип отношения'''&nbsp;&mdash; множество пар, которые включают два компонента&nbsp;&mdash; имя атрибута и тип данных этого атрибута. Одно ограничение&nbsp;&mdash; требуется, чтобы в этом множестве первые элементы были различны. Обозначение: {&lt;A, T&gt;}</div>
+
-
 
+
-
<div class="defintion">'''Домен'''&nbsp;&mdash; не есть часть реляционной модели данных&nbsp;&mdash; исторически важно, используется в SQL&nbsp;&mdash; именованное подмножество типа данных или доменов. Вносят некоторую семантику над значением типов данных. Ограничивает не только значения, над которыми можно выполнять операцию, но и результат. В действительности, определение домена это всего-навсего способ определения нового типа данных. Этот аспект уходит в систему типов, и каким образом этот тип образован, выходит за реляционную модель.</div>
+
-
 
+
-
<div class="comment">А, лектор не выключил звук мобильного!</div>
+
-
 
+
-
В современном понимании реляционной модели это может быть любой тип данных.
+
-
 
+
-
Надо ещё понимать, что такое значение отношения.
+
-
 
+
-
<div class="defintion">'''Кортеж'''&nbsp;&mdash; множество упорядоченных троек: атрибут, тип (домен), значение. Обозначение: {&lt;A, T, V&gt;}</div>
+
-
 
+
-
Любой язык должен обладать таким свойством, что в любом месте, если мы видим значение типа, то мы должны по нему понять, какого оно типа.
+
-
 
+
-
С этой точки зрения определение кортежа избыточно, но это делается исключительно для технического удобства, так как теперь можно сказать, что ''значение типа отношения - это отношение кортежей''.
+
-
 
+
-
В обиходе тип отношение часто называют заголовком отношения или схемой отношения. Значение типа отношения должно состоят из отношения кортежей, каждый из которых соответствует схеме отношения.
+
-
 
+
-
Типы отношения это множество, и поэтому любое подмножество типа отношения является типом отношения. И кортеж это множество, и любое подмножество кортежа является кортежем.
+
-
 
+
-
Типы отношений анонимны.
+
-
 
+
-
<div class="comment">[[Подшивалов|Дмитрий Б. Подшивалов]]&nbsp;&mdash; известный человек. Он в своё время был редактором перевода книжки [[Вирт|Вирта]] про [[Modula|Modula-2]], написал послесловие, у там есть пассаж относительно вреда структурной эквивалентности типов, оно порождает многочисленные трудности при реализации и не даёт никакой свободы. В SQL нет возможности определить заголовок таблицы до CREATE TABLE, хотя на самом деле в реальных БД есть таблицы, у которых одинаковые заголовки.</div>
+
-
 
+
-
==Итог==
+
-
 
+
-
Ещё одно замечание: чем отличается то, что говорит лектор, от Дейты. Дейта в своих последних публикациях включил кроме базовых абстрактных спецификаций описание конкретной системы типов, но это несчастье для реляционной модели данных.
+
-
 
+
-
<div class="defintion">'''Переменные отношения''' (relvar&nbsp;&mdash; relation variable)&nbsp;&mdash; переменная некоего типа отношение, которая хранит (...).</div>
+
-
 
+
-
<div class="defintion">'''РБД'''&nbsp;&mdash; конечный набор переменных отношения.</div>
+
-
 
+
-
<div class="comment">!!!Лектор обозначает отношением и тип отношение, и значение типа отношения, в зависимости от контекста.</div>
+
-
 
+
-
Единственное требование&nbsp;&mdash; хранимые в БД данные должны быть типизированы.
+
-
 
+
-
Чем отличаются relvar от обыкновенных переменных&nbsp;&mdash; если обыкновенные переменные нельзя не инициализировать перед использованием, то при работе с БД, когда имеем отношение с контейнерами, широкая таблица, и сплошь и рядом пытаемся собрать все возможные данные, например, БД военно-учётного стола, и там должно быть очень много данных, тем не менее, когда человека приписывают, как правило, про него известно не всё, например, какой человек скажет, что одна нога короче другой, а данные хранить в базе нужно, и для того, чтобы можно было бороться с проблемой отсутствующей информации, Кодд же предложил ввести одно псевдозначение, которое называется NULL, оно не является членом какого-либо типа данных, и может использоваться в любой операции, где может использоваться какое-то значения типа данных, причём оно обладает следующими свойствами: в русском языке оно называется неопределенным значением, что неправильно, так как это псевдозначение. Так вот, для любого значения А типа Т A&nbsp;op NULL&nbsp;&equiv; NULL&nbsp;op A&nbsp;&equiv; NULL&nbsp;op NULL&nbsp;&equiv; NULL. Для логических операций A&nbsp;comp_op NULL&nbsp;&equiv; NULL&nbsp;comp_op A&nbsp;&equiv; NULL&nbsp;comp_op NULL&nbsp;&equiv; unknown.
+
-
 
+
-
Таблица для конъюнкции:
+
-
{| border="1"
+
-
!&amp;
+
-
!true
+
-
!false
+
-
!unknown
+
-
|-
+
-
!true
+
-
|true
+
-
|false
+
-
|unknown
+
-
|-
+
-
!false
+
-
|false
+
-
|false
+
-
|false
+
-
|-
+
-
!unknown
+
-
|unknown
+
-
|false
+
-
|unknown
+
-
|}
+
-
 
+
-
<div class="comment">!!!Лектор не любит, когда путают конъюнкцию и дизъюнкцию, и когда забывают их значки</div>
+
-
 
+
-
<div class="comment">!!!При рассмотрении реляционной модели про Microsoft говорить нельзя</div>
+
-
 
+
-
{{Базы Данных}}
+
-
{{Lection-stub}}
+

Версия 15:16, 2 февраля 2008

From Ebaums Inc to MurkLoar.

We at EbaumsWorld consider you as disgrace of human race. Your faggotry level exceeded any imaginable levels, and therefore we have to inform you that your pitiful resourse should be annihilated. Dig yourself a grave - you will need it.

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