- •8. Лекция: Логика предикатов и базы данных
- •Реляционные базы данных
- •Реляционная алгебра
- •Теоретико-множественные операции
- •Специальные реляционные операторы
- •Запросы
- •Ограничения целостности
- •9. Лекция: Графы: представления, достижимость и связность.
- •Основные понятия
- •Представления графов
- •Матрица (таблица) смежности
- •Матрица (таблица) инцидентности
- •Списки смежности
- •Граф достижимости
- •Взаимная достижимость, компоненты сильной связности и базы графа
- •Лекция: Деревья
- •Неориентированные и ориентированные деревья
- •Деревья и формулы (выражения)
- •Обходы деревьев
- •11. Лекция: Три алгоритма на графах
- •Построение минимального остова
- •Поиск в глубину и задача о лабиринте
- •Задача о кратчайших путях из одного источника
Реляционная алгебра
Для манипуляции отношениями Коддом в 1970 г. был предложен набор реляционных операторов, позволяющих по одним отношениям получать другие. Каждый такой оператор является функцией (вообще говоря, частичной), аргументами и значениями которой являются отношения. Из базовых реляционных операторов можно с помощью суперпозиции образовывать сложные термы. Совокупность получаемых таким образом операций над отношениями называется реляционной алгеброй.
В этом разделе мы рассмотрим семь основных реляционных операторов, введенных Коддом в качестве базиса реляционной алгебры, и покажем, как они выражаются в терминах логики предикатов.
Теоретико-множественные операции
Первую группу реляционных операторов представляют теоретико-множественные операции:
Объединение
Пересечение
Вычитание
Декартово произведение
В
лекции
1
мы рассматривали все эти операции для
множеств. Особенности их использования
в реляционной
алгебре
состоят в том, что объединение, пересечение
и вычитание применяются к отношениям
, имеющим одно и то же множество одинаково
упорядоченных атрибутов.
Пусть имеются два таких отношения
R(A1,
…, An)
и S(A1,
…, An).
Тогда результат их объединенния - это
отношение
P1=
R
S,
содержащее все кортежи отношения
R
и все кортежи отношения
S
(кортежи, содержащиеся и в R,
и в S,
входят в P
в одном экземпляре). Это отношение
представляется формулой P1(x1,
… , xn)=
R(x1,
… , xn)
S(x1,
… , xn).
Результат пересечения - это отношение
P2
= R \cap S,
которое содержит кортежи, входящие и в
R
и в S.
Оно представляется формулой P2(x1,
… , xn)=
R(x1,
… , xn)
S(x1,
… , xn).
Результат разности P3=
R - S
включает кортежи из R,
не входящие в S.
Это отношение
представляется формулой P3(x1,
… , xn)=
R(x1,
… , xn)
¬
S(x1,
… , xn).
Декартово произведение P4=
R × S
отношений
R(A1,
…, An)
и S(B1,
…, Bm)
содержит кортежи, которые составлены
из кортежей отношения
R,
продолженных кортежами отношения
S.
Список атрибутов
P4
включает все атрибуты
отношений
R
и S:
(A1,
…, An,
B1,
…, Bm).
Если у R
и S
имеются общие атрибуты,
то они переименовываются. Обычно перед
именем атрибута
общего атрибута
Ai=Bj
помещается через точку имя его отношения,
R.Ai
и S.Bj.
Результат декартового произведения
задается формулой P4(x1,
…, xn,
y1,
… , ym)
= R(x1,
… , xn)
S(y1,
… , ym)
(мы предполагаем, что все переменные xi
и yj
разные)
Специальные реляционные операторы
К специальным реляционным операторам относятся:
Выбор
Проекция
Соединение
Деление
Оператор выбора, примененный к отношению R(A1, …, An), возвращает новое отношение P с тем же набором атрибутов, кортежи которого составляют подмножество кортежей отношения R, удовлетворяющих некоторому условию C. Это записывается как P = σC(R). Условие C представляет из себя булевскую формулу, которая построена из элементарных условий, включающих имена атрибутов R и константы. Примерами элементарных условий являются равенства вида Ai = Aj, Ai=a и неравенства вида Ai Aj, Ai a, Ai a. Тогда отношение P задается формулой P(x1, …, xn) = R(x1, …, xn) C', где формула C' получена из условия C заменой имен атрибутов Ai на имена соответствующих переменных xi.
Например, оператору выбора σоклад> 6000(Сотрудники), выбирающему сотрудников с окладом свыше 6000, соответствует формула Φ(n, f, o, d, z) = Сотрудники(n, f, o, d, z) (z > 6000), задающая отношение PΦ:
Номер |
ФИО |
Отдел |
Должность |
Оклад |
1 |
Иванов А.А. |
торговый |
менеджер |
7000 |
5 |
Горев С.В. |
плановый |
зав.отделом |
10000 |
Оператор
проекции,
примененный к отношению
R(A1,
…, An),
возвращает все кортежи этого отношения,
из которых удалены значения атрибутов,
не перечисленных в списке параметров
этой операции. Отношение P,
являющееся проекцией R
на подмножество атрибутов
,
записывается как P
=
X(R).
Пусть
-
это атрибуты
отношения,
не попавшие в X.
Тогда проекция задается формулой
.
Например,
оператору
проекции
ФИО,
оклад(Сотрудники),
составляющему список окладов сотрудников,
соответствует формула
(
f, z) =
n
o
d
Сотрудники(n, f, o, d, z),
задающая двуместное отношение
P
:
ФИО |
Оклад |
Иванов А.А. |
7000 |
Сидоров Н.П. |
5000 |
Сидорова М.И. |
6000 |
Ольгина Н.А. |
5500 |
Горев С.В. |
10000 |
Оператор
соединения
применяется к двум отношениям
и позволяет соединять попарно их кортежи,
удовлетворяющие определенным условиям.
В реляционной
алгебре
он представлен в нескольких формах.
Пусть R
и S
- это отношения
со схемами
R(A1,
…, An,
B1,
…, Bm)
и S(B1,
…, Bm,
C1,
…, Ck)
с общими атрибутами
B1,
…, Bm.
Тогда естественное
соединение
отношений
R
и S
содержит кортежи, которые составлены
из кортежей отношения
R,
продолженных кортежами отношения
S.
При этом соединяются лишь пары кортежей
r
R
и s
S,
имеющих одинаковые значения всех общих
атрибутов
B1,
…, Bm.
Так как значения общих атрибутов
совпадают они входят в схему P
по одному разу, т.е. P
имеет схему P(A1,
…, An,
B1,
…, Bm,
C1,
…, Ck).
Нетрудно понять, что естественному
соединению соответствует формула P(x1,
…, y1,
…, ym,
z1,
…, zk)=
R(x1,
…, y1,
…, ym)
S(y1,
…, ym,
z1,
…, zk).
Пусть в дополнение к отношениям Сотрудники и Комнаты в базу данных входит отношение Оборудование:
Оборудование |
||
Этаж |
НомерКомнаты |
Название |
2 |
17 |
компьютер |
2 |
17 |
принтер |
3 |
7 |
ксерокс |
3 |
25 |
принтер |
Тогда
отношение
определяет
доступность тех или иных аппаратов
сотрудникам в их комнатах. Оно имеет
схему Доступ
(НомерСотрудника, Этаж, НомерКомнаты,
Название)
и представлено в следующей таблице:
Доступ |
|||
НомерСотрудника |
Этаж |
НомерКомнаты |
Название |
3 |
2 |
17 |
компьютер |
3 |
2 |
17 |
принтер |
1 |
2 |
17 |
компьютер |
1 |
2 |
17 |
принтер |
5 |
3 |
7 |
ксерокс |
Здесь соединение производится по двум общим атрибута м Этаж и НомерКомнаты. При этом в соединение не попали сведения о сотрудниках с номерами 2 и 7, в комнатах которых нет оборудования, и о принтере в комнате 25, так как в ней нет сотрудников. Соответствующая формула имеет вид: Доступ(n, e, k, o) = Комнаты(n, e, k) Оборудование(e, k, o).
Другой
вариант оператора
соединения
- тета-соединение
отношений
R
и S
содержит кортежи, которые составлены
из кортежей отношения
R,
продолженных кортежами отношенияS,
удовлетворяющими условию C.
Синтаксис этого условия такой же, как
и у оператора
выбора.
Так как в C
могут входить не только равенства
атрибутов,
то атрибуты
R
и S
с одинаковыми именами входят в схему
P1
дважды (обычно, как и в случае декартова
произведения, перед ними помещается
через точку имя отношения).
Оператор тета-соединения выражается
через операторы
выбора
и декартового произведения:
.
Ему соответствует формула P1(x1,…,
xn,
y1,
…, ym,
y1',
…, ym',
z1,…,
zk)=
R(x1,…,
xn,
y1,
…, ym)
S(y1',
…, ym',
z1,…,
zk)
C'
,
в которой C'
- это формула C,
где вместо имен атрибутов
подставлены имена соответствующих
переменных.
Операторы реляционной алгебры можно соединять в сложные выражения, позволяющие выражать необходимые пользователям запросы. Например, чтобы получить список фамилий сотрудников с доступным каждому из них оборудованием, можно использовать выражение
Результат его вычисления представлен в следующей таблице:
ФИО |
Название |
Иванов А.А. |
компьютер |
Иванов А.А. |
принтер |
Сидорова М.И |
компьютер |
Сидорова М.И |
принтер |
Горев С.В. |
ксерокс |
Ее строки соответствуют парам значений переменных f,c, на которых истинна формула F(f,c) = n o d z e k (Сотрудники(n,f,o,d,z) Комнаты(n, e, k) Оборудование( e, k, c)
