Тверской государственный университет
Опубликован: 21.08.2007 | Доступ: свободный | Студентов: 3170 / 267 | Оценка: 4.08 / 3.92 | Длительность: 15:40:00
ISBN: 978-5-9556-0110-6
Специальности: Программист, Математик
Лекция 8:

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

< Лекция 7 || Лекция 8: 123 || Лекция 9 >
Аннотация: Реляционные базы данных. Схемы отношений и предикаты. Реляционная алгебра и представление ее выражений формулами логики предикатов. Язык запросов SQL и его связь с логикой предикатов. Ограничения целостности: ограничения на ключи, ограничения на ссылки и ограничения на значения атрибутов

Реляционные базы данных

Большинство современных промышленных баз данных являются реляционными - данные в них представляют конечные отношения (relations), которые хранятся в таблицах. Схема отношения R(A1,A2, ..., An) включает имя отношения R и список его атрибутов A1,A2, ..., An. Вообще говоря, атрибуты в схеме отношения считаются неупорядоченными, т.е. являются не списком, а множеством. Но мы будем считать, что их порядок в схеме является "стандартным". Для каждого атрибута Ai определено множество dom(Ai) его допустимых значений. Схема базы данных состоит из перечня схем отношений, входящих в эту базу. В приложениях отношения чаще называют таблицами, их атрибуты - столбцами, строки таблиц - кортежами или записями, а их элементы - полями. В каждый момент времени состояние базы данных (ее экземпляр) - это набор (конечных) таблиц имеющих соответствующие схемы.

Пример 8.1. Пусть, например, база данных со сведениями о сотрудниках некоторой организации имеет схему: Сотрудники(Номер, ФИО, Отдел, Должность, Оклад), Комнаты(НомерСотрудника, Этаж, НомерКомнаты). Рассмотрим некоторый экземпляр этой базы данных.

Сотрудники
Номер ФИО Отдел Должность Оклад
1 Иванов А.А. торговый менеджер 7000
2 Сидоров Н.П. плановый экономист 5000
3 Сидорова М.И. торговый зав.складом 6000
4 Ольгина Н.А. плановый экономист 5500
5 Горев С.В. плановый зав.отделом 10000
Комнаты
НомерСотрудника Этаж НомерКомнаты
3 2 17
1 2 17
7 2 18
5 3 7
2 3 27

С точки зрения логики предикатов, этот экземпляр не что иное, как некоторая конечная система сигнатуры \Sigma _{2}=\{ Сотрудники^{(5)}, Комнаты^{(3)}\} с основным множеством, включающим строки и числа из таблиц. Первая из приведенных таблиц задает интерпретацию предиката Сотрудники(5), а вторая - интерпретацию предиката Комнаты(3).

Каждому отношению базы данных со схемой R(A1, ..., An) мы сопоставим n -местный предикат с тем же именем и n одноместных предикатов Ai(x) (i=1, ..., n), выражающих принадлежность объекта x области dom(Ai) допустимых значений атрибута Ai. Следовательно, кортеж (a1, ... , an) принадлежит отношению R тогда и только тогда, когда истинна формула A_{1}(a_{1}) \wedge  \dots  \wedge   A_{n}(a_{n}) \wedge  R(a_{1}, \dots  , a_{n}). Множество таких предикатов для всех отношений базы данных и стандартных отношений, определенных на областях ее атрибутов (обычно это отношения равенства и порядка: =, <, <=, >, >= ), образуют сингатуру базы данных.

Например, для приведенного выше отношения Сотрудники(5) предикаты-свойства соответствующих областей значений могут быть заданы следующим образом:

  • Номер(x) \Leftrightarrow  x - целое число,
  • ФИО(x) \Leftrightarrow  x - строка символов длины <= 30,
  • Отдел(x) \} \Leftrightarrow  x \in  \{ торговый, плановый, производственный\},
  • Должность(x) \Leftrightarrow  x - строка символов длины <= 80,
  • Оклад(x) \Leftrightarrow  x - целое число в интервале от 1000 до 100 000.

Каждый кортеж отношения Сотрудники удовлетворяет формуле Сотрудники(n, f, o, d, z) \wedge  Номер(n) \wedge  ФИО(f) \wedge  Отдел(o) \wedge  Должность(d) \wedge  Оклад(z).

Ниже мы будем просто писать R(a1, ... , an), подразумевая, что значения ai входят в соответствующие области dom(Ai). Каждая формула \Phi (x_{1}, \dots , x_{k}) со свободными переменными x1, ... , xk в сигнатуре базы данных определяет множество состояний, т.е. наборов значений ее свободных переменных, на которых она истинна. Такое множество наборов можно рассматривать как множество кортежей, которые входят в новое отношение P_{\Phi } ^{(k)}, определяемое формулой \Phi.

Например, формула

\Phi(  k, f) = \exists n  \exists d \exists z \exists e ( Сотрудники(n, f, o, d, z) \wedge
Комнаты(n, e, k) \wedge \\ \wedge (o ='плановый')

задает отношение P_{\Phi }^{(2)}, определяющее список комнат сотрудников планового отдела:

ФИО НомерКомнаты
Сидоров Н.П. 27
Горев С.В. 7

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

Реляционная алгебра

Для манипуляции отношениями Коддом в 1970 г. был предложен набор реляционных операторов, позволяющих по одним отношениям получать другие. Каждый такой оператор является функцией (вообще говоря, частичной), аргументами и значениями которой являются отношения. Из базовых реляционных операторов можно с помощью суперпозиции образовывать сложные термы. Совокупность получаемых таким образом операций над отношениями называется реляционной алгеброй.

В этом разделе мы рассмотрим семь основных реляционных операторов, введенных Коддом в качестве базиса реляционной алгебры, и покажем, как они выражаются в терминах логики предикатов.

Теоретико-множественные операции

Первую группу реляционных операторов представляют теоретико-множественные операции:

  • Объединение
  • Пересечение
  • Вычитание
  • Декартово произведение

В "лекции 1" мы рассматривали все эти операции для множеств. Особенности их использования в реляционной алгебре состоят в том, что объединение, пересечение и вычитание применяются к отношениям, имеющим одно и то же множество одинаково упорядоченных атрибутов. Пусть имеются два таких отношения R(A1, ..., An) и S(A1, ..., An). Тогда результат их объединенния - это отношение P_{1}= R  \cup  S, содержащее все кортежи отношения R и все кортежи отношения S (кортежи, содержащиеся и в R, и в S, входят в P в одном экземпляре). Это отношение представляется формулой P_{1}(x_{1}, \dots  , x_{n})= R(x_{1}, \dots  , x_{n}) \vee  S(x_{1}, \dots  , x_{n}). Результат пересечения - это отношение P2 = R \cap S, которое содержит кортежи, входящие и в R и в S. Оно представляется формулой P_{2}(x_{1}, \dots  , x_{n})= R(x_{1}, \dots  , x_{n}) \wedge  S(x_{1}, \dots  , x_{n}). Результат разности P3= R - S включает кортежи из R, не входящие в S. Это отношение представляется формулой P_{3}(x_{1}, \dots  , x_{n})= R(x_{1}, \dots  , x_{n}) \wedge  \neg  S(x_{1}, \dots  , x_{n}). Декартово произведение P4= R x S отношений R(A1, ..., An) и S(B1, ..., Bm) содержит кортежи, которые составлены из кортежей отношения R, продолженных кортежами отношения S. Список атрибутов P4 включает все атрибуты отношений R и S: (A1, ..., An, B1, ..., Bm). Если у R и S имеются общие атрибуты, то они переименовываются. Обычно перед именем атрибута общего атрибута Ai=Bj помещается через точку имя его отношения, R.Ai и S.Bj. Результат декартового произведения задается формулой P_{4}(x_{1}, \dots , x_{n}, y_{1}, \dots  , y_{m}) = R(x_{1}, \dots  , x_{n}) \wedge  S(y_{1}, \dots  , y_{m}) (мы предполагаем, что все переменные xi и yj разные).

< Лекция 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