
- •Содержание
- •Глава 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. Методология физического проектирования реляционных бд 93
7.1. Перенос глобальной логической модели данных в среду целевой СУБД 93
7.1.1. Oписание на языке SQL стандарта ISO 1992 (SQL2) 93
7.1.2. Реализация с использованием триггеров 94
7.1.3. Реализация с использованием уникальных индексов 95
7.2. Реализация бизнес-правил предприятия в среде целевой СУБД 96
7.3. Организация эффективного хранения данных 96
7.3.1. Анализ транзакций. 97
7.3.2. Выбор файловой структуры. 99
7.3.3. Определение вторичных индексов. 100
7.3.4. Анализ необходимости введения контролируемой избыточности. 101
7.3.5. Определение требований к дисковой памяти. 102
7.4. Разработка механизмов защиты 103
7.4.1. Разработка пользовательских представлений (видов). 104
7.4.2. Определение прав доступа. 105
7.5. Организация мониторинга и настройка функционирования системы 106
Глава 8. Язык структурированных запросов sql. 107
Операторы DDL 108
Типы данных 108
Создание файла БД 109
Создание (определение) таблиц 109
Удаление таблиц 112
Модификация структуры таблиц 112
Резюме 114
Операторы, изменяющие информацию в БД 115
Добавление новых данных. 115
Удаление существующих данных. 116
Обновление существующих данных. 116
Запрос информации из БД 117
Инструкция SELECT 118
Применение оператора SELECT в инструкции INSERT 125
Резюме 126
Предисловие
В настоящее время на рынке представлено большое количество учебников и монографий по базам данных. С одной стороны, появление каждой новой книги воспринимается как радостное событие для лиц, изучающих информационные системы. С другой стороны, изучение этих книг сопряжено с определенными трудностями. Дело в том, что каждый автор имеет свои предпочтения при изложении материала. Одни уделяют особое внимание вопросам управления транзакциями, другие отдают предпочтение более подробному изложению вопросам построения моделей данных, третьи – вопросам методологии проектирования баз данных и т.д.
Все это может осложнить жизнь студентам, начинающим изучение информационных систем, использующим базы данных. Учитывая сказанное, мы решили изложить в предлагаемой работе только те вопросы, которые, на наш взгляд, являются основополагающими. Это дает возможность, значительно сократив объем читаемого материала, создать прочный фундамент для самостоятельного изучения деталей рассматриваемой предметной области.
Итак, в предлагаемом учебнике мы затрагиваем восемь тем. Это:
введение в базы данных;
модели данных;
функциональные зависимости;
нормализация;
методология концептуального проектирования БД;
методология логического проектирования БД;
методология физического проектирования БД;
язык запросов SQL.
В главе "Основные понятия" мы даем краткий исторический обзор способов хранения и обработки данных за последние сорок лет. Затрагиваем файловые системы хранения данных и поясняем причины отказа от них в разработках более позднего периода. Вводим понятие модели данных, базы данных и системы базы данных. Обсуждаем три модели, используемые в базах данных. Особое внимание уделяем реляционным моделям, реляционным объектам и целостности реляционных данных. В этой главе рассматриваем также один из способов отделения конечного пользователя от физического представления данных в памяти компьютера. Уделяем также внимание системам управления базами данных, их функциям и возможностям в процессе управления данными в системах баз данных.
В главе "Модели данных" рассматриваем один из возможных способов моделирования данных на этапе концептуального представления предметной области.
В главах "Функциональные зависимости" и "Нормализация" показываем, как при помощи нормализованных методов можно придать реляционным объектам вид, более адекватный физическому представлению предметной области.
Базовые знания, приобретенные в результате изучения этих глав, дают возможность пользователю приступить к проектированию базы данных. Следуя нашей методике и материалам главы 2, начинающий пользователь создает концептуальную модель данных.
Воспользовавшись материалом, изученным в главах 3 и 4, наш пользователь создает логическую модель данных, подвергнув доработке концептуальную модель, посредством удаления элементов, которые не могут быть реализованы в реляционных системах.
Наконец, выбрав среду целевой системы управления базой данных, пользователь преобразует логическую модель в физический проект.
Для выполнения последнего этапа пользователь воспользуется языком запросов SQL, о котором речь пойдет в главе 8.
В заключение хочется отметить, что материал, изложенный в восьми главах предлагаемого учебного пособия, хотя и не решает все сложные вопросы процесса проектирования баз данных, однако значительно продвигает непрофессионального пользователя в нужном направлении.