- •Глава 1. Базы данных и системы управления 9
- •Глава 2. Организация доступа к данным 45
- •Глава 3. Реляционная алгебра 60
- •Глава 4. Основы sql 67
- •Глава 5. Проектирование реляционных баз данных 89
- •Глава 6. Взаимодействие sql с приложениями 116
- •Глава 7. Некоторые проблемы администрирования баз данных 154
- •Базы данных и системы управления
- •Файловые системы
- •Концепция баз данных
- •Основные функции субд
- •Непосредственное управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация
- •Поддержка языков баз данных
- •Трехуровневая модель архитектуры систем баз данных
- •Модели данных
- •Характеристика связей
- •Компьютерно-ориентированные модели данных
- •Реляционный подход
- •Ключи и целостность реляционных данных
- •Моделирование концептуальной схемы базы данных
- •Организация доступа к данным
- •Страницы и файлы
- •Индексирование
- •Структуры типа б-дерева
- •Хеширование
- •Методы сжатия
- •Метод дифференциального сжатия
- •Иерархические методы сжатия
- •Кодирование по методу Хаффмена
- •Реляционная алгебра
- •Традиционные реляционные операции
- •Специальные реляционные операции
- •Дополнительные реляционные операции
- •Примеры использования реляционной алгебры для выражения словесных запросов в виде формул
- •Основы sql
- •Типы данных
- •Строковые типы данных
- •Битовые типы данных
- •Точные числовые типы данных
- •Вещественные числовые типы данных
- •Календарные типы данных
- •Значения null
- •Создание и обслуживание таблиц
- •Запрос на выборку
- •Статистические функции
- •Создание соединений
- •Вложенные запросы
- •Запрос на объединение
- •Запросы, выполняющие реляционные операции вычитания, пересечения и деления
- •Запросы на изменение
- •Перекрестные запросы
- •Проектирование реляционных баз данных
- •Нормализация отношений
- •Функциональные зависимости
- •Н ормальные формы, обоснованные функциональными зависимостями
- •Нормальная форма Бойса–Кодда
- •Нормальные формы, обоснованные более сложными зависимостями
- •Процедура нормализации и проектирования
- •Пример проектирования базы данных
- •Назначение и предметная область
- •Проектирование базы данных
- •Взаимодействие sql с приложениями
- •Встраивание sql-операторов в программный код
- •Тип курсора
- •Триггеры
- •Хранимые процедуры
- •Стандартные интерфейсы для доступа к данным
- •Информационное окружение веб-сервера
- •Стандарт odbc
- •Уровни соответствия
- •Уровень соответствия odbc
- •Задание имени источника данных odbc
- •Расширяемый язык разметки xml
- •Xml как язык разметки
- •Материализация хмl-документов с помощью xslt
- •Создание хмl-документов на основе информации из базы данных
- •Некоторые проблемы администрирования баз данных
- •Оптимизация запросов
- •Параллельная обработка данных
- •Потеря обновления
- •Зависимость от незафиксированных обновлений
- •Несогласованный анализ
- •Блокировки транзакций
- •Согласованность и уровень изоляции транзакций
- •Распределенные системы баз данных
- •Фрагментация
- •Репликация
- •Распространение обновлений
- •Управление каталогом
- •Распределенная обработка запросов
- •Типы распределенных систем баз данных
- •Нераспределенные мультибазовые субд
- •Клиент-серверные системы
- •Системы с общими ресурсами
- •Технические аспекты администрирования базы данных
- •Восстановление базы данных
- •Безопасность баз данных
- •Шифрование данных
- •Производительность баз данных
- •Администрирование данных
- •Литература
Реляционный подход
Мы будем придерживаться, как правило, терминологии и представлений, предложенных К.Дж. Дейтом, внесшим значительный вклад в развитие теории баз данных, и Е.Ф. Коддом, предложившим реляционную модель данных.
О сновные термины, касающиеся объектов баз данных, показаны на рис. 1.7.1.
Отношение соответствует тому, что обычно называется таблицей. Кортеж отношения или запись соответствует строке этой таблицы, а атрибут отношения или поле – столбцу. Количество кортежей называется кардинальным числом отношения, а количество атрибутов – степенью или арностью (n-арное) отношения. Отношение первой степени называется унарным, второй степени – бинарным, третьей – тернарным, а степени n – n-арным. Кардинальное число отношения, в отличие от его степени, изменяется во времени. Значения атрибутов выбираются из соответствующих доменов.
Значение наименьшей семантической единицы данных, которая предполагается отдельным значением данных (таким как отдельный табельный номер, отдельная фамилия или отдельная зарплата в примере на рис. 1.7.1), принято называть скаляром. Скалярные значения атомарны, т.е. у них нет внутренней структуры при рассмотрении в реляционной СУБД (несмотря на то, что фамилия состоит их букв, для базы данных она неделима). Тогда домен можно определить как именованное множество скалярных значений одного типа. Например, домен кодов отделов – это множество всех возможных значений, которые могут использоваться для кодирования отделов, домен фамилий – это множество текстовых данных с количеством знаков от 1 до, например, 20. Итак, домены – это общая совокупность значений, из которых берутся реальные значения атрибутов, или, другими словами, значения атрибутов должны браться из соответствующего домена.
Наиболее важное значение доменов состоит в том, что домены ограничивают сравнения. Если значение двух атрибутов взяты из одного и того же домена, тогда их сравнение и, следовательно, соединения, объединения и другие операции скорее всего имеют смысл. Если же значение двух атрибутов взяты из разных доменов, тогда их сравнение и другие операции скорее всего не будут иметь смысла. Поэтому система поддержки доменов способна предотвратить грубые ошибки.
Пример создания и удаления доменов:
CREATE DOMAIN Фамилия CHAR(20); CREATE DOMAIN Зарплата NUMERIC(5); DESTROY DOMAIN Зарплата;
Можно сказать, что домен тождественен типу данных (как это понимается в современных языках программирования)1.
Отношение определяется на множестве доменов и состоит из заголовка (интерпретация данных) и тела (набора данных). Тело содержит множество кортежей (кардинальное число) и атрибутов (степень). Основные свойства отношений:
Нет одинаковых кортежей;
Кортежи не упорядочены сверху вниз;
Атрибуты не упорядочены слева направо;
Все значения атрибутов атомарны.
Сейчас становится более понятным различие между отношением и таблицей. В реляционной модели основной абстрактный объект отношение имеет простое реальное представление – таблицу, которое делает реляционные системы простыми и понятными. Однако, в отличие от отношения, в таблице строки (кортежи) и столбцы (атрибуты) расположены в определенном порядке.
Именованное отношение называется базовым, если оно является непосредственной частью базы данных. Производные отношения определяются через базовые отношения посредством реляционных выражений и, как правило, неименованные. Именованное производное отношение называется представлением. Различие между базовой таблицей и представлением часто характеризуется так: базовые таблицы реально существуют в том смысле, что они представляют данные, которые действительно хранятся в базе данных; представления, наоборот, реально не существуют, а просто предоставляют различные способы просмотра реальных данных.
Для каждого отношения есть связанная с ним интерпретация, или предикат, составляющий критерий возможности обновления для этого отношения. В любой момент времени отношение содержит в точности те кортежи, при которых предикат является истиной.
Например, предикат отношения, изображенного на рис. 1.7.1, может быть следующим: Сотрудник с определенным табельным номером (атрибут Табель) имеет определенную фамилию (атрибут Фамилия), определенную зарплату (атрибут Зарплата) и зарегистрирован в определенном отделе (атрибут Код_отдела); кроме того, нет двух сотрудников с одинаковыми табельными номерами. При обновлении атрибута Зарплата в кортеже
Табель='В3'; Фамилия= 'Котов'; Код_отдела='А3'; Зарплата='200';
предикат имеет значение истина, а в кортеже
Табель='В3'; Фамилия= 'Котов'; Код_отдела='А1'; Зарплата='200';
предикат имеет значение ложь, т.к. в базе данных этот сотрудник зарегистрирован в отделе А3, и в этом случае СУБД не позволит сделать изменения.