![](/user_photo/2706_HbeT2.jpg)
- •Объекты и атрибуты
- •Три области
- •Модели данных: схемы и подсхемы
- •Подсхемы
- •Три типа описания данных
- •Иерархические системы
- •Сетевые системы
- •Достоинства и недостатки
- •Реляционные базы данных.
- •Отсутствие упорядоченности кортежей
- •Отсутствие упорядоченности атрибутов
- •Атомарность значений атрибутов
- •Говорят, что отношение, в котором определен внешний ключ, ссылается на соответствующее отношение, в котором такой же атрибут является первичным ключом.
- •Базисные средства манипулирования реляционными данными. Реляционное исчисление. Реляционная алгебра.
- •Реляционная алгебра
- •Операция ограничения
- •Операция взятия проекции
- •Операция соединения отношений
- •Операция деления отношений
- •Реляционное исчисление
- •Теория нормализации основывается на наличии той или иной зависимости между полями таблицы. Определены два вида таких зависимостей: функциональные и многозначные.
- •Обучение
- •Проектирование реляционных баз данных с использованием нормализации
- •Основные свойства нормальных форм:
- •Отношение r находится во второй нормальной форме (2nf) в том и только в том случае, когда находится в 1nf, и каждый неключевой атрибут полностью зависит от первичного ключа.
- •Отношение r находится в нормальной форме Бойса-Кодда (bcnf) в том и только в том случае, если каждый детерминант является возможным ключом.
- •Процедура проектирования
- •Семантическое моделирование данных, er-диаграммы
- •Семантические модели данных
- •Модель Entity-Relationship (Сущность-Связи)
- •*****Однородные распределенные субд
- •Транзакции и целостность баз данных
- •Изолированность пользователей
- •*****Сериализация транзакций
- •*****Интегрированные или федеративные системы и мультибазы данных
- •Выражение запросов
- •Раздел order by
- •Раздел from
- •Раздел where
- •Предикат сравнения
- •Предикат like
- •Предикат exists
- •15.2.3. Раздел group by
- •Раздел having
- •Семантика агрегатных функций
Раздел from
Результатом выполнения раздела FROM является расширенное декартово произведение таблиц, заданных списком таблиц раздела FROM. Расширенное декартово произведение (расширенное, потому что в качестве операндов и результата допускаются мультимножества) в стандарте определяется следующим образом:
"Расширенное произведение R есть мультимножество всех строк r таких, что r является конкатенацией строк из всех идентифицированных таблиц в том порядке, в котором они идентифицированы. Мощность R есть произведение мощностей идентифицированных таблиц. Порядковый номер столбца в R есть n+s, где n - порядковый номер порождающего столбца в именованной таблице T, а s - сумма степеней всех таблиц, идентифицированных до T в разделе FROM".
Как видно из синтаксиса, рядом с именем таблицы можно указывать еще одно имя "correlation name". Фактически, это некоторый синоним имени таблицы, который можно использовать в других разделах табличного выражения для ссылки на строки именно этого вхождения таблицы.
Если табличное выражение содержит только раздел FROM (это единственный обязательный раздел табличного выражения), то результат табличного выражения совпадает с результатом раздела FROM.
Раздел where
Если в табличном выражении присутствует раздел WHERE, то следующим вычисляется он. Синтаксис раздела WHERE следующий:
<where clause> ::= WHERE <search condition>
<search condition> ::=
<boolean term>
( <search condition> OR <boolean term>
<Boolean term> ::=
<boolean factor>
( <boolean term> AND <boolean factor>
<boolean factor> ::= [NOT] <boolean primary>
<boolean primary> ::= <predicate> | (<search condition>)
Вычисление раздела WHERE производится по следующим правилам: Пусть R - результат вычисления раздела FROM. Тогда условие поиска применяется ко всем строкам R, и результатом раздела WHERE является таблица, состоящая из тех строк R, для которого результатом вычисления условия поиска является true. Если условие выборки включает подзапросы, то каждый подзапрос вычисляется для каждого кортежа таблицы R (в стандарте используется термин "effectively" в том смысле, что результат должен быть таким, как если бы каждый подзапрос действительно вычислялся заново для каждого кортежа R).
Заметим, что поскольку SQL/89 допускает наличие в базе данных неопределенных значений, то вычисление условия поиска производится не в булевой, а в трехзначной логике со значениями true, false и unknown (неизвестно). Для любого предиката известно, в каких ситуациях он может порождать значение unknown. Булевские операции AND, OR и NOT работают в трехзначной логике следующим образом:
true AND unknown = unknown
unknown AND true = unknown
unknown AND unknown = unknown
true OR unknown = true
unknown OR true = true
unknown OR unknown = unknown
NOT unknown = unknown
Среди предикатов условия поиска в соответствии с SQL/89 могут находиться следующие предикаты: предикат сравнения, предикат between, предикат in, предикат like, предикат null, предикат с квантором и предикат exists. Сразу заметим, что во всех реализациях SQL на эффективность выполнения запроса существенно влияет наличие в условии поиска простых предикатов сравнения (предикатов, задающих сравнение столбца таблицы с константой). Наличие таких предикатов позволяет СУБД использовать индексы при выполнении запроса, т.е. избегать полного просмотра таблицы. Хотя в принципе язык SQL позволяет пользователям не заботиться о конкретном наборе предикатов в условии выборки (лишь бы они были синтаксически и семантически правильны), при реальном использовании SQL-ориентированных СУБД такие технические детали стоит иметь в виду.