- •Глава 2 Базовые понятия реляционной модели данных 21
- •Глава 3. Целостность реляционных данных 28
- •Глава 4. Реляционная алгебра 39
- •Глава 6. Нормальные формы отношений 57
- •Глава 7 Нормальные формы более высоких порядков 74
- •Глава 8. Элементы модели «сущность-связь» 83
- •Глава 5. Элементы языка sql 110
- •Ранние подходы к организации бд. Системы, основанные на инвертированных списках, иерархические и сетевые субд. Примеры. Сильные места и недостатки ранних систем
- •Основные особенности систем, основанных на инвертированных списках
- •Структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Иерархические системы
- •Иерархические структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Сетевые системы
- •Сетевые структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Достоинства и недостатки
- •Элементы теории множеств Множества
- •Операции над множествами
- •Декартово произведение множеств
- •Отношение
- •Примеры отношений Бинарные отношения (отношения степени 2)
- •Отношение эквивалентности
- •Отношения порядка
- •Функциональное отношение
- •Еще пример бинарного отношения
- •Транзитивное замыкание отношений
- •Глава 2 Базовые понятия реляционной модели данных Общая характеристика реляционной модели данных
- •Типы данных
- •Простые типы данных
- •Структурированные типы данных
- •Ссылочные типы данных
- •Типы данных, используемые в реляционной модели
- •Отношения, атрибуты, кортежи отношения Определения и примеры
- •Свойства отношений
- •Первая нормальная форма
- •Глава 3. Целостность реляционных данных
- •Null-значения
- •Трехзначная логика (3vl)
- •Потенциальные ключи
- •Целостность сущностей
- •Внешние ключи
- •Целостность внешних ключей
- •Замечания к правилам целостности сущностей и внешних ключей
- •Операции, могущие нарушить ссылочную целостность
- •Для родительского отношения
- •Для дочернего отношения
- •Стратегии поддержания ссылочной целостности
- •Применение стратегий поддержания ссылочной целостности
- •При обновлении кортежа в родительском отношении
- •При удалении кортежа в родительском отношении
- •При вставке кортежа в дочернее отношение
- •При обновлении кортежа в дочернем отношении
- •Глава 4. Реляционная алгебра Обзор реляционной алгебры
- •Замкнутость реляционной алгебры
- •Отношения, совместимые по типу
- •Оператор переименования атрибутов
- •Теоретико-множественные операторы Объединение
- •Пересечение
- •Вычитание
- •Декартово произведение
- •Специальные реляционные операторы Выборка (ограничение, селекция)
- •Проекция
- •Соединение
- •Общая операция соединения
- •Тэта-соединение
- •Экви-соединение
- •Естественное соединение
- •Деление
- •Примеры использования реляционных операторов
- •Невыразимость транзитивного замыкания реляционными операторами
- •Кросс-таблицы
- •Реляционное исчисление
- •Кортежные переменные и правильно построенные формулы
- •Целевые списки и выражения реляционного исчисления
- •Реляционное исчисление доменов
- •Глава 6. Нормальные формы отношений Этапы разработки базы данных
- •Критерии оценки качества логической модели данных
- •Адекватность базы данных предметной области
- •Легкость разработки и сопровождения базы данных
- •Скорость операций обновления данных (вставка, обновление, удаление)
- •Скорость операций выборки данных
- •Основной пример
- •1Нф (Первая Нормальная Форма)
- •Аномалии обновления
- •Аномалии вставки (insert)
- •Аномалии обновления (update)
- •Аномалии удаления (delete)
- •Функциональные зависимости
- •Определение функциональной зависимости
- •Функциональные зависимости отношений и математическое понятие функциональной зависимости
- •2Нф (Вторая Нормальная Форма)
- •Анализ декомпозированных отношений
- •Оставшиеся аномалии вставки (insert)
- •Оставшиеся аномалии обновления (update)
- •Оставшиеся аномалии удаления (delete)
- •3Нф (Третья Нормальная Форма)
- •Алгоритм нормализации (приведение к 3нф)
- •Анализ критериев для нормализованных и ненормализованных моделей данных Сравнение нормализованных и ненормализованных моделей
- •Oltp и olap-системы
- •Корректность процедуры нормализации – декомпозиция без потерь. Теорема Хеза
- •Глава 7 Нормальные формы более высоких порядков
- •Нфбк (Нормальная Форма Бойса-Кодда)
- •4Нф (Четвертая Нормальная Форма)
- •5Нф (Пятая Нормальная Форма)
- •Продолжение алгоритма нормализации (приведение к 5нф)
- •Глава 8. Элементы модели «сущность-связь»
- •Основные понятия er-диаграмм
- •Нормальные формы er-схем
- •Более сложные элементы er-модели
- •Получение реляционной схемы из er-схемы
- •Пример разработки простой er-модели
- •Концептуальные и физические er-модели
- •Внутренняя организация реляционных субд Cтруктуры внешней памяти, методы организации индексов
- •Хранение отношений
- •Индексы
- •Хэширование
- •Журнальная информация
- •Служебная информация
- •Управление транзакциями, сериализация транзакций
- •Транзакции и целостность баз данных
- •Изолированность пользователей
- •Сериализация транзакций
- •Методы сериализации транзакций
- •Синхронизационные захваты
- •Гранулированные синхронизационные захваты
- •Предикатные синхронизационные захваты
- •Тупики, распознавание и разрушение
- •Метод временных меток
- •Журнализация изменений бд
- •Журнализация и буферизация
- •Индивидуальный откат транзакции
- •Восстановление после мягкого сбоя
- •Физическая согласованность базы данных
- •Восстановление после жесткого сбоя
- •Глава 5. Элементы языка sql
- •Предварительные сведения о работе с sql сервером.
- •InterBase сервер
- •Выполнение в ibConsole
- •Р егистрация псевдонима (алиаса).
- •Пользователи.
- •С оздание модельных бд.
- •Сеанс sql
- •Структура учебных баз данных
- •Операторы sql
- •Операторы ddl (Data Definition Language) - операторы определения объектов базы данных
- •Операторы dml (Data Manipulation Language) - операторы манипулирования данными
- •Операторы dql (Data Query Language) – операторы запросов к данным
- •Операторы dcl (Data Control Language) - защиты и управления данными
- •Основные типы данных
- •Строки фиксированной длины
- •Строки переменной длины
- •Числовые значения
- •Десятичные значения
- •Десятичные значения с плавающей точкой
- •Значения даты и времени
- •Буквальные значения
- •Значения null
- •Значения типа boolean
- •Пользовательские типы данных
- •Типы данных InterBase
- •Управление объектами базы данных
- •Что такое объекты базы данных?
- •Что такое схема?
- •Поля и столбцы
- •Оператор create database
- •Синтаксис
- •Примеры
- •Оператор create table
- •Синтаксис
- •Примеры
- •Ключевое слово storage (в InterBase не действует!)
- •Соглашения о присвоении имен
- •Команда alter table
- •Синтаксис
- •Примеры
- •Модификация элементов таблицы
- •Добавление столбцов, требующих обязательного ввода данных
- •Пример:
- •Изменение столбцов
- •Создание таблицы на основе уже существующей
- •Удаление таблиц
- •Условия целостности
- •Ключевые поля
- •Требования уникальности
- •Внешние ключи
- •Атрибут not null
- •Использование условий проверки
- •Удаление условий
- •Определение представлений
- •Оператор create view (InterBase) Описание
- •Синтаксис
- •Примеры
- •Определение привилегий
- •Оператор grant (InterBase) Описание
- •Синтаксис
- •Примеры
- •Вопросы и ответы
- •Практикум
- •Примеры
- •Манипуляция данными
- •Обзор возможностей манипуляции данными
- •Заполнение таблиц новыми данными
- •Ввод данных в таблицу
- •Ввод данных в определенные столбцы таблицы
- •Ввод данных из другой таблицы
- •Ввод значений null
- •Обновление уже имеющихся данных
- •Обновление значений одного столбца
- •Обновление нескольких столбцов в одной или нескольких записях
- •Удаление данных из таблиц
- •Примеры использования операторов манипулирования данными
- •Знакомство с запросами
- •Что такое запрос?
- •Оператор select
- •Синтаксис оператора выборки данных (select)
- •Синтаксис оператора выборки
- •Синтаксис
- •Примеры
- •Ключевое слово select
- •Ключевое слово from
- •Использование условий для отбора данных
- •Сортировка вывода
- •Учет регистра символов
- •Примеры простых запросов
- •Подсчет записей в таблице
- •Получение данных из таблиц других пользователей
- •Псевдонимы столбцов
- •Упражнения
- •Операции в условиях для отбора данных
- •Что такое операции в sql?
- •Операции сравнения
- •Равенство
- •Неравенство
- •«Меньше» и «больше»
- •Примеры комбинирования операций сравнения
- •Логические операции
- •Использование операторов exists, any, all, и some Описание учебной базы данных
- •Операции конъюнкции и дизъюнкции
- •Отрицание условий с помощью операции отрицания
- •Неравенство
- •Деление
- •Комбинирование арифметических операций
- •Вопросы и ответы
- •Подведение итогов по данным запроса
- •Что такое итоговые функции?
- •Функция count
- •Функция sum
- •Функция avg
- •Функция max
- •Функция min
- •Описание
- •Синтаксис
- •Примеры
- •Описание
- •Примеры
- •Описание
- •Синтаксис
- •Примеры
- •Описание
- •Синтаксис
- •Примеры
- •Описание
- •Синтаксис
- •Примеры
- •Сортировка и группирование данных
- •Зачем группировать данные?
- •Ключевое слово group by
- •Группирование выбранных данных
- •Создание групп и использование итоговых функций
- •Представление имен столбцов числами
- •Ключевое слово having
- •Объединение таблиц в запросах
- •Отбор данных из нескольких таблиц
- •Типы связывания
- •Компоненты условия связывания
- •Связывание по равенству
- •Естественное связывание
- •Использование псевдонимов для имен таблиц
- •Связывание по неравенству
- •Внешнее связывание
- •Рекурсивное связывание
- •Связывание по нескольким ключам
- •Вопросы связывания
- •Использование связующей таблицы
- •Декартово произведение
- •Вопросы и ответы
- •Практикум
- •Упражнения
- •Использование подзапросов
- •Что такое подзапрос?
- •Подзапросы в операторе select
- •Подзапросы в операторе insert
- •Подзапросы в операторе update
- •Подзапросы в операторе delete
- •Подзапросы внутри подзапросов
- •Связанные подзапросы
- •Объединение запросов
- •Обычные и составные запросы
- •Зачем использовать составные запросы?
- •Команды построения сложных запросов
- •Команда union
- •Команда union all
- •Команда intersect
- •Команда except
- •Использование order by в составных запросах
- •Использование group by в составных запросах
- •Обеспечение правильности результатов
- •Примеры использования оператора select
- •Отбор данных из одной таблицы
- •Отбор данных из нескольких таблиц
- •Использование имен корреляции (алиасов, псевдонимов)
- •Использование агрегатных функций в запросах
- •Использование агрегатных функций с группировками
- •Использование подзапросов
- •Использование объединения, пересечения и разности
- •Синтаксис соединенных таблиц
- •Синтаксис условных выражений раздела where
- •Порядок выполнения оператора select
- •Стадия 1. Выполнение одиночного оператора select
- •Стадия 2. Выполнение операций union, except, intersect
- •Стадия 3. Упорядочение результата
- •Как на самом деле выполняется оператор select
- •Оператор соединения
- •Оператор пересечения
- •Оператор деления
- •Использование индексов для ускорения поиска данных
- •Что такое индекс?
- •Принцип работы индексов
- •Команда create index
- •Типы индексов
- •Простые индексы
- •Уникальные индексы
- •Составные индексы
- •Простые и составные индексы
- •Неявные индексы
- •Когда следует создавать индекс?
- •Когда не следует создавать индекс?
- •Удаление индексов
- •Повышение эффективности работы с базой данных
- •Что означает оптимизация операторов sql?
- •Оптимизация базы данных и оптимизация операторов sql
- •Форматирование операторов sql
- •Форматирование операторов для лучшего восприятия
- •Правильный порядок таблиц в выражении from
- •Правильный порядок условий связывания
- •Наиболее ограничительное условие
- •Полное сканирование таблиц
- •Когда и как избегать полного сканирования таблиц
- •Другие аспекты оптимизации
- •Использование like и знаков подстановки
- •Замена операций or выражением с ключевым словом in
- •Недостатки использования выражения с ключевым словом having
- •Долгие операции сортировки
- •Использование готовых процедур
- •Отмена использования индексов в больших пакетных операциях
- •Средства для анализа производительности
- •Создание и использование представлений и синонимов
- •Что такое представление?
- •Использование представлений для защиты данных
- •Использование представлений для управления выводом данных
- •Хранение представлений
- •Создание представлений
- •Создание представления для данных одной таблицы
- •Создание представления для данных нескольких таблиц
- •Создание представления на основе другого представления
- •Уровни зависимости представлений
- •Опция with check option
- •Опции cascaded и local
- •Синтаксис
- •Примеры
- •Обновление данных представления
- •Представления и выражение order by
- •Удаление представлений
- •Что такое синонимы? (InterBase не поддержвается)
- •Управление синонимами
- •Создание синонимов
- •Удаление синонимов
- •Триггеры и хранимые процедуры (InterBase) sql для триггеров и хранимых процедур в InterBase
- •Обработка исключений
- •Обработка ошибок sql
- •Обработка ошибок InterBase
- •Комментарий
- •Триггеры и их назначение
- •Синтаксис create trigger
- •Примеры
- •Дополнительные сведения по работе с генераторами
- •Хранимые процедуры и их назначение
- •Процедуры для работы с датой и временем
Глава 7 Нормальные формы более высоких порядков 74
НФБК (Нормальная Форма Бойса-Кодда) 74
4НФ (Четвертая Нормальная Форма) 76
5НФ (Пятая Нормальная Форма) 79
Выводы 82
Глава 8. Элементы модели «сущность-связь» 83
Основные понятия ER-диаграмм 83
ER-модель Oracle 86
Нормальные формы ER-схем 87
Более сложные элементы ER-модели 87
Пример разработки простой ER-модели 89
Концептуальные и физические ER-модели 92
Выводы 93
Внутренняя организация реляционных СУБД 94
Cтруктуры внешней памяти, методы организации индексов 94
Хранение отношений 94
Индексы 96
Журнальная информация 98
Служебная информация 98
Управление транзакциями, сериализация транзакций 99
Транзакции и целостность баз данных 99
Изолированность пользователей 100
Сериализация транзакций 101
Методы сериализации транзакций 101
Синхронизационные захваты 101
Метод временных меток 105
Журнализация изменений БД 105
Журнализация и буферизация 106
Индивидуальный откат транзакции 107
Восстановление после мягкого сбоя 107
Физическая согласованность базы данных 108
Восстановление после жесткого сбоя 109
Глава 5. Элементы языка sql 110
Предварительные сведения о работе с SQL сервером. 110
InterBase сервер 110
Выполнение в IBConsole 110
Регистрация псевдонима (алиаса). 111
Пользователи. 111
Создание модельных БД. 112
Сеанс SQL 112
Структура учебных баз данных 113
Операторы SQL 114
Операторы DDL (Data Definition Language) - операторы определения объектов базы данных 114
Операторы DML (Data Manipulation Language) - операторы манипулирования данными 114
Операторы DQL (Data Query Language) – операторы запросов к данным 114
Операторы DCL (Data Control Language) - защиты и управления данными 114
Основные типы данных 114
Строки фиксированной длины 114
Строки переменной длины 115
Числовые значения 115
Десятичные значения 115
Целые 116
Десятичные значения с плавающей точкой 116
Значения даты и времени 116
Буквальные значения 116
Значения NULL 117
Значения типа BOOLEAN 117
Пользовательские типы данных 117
Типы данных InterBase 118
BLOB 118
CHAR 118
DATE 118
TIME 118
TIMESTAMP 118
DECIMAL 118
DOUBLE PRECISION 118
FLOAT 119
INTEGER 119
NUMERIC 119
SMALLINT 119
VARCHAR 119
Управление объектами базы данных 120
Что такое объекты базы данных? 120
Что такое схема? 120
Поля и столбцы 121
Оператор CREATE DATABASE 121
Оператор CREATE TABLE 122
CREATE TABLE (InterBase) 123
Ключевое слово STORAGE (В InterBase НЕ действует!) 126
Команда ALTER TABLE 127
Модификация элементов таблицы 129
Добавление столбцов, требующих обязательного ввода данных 129
Изменение столбцов 130
Создание таблицы на основе уже существующей 130
Удаление таблиц 131
Условия целостности 131
Ключевые поля 131
Требования уникальности 132
Внешние ключи 132
Атрибут NOT NULL 133
Использование условий проверки 133
Удаление условий 133
Определение представлений 134
Определение привилегий 136
Примеры 137
Обзор возможностей манипуляции данными 149
Заполнение таблиц новыми данными 149
Ввод данных в таблицу 149
Ввод данных в определенные столбцы таблицы 149
Ввод данных из другой таблицы 150
Ввод значений NULL 150
Обновление уже имеющихся данных 151
Обновление значений одного столбца 151
Обновление нескольких столбцов в одной или нескольких записях 151
Удаление данных из таблиц 151
DML в InterBase 152
DELETE 152
INSERT 152
UPDATE 152
Примеры использования операторов манипулирования данными 153
Знакомство с запросами 154
Что такое запрос? 154
Оператор SELECT 154
Синтаксис оператора выборки данных (SELECT) 154
Select в InterBase 155
SELECT 155
Синтаксис 155
Примеры 157
Ключевое слово SELECT 157
Ключевое слово FROM 158
Использование условий для отбора данных 158
Сортировка вывода 159
Учет регистра символов 160
Примеры простых запросов 160
Подсчет записей в таблице 160
Получение данных из таблиц других пользователей 161
Псевдонимы столбцов 161
Резюме 161
Операции в условиях для отбора данных 161
Что такое операции в SQL? 162
Операции сравнения 162
Равенство 162
Неравенство 162
«Меньше» и «больше» 162
Логические операции 163
Использование операторов EXISTS, ANY, ALL, И SOME 166
Описание учебной базы данных 166
Операции конъюнкции и дизъюнкции 171
Арифметические операции 173
Резюме 175
Подведение итогов по данным запроса 176
Что такое итоговые функции? 176
Функция COUNT 176
Функция SUM 177
Функция AVG 177
Функция MAX 178
Функция MIN 178
Резюме 179
InterBase 180
AVG() 180
Описание 180
Синтаксис 180
Примеры 180
CAST() 181
Описание 181
Синтаксис 181
Примеры 181
COUNT() 181
Описание 181
Синтаксис 181
Примеры 181
MAX() 181
Описание 181
Синтаксис 182
Примеры 182
MIN() 182
Описание 182
Синтаксис 182
Примеры 182
SUM() 182
Описание 182
Синтаксис 182
Примеры 182
Сортировка и группирование данных 183
Зачем группировать данные? 183
Ключевое слово GROUP BY 183
Группирование выбранных данных 183
Создание групп и использование итоговых функций 184
Представление имен столбцов числами 185
GROUP BY И ORDER BY 185
Ключевое слово HAVING 186
Резюме 187
Объединение таблиц в запросах 188
Отбор данных из нескольких таблиц 188
Типы связывания 188
Компоненты условия связывания 189
Связывание по равенству 189
Естественное связывание 189
Использование псевдонимов для имен таблиц 190
Связывание по неравенству 190
Внешнее связывание 191
InterBase 192
Рекурсивное связывание 192
Связывание по нескольким ключам 193
Вопросы связывания 193
Использование связующей таблицы 194
Декартово произведение 194
Резюме 195
Вопросы и ответы 195
Практикум 195
Упражнения 196
Использование подзапросов 197
Что такое подзапрос? 197
Подзапросы в операторе SELECT 197
Подзапросы в операторе INSERT 198
Подзапросы в операторе UPDATE 198
Подзапросы в операторе DELETE 199
Подзапросы внутри подзапросов 199
Связанные подзапросы 200
Резюме 200
Объединение запросов 201
Обычные и составные запросы 202
Зачем использовать составные запросы? 202
Команды построения сложных запросов 202
Команда UNION 202
Команда UNION ALL 203
Команда INTERSECT 204
Команда EXCEPT 204
Использование ORDER BY в составных запросах 205
Использование GROUP BY в составных запросах 206
Обеспечение правильности результатов 207
Резюме 207
Примеры использования оператора SELECT 208
Отбор данных из одной таблицы 208
Отбор данных из нескольких таблиц 209
Использование имен корреляции (алиасов, псевдонимов) 211
Использование агрегатных функций в запросах 213
Использование агрегатных функций с группировками 213
Использование подзапросов 214
Использование объединения, пересечения и разности 215
Синтаксис соединенных таблиц 216
Синтаксис условных выражений раздела WHERE 217
Порядок выполнения оператора SELECT 219
Стадия 1. Выполнение одиночного оператора SELECT 219
Стадия 2. Выполнение операций UNION, EXCEPT, INTERSECT 219
Стадия 3. Упорядочение результата 219
Как на самом деле выполняется оператор SELECT 219
Реализация реляционной алгебры средствами оператора SELECT (Реляционная полнота SQL) 220
Оператор декартового произведения 220
Оператор проекции 220
Оператор выборки 221
Оператор объединения 221
Оператор вычитания 221
Оператор соединения 221
Оператор пересечения 221
Оператор деления 221
Выводы 222
Использование индексов для ускорения поиска данных 222
Что такое индекс? 223
Принцип работы индексов 223
Команда CREATE INDEX 223
CREATE INDEX (InterBase) 224
Типы индексов 224
Простые индексы 224
Уникальные индексы 225
Составные индексы 225
Простые и составные индексы 225
Неявные индексы 225
Когда следует создавать индекс? 225
Когда не следует создавать индекс? 226
Удаление индексов 227
Резюме 227
Повышение эффективности работы с базой данных 227
Что означает оптимизация операторов SQL? 228
Оптимизация базы данных и оптимизация операторов SQL 228
Форматирование операторов SQL 228
Форматирование операторов для лучшего восприятия 228
Правильный порядок таблиц в выражении FROM 229
Правильный порядок условий связывания 230
Наиболее ограничительное условие 230
Полное сканирование таблиц 231
Когда и как избегать полного сканирования таблиц 231
Другие аспекты оптимизации 231
Использование LIKE и знаков подстановки 231
Замена операций OR выражением с ключевым словом IN 232
Недостатки использования выражения с ключевым словом HAVING 232
Долгие операции сортировки 232
Использование готовых процедур 232
Отмена использования индексов в больших пакетных операциях 232
Средства для анализа производительности 233
Резюме 233
Создание и использование представлений и синонимов 234
Что такое представление? 234
Использование представлений для защиты данных 235
Использование представлений для управления выводом данных 236
Хранение представлений 236
Создание представлений 236
Создание представления для данных одной таблицы 236
Создание представления для данных нескольких таблиц 237
Создание представления на основе другого представления 237
Уровни зависимости представлений 238
Опция WITH CHECK OPTION 238
Опции CASCADED и LOCAL 239
CREATE VIEW (InterBase) 239
Синтаксис 240
Примеры 240
Обновление данных представления 241
Добавление строк в представление 241
Удаление строк из представления 241
Связывание представлений с таблицами и другими представлениями 241
Создание таблицы из представления 241
Представления и выражение ORDER BY 242
Удаление представлений 242
Что такое синонимы? (InterBase не поддержвается) 242
Управление синонимами 243
Создание синонимов 243
Удаление синонимов 243
Резюме 243
Триггеры и хранимые процедуры (InterBase) 245
SQL для триггеров и хранимых процедур в InterBase 245
CREATE EXCEPTION 246
Обработка исключений 249
Обработка ошибок SQL 249
Обработка ошибок InterBase 249
Комментарий 249
Триггеры и их назначение 250
Синтаксис CREATE TRIGGER 251
Примеры 252
CREATE GENERATOR 253
GEN_ID() 253
SET GENERATOR 254
SET TERM 254
Дополнительные сведения по работе с генераторами 255
Хранимые процедуры и их назначение 257
CREATE PROCEDURE 258
EXECUTE PROCEDURE 261
DROP PROCEDURE 261
Процедуры для работы с датой и временем 261
First/last day of month 261
