Опубликован: 21.08.2007 | Уровень: специалист | Доступ: свободно | ВУЗ: Тверской государственный университет
Лекция 8:

Логика предикатов и базы данных

< Лекция 7 || Лекция 8: 123 || Лекция 9 >

Специальные реляционные операторы

К специальным реляционным операторам относятся:

  • Выбор
  • Проекция
  • Соединение
  • Деление

Оператор выбора, примененный к отношению R(A1, ..., An), возвращает новое отношение P с тем же набором атрибутов, кортежи которого составляют подмножество кортежей отношения R, удовлетворяющих некоторому условию C. Это записывается как P = \sigma _{C}(R). Условие C представляет из себя булевскую формулу, которая построена из элементарных условий, включающих имена атрибутов R и константы. Примерами элементарных условий являются равенства вида Ai = Aj, Ai=a и неравенства вида Ai <= Aj, Ai <= a, Ai >= a. Тогда отношение P задается формулой P(x_{1}, \dots , x_{n}) = R(x_{1}, \dots , x_{n}) \wedge  C', где формула C' получена из условия C заменой имен атрибутов Ai на имена соответствующих переменных xi.

Например, оператору выбора \sigma _{оклад> 6000}(Сотрудники), выбирающему сотрудников с окладом свыше 6000, соответствует формула \Phi (n, f, o, d, z) = Сотрудники(n, f, o, d, z) \wedge  (z > 6000), задающая отношение P_{\Phi }:

Номер ФИО Отдел Должность Оклад
1 Иванов А.А. торговый менеджер 7000
5 Горев С.В. плановый зав.отделом 10000

Оператор проекции, примененный к отношению R(A1, ..., An), возвращает все кортежи этого отношения, из которых удалены значения атрибутов, не перечисленных в списке параметров этой операции. Отношение P, являющееся проекцией R на подмножество атрибутов X = \{A_{i_1}, \ldots, A_{i_k}  \}, записывается как P = \pi _{X}(R). Пусть \{A_1, \ldots, A_n  \} \setminus X= \{A_{j_1},\ldots , A_{j_{n-k}}\} - это атрибуты отношения, не попавшие в X. Тогда проекция задается формулой P(x_{i_1}, \ldots, x_{i_k}) =
\exists x_{j_1} \ldots \exists x_{j_{n-k}}R(x_1, \ldots, x_n).

Например, оператору проекции \pi _{ФИО, оклад}(Сотрудники), составляющему список окладов сотрудников, соответствует формула \psi ( f,  z) = \exists  n  \exists  o \exists  d Сотрудники(n, f, o, d, z), задающая двуместное отношение P_{\psi }:

ФИО Оклад
Иванов А.А. 7000
Сидоров Н.П. 5000
Сидорова М.И. 6000
Ольгина Н.А. 5500
Горев С.В. 10000

Оператор соединения применяется к двум отношениям и позволяет соединять попарно их кортежи, удовлетворяющие определенным условиям. В реляционной алгебре он представлен в нескольких формах. Пусть R и S - это отношения со схемами R(A1, ..., An, B1, ..., Bm) и S(B1, ..., Bm, C1, ..., Ck) с общими атрибутами B1, ..., Bm. Тогда естественное соединение P= R \Join S отношений R и S содержит кортежи, которые составлены из кортежей отношения R, продолженных кортежами отношения S. При этом соединяются лишь пары кортежей r \in  R и s \in  S, имеющих одинаковые значения всех общих атрибутов B1, ..., Bm. Так как значения общих атрибутов совпадают они входят в схему P по одному разу, т.е. P имеет схему P(A1, ..., An, B1, ..., Bm, C1, ..., Ck). Нетрудно понять, что естественному соединению соответствует формула P(x_{1}, \dots , y_{1}, \dots , y_{m}, z_{1}, \dots , z_{k})= R(x_{1}, \dots , y_{1}, \dots , y_{m}) \wedge  S(y_{1}, \dots , y_{m}, z_{1}, \dots , z_{k}).

Пусть в дополнение к отношениям Сотрудники и Комнаты в базу данных входит отношение Оборудование:

Оборудование
Этаж НомерКомнаты Название
2 17 компьютер
2 17 принтер
3 7 ксерокс
3 25 принтер

Тогда отношение Доступ=Комнаты \Join Оборудование определяет доступность тех или иных аппаратов сотрудникам в их комнатах. Оно имеет схему Доступ (НомерСотрудника, Этаж, НомерКомнаты, Название) и представлено в следующей таблице:

Доступ
НомерСотрудника Этаж НомерКомнаты Название
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) \wedge  Оборудование(e, k, o).

Другой вариант оператора соединения - тета-соединение P_1= R \Join_C S отношений R и S содержит кортежи, которые составлены из кортежей отношения R, продолженных кортежами отношения S, удовлетворяющими условию C. Синтаксис этого условия такой же, как и у оператора выбора. Так как в C могут входить не только равенства атрибутов, то атрибуты R и S с одинаковыми именами входят в схему P1 дважды (обычно, как и в случае декартова произведения, перед ними помещается через точку имя отношения ). Оператор тета-соединения выражается через операторы выбора и декартового произведения: P_1= R \Join_C S = \sigma_C(R \times S). Ему соответствует формула P_{1}(x_{1},\dots , x_{n}, y_{1}, \dots , y_{m}, y_{1}', \dots , y_{m}', z_{1},\dots , z_{k})=R(x_{1},\dots , x_{n}, y_{1}, \dots , y_{m}) \wedge  S(y_{1}', \dots , y_{m}', z_{1},\dots , z_{k}) \wedge  C', в которой C' - это формула C, где вместо имен атрибутов подставлены имена соответствующих переменных.

Операторы реляционной алгебры можно соединять в сложные выражения, позволяющие выражать необходимые пользователям запросы. Например, чтобы получить список фамилий сотрудников с доступным каждому из них оборудованием, можно использовать выражение

F=\pi_{ФИО, Название}(Сотрудники~ \Join_{Номер =НомерСотрудника}~Доступ)=\\ = \pi_{ФИО, Название}
(Сотрудники\Join_{Номер =НомерСотрудника}\\( Комнаты \Join Оборудование)).

Результат его вычисления представлен в следующей таблице:

ФИО Название
Иванов А.А. компьютер
Иванов А.А. принтер
Сидорова М.И компьютер
Сидорова М.И принтер
Горев С.В. ксерокс

Ее строки соответствуют парам значений переменных f,c, на которых истинна формула F(f,c) = \exists  n \exists  o \exists  d \exists  z \exists  e \exists  k (Сотрудники(n,f,o,d,z)\wedge  Комнаты(n, e, k) \wedge  Оборудование( e, k, c).

< Лекция 7 || Лекция 8: 123 || Лекция 9 >
Елена Алексеевская
Елена Алексеевская

Это в лекции 3.

Татьяна Дембелова
Татьяна Дембелова

Почему в вводной лекции курса Основы дискретной математики одним из свойств отношения частичного порядка упоминается антирефлексивность? Посмотрела в других источниках, там -0  рефлексивность... http://ru.wikipedia.org/wiki/%D0%9E%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0

Вадим Нижегородцев
Вадим Нижегородцев
Россия, Самара