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

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

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

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

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

Текущая версия Ваш текст
Строка 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}}
+

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

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