
- •8. Лекция: Логика предикатов и базы данных
- •Реляционные базы данных
- •Реляционная алгебра
- •Теоретико-множественные операции
- •Специальные реляционные операторы
- •Запросы
- •Ограничения целостности
- •9. Лекция: Графы: представления, достижимость и связность.
- •Основные понятия
- •Представления графов
- •Матрица (таблица) смежности
- •Матрица (таблица) инцидентности
- •Списки смежности
- •Граф достижимости
- •Взаимная достижимость, компоненты сильной связности и базы графа
- •Лекция: Деревья
- •Неориентированные и ориентированные деревья
- •Деревья и формулы (выражения)
- •Обходы деревьев
- •11. Лекция: Три алгоритма на графах
- •Построение минимального остова
- •Поиск в глубину и задача о лабиринте
- •Задача о кратчайших путях из одного источника
Ограничения целостности
Состояние базы данных постоянно меняется. В нее добавляются новые записи, изменяются и удаляются старые. При этом нужно, чтобы во всех модификациях состояние оставалось корректным (например, для каждого сотрудника имелась лишь одна запись в таблице Сотрудники). Ограничение целостности - это условие, задаваемое для схемы базы данных, которое ограничивает множество возможных состояний базы данных. Вот типичные виды ограничений целостности:
ограничение на ключи: в таблице не должно быть двух строк с одинаковым значением некоторого поля (оно назывется ключом). В общем виде ограничение на ключи утверждает, что в таблице не должно быть двух строк с одинаковыми значениями нескольких заданных полей (такой набор полей также называется ключом таблицы);
ограничение на ссылки : значение некоторого поля в одной таблице должно быть среди значений некоторого поля в другой таблице. Это ограничение не позволит удалить из второй таблицы запись, на которую имеется ссылка из первой таблицы;
ограничение на значение : значение некоторого поля в таблице должно удовлетворять заданному условию (принадлежать определенному интервалу, быть больше (меньше) заданного числа, быть строкой длины не больше (не меньше) заданной, быть строкой, удовлетворяющей некоторому образцу и т.п.).
Современные системы управления базами данных позволяют задавать такие ограничения при конструировании базы данных, а затем автоматически поддерживают их выполнение, не давая пользователям производить модификации, которые могут эти ограничения нарушить. С точки зрения логики предикатов, ограничение целостности - это замкнутая формула, которая должна быть истинна на допустимых состояниях базы данных. Рассмотрим, как можно задать ограничения целостности указанных видов для нашей базы данных (Сотрудники, Комнаты).
В таблице Сотрудники ключом является поле Номер:
Каждый сотрудник, для которого определена комната в таблице Комнаты, должен присутствовать в таблице Сотрудники:
Оклад каждого сотрудника должен лежать в интервале (1000, 25000):
Задачи
Задача 8.1. Для определенной выше базы данных с отношениями (Сотрудники, Комнаты, Название) построить выражение реляционной алгебры, задающее список фамилий сотрудников, в комнатах которых нет никакого оборудования. Найти формулу логики предикатов, определяющую то же отношение.
Задача
8.2.
Пусть имеются отношения
R
и S
со схемами R(A1,
…, An,
B1,
…, Bm)
и S(B1,
…, Bm),
соответственно. Частным
от
деления отношения
R
на отношение
S
называется отношение
с атрибутами
A1,
…, An
,
каждый кортеж которого t
в соединении с любым кортежом s
отношения
S
входит в R.
Постройте выражение реляционной
алгебры,
эквивалентное
,
и формулу логики предикатов, выражающую
это отношение.
Задача 8.3. Напишите SQL-запросы и соответствующие формулы для получения информации из базы данных (Сотрудники, Комнаты) из примера 8.5 и получите ответы на эти запросы.
Найти всех сотрудников с окладом больше 5500.
Найти все отделы, в которых есть сотрудники с окладом > 8000.
Составить список должностей и получаемых по ним окладов.
Составить список сотрудников торгового отдела, получающих зарплату от 6000 до 6500 и работающих не на 3-ем этаже.
Составить список комнат, в которых есть сотрудники с окладом меньше 5500 или больше 7500.
Задача 8.4. Определите, какие из приведенных ограничений целостности Φ1, Φ2, Φ3 выполняются для приведенного выше состояния базы данных (Сотрудники, Комнаты).
Задача 8.5. Напишите формулы, выражающие следующие ограничения целостности для базы (Сотрудники, Комнаты), и определите, какие из них выполняются для приведенного выше ее состояния.
В таблице Комнаты набор полей (НомерСотрудника, Комната) является ключом.
Для каждого сотрудника из таблицы Сотрудники в таблице Комнаты определено его место работы.
Номера всех комнат на 2-ом этаже больше 10, но меньше 20, а номера всех комнат на 3-ем этаже больше 20.