- •Глава 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-документов на основе информации из базы данных
- •Некоторые проблемы администрирования баз данных
- •Оптимизация запросов
- •Параллельная обработка данных
- •Потеря обновления
- •Зависимость от незафиксированных обновлений
- •Несогласованный анализ
- •Блокировки транзакций
- •Согласованность и уровень изоляции транзакций
- •Распределенные системы баз данных
- •Фрагментация
- •Репликация
- •Распространение обновлений
- •Управление каталогом
- •Распределенная обработка запросов
- •Типы распределенных систем баз данных
- •Нераспределенные мультибазовые субд
- •Клиент-серверные системы
- •Системы с общими ресурсами
- •Технические аспекты администрирования базы данных
- •Восстановление базы данных
- •Безопасность баз данных
- •Шифрование данных
- •Производительность баз данных
- •Администрирование данных
- •Литература
Поддержка языков баз данных
Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка – язык определения схемы базы данных (SDL – Schema Definition Language) и язык манипулирования данными (DML – Data Manipulation Language). SDL служил, главным образом, для определения логической структуры базы данных, т.е. той структуры базы данных, какой она представляется пользователям. DML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в базу, удалять, модифицировать или выбирать существующие данные. В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с базами данных, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language).
Язык SQL сочетает средства SDL и DML, т.е. позволяет определять схему реляционной базы данных и манипулировать данными. Язык SQL содержит специальные средства определения ограничений целостности базы данных. Специальные операторы языка SQL позволяют определять так называемые представления баз данных, которые фактически являются хранимыми в базах данных запросами (результатом любого запроса к реляционной базе данных является таблица с именованными столбцами). Для пользователя представление является такой же таблицей, как любая базовая таблица, хранимая в базе данных, но с помощью представлений можно ограничить или, наоборот, расширить видимость базы данных для конкретного пользователя. Поддержание представлений производится также на языковом уровне. Наконец, авторизация доступа к объектам базы данных производится также на основе специального набора операторов SQL. Идея состоит в том, что для выполнения операторов SQL разного вида пользователь должен обладать различными полномочиями. Пользователь, создавший таблицу базы данных, обладает полным набором полномочий для работы с этой таблицей. В число этих полномочий входит полномочие на передачу всех или части полномочий другим пользователям, включая полномочие на передачу полномочий. Полномочия пользователей описываются в специальных таблицах-каталогах, контроль полномочий поддерживается на языковом уровне.
Трехуровневая модель архитектуры систем баз данных
Разработка алгоритма выполнения функций СУБД начинается, как правило, с всестороннего описания данных.
Естественно, что проект базы данных надо начинать с анализа предметной области и выявления требований к ней отдельных пользователей (например, сотрудников организации, для которых создается база данных), набор которых представляет внешний уровень архитектуры базы данных (рис. 1.5.1). Другими словами, внешний уровень архитектуры – это содержимое базы данных, каким его видит определенный пользователь (для этого пользователя внешний уровень и есть база данных).
П роектирование базы данных выполняет обычно один или несколько специалистов – администраторы базы данных. Ими могут быть как специально выделенные сотрудники организации, так и будущие пользователи базы данных, достаточно хорошо знакомые с компьютерной обработкой данных.
Объединяя частные внешние представления о содержимом базы данных, полученные в результате изучения потребностей пользователей, и свои представления о данных, которые могут потребоваться в будущих приложениях, администратор базы данных сначала конструирует обобщенное неформальное описание создаваемой базы данных. Это описание, выполненное с использованием естественного языка, математических формул, таблиц, графиков и других средств, понятных всем людям, работающим над проектированием базы данных, называют информационно-логической или инфологической (infological) моделью данных. Такая модель является основой концептуального уровня архитектуры базы данных. Концептуальный уровень – это полное инфологическое представление базы данных. Одна и та же концептуальная схема должна служить основой для множества внешних схем. Она полностью независима от физических параметров среды хранения данных. Этой средой может быть память человека, а не компьютера. Поэтому инфологическая модель не должна изменяться до тех пор, пока какие-то изменения в реальном мире, которые отражаются во внешнем уровне модели, не потребуют ее изменения для того, чтобы эта модель продолжала отражать предметную область.
Третьим уровнем архитектуры является внутренний уровень, связанный со способами сохранения информации на физических устройствах хранения данных. Он обеспечивает доступ к хранимым данным лишь по их именам, не заботясь о физическом расположении этих данных. Концептуальная схема может быть реализована в различных внутренних схемах, в зависимости от того, какие операционные системы и программные средства используются.
Нужные данные отыскиваются СУБД на внешних запоминающих устройствах по физической модели данных.
Трехуровневая архитектура проясняет роль моделирования данных в проектировании систем баз данных и обеспечивает независимость хранимых данных от использующих их программ. Администратор базы данных может при необходимости переписать хранимые данные на другие носители информации или реорганизовать их физическую структуру, изменив лишь физическую модель данных. Он может подключить к системе любое число новых пользователей (новых приложений). Такие изменения физической модели не должны быть замечены существующими пользователями системы, так же как не будут замечены и новые пользователи. Следовательно, независимость данных обеспечивает возможность развития системы баз данных без разрушения существующих приложений.