- •Глава 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-документов на основе информации из базы данных
- •Некоторые проблемы администрирования баз данных
- •Оптимизация запросов
- •Параллельная обработка данных
- •Потеря обновления
- •Зависимость от незафиксированных обновлений
- •Несогласованный анализ
- •Блокировки транзакций
- •Согласованность и уровень изоляции транзакций
- •Распределенные системы баз данных
- •Фрагментация
- •Репликация
- •Распространение обновлений
- •Управление каталогом
- •Распределенная обработка запросов
- •Типы распределенных систем баз данных
- •Нераспределенные мультибазовые субд
- •Клиент-серверные системы
- •Системы с общими ресурсами
- •Технические аспекты администрирования базы данных
- •Восстановление базы данных
- •Безопасность баз данных
- •Шифрование данных
- •Производительность баз данных
- •Администрирование данных
- •Литература
Функциональные зависимости
Пусть X и Y – произвольные подмножества множества атрибутов отношения R. Y функционально зависит от X тогда и только тогда, когда каждое значение множества X связано в точности с одним значением множества Y. Обозначение: XY (читается как «X функционально определяет Y»). Левая и правая части символической записи называются детерминантом и зависимой частью соответственно.
И
П№
Гор
Д№
Кол
П1
Брест
Д1
100
П1
Брест
Д2
100
П2
Минск
Д1
200
П2
Минск
Д2
200
П3
Гродно
Д2
300
П4
Минск
Д2
400
П4
Минск
Д4
400
П4
Минск
Д5
400
Рис. 5.2.1. Таблица
поставок ПОС
Все кортежи отношения ПОС с одинаковым значением атрибута П№ имеют одинаковые значения атрибута Гор. Значит, атрибуты Гор функционально зависят от атрибутов П№: {П№}{Гор}. Более того, в этом отношении присутствуют и другие постоянные функциональные зависимости: {П№,Д№}{Кол}, {П№,Д№}{Гор}, {П№,Д№}{Гор,Кол}, {П№,Д№}{П№}, {П№,Д№}{П№,Д№,Гор,Кол}, а также зависимости, которые являются функциональными в любой данный момент, но не все время, например, {П№}{Кол}.
Отметим, что если X является потенциальным ключом отношения R, то все атрибуты Y отношения R должны быть функционально зависимы от X (это следствие из определения потенциального ключа). Фактически, если отношение R удовлетворяет функциональной зависимости АВ и А не является потенциальным ключом, то R будет характеризоваться некоторой избыточностью. Например, в отношении ПОС сведения о том, что каждый поставщик находится в определенном городе будут повторяться много раз.
Функциональные зависимости являются ограничениями целостности, поэтому при каждом обновлении базы данных они должны быть проверены. Очевидным способом сокращения множества функциональных зависимостей является исключение тривиальных зависимостей, т.е. таких, которые не могут не выполняться. Например, {П№,Д№}{П№}. Функциональная зависимость является тривиальной тогда и только тогда, когда правая часть символьной записи является подмножеством левой части. Такие зависимости не представляют никакого интереса с практической точки зрения.
При анализе отношений особая роль отводится неприводимым зависимостям. Атрибут В неприводимо зависим от составного атрибута А, если он функционально зависит от А и не зависит функционально от любого подмножества атрибута А. В ранних публикациях вместо термина неприводимая зависимость использовался термин полная функциональная зависимость.
Функциональные зависимости могут быть изображены при помощи диаграмм. Для базы данных поставщиков и деталей (рис. 1.8.7) диаграмма функциональных зависимостей изображена на рис. 5.2.2.
Каждая стрелка на диаграмме начинается с первичного ключа соответствующего отношения. На диаграмме возможны и другие стрелки. В таком случае процедуру нормализации можно неформально охарактеризовать как процедуру исключения стрелок, которые начинаются не на первичном ключе.