
- •Содержание
- •Глава 1. Основные понятия 6
- •Глава 2. Модели данных 19
- •Глава 3. Функциональные зависимости 46
- •Глава 4. Нормализация 54
- •Глава 5. Методология концептуального проектирования 69
- •Глава 6. Методология логического проектирования баз данных реляционного типа 75
- •Глава 7. Методология физического проектирования реляционных бд 93
- •Глава 8. Язык структурированных запросов sql. 107
- •Предисловие
- •Глава 1. Основные понятия
- •1.1. Информационные системы с базами данных.
- •1.2. Функции и возможности субд
- •1.3. Программные компоненты субд
- •1.4. Архитектура среды базы данных
- •1.5. Реляционные объекты данных: терминология
- •1.6. Формальные определения
- •1.6.1. Домены
- •1.6.2. Отношения
- •1.7. Целостность реляционных данных
- •1.7.1. Потенциальные ключи
- •1. Свойством уникальности.
- •2. Свойством не избыточности.
- •1.7.2. Первичные и альтернативные ключи
- •1.7.3. Внешние ключи
- •1.7.4. Ссылочная целостность
- •1.7.5. Правила внешних ключей
- •Глава 2. Модели данных
- •2.1. Элементы er-модели
- •2.1.1. Множество сущностей
- •2.1.2. Атрибуты
- •2.1.3. Связи
- •2.1.4. Рекурсивная связь
- •2.1.5. Атрибуты связей
- •2.2. Структурные ограничения
- •2.2.1. Связь "один-к-одному"
- •2.2.2. Связь "один-ко-многим"
- •2.2.3. Связь "многие-ко-многим"
- •2.2.4. Степень участия
- •2.2.5. Многосторонние связи
- •2.2.6. Слабые множества сущностей
- •2.3. Проблемы er-моделирования (Материал данного параграфа не обязателен для изучения)
- •2.3.1. Ловушки разветвления
- •2.3.2. Ловушка разрыва
- •2.4. Ееr-модель
- •2.4.1. Суперклассы и подклассы типов сущностей
- •2.4.2. Наследование атрибутов
- •2.4.3. Специализация
- •2.4.4. Генерализация
- •2.4.5. Ограничения, накладываемые на процедуры специализации и генерализации
- •2.4.6. Категоризация
- •2.5. Реляционные модели
- •2.5.1. От er-диаграмм к реляционным схемам
- •2.5.2. От er-связей к к отношениям
- •2.5.3. Объединение отношения
- •2.5.4. Преобразование слабых множеств сущностей
- •Глава 3. Функциональные зависимости
- •3.1.Основные определения
- •3.2. Тривиальные и нетривиальные зависимости
- •3.3. Замыкание множества зависимостей
- •3.4. Правила вывода Армстронга
- •3.5. Неприводимое множество зависимостей
- •Примеры
- •Глава 4. Нормализация
- •4.1. Декомпозиция без потерь
- •4.2. Первая, вторая и третья нормальные формы.
- •Вторая нормальная форма (2нф).
- •Третья нормальная форма ( 3нф ).
- •Нормальная форма Бойса-Кодда
- •4.3. Многозначные зависимости
- •4.4. Четвертая нормальная форма (4нф)
- •4.5. Пятая нормальная форма (5нф)
- •4.6. Итоговая схема процедуры нормализации
- •4.7. Альтернативный набор определений нфбк, 4нф и 5нф
- •4.8. Выделим цели процесса нормализации
- •4.9. Другие нормальные формы
- •Глава 5. Методология концептуального проектирования
- •5.1. Источники представления пользователей о предметной области
- •5.2. Определение типов сущностей
- •5.3. Определение типов связей
- •5.4. Определение атрибутов
- •5.5. Определение доменов атрибутов
- •5.6. Определение потенциальных и первичных ключей
- •5.7. Генерализация и специализация типов сущностей
- •5.8. Создание диаграммы "сущность-связь"
- •5.9. Обсуждение локальных концептуальных моделей данных с конечными пользователями
- •Глава 6. Методология логического проектирования баз данных реляционного типа
- •6.1. Преобразование локальной концептуальной модели данных в локальную логическую модель
- •6.1.1. Удаление связей типа m:n
- •6.1.2. Удаление сложных связей
- •6.1.3. Удаление рекурсивных связей
- •6.1.4. Удаление связей с атрибутами
- •6.1.5. Удаление множественных атрибутов
- •6.1.6. Перепроверка связей типа 1:1
- •6.1.7. Удаление избыточных связей
- •6.2. Наборы отношений локальных логических моделей данных
- •6.2.1. Сильные типы сущностей
- •6.2.2. Слабые типы сущностей
- •6.2.3. Бинарные связи типа "один-к-одному" (1:1)
- •6.2.4. Бинарные связи типа "один-ко-многим" (1:м)
- •6.2.5. Связи типа "суперкласс/подкласс"
- •6.2.6. Документирование созданных отношений и атрибутов внешних ключей
- •6.3. Проверка модели с помощью правил нормализации
- •6.4. Проверка модели в отношении транзакций
- •6.5. Создание диаграмм "сущность-связь"
- •6.7.1. Слияние локальных логических моделей данных в единую глобальную модель данных
- •6.7.1.1. Анализ имен сущностей и их первичных ключей
- •6.7.1.2. Анализ имен связей
- •2. Слияние эквивалентных сущностей с различными первичными ключами
- •3. Слияние сущностей с различными именами, имеющих одинаковые или различные первичные ключи
- •7.1.1. Oписание на языке sql стандарта iso 1992 (sql2)
- •Листинг 1. Операторы языка sql, предназначенные для создания таблицы
- •7.1.2. Реализация с использованием триггеров
- •Пример 1
- •7.1.3. Реализация с использованием уникальных индексов
- •Пример 2
- •7.2. Реализация бизнес-правил предприятия в среде целевой субд
- •7.3. Организация эффективного хранения данных
- •7.3.1. Анализ транзакций.
- •7.3.2. Выбор файловой структуры.
- •Последовательные файлы
- •Хешированные файлы
- •Индексно-последовательные файлы
- •Двоичные деревья
- •7.3.3. Определение вторичных индексов.
- •7.3.4. Анализ необходимости введения контролируемой избыточности.
- •7.3.5. Определение требований к дисковой памяти.
- •Последовательные файлы
- •Хешированные файлы
- •7.4. Разработка механизмов защиты
- •7.4.1. Разработка пользовательских представлений (видов).
- •7.4.2. Определение прав доступа.
- •7.5. Организация мониторинга и настройка функционирования системы
- •Глава 8. Язык структурированных запросов sql.
- •Операторы ddl
- •Типы данных
- •Создание файла бд
- •Создание (определение) таблиц
- •Определение столбцов
- •Примеры создания таблиц
- •Удаление таблиц
- •Модификация структуры таблиц
- •Операторы, изменяющие информацию в бд
- •Добавление новых данных.
- •Удаление существующих данных.
- •Обновление существующих данных.
- •Запрос информации из бд
- •Инструкция select
- •Предложение select.
- •Предложение from.
- •Запросы
- •Порядок выполнения многотабличных запросов
- •Виды объединений
- •Предложение where.
- •Условия отбора
- •Составные или сложные условия отбора
- •Предложение group by.
- •Предложение having.
- •Предложение order by.
- •Применение оператора select в инструкции insert
4.5. Пятая нормальная форма (5нф)
До сих пор предполагалось, что единственной необходимой операцией в процессе декомпозиции является замена данного отношения двумя его проекциями (вплоть до 4НФ). Однако существуют отношения, для которых нельзя выполнить декомпозицию без потерь на две проекции, но которые можно подвергнуть декомпозиции на три и более проекции.
Рассмотрим пример отношения МТП, содержащего информацию о мебельных магазинах (J), поставляемой мебели (Р) и поставщиках мебели (S). Отношение МТП является «полностью ключевым», не содержит нетривиальных функциональных и многозначных зависимостей и, следовательно, находится в 4НФ.
Рис. 4.14. а) Декомпозиция отношения МТП на три проекции;
б) соединение проекции в исходное отношение МТП.
На Рис. 4.14 приведены три проекции ПТ (Поставки), ТП и JS (Магазины). Отношение МТП это результат соединения проекций ПТ (Поставки) и ТП по атрибуту Код_поставки с проекцией МS (Магазины) по комбинации атрибутов (Код_магазина, Код_поставщика).
В результате первого соединения ПТ с ТП получим исходное отношение МТП с одним лишним кортежем, а после второго соединения с МS этот лишний кортеж исчезнет.
Пусть R является отношением, а А, В,…,Z -- произвольными подмножествами множества атрибутов отношения R. Отношение R удовлетворяет зависимости соединения *(A, B,…,Z) тогда и только тогда, когда оно равносильно соединению своих проекций с подмножествами атрибутов А, В,…,Z.
Для рассмотренного нами примера отношения МТП будет удовлетворять зависимости соединения *(ПТ (Поставки), ТП, MS (Магазины)), т.е. отношение МТП с зависимостью соединения *(ПТ (Поставки), ТП, MS (Магазины) является декомпозируемым на три отношения.
Теорема Фейгина может быть сформулирована следующим образом:
Отношение R{A, B, C} удовлетворяет зависимостям соединения *(АВ, АС) тогда и только, когда оно удовлетворяет многозначной зависимости А®В/С.
(можно рассматривать как определение многозначной зависимости, либо как зависимость соединения).
Отношение R находится в пятой нормальной форме (5НФ), которая также называется проекционно-соединительной нормальной формой, тогда и только тогда, когда каждая зависимость соединения в отношении R подразумевается потенциальными ключами отношения R.
Дадим пояснение понятию «зависимости соединения, подразумеваемой потенциальными ключами». Рассмотрим отношение Поставщики с двумя потенциальными ключами Код_поставщика и Фамилия. Такое отношение удовлетворяет нескольким зависимостям соединения, например:
*({Код_поставщика, Фамилия, Статус}, {Код_поставщика, Город} или
*({ Код_поставщика, Фамилия}, {Код_поставщика, Статус}, {Фамилия, Город}).
Отношение Поставщики равносильно соединению его проекции с атрибутами (в первом случае) {Код_поставщика, Фамилия, Статус} и {Код_поставщика, Город}. Существование этой зависимости следует (или подразумевается) из того, что Код_поставщика является потенциальным ключом. Во втором случае, зависимость соединения следует из того, что оба атрибута Код_поставщика и Фамилия являются потенциальными ключами.
Итак, согласно Фейгину можно утверждать: R находится в 5НФ при условии, что известны все потенциальные ключи и все зависимости соединения для отношения R.
Итак, отношение МТП содержит зависимость соединения и, значит, оно не находится в 5НФ. Выполним декомпозиции (Рис. 4.14.) отношения МТП на три отношения: ПТ, ТП и MS, которые, согласно определению, находятся в 5НФ.
В заключение заметим, что если отношение находится в 5НФ, то гарантируется, что оно не содержит аномалий, которые могут быть исключены разбиением на проекции.