
- •Содержание
- •Глава 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.1. Элементы er-модели
Абстрактное представление структуры предметной области в модели "сущность-связь" отображаются графически в виде диаграмм сущностей и связей. Эти элементы состоят из трех основных типов:
1. Множеств сущностей.
2. Атрибутов.
3. Связей.
2.1.1. Множество сущностей
Сущность – это абстрактный объект определенного типа. Он может быть объектом с физическим или концептуальным существованием. Набор однородных сущностей образует множество сущностей. Если в качестве предметной области рассмотрим производство кинофильмов, то мы столкнемся с физическими сущностями, такими как кинофильмы, актеры и киностудии. Каждый фильм представляет собой сущность, а коллекция фильмов образует множество сущностей. Актер – это сущность другого вида, а множество актеров – это множество сущностей. Киностудия – это еще одна сущность третьего вида, а много студий – это множество сущностей. Приведем несколько примеров концептуальных сущностей рассматриваемой предметной области. Это "прокат фильмов", "аренда павильонов", "заключение договоров с актерами" и т.д. Множество сущностей изображается на ER-диаграммах в виде прямоугольников.
Множество сущностей идентифицируется именем и списком свойств.
Сущности можно классифицировать как сильные и слабые.
Слабый тип сущности – это сущность, существование которой зависит от какой-то другой сущности.
Сильный тип сущности – это сущность, существование которой не зависит от какой-то другой сущности.
Слабые сущности иногда называют дочерними (child), зависимыми (dependent) или подчиненными (subordinate), а сильные — родительскими (parent), сущностями-владельцами (owner) или доминантными (dominant).
2.1.2. Атрибуты
Атрибут – это свойство множества сущностей или связей. Атрибуты сущности содержат значения, описывающие каждую сущность.
Связь, которая соединяет две сущности, также может иметь атрибуты, аналогичные атрибутам типа сущности.
Каждый атрибут связан с набором значений, который называется доменом. Домен определяет все потенциальные значения, которые могут быть присвоены атрибуту.
Различные атрибуты могут совместно использовать один и тот же домен. Например, атрибуты адреса (Адрес) сотрудников компании (сущность Сотрудник) и владельцев объектов недвижимости (сущность Владелец) могут совместно использовать один и тот же домен всех возможных адресов. Домены также могут представлять собой комбинацию, состоящую из нескольких других доменов. Например, домен даты рождения (Дата_рождения) сущности Сотрудник состоит из таких подчиненных доменов, как день, месяц и год (Рис.2.1.1.).
Атрибуты делятся на простые и составные, однозначные и многозначные, а также производные.
Простые атрибуты не могут быть разделены на более мелкие компоненты. Примерами простых атрибутов являются атрибут пола (Пол) или зарплаты (Зарплата) работника. Простые атрибуты иногда называют атомарными.
Составной атрибут – это атрибут, состоящий из нескольких компонентов, каждый из которых характеризуется независимым существованием.
Например, атрибут адреса (Адрес) сущности, представляющей отделение компании (Отделение), со значением «140830, Балашихинский район, г. Балашиха, шоссе Энтузиастов дом 12» может быть разбит на отдельные атрибуты улицы (Улица) со значением «шоссе Энтузиастов дом 12», района (Район) со значением «Балашихинский район», города (Город) со значением «г.Балашиха» и почтового индекса (Индекс) со значением «140830».
Однозначный атрибут – это атрибут, который содержит одно значение для одной сущности.
Большинство атрибутов множества сущностей являются однозначными для каждого отдельного экземпляра этой сущности
Многозначный атрибут – это атрибут, который содержит несколько значений для одной сущности.
Некоторые атрибуты могут иметь несколько значений для одной сущности. Например, сущность Отделение может иметь несколько значений для атрибута номера телефона отделения компании (Телефон), например: '171-88-12' и '171-86-13'. Следовательно, атрибут Телефон в этом случае будет многозначным.
Некоторые атрибуты могут быть производными. Например, возраст сотрудника (Возраст) является величиной, производной от его даты рождения (Дата_рождения), и поэтому атрибуты Возраст и Дата_рождения являются связанными. Причем атрибут Возраст является производным атрибутом,от значения атрибута Дата_рождения.
На диаграммах атрибуты изображаются в виде эллипсов, присоединенных линией к соответствующей сущности и помеченных именем атрибута. На Рис.2.1.1. показаны атрибуты, связанные с сущностями Сотрудник, Отделение и Родственники.
Рис. 2.1.1. Диаграммное представление сущностей Сотрудник, Отделение и Родственники и их атрибутов.
Эллипс окружен пунктирным контуром, если атрибут является производным, и двойным контуром, если атрибут является многозначным. Как следует из Рис.2.1.1., атрибут Число_сотрудников (Общее количество сотрудников) сущности Сотрудник является производным, а атрибут Телефон (Номер телефона) сущности Отделение — многозначным.
Если атрибут является составным, его атрибуты-компоненты изображаются в виде присоединенных к нему эллипсов. На Рис.2.1.1. показано, что атрибут ФИО сущности Сотрудник является составным атрибутом, состоящим из атрибута имени (Имя) и атрибута фамилии (Фамилия).
Имя атрибута, который является первичным ключом данного множества сущностей, подчеркивается (или выделяется жирным шрифтом).
Первичный ключ для слабой сущности Родственники нельзя определить до тех пор, пока не будут установлены ограничения для связи между сущностью Родственники и ее родительской сущностью Сотрудник. Как часть слабой сущности, первичный ключ сущности Родственники будет частично или полностью производным от сущности Сотрудник.
Рассмотрев представленную на Рис.2.1.1. диаграмму, можно определить атрибуты, связанные с типами сущностей Сотрудник, Отделение и Родственники.
Множество сущностей Сотрудник состоит из следующих компонентов:
Сотрудник (Код_сотрудника, Имя, Фамилия, Адрес, Телефон, Пол, Дата_рождения, Должность, ИНН, Зарплата)
Первичный ключ: Код_сотрудника
Альтернативный ключ: Имя, Фамилия, Дата_рождения
Альтернативный ключ: ИНН
Составной атрибут: ФИО (Имя, Фамилия)
Производный атрибут: Число_сотрудников
Множество сущностей Отделение состоит из следующих компонентов:
Отделение (Код_отделение, Улица, Район, Город, Индекс, Телефон, Факс)
Первичный ключ: Код_отделение
Альтернативный ключ: Факс
Составной атрибут: Адрес (Улица, Район, Город, Индекс)
Многозначный атрибут: Телефон
Множество сущностей Родственники состоит из следующих компонентов:
Родственники (ФИО, Адрес, Телефон, Родство)