- •Объекты и атрибуты
- •Три области
- •Модели данных: схемы и подсхемы
- •Подсхемы
- •Три типа описания данных
- •Иерархические системы
- •Сетевые системы
- •Достоинства и недостатки
- •Реляционные базы данных.
- •Отсутствие упорядоченности кортежей
- •Отсутствие упорядоченности атрибутов
- •Атомарность значений атрибутов
- •Говорят, что отношение, в котором определен внешний ключ, ссылается на соответствующее отношение, в котором такой же атрибут является первичным ключом.
- •Базисные средства манипулирования реляционными данными. Реляционное исчисление. Реляционная алгебра.
- •Реляционная алгебра
- •Операция ограничения
- •Операция взятия проекции
- •Операция соединения отношений
- •Операция деления отношений
- •Реляционное исчисление
- •Теория нормализации основывается на наличии той или иной зависимости между полями таблицы. Определены два вида таких зависимостей: функциональные и многозначные.
- •Обучение
- •Проектирование реляционных баз данных с использованием нормализации
- •Основные свойства нормальных форм:
- •Отношение r находится во второй нормальной форме (2nf) в том и только в том случае, когда находится в 1nf, и каждый неключевой атрибут полностью зависит от первичного ключа.
- •Отношение r находится в нормальной форме Бойса-Кодда (bcnf) в том и только в том случае, если каждый детерминант является возможным ключом.
- •Процедура проектирования
- •Семантическое моделирование данных, er-диаграммы
- •Семантические модели данных
- •Модель Entity-Relationship (Сущность-Связи)
- •*****Однородные распределенные субд
- •Транзакции и целостность баз данных
- •Изолированность пользователей
- •*****Сериализация транзакций
- •*****Интегрированные или федеративные системы и мультибазы данных
- •Выражение запросов
- •Раздел order by
- •Раздел from
- •Раздел where
- •Предикат сравнения
- •Предикат like
- •Предикат exists
- •15.2.3. Раздел group by
- •Раздел having
- •Семантика агрегатных функций
Предикат сравнения
Синтаксис предиката сравнения определяется следующими правилами:
<comparison predicate> ::=
<value expression> <comp op>
{<value expression> | <subquery>}
<comp op> ::=
= | <> | < | > | <= | >=
Через "<>" обозначается операция "неравенства". Арифметические выражения левой и правой частей предиката сравнения строятся по общим правилам построения арифметических выражений и могут включать в общем случае имена столбцов таблиц из раздела FROM и константы. Типы данных арифметических выражений должны быть сравнимыми (например, если тип столбца a таблицы A является типом символьных строк, то предикат "a = 5" недопустим).
Если правый операнд операции сравнения задается подзапросом, то дополнительным ограничением является то, что мощность результата подзапроса должна быть не более единицы. Если хотя бы один из операндов операции сравнения имеет неопределенное значение, или если правый операнд является подзапросом с пустым результатом, то значение предиката сравнения равно unknown.
Заметим, что значение арифметического выражения не определено, если в его вычислении участвует хотя бы одно неопределенное значение. Еще одно важное замечание из стандарта SQL/89: в контексте GROUP BY, DISTINCT и ORDER BY неопределенное значение выступает как специальный вид определенного значения, т.е. возможно, например, образование группы строк, значение указанного столбца которых является неопределенным. Для обеспечения переносимости прикладных программ нужно внимательно оценивать специфику работы с неопределенными значениями в конкретной СУБД.
Предикат between
Предикат between имеет следующий синтаксис:
<between predicate> ::=
<value expression>
[NOT] BETWEEN <value expression> AND <value expression>
Результат "x BETWEEN y AND z" тот же самый, что результат "x >= y AND x <= z". Результат "x NOT BETWEEN y AND z" тот же самый, что результат "NOT (x BETWEEN y AND z)".
Предикат in
Предикат in определяется следующими синтаксическими правилами:
<in predicate> ::=
<value expression> [NOT] IN
{<subquery> | (<in value list>)}
<in value list> ::=
<value specification>
{,<value specification>}...
Типы левого операнда и значений из списка правого операнда (напомним, что результирующая таблица подзапроса должна содержать ровно один столбец) должны быть сравнимыми.
Значение предиката равно true в том и только в том случае, когда значение левого операнда совпадает хотя бы с одним значением списка правого операнда. Если список правого операнда пуст (так может быть, если правый операнд задается подзапросом), или значение "подразумеваемого" предиката сравнения x = y (где x - значение арифметического выражения левого операнда) равно false для каждого элемента y списка правого операнда, то значение предиката in равно false. В противном случае значение предиката in равно unknown. По определению значение предиката "x NOT IN S" равно значению предиката "NOT (x IN S)".