- •Предисловие
- •Основные функции систем управления базами данных (СУБД)
- •Основные понятия
- •Преимущества использования баз данных
- •Функции систем управления базами данных
- •Литература
- •Реляционная модель данных
- •Структуры данных. Фундаментальные свойства отношений
- •Целостность данных. Реляционные ключи
- •Манипулирование данными
- •Реляционная алгебра Кодда
- •Операции
- •Объединение
- •Пересечение
- •Разность
- •Декартово произведение
- •Сокращение (выборка, ограничение, селекция)
- •Проекция
- •Соединения
- •Деление
- •Приоритеты операций
- •Базис алгебры и ства операций
- •Базис
- •Свойства операций
- •Ограничения реляционной алгебры
- •Литература
- •Реляционное исчисление
- •Исчисление кортежей
- •Эквивалентность исчисления кортежей и реляционной алгебры
- •Исчисление доменов
- •Литература
- •Случаи неполной информации и ω-значения
- •Концепция трехзначной логики
- •Логические операторы
- •Кванторы
- •Арифметические операции и операции сравнения
- •ω-значения и домены
- •ω-значения и операторы реляционной алгебры
- •ω-значения и агрегирующие функции
- •Проблема интерпретации
- •ω-значения и ограничения целостности
- •Первичные ключи
- •Внешние ключи
- •Литература
- •Семантическое проектирование реляционных баз данных на основе ER-модели
- •Общий подход семантического моделирования
- •Основные понятия
- •Проектирование базы данных с помощью ER-модели
- •Литература
- •Проектирование реляционных баз данных при помощи нормализации
- •Жизненный цикл системы баз данных
- •Функциональные зависимости
- •Понятие функциональной зависимости
- •Тривиальные и нетривиальные зависимости
- •Замыкание множества зависимостей
- •Неприводимые множества зависимостей
- •Декомпозиция без потерь и функциональные зависимости
- •Диаграммы функциональных зависимостей
- •Сохранение независимости в смысле Риссанена
- •Многозначные зависимости
- •Нормализация
- •Понятие нормализации и её причины
- •Первая, вторая и третья нормальные формы
- •Нормальная форма Бойса–Кодда
- •Четвертая нормальная форма
- •Зависимости соединения и пятая нормальная форма
- •Литература
- •Основные принципы хранения данных во внешней памяти
- •Страничная организация хранения данных
- •Управление буферами внутренней памяти
- •Простая файловая организация страниц
- •Неупорядоченный файл
- •Упорядоченный файл
- •Индексирование
- •Индексно-прямой метод доступа
- •Индексно-последовательный метод доступа
- •Индекс на основе B+-деревья
- •Хэширование
- •Индексированные кластеры
- •Хэшированные кластеры
- •Литература
- •Управление транзакциями и синхронизация в реляционных СУБД
- •Понятие транзакции
- •Фундаментальные свойства транзакций
- •Изолированность транзакций
- •Синхронизационные блокировки
- •Простые блокировки
- •Гранулированные (намеренные) блокировки
- •Предикатные блокировки
- •Тупиковые ситуации
- •Метод временных меток
- •Механизм выделения версий данных
- •Литература
- •Журнализация и восстановление в реляционных СУБД
- •Журнализация и буферизация
- •Индивидуальный откат транзакции
- •Восстановление после мягкого сбоя
- •Восстановление после жесткого сбоя
- •Литература
- •Выполнение и оптимизация запросов в реляционных СУБД
- •Процесс оптимизации запроса
- •Преобразование запроса во внутреннюю форму
- •Преобразование запроса в каноническую форму
- •Выбор потенциальных низкоуровневых процедур
- •Генерация различных вариантов планов вычисления запроса и выбор плана с минимальными затратами
- •Низкоуровневая оптимизация операции выборки
- •Низкоуровневая оптимизация операции соединения
- •Литература
3.Коннолли Т., Бегг К. Введение в базы данных / пер. с англ. Р. Г. Имамутдинова, К. А. Птицына // Базы данных: проектирование, реализация и сопровождение (глава 1) / под ред. К. А. Птицына. — 3-е изд. — М. : Издательский дом „Вильямс“, 2003.
4.Кузнецов С. Д. Понятие модели данных. Обзор разновидностей моделей данных // Базы данных.
Вводный курс (лекция 2). — 2008. — URL: http://citforum.ru/database/advanced_intro/
6.shtml.
§2. Реляционная модель данных
Реляционные системы базируются на формальных основах — теории, которая называется реляционной моделью данных. В такой системе выполняются как минимум три условия:
1.Структурный аспект: данные в базе воспринимаются пользователем как таблицы.
2.Аспект целостности: «таблицы» отвечают определенным условиям целостности.
3.Аспект обработки: в распоряжении пользователя имеются операторы манипулирования «таблицами», которые генерируют новые «таблицы» на основании уже имеющихся.
2.1. Структуры данных. Фундаментальные свойства отношений
Определение 1. Типом данных называется множество, состоящее из трех компонентов:
1.Множество значений данного типа,
2.Набор операций над элементами множества значений (т. е. над значениями данного типа),
3.Способ внешнего представления значений типа (литералов).
Такое определение ничем не отличается от понятия типа данных в языках программирования. Подобно терминологии языков программирования можно определить скалярные и нескалярные типы данных.
Определение 2. Тип данных называется нескалярным, если пользователи определяют его значения как множество видимых, непосредственно доступных компонентов. Иначе тип данных называется
скалярным (атомарным, инкапсулированным).
Определение 3. Доменом для типа данных T (называемого базовым типом для домена) называется совокупность следующих компонентов:
1.Имя домена, являющееся уникальным среди имен всех доменов соответствующей базы данных.
2.Булева (логическая) функция, называемая ограничением домена, заданная на множестве значений типа данных T,
3.Множество тех и только тех значений типа T, для которых логическая функция принимает значение «истина».
По сути домен является своего рода допустимым потенциальным, ограниченным подмножеством значений данного типа. Под обозначением v P D, где D — заданный домен, будем понимать, что v является допустимым значением домена D. Нередко домен и тип данных используют как синонимы, т. е. в этом случае ограничение домена тождественно истинная функция.
Домены играют еще и семантическую роль: данные считаются сравнимыми только в том случае, когда они относятся к одному домену. Отличие домена от понятия подмножества состоит именно в том, что домен отражает семантику, определенную предметной областью. Может быть несколько доменов, совпадающих как подмножества, но несущие различный смысл.
В теории реляционная модель относительно типов доменов должна удовлетворять требованиям:
•Использовать только скалярные типы1,
1 На самом деле, для реляционной модели данных тип используемых данных не важен. Требование, чтобы тип данных был скалярным (простым), нужно понимать так, что в реляционных операциях не должна учитываться внутренняя структура данных.
9
•Множество типов для конкретной базы данных должно быть замкнуто, следовательно, все операторы типов должны давать известный системе тип.
Теперь можно приступить к определению фундаментального понятия реляционной модели — отношений. Пусть задан некоторый набор доменов, удовлетворяющий указанным ранее требованиям.
Определение 4. Отношением (relation) R называется упорядоченная пара HR; BR , где
•HR — заголовок (или схема) отношения R, являющийся множеством упорядоченных пар видаA; D , называемых атрибутами (attribute), где A — имя атрибута, D — некоторый домен
базы данных.
•BR — тело отношения, являющееся множеством кортежей (tuple) Ti, каждый из которых
представляет из себя набор троек вида A; D; v по одной для каждого атрибута заголовка, где A — имя соответствующего атрибута из заголовка, D — известный домен атрибута с именем A, v P D — значение из домена.
Замечание. Отношение R можно определить еще как множество всевозможных пар HR; BR , отличающихся только телами BR (перебираются всевозможные варианты значений атрибутов в кортежах). В этом случае вводят понятие значения VR1 отношения R, чтобы выделить какую-нибудь одну пару
HR1 ; BR1 P R.
Замечание. Стоит учитывать, что множество атрибутов и множество кортежей могут быть пустыми. Существует ровно два отношения с пустым множеством атрибутов: одно содержит ровно один кортеж (TABLE_DEE), а второе — ни одного (TABLE_DUM)1. Они играют роль нейтрального элемента в реляционной алгебре или роль «истины» и «лжи» соответственно.
По сути каждое отношение можно представить в виде таблицы, где в качестве столбцов выступают атрибуты, а в качестве строк — кортежи.
Определение 5. Количество атрибутов в заголовке отношения называется степенью (или арностью) этого отношения. А количество кортежей в теле отношения называется кардинальностью отношения.
Теперь можно определить понятие реляционной базы данных.
Определение 6. Реляционной базой данных называется совокупность отношений. Схемой реляци-
онной базы данных называется совокупность заголовком отношений, входящих в данную реляционную базу данных.
Отметим фундаментальные свойства реляционных понятий, вытекающие из их определений.
1.Каждый кортеж содержит ровно одно (неделимое) значение соответствующего типа для каждого из своих атрибутов — свойство атомарности.
2.Элементы кортежей не упорядочены.
3.Кортежи в теле отношения не упорядочены2.
4.Атрибуты в заголовках отношений не упорядочены.
5.В теле любого отношения все кортежи различаются.
2.2. Целостность данных. Реляционные ключи
Напомним, что обеспечение целостности заключается в контроле правильности, согласованности данных в базе (при добавлении, обновлении, удалении), что осуществляется с помощью ограничений целостности. Ограничения целостности позволяют описать семантику базы данных.
1Названия DEE и DUM выдуманы спонтанно (можно перевести как «чертовка» и «пустышка» соответственно)
ине имеют глубокого смысла.
2 Но на практике кортежи могут упорядочивать в целях повышения скорости доступа к данным.
10
Определение 7. Ограничением целостности называется логическое выражение, связанное с некоторой базой данных, принимающее значение «истина» (т. е. является истинным высказыванием о предметной области).
Объявление ограничений сводится к использованию соответствующих средств языка базы данных, а соблюдение ограничений осуществляется с помощью контроля со стороны СУБД (ограничения уже являются предикатами) над операциями обновления (включая добавление и удаление), которые могут нарушить эти ограничения, и запрещения тех операций, которые их действительно нарушают. В некоторых случаях ограничения целостности могут быть реализованы только в приложениях к базе данных
Когда ограничение лишь объявляется, то СУБД естественно должна убедиться, что текущая версия базы данных удовлетворяет этому ограничению: если не удовлетворяет, то ограничение должно отвергаться системой, в противном случае принимается и впоследствии применяется.
Ограничения целостности можно разделить на статические и динамические:
•Статическое ограничение описывает некоторую фиксированную область (например, диапазон), которой должна принадлежать ограничиваемая характеристика. Т. е. статические ограничения присущи всем состояниям1 предметной области.
•А динамическое ограничение определяют возможность перехода предметной области из одного состояния в другое.
Некоторые виды статических ограничений:
•Ограничение типа — определяет множество значений, из которых должен состоять тип, т. е. по сути задаёт домен.
•Ограничение атрибута — ограничение на значения, которые разрешено принимать указанному атрибуту.
•Ограничение отношения — ограничения на значения атрибутов данного отношения в совокупности.
•Ограничение базы данных — ограничение на значения атрибутов одного или нескольких отношений базы данных в совокупности.
Так как в отношениях не должно быть повторяющихся кортежей, то необходим механизм, позволяющий однозначно идентифицировать каждый кортеж отношения по значениям одного или нескольких атрибутов (называемых реляционными ключами).
Определение 8. Суперключом (superkey) отношения называется атрибут или множество атрибутов, которое однозначно идентифицирует кортеж данного отношения.
В суперключе могут содержаться дополнительные атрибуты, которые необязательны для уникальной идентификации кортежа, поэтому вводится понятие потенциального ключа.
Определение 9. Потенциальным ключом (candidate key) отношения называется его суперключ, который не содержит (строгого) подмножества, являющегося суперключом данного отношения. Если потенциальный ключ состоит из одного атрибута, то он называется простым, иначе — составным.
Таким образом, потенциальный ключ K отношения R обладает двумя свойствами:
•Уникальность — однозначно идентифицирует кортеж отношения R,
•Неприводимость — никакое допустимое подмножество ключа K не обладает свойством уникальности.
Как следствие потенциальные ключи предоставляют механизм адресации кортежей.
1 Множества экземпляров сущностей, значения атрибутов сущностей и экземпляры связей между ними могут изменяться во времени. Поэтому каждому моменту времени можно сопоставить некоторое состояние предметной области.
11
Определение 10. Перввичным ключом (primary key) отношения называется потенциальный ключ этого отношения, выбранный для однозначной идентификации кортежей внутри этого отношения. А остальные потенциальные ключи называются альтернативными.
Определение 11. Внешним ключом (foreign key) отношения R2 называется подмножество его атрибутов Fk, для которого
1)существует отношение R1 той же базы данных с потенциальный ключом Ck таким, что Fk и Ck совпадают с точностью до переименования атрибутов1,
2)в любой момент времени каждое значение Fk текущего варианта отношения R2 идентично некоторому значению Ck текущего состояния отношения R1 2.
Ck
Указанный внешний ключ можно отобразить с помощью ссылочной диаграммы: R2 ÝÑ R1.
Замечание. Выделим несколько особенностей внешних ключей:
•Каждое значение Fk должно присутствовать в качестве значения Ck, но обратное не требуется. Это позволяет строить связи не только вида «один к одному», но и «один ко многим».
•Любое значение Fk представляет собой ссылку на кортеж, содержащий соответствующее значение Ck.
•Отношения R1 и R2 в определении внешнего ключа могут совпадать.
Аналогично потенциальным ключам внешние ключи могут быть простыми (если состоят из одного атрибута) или составными (если состоят из двух или более атрибутов).
Определение 12. Отношение, которое содержит внешний ключ, называется ссылающимся, а отношение, на которое ссылается внешний ключ, называется ссылочным.
Внешние ключи позволяют формально оформить связи между отношениями, что активно используется при манипулировании данными. Но при модификации данных (добавлении, обновлении, удалении) нужно контролировать целостность:
•При вставке кортежей и обновлении значений атрибутов кортежей необходимо следить, чтобы не появлялись некорректные значения внешнего ключа.
•Для удаления некоторых кортежей из ссылочного отношения, на которые есть ссылки из ссылающегося отношения, есть несколько подходов:
1.Вовсе запретить удаление, выдав соответствующую ошибку, т. е. потребовать сначала удаления или изменения кортежей ссылающегося отношения, которые ссылаются на подлежащий удалению кортеж, а только после этого позволить удалить необходимые кортежи.
2.Во всех ссылающихся кортежах на удаляемые кортежи автоматически заменять значение внешнего ключа на неопределенное (отсутствующее, NULL).
3.Каскадное удаление: из ссылающегося отношения удаляются все кортежи, ссылающиеся на подлежащие удалению ссылочные кортежи, после чего удаляются необходимые кортежи.
Ключи позволяют вводить новые ограничения целостности вида:
•Целостность сущностей
В каждом отношении ни один первичный ключ не может содержать отсутствующих значений
(NULL).
•Ссылочная целостность
База данных не должна содержать каких-либо несогласованных значений внешнего ключа, т. е. если значение B ссылается на A, то A должно существовать.
1 То есть переименованием некоторого подмножества атрибутов Fk можно получить такое подмножество атрибутов Fk1 , что Fk’ и Ck совпадают как по именами, так и по типам атрибутов.
2 Другими словами, в каждый момент времени множество всех текущих значений Fk в R2 является нестрогим под-
множеством множества текущих значений Ck в R1.
12