- •Глава 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-документов на основе информации из базы данных
- •Некоторые проблемы администрирования баз данных
- •Оптимизация запросов
- •Параллельная обработка данных
- •Потеря обновления
- •Зависимость от незафиксированных обновлений
- •Несогласованный анализ
- •Блокировки транзакций
- •Согласованность и уровень изоляции транзакций
- •Распределенные системы баз данных
- •Фрагментация
- •Репликация
- •Распространение обновлений
- •Управление каталогом
- •Распределенная обработка запросов
- •Типы распределенных систем баз данных
- •Нераспределенные мультибазовые субд
- •Клиент-серверные системы
- •Системы с общими ресурсами
- •Технические аспекты администрирования базы данных
- •Восстановление базы данных
- •Безопасность баз данных
- •Шифрование данных
- •Производительность баз данных
- •Администрирование данных
- •Литература
Концепция баз данных
Активная деятельность по разработке эффективных способов обработки непрерывно растущего объема информации привела к созданию в начале 60-х годов специальных программных комплексов, называемых системами управления базами данных (СУБД).
Основная особенность СУБД – это наличие процедур не только для ввода, хранения и обработки самих данных, но и для описания их структуры. Файлы, снабженные описанием хранимых в них данных и находящиеся под управлением СУБД, стали называть банками данных, а затем базами данных.
Пусть, например, требуется хранить расписание движения самолетов (рис. 1.2.1) и ряд других данных, связанных с организацией работы аэропорта (база данных "Аэропорт"). Используя для этого СУБД, можно подготовить следующее описание расписания (мы начинаем демонстрировать элементы языка структурированных запросов SQL (Structured Query Language), который используется большинством современных СУБД):
СОЗДАТЬ ТАБЛИЦУ Расписание (Номер_Рейса Целое, Дни_Недели Текст (8), Пункт_Отправления Текст (24), Время_Вылета Время, Пункт_Назначения Текст (24), Время_Прибытия Время, Тип_Самолета Текст (8), Стоимость_Билета Денежный);
и хранить его вместе с данными в файле базы данных "Аэропорт".
Язык запросов СУБД позволяет формулировать задачу поиска данных, например, запрос
ВЫБРАТЬ Номер_Рейса, Дни_Недели, Время_Вылета ИЗ ТАБЛИЦЫ Расписание ГДЕ Пункт_Отправления = 'Москва' И Пункт_Назначения = 'Минск' И Время_Вылета > ‘17’;
позволяет получить расписание "Москва-Минск" на вечернее время, а по запросу
ВЫБРАТЬ КОЛИЧЕСТВО (Номер_Рейса) ИЗ ТАБЛИЦЫ Расписание ГДЕ Пункт_Отправления = 'Москва' И Пункт_Назначения = 'Минск';
получим количество рейсов "Москва-Минск".
Язык запросов применяется и для изменения таблиц. Например, расширить таблицу можно следующим способом:
ДОБАВИТЬ В ТАБЛИЦУ Расписание Длительность_Полета Время;
Однако дополнительные возможности, которые предоставляет СУБД, требуют дополнительных ресурсов машины – на обмен данными через СУБД требуется большее время, чем на обмен аналогичными данными прямо из файлов, специально созданных для того или иного приложения.
Программно-техническая реализация концепции баз данных позволяет на их основе создавать различные приложения – прикладные программы, которые служат интерфейсами между пользователем и СУБД. Схема взаимодействия пользователя с базой данных показана на рис. 1.3.1. В основе ее лежит модель «клиент-сервер». Приложения, предназначенные для создания запросов, форм и отчетов, стали неотъемлемой частью многих коммерческих СУБД. Более специфические приложения создаются непосредственно пользователями. Н апример, для получения и обработки результатов измерений или реализации логики задачи.
Основные функции субд
В отличие от приложений, почти все СУБД являются коммерческими продуктами, причем, подавляющую часть рынка захватили пять систем: Oracle, Access и SQL Server (Microsoft), FoxPro (Borland) и DB2 (IBM).
К числу основных функций СУБД принято относить следующие:
создание самой базы данных, ее объектов и структур – таблиц, индексов…;
модификация объектов и структур базы данных;
ввод, чтение и изменение данных;
обеспечение целостности данных;
обеспечение безопасности данных;
управление параллельной обработкой данных;
создание резервных копий.
Для реализации этих функций, СУБД снабжены специальными устройствами и компонентами. Рассмотрим некоторые из них.