- •Лекция 4
- •4.1.Операции над отношениями (реляционная алгебра).
- •4.1.1.Операции обработки кортежей.
- •4.1.2.Операции обработки отношений.
- •4.2. Реляционное исчисление
- •ЦелевойСписок where Формула.
- •4.3. Язык sql
- •4.3.1.Типы данных sql.
- •4.3.2.Ddl: Операторы создания схемы базы данных.
- •Операторы базы данных
- •Создание и удаление таблиц
- •4.3.3.Ddl: Операторы создания индексов.
- •4.3.4.Ddl: Операторы управления правами доступа.
- •4.3.5.Dml: Команды модификации данных.
- •Удаление записей
- •4.3.6.Dml: Выборка данных.
- •4.3.7.Dml: Выборка из нескольких таблиц.
- •4.3.8.Dml: Вычисления внутри select.
- •4.3.9.Dml: Групировка данных.
- •4.3.10.Dml: Cортировка данных.
- •4.3.11.Dml: Операция объединения.
- •4.3.12.Использование представлений.
- •4.3.13.Другие возможности sql.
4.2. Реляционное исчисление
В отличие от реляционной алгебры (процедурный подход), реляционное исчисление реализует декларативный (описательный) подход к выполнению операций над данными, поскольку оно лишь описывает свойства желаемого результата в виде логической формулы.
Основная идея состоит в том, чтобы любую операцию над отношениями описать в виде правильной формулы. СУБД, основанные на реляционном исчислении, автоматически распознают эти формулы и выполняют требуемые преобразования над данными. Достоинством такого подхода является то, что он позволяет построить непроцедурные языки манипулирования данными.
Базисными понятиями реляционного исчисления являются:
понятие переменной с определенной для нее областью допустимых значений,
понятие правильно построенной формулы, опирающейся на переменные, предикаты и кванторы.
Аналитические выражения записывают в одной из следующих форм:
{ t | (t) } - читается так: “множество переменных t таких, что истинна формула “.
{ t1, t2, ... tk | ‘ ( t1, t2, ... tk ) },
где t - переменная - кортеж,
t1,...tk - переменные на доменах,
k - ранг отношения,
- формула, построенная из атомов.
В зависимости от того, что является областью определения переменной, различают исчисление кортежей и исчисление доменов. В первом случае (форма а) в качестве значений переменных используются кортежи, во втором - домены.
Реляционное исчисление кортежей
Атомы формул Y могут быть трех типов:
R(S) - означает, что S - это кортеж в отношении R.
s[i] @ u[j] - означает, что i -ая компонента S и j-ая компонента U связаны оператором сравнения (< > = ). Например: s[1] < u[3] справедливо для кортежей s = (1, 6, 6, 6) и u = (2, 2, 5, 2).
s[i] @ const или const @ s[i], - аналогичная п.2 связь с константой. Например, s[3] = “СИДОРОВ”.
Формулы составляются из атомов по следующим правилам:
Каждый атом - это формула.
Если 1 и 2 - формулы, то 1 2, 1 2, 1 - тоже формулы.
Если - формула, то ( s) ( ) - тоже формула, которая утверждает, что существует такое значение переменной S, при котором истинна.
Если - формула, то ( s) ( ) - тоже формула, которая утверждает, что при подстановке любого значения переменной S в формулу она остается истинной.
Порядок старшинства операций в формулах: операторы сравнения (< > = и т.п.), , , , , .
Правильно построенные формулы служат для описания условий, которые накладываются пользователем на кортежные переменные. В условиях применяются только простые сравнения атрибутов отношений с константой или с другим атрибутом.
При использовании кортежных переменных можно ссылаться на отдельный атрибут этой переменной, например: если S = (5, Иванов, 500, 3) - это кортеж отношения СОТРУДНИКИ (номер, имя, оклад, отдел), то S[3] = 500 - это значение третьего атрибута данного кортежа (оклад). На практике в языках, основанных на реляционном исчислении, часто вместо номера атрибута используют его имя, например, вместо S[3] пишут S.Оклад,что более наглядно.
Переменные, входящие в формулы, могут быть свободными или связанными. К свободным относят все переменные, входящие в формулу, при построении которой не использовались кванторы. Множество кортежей - значений этих переменных, при которых формула истинна, образуют результирующее отношение.
Если же имя переменной Х использовано сразу после квантора Х или Х, то она считается связанной переменной, которая не видна за пределами формулы, описанной в кванторе. При вычислении значения такой формулы используется не одно значение связанной переменной, а вся ее область определения. Например, пусть Х и Y - две кортежные переменные, определенные на отношении СОТРУДНИКИ. Тогда, формула
Y (Х.Оклад > Y.Оклад)
для текущего значения Х истинна в том и только в том случае, если во всем отношении СОТРУДНИКИ найдется кортеж Y такой, что значение его атрибута Оклад удовлетворяет заданному условию сравнения.
Чтобы описать, какие атрибуты кортежа должны входить в результирующее отношение, используют целевой список, который может состоять из следующих элементов:
Х.А где Х - имя свободной переменной, а А - имя атрибута отношения,
Х, то есть имена всех атрибутов отношения;
N = X.A, где N - новое имя атрибута результирующего отношения (когда используются несколько переменных с одинаковой областью определения).
В реальных языках БД вместо математических обозначений кванторов и логических связок используют, как правило, словесные обозначения:
|
|
EXISTS |
|
NOT |
|
|
FORALL |
|
AND |
|
|
WHERE |
|
OR |
Таким образом, аналитическое выражение реляционного исчисления кортежей можно записать в виде:
