Это в лекции 3. |
Логика предикатов и базы данных
Специальные реляционные операторы
К специальным реляционным операторам относятся:
- Выбор
- Проекция
- Соединение
- Деление
Оператор выбора, примененный к отношению R(A1, ..., An),
возвращает новое отношение P с тем же набором атрибутов, кортежи которого
составляют подмножество кортежей отношения R, удовлетворяющих некоторому
условию C. Это записывается как . Условие C представляет из себя булевскую
формулу, которая построена из элементарных условий, включающих имена атрибутов R
и константы. Примерами элементарных условий являются равенства вида Ai = Aj, Ai=a
и неравенства вида Ai <= Aj, Ai <= a, Ai >= a.
Тогда отношение P задается формулой
, где формула C' получена
из условия C заменой имен атрибутов Ai на имена соответствующих переменных xi.
Например, оператору выбора , выбирающему сотрудников с окладом
свыше 6000,
соответствует формула
,
задающая отношение
:
Номер | ФИО | Отдел | Должность | Оклад |
---|---|---|---|---|
1 | Иванов А.А. | торговый | менеджер | 7000 |
5 | Горев С.В. | плановый | зав.отделом | 10000 |
Оператор проекции, примененный к отношению R(A1, ..., An), возвращает
все кортежи этого отношения, из которых удалены значения атрибутов, не перечисленных
в списке параметров этой операции. Отношение P, являющееся проекцией R на подмножество атрибутов , записывается как
.
Пусть
- это атрибуты отношения, не попавшие в X. Тогда проекция
задается формулой
.
Например, оператору проекции ,
составляющему список окладов сотрудников,
соответствует формула
, задающая
двуместное отношение
:
Оператор соединения применяется к двум отношениям и позволяет
соединять попарно их кортежи, удовлетворяющие определенным условиям.
В реляционной алгебре он представлен в нескольких формах.
Пусть R и S - это отношения со схемами R(A1, ..., An, B1, ..., Bm) и S(B1, ..., Bm, C1, ..., Ck) с общими атрибутами B1, ..., Bm.
Тогда естественное соединение отношений R и S
содержит кортежи, которые составлены из
кортежей отношения R, продолженных кортежами отношения S. При этом соединяются
лишь пары кортежей
и
, имеющих одинаковые значения всех общих атрибутов B1, ..., Bm. Так как значения общих атрибутов совпадают они входят
в схему P по одному разу, т.е. P имеет схему P(A1, ..., An, B1, ..., Bm, C1, ..., Ck).
Нетрудно понять, что естественному соединению соответствует формула
.
Пусть в дополнение к отношениям Сотрудники и Комнаты в базу данных входит отношение Оборудование:
Тогда отношение
определяет доступность
тех или иных аппаратов сотрудникам в их комнатах. Оно имеет схему Доступ (НомерСотрудника, Этаж, НомерКомнаты, Название) и представлено в следующей таблице:
НомерСотрудника | Этаж | НомерКомнаты | Название |
---|---|---|---|
3 | 2 | 17 | компьютер |
3 | 2 | 17 | принтер |
1 | 2 | 17 | компьютер |
1 | 2 | 17 | принтер |
5 | 3 | 7 | ксерокс |
Здесь соединение производится по двум общим атрибута м Этаж и НомерКомнаты. При этом в соединение не попали сведения о сотрудниках с номерами 2 и 7, в комнатах которых нет оборудования, и о принтере в комнате 25, так как в
ней нет сотрудников. Соответствующая формула имеет вид: .
Другой вариант оператора соединения - тета-соединение отношений R и S
содержит кортежи, которые составлены из
кортежей отношения R, продолженных кортежами отношения S, удовлетворяющими
условию C. Синтаксис этого условия такой же, как и у оператора выбора. Так как
в C могут входить не только равенства атрибутов, то атрибуты R и S с одинаковыми именами
входят в схему P1 дважды (обычно, как и в случае декартова произведения,
перед ними помещается через точку имя отношения ).
Оператор тета-соединения выражается через операторы выбора и декартового произведения:
. Ему соответствует формула
,
в которой C' - это формула C, где вместо имен атрибутов подставлены имена соответствующих
переменных.
Операторы реляционной алгебры можно соединять в сложные выражения, позволяющие выражать необходимые пользователям запросы. Например, чтобы получить список фамилий сотрудников с доступным каждому из них оборудованием, можно использовать выражение
![F=\pi_{ФИО, Название}(Сотрудники~ \Join_{Номер =НомерСотрудника}~Доступ)=\\ = \pi_{ФИО, Название}
(Сотрудники\Join_{Номер =НомерСотрудника}\\( Комнаты \Join Оборудование)).](/sites/default/files/tex_cache/ab9d42ca765299171f487be78a82202b.png)
Результат его вычисления представлен в следующей таблице:
ФИО | Название |
---|---|
Иванов А.А. | компьютер |
Иванов А.А. | принтер |
Сидорова М.И | компьютер |
Сидорова М.И | принтер |
Горев С.В. | ксерокс |
Ее строки соответствуют парам значений переменных f,c, на которых истинна формула .