
- •Содержание
- •Глава 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
7.3.4. Анализ необходимости введения контролируемой избыточности.
В некоторых случаях можно услышать возражения, типа того, что полная нормализованность структуры базы данных не позволяет достичь максимальной эффективности обработки информации. Из этого следует, что могут возникнуть обстоятельства, при которых из соображений повышения производительности будет целесообразно отказаться от некоторой доли преимуществ, достигаемых при полной нормализации проекта. Поэтому иногда приходиться прибегать к денормализации данных.
Термин «денормализация» означает внесение в реляционную схему таких усовершенствований, при которых уровень нормализованности обработанных отношении по сравнению с уровнем нормализованности хотя бы одного из исходных отношении уменьшается. Когда объединяются два отношения в одно, новое отношение может сохранить прежний уровень нормализованности, однако будет содержать больше пустых значений, чем оба исходных отношения. Иногда процедуру денормализации называют оптимизацией использования.
Практика показывает, что денормализация может быть использована как средство улучшения характеристик системы с недостаточной производительностью только в том случае, если уровень обновления данных в этой системе по сравнению с уровнем выполняемых запросов относительно невысок.
Четких правил, когда именно следует прибегать к денормализации отношений, не существует, однако имеются некоторые типичные ситуации, в которых желательно прибегнуть к денормализации данных. В частности, если перед нами стоит задача ускорения часто выполняемых или критических запросов:
Объединение членов связей типа "один-к-одному" (1:1).
Дублирование неключевых атрибутов в связях типа "один-ко-многим" (1:М) с целью сокращения числа выполняемых соединений отношений.
Использование справочных таблиц.
Дублирование атрибутов внешних ключей в связях типа "один-ко-многим" (1:М) с целью сокращения числа выполняемых соединений отношений.
Дублирование атрибутов связей типа "многие-ко-многим" (M:N) с целью сокращения числа выполняемых соединений отношений.
Введение повторяющихся групп атрибутов.
Создание сводных таблиц.
Любые действия по внесению в базу данных контролируемой избыточности должны быть тщательно документированы, причем обязательно с указанием причин ее введения. В частности, в документации должны быть отражены причины, по которым был выбран один из нескольких доступных вариантов действий. Внесите в логическую модель данных изменения, отражающие результаты проведения денормализации.
7.3.5. Определение требований к дисковой памяти.
Заказчик может потребовать, чтобы физическая реализация базы данных была выполнена с использованием конфигурации оборудования, существующей на текущий момент. Даже если такое требование не выдвигалось, разработчик все равно обязан оценить объем дискового пространства, который понадобится для размещения создаваемой базы данных. Это позволит установить, потребуется ли приобретение нового оборудования. Целью выполнения данного этапа физического проектирования является получение оценки объема дискового пространства, необходимого для размещения файлов создаваемой базы данных во внешней памяти. Как и на предыдущих этапах, объем используемой дисковой памяти существенно зависит от конкретного типа целевой СУБД и оборудования, используемого для размещения базы данных. В общем случае оценка выполняется на основе сведений о размерах всех типов кортежей и ожидаемом количестве кортежей в каждом из отношений. Полученное значение оценки представляет собой максимальный уровень текущей потребности в дисковой памяти, однако может оказаться полезным проанализировать возможности роста размера таблиц, после чего откорректировать окончательную цифру с учетом фактора роста, что даст потенциальный размер базы данных в будущем.
Мы проиллюстрируем процесс определения объема дискового пространства на примере файлов с организацией, обсуждавшейся на этапе 7.3.2. В качестве целевой будет использована СУБД INGRES. Все формулы рассчитаны для вновь созданных и заполненных данными таблиц, до того как данные в них обновлялись или удалялись. В общем случае вычисление объема дисковой памяти, необходимого для размещения некоторой таблицы, предусматривает умножение количества записей в таблице на размер этой записи, после чего к результату добавляются объемы всех требуемых индексов. Длина записи определяется как сумма длин атрибутов плюс суммарная длина любых дополнительных элементов, помещаемых в запись системой. Длина атрибута в определенной степени задается его типом и размером. В СУБД INGRES длина записи вычисляется как общая длина всех атрибутов в байтах, плюс два дополнительных байта на каждый символьный атрибут с переменной длиной строки и еще по одному байту для полей, которые могут хранить значение NULL.