
- •Содержание
- •Глава 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
2.4.2. Наследование атрибутов
Как упоминалось выше, сущность в подклассе представляет тот же объект реального мира, что и ее суперкласс, и может обладать атрибутами, как связанными с суперклассом, так и специфическими для данного подкласса.
Например, подкласс Торговый_агент обладает всеми атрибутами суперкласса Сотрудник (т.е. атрибутами Код_сотрудника, ФИО, Адрес и Дата_рождения), а также специфическими атрибутами подкласса Торговый_агент (т.е. атрибутами Подорожные и Торговый_зал).
Сущность, ее подклассы, подклассы данных подклассов и так далее — все это называется иерархией типа (type hierarchy). Иерархии типов могут иметь разные названия: иерархия специализации (specialization hierarchy) — например, подкласс Управляющий является специализацией суперкласса Сотрудник; иерархия генерализации (generalization hierarchy) — например, суперкласс Сотрудник является генерализацией подкласса Управляющий; иерархия принадлежности (IS-A hierarchy) — например, менеджер (подкласс Управляющий) является сотрудником (принадлежит суперклассу Сотрудник). В следующих разделах процессы специализации и генерализации описываются более подробно.
2.4.3. Специализация
Процесс увеличения различий между отдельными членами множества сущности за счет выделения их отличительных характеристик называется специализацией.
Рассмотрим, например, процедуру специализации, в которой идентифицируется множество подклассов суперкласса Сотрудник, включая подклассы Управляющий, Секретарь и Торговый_агент. Ее можно представить схематически — в виде EER-диаграммы, показанной на Рис.2.4.1.
Рис. 2.4.1. Специализация сущности Сотрудник no подклассам на основе служебных ролей
Обратите внимание, что суперкласс Сотрудник и его подклассы, которые также являются множествами сущностей, здесь обозначены прямоугольниками. Подклассы специализации соединяются линиями с кружком, который, в свою очередь, соединяется с суперклассом. Символ принадлежности множеству (Ì) на каждой линии, соединяющей подкласс с кружком, указывает направление связи "Подкласс/суперкласс" (например, Управляющий Ì Сотрудник). Символ "о" в кружке специализации обозначает накладываемое на связь "подкласс/суперкласс" ограничение, которое более подробно описывается ниже, в разделе 2.4.5.
Атрибуты Подорожные и Район_продаж связаны только с подклассом Торговый_агент, a это означает, что они не могут быть применены к подклассу Управляющий или Секретарь.
2.4.4. Генерализация
Процесс сведения различий между сущностями к минимуму путем выделения их общих характеристик называется генерализацией.
Генерализация представляет собой восходящий подход, который позволяет создать обобщенный суперкласс на основе различных исходных подклассов.
2.4.5. Ограничения, накладываемые на процедуры специализации и генерализации
Обсудим возможные ограничения только в отношении специализации, так как эти же соображения в равной степени применимы и к процедуре генерализации.
Первое ограничение называется ограничением непересечения (disjoint constraint). Оно гласит, что если подклассы некоторой специализации не пересекаются, то каждая отдельная сущность может быть членом только одного из подклассов данной специализации.
Если подклассы специализации пересекаются, в таком случае сущность может быть членом сразу нескольких подклассов специализации. Для представления пересекающейся (nondisjoint) специализации используется символ "о", который располагается в центре кружка, соединяющего подклассы данного суперкласса. Для нашего примера это означает, что сотрудник может быть одновременно и менеджером (членом Управляющий), и торговым агентом (т.е. членом Торговый_агент).
Второе ограничение специализации называется ограничением участия (participation constraint), оно может быть полным или частичным. Специализация с полным участием означает, что каждая сущность суперкласса должна быть членом подкласса этой специализации.
Для обозначения полного участия между суперклассом и кружком специализации проводят двойную линию.
Специализация с частичным участием означает, что сущность не обязательно должна быть членом любого подкласса этой специализации. Для обозначения частичного участия между суперклассом и кружком специализации проводят одинарную линию.