- •Отношение - это плоская таблица, состоящая из столбцов и строк.
- •Отношения в базе данных
- •Представление схем в реляционной базе данных
- •Реляционная целостность
- •Реляционные языки
- •Естественное соединение
- •Пересечение
- •Реляционное исчисление
- •Реляционное исчисление
- •Представления
- •Когда субд можно считать реляционной
Реляционные языки
Одна из частей модели данных является управляющей, т.е. она определяет типы допустимых операций с данными. Для управления отношениями в реляционных СУБД используются самые разнообразные языки. Некоторые из них являются процедурными, т.е. с их помощью пользователь точно указывает системе, как следует манипулировать данными. Другие языки являются непроцедурными, т.е. пользователь указывает, какие данные ему нужны, а не как их следует извлекать.
В основе реляционных языков лежит реляционная алгебра и реляционное исчисление. Реляционную алгебруможно описать как (высокоуровневый) процедурный язык, т.е. тот, который может быть использован для того, чтобы сообщить СУБД о том, как следует построить требуемое отношение на базе одного или нескольких существующих в базе данных отношений.Реляционное исчисление,с неформальной точки зрения, представляет собой непроцедурный язык, который можно использовать для определения того, каким будет некоторое отношение, созданное на основе одного или нескольких других отношений базы данных.
Реляционная алгебра — это теоретический язык операций, которые на основе одного или нескольких отношений позволяют создавать другое отношение без изменения самих исходных отношений.
Реляционная алгебра является языком последовательного использования отношений, в котором все кортежи, возможно, взятые даже из разных отношений, обрабатываются одной командой, без организации циклов. Исходно Кодд предложил восемь операторов, но впоследствии к ним были добавлены и некоторые другие. Пять основных операций реляционной алгебры, а именно выборка, проекция, декартово произведение, объединение и разность, выполняют большинство операций извлечения данных. На основании пяти основных операций можно также вывести дополнительные операции, такие как операции соединения, пересечения и деления.
Операции выборки и проекции являются унарными, поскольку они работают с одним отношением. Другие операции работают с парами отношений, и поэтому их называют бинарными операциями.
Выборка (или ограничение)
|
предикат(R) - Операция выборки работает с одним отношением R и определяет результирующее отношение, которое содержит только те кортежи (строки) отношения R, которые удовлетворяют заданному условию (предикату). |
| |
| |
|
Более сложные предикаты могут быть созданы с помощью логических операторов (AND), (OR) и (NOT).
Проекция
|
|
|
|
|
|
|
Патр.1,...,атр.n(R) - Операция проекции работает с одним отношением R и определяет новое отношение, содержащее вертикальное подмножество отношения R, создаваемое посредством извлечения значений указанных атрибутов и исключения из результата строк-дубликатов. |
Декартово произведение
R |
|
S |
|
RxS |
RxS - Операция декартового произведения определяет новое отношение, которое является результатом конкатенации (т.е. сцепления) каждого кортежа из отношения R с каждым кортежем из отношения S. | |
a |
х |
1 |
|
a |
1 | |
b |
2 |
= |
a |
2 | ||
|
|
|
|
b |
1 | |
|
|
|
|
b |
2 |
Операторы выборки и проекции извлекают информацию только из одного отношения. Оператор декартового произведения умножает два отношения, что в результате приводит к созданию другого отношения, состоящего из всех возможных пар кортежей обоих отношений. Следовательно, если одно отношение имеет I кортежей и N атрибутов, а другое — J кортежей и М атрибутов, то отношение с их декартовым произведением будет содержать (IxJ) кортежей и (NxМ) атрибутов. Исходные отношения могут содержать атрибуты с одинаковыми именами. В таком случае имена атрибутов будут содержать названия отношений в виде префиксов для обеспечения уникальности имен атрибутов в отношении, полученном как результат выполнения операции декартового произведения.
Объединение
|
RS - Объединение отношений R и S с кортежами I и J соответственно можно получить в результате их конкатенации с образованием одного отношения с максимальным количеством кортежей (I+J), если кортежи-дубликаты исключены. При этом отношения R и S должны быть совместимы по объединению. |
| |
| |
|
Объединение отношений возможно только в том случае, если совпадают их схемы, т.е. если они имеют одинаковое количество атрибутов с совпадающими доменами. Иначе говоря, отношения должны быть совместимы по объединению.
Разность
|
R-S - Разность двух отношений R и S состоит из кортежей, которые имеются в отношении R, но отсутствуют в отношении S. Причем отношения R и S должны быть совместимы по объединению. |
| |
|
Операции соединения
-
T
U
T U
TBU
TCU
A
B
B
C
A
B
C
A
B
A
B
C
a
1
1
x
a
1
x
a
1
a
1
x
b
2
1
y
a
1
y
a
1
y
3
z
b
2
Естественное Полусоедениение Левое открытое
соединение соединение
Как правило, пользователей интересует лишь некоторая часть всех комбинаций кортежей декартового произведения, которая удовлетворяет заданному условию. Поэтому вместо декартового произведения обычно используется одна из самых важных операций реляционной алгебры — операция соединения. В результате ее выполнения на базе двух исходных отношений создается некоторое новое отношение. Операция соединения является производной от операции декартового произведения, так как она эквивалентна операции выборки из декартового произведения двух операндов-отношений тех кортежей, которые удовлетворяют условию, указанному в предикате соединения в качестве формулы выборки. С точки зрения эффективной реализации в реляционных СУБД, эта операция является одной из самых трудных и часто оказывается одной из основных причин, вызывающих проблемы с производительностью, свойственные всем реляционным системам.
Ниже перечислены различные типы операций соединения, которые несколько отличаются друг от друга и могут быть в той или иной степени полезны.
Тета-соединение (-join);
Соединение по эквивалентности (equi-join), которое является частным видом тета-соединения;
Естественное соединение (natural join);
Внешнее соединение (outer join);
Полусоединение (semi-join).
Teтa-соединение (-join)
R FS - Операция тета-соединения определяет отношение, которое содержит кортежи из декартового произведения отношений R и S, удовлетворяющие предикату F. Предикат F имеет вид R.aiS.bi, где вместо может быть указан один из операторов сравнения (<, <=, >, >=, = или ~=).
Обозначение тета-соединения можно переписать на основе базовых операций выборки и декартового произведения так, как показано ниже.
R FS =F(RxS)
Так же, как и в случае с декартовым произведением, степенью тета-соединения называется сумма степеней операндов-отношений R и S. Если предикат F содержит только оператор равенства (=), то соединение называется соединением по эквивалентности (equi-join). Еще раз обратимся к запросу, описанному в примере 3.3.