2008 г.
Базы данных. Вводный курс
Сергей Кузнецов
Содержание
- Предисловие
- Лекция 1. Эволюция устройств внешней памяти и программных систем управления данными
- 1.1. Введение
- 1.2. Устройства внешней памяти
- 1.3. Файловые системы
- 1.3.1. Структуры файлов
- 1.3.2. Логическая структура файловых систем и именование файлов
- 1.3.3. Авторизация доступа к файлам
- 1.3.4. Синхронизация многопользовательского доступа
- 1.3.5. Области разумного применения файлов
- 1.4. Потребности информационных систем
- 1.4.1. Структуры данных
- 1.4.2. Целостность данных
- 1.4.3. Языки запросов
- 1.4.4. Транзакции, журнализация и многопользовательский режим
- 1.4.5. СУБД как независимый системный компонент
- 1.5. Заключение
- Лекция 2. Понятие модели данных. Обзор разновидностей моделей данных
- 2.1. Введение
- 2.2. Модель данных
- 2.3. Ранние модели данных
- 2.3.1. Модель данных инвертированных таблиц
- 2.3.2. Иерархическая модель данных
- 2.3.3. Сетевая модель данных
- 2.4. Неформальное введение в реляционную модель данных
- 2.4.1. Реляционные структуры данных
- 2.4.2. Манипулирование реляционными данными
- 2.4.3. Целостность в реляционной модели данных
- 2.5. Современные модели данных
- 2.5.1. Объектно-ориентированная модель данных
- 2.5.2. Модель данных SQL
- 2.5.3. Истинная реляционная модель
- 2.6. Заключение
- Лекция 3. Введение в реляционную модель данных
- 3.1. Введение
- 3.2. Основные понятия реляционных баз данных
- 3.2.1. Тип данных
- 3.2.2. Домен
- 3.2.3. Заголовок отношения, кортеж, тело отношения, значение отношения, переменная отношения
- 3.2.4. Первичный ключ и интуитивная интерпретация реляционных понятий
- 3.3. Фундаментальные свойства отношений
- 3.3.1. Отсутствие кортежей-дубликатов, первичный и возможные ключи отношений
- 3.3.2. Отсутствие упорядоченности кортежей
- 3.3.3. Отсутствие упорядоченности атрибутов
- 3.3.4. Атомарность значений атрибутов, первая нормальная форма отношения
- 3.4. Реляционная модель данных
- 3.4.1. Общая характеристика
- 3.4.2. Целостность сущности и ссылок
- 3.5. Заключение
- Лекция 4. Базисные средства манипулирования реляционными данными: реляционная алгебра Кодда
- 4.1. Введение
- 4.2. Обзор реляционной алгебры Кодда
- 4.2.1. Общая интерпретация реляционных операций
- 4.2.2. Замкнутость реляционной алгебры и операция переименования
- 4.3. Особенности теоретико-множественных операций реляционной алгебры
- 4.3.1. Операции объединения, пересечения, взятия разности. Совместимость по объединению
- 4.3.2. Операция расширенного декартова произведения и совместимость отношений относительно этой операции
- 4.4. Специальные реляционные операции
- 4.4.1. Операция ограничения
- 4.4.2. Операция взятия проекции
- 4.4.3. Операция соединения отношений
- 4.4.4. Операция деления отношений
- 4.5. Заключение
- Лекция 5. Базисные средства манипулирования реляционными данными: алгебра A Дейта и Дарвена
- 5.1. Введение
- 5.2. Базовые операции Алгебры A
- 5.2.1. Операция реляционного дополнения
- 5.2.2. Операция удаления атрибута
- 5.2.3. Операция переименования
- 5.2.4. Операция реляционной конъюнкции
- 5.2.5. Операция реляционной дизъюнкции
- 5.3. Полнота Алгебры A
- 5.3.1. Выводимость операции взятия разности
- 5.3.2. Интерпретация операции ограничения
- 5.3.3. Соединения общего вида
- 5.3.4. Реляционное деление
- 5.4. Избыточность Алгебры A
- 5.4.1. Реляционные аналоги штриха Шеффера и стрелки Пирса
- 5.4.2. Избыточность операции переименования
- 5.5. Заключение
- Лекция 6. Базисные средства манипулирования реляционными данными: реляционное исчисление
- 6.1. Введение
- 6.2. Исчисление кортежей
- 6.2.1. Правильно построенные формулы
- 6.2.2. Целевые списки и выражения реляционного исчисления
- 6.3. Исчисление доменов
- 6.3.1. Условия членства
- 6.3.2. Выражения исчисления доменов
- 6.4. Заключение
- Лекция 7. Элементы теории реляционных баз данных: функциональные зависимости и декомпозиция без потерь
- 7.1. Введение
- 7.2. Функциональные зависимости
- 7.2.1. Общие определения
- 7.2.2. Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
- 7.2.3. Минимальное покрытие множества функциональных зависимостей
- 7.3. Декомпозиция без потерь и функциональные зависимости
- 7.3.1. Корректные и некорректные декомпозиции отношений. Теорема Хита
- 7.3.2. Диаграммы функциональных зависимостей
- 7.4. Заключение
- Лекция 8. Проектирование реляционных баз данных на основе принципов нормализации: первые шаги нормализации
- 8.1. Введение
- 8.2. Минимальные функциональные зависимости и вторая нормальная форма
- 8.2.1. Аномалии обновления, возникающие из-за наличия неминимальных функциональных зависимостей
- 8.2.2. Возможная декомпозиция
- 8.2.3. Вторая нормальная форма
- 8.3. Нетранзитивные функциональные зависимости и третья нормальная форма
- 8.3.1. Аномалии обновлений, возникающие из-за наличия транзитивных функциональных зависимостей
- 8.3.2. Возможная декомпозиция
- 8.3.3. Третья нормальная форма
- 8.3.4. Независимые проекции отношений. Теорема Риссанена
- 8.4. Перекрывающиеся возможные ключи и нормальная форма Бойса-Кодда
- 8.4.1. Аномалии обновлений, связанные с наличием перекрывающихся возможных ключей
- 8.4.2. Нормальная форма Бойса-Кодда
- 8.4.3. Всегда ли следует стремиться к BCNF?
- 8.5. Заключение
- Лекция 9. Проектирование реляционных баз данных на основе принципов нормализации: дальнейшая нормализация
- 9.1. Введение
- 9.2. Многозначные зависимости и четвертая нормальная форма
- 9.2.1. Аномалии обновлений при наличии многозначных зависимостей и возможная декомпозиция
- 9.2.2. Многозначные зависимости. Теорема Фейджина. Четвертая нормальная форма
- 9.3. Зависимости проекции/соединения и пятая нормальная форма
- 9.3.1. N-декомпозируемые отношения
- 9.3.2. Зависимость проекции/соединения
- 9.3.3. Аномалии, вызываемые наличием зависимости проекции/соединения
- 9.3.4. Устранение аномалий обновления в 3-декомпозиции
- 9.3.5. Пятая нормальная форма
- 9.4. Заключение
- Лекция 10. Проектирование реляционных баз данных с использованием семантических моделей: ER-диаграммы
- 10.1. Введение
- 10.1.1. Ограниченность реляционной модели при проектировании баз данных
- 10.1.2. Семантические модели данных
- 10.2. Семантическая модель Entity-Relationship (Сущность-Связь)
- 10.2.1. Основные понятия ER-модели
- 10.2.2. Уникальные идентификаторы типов сущности
- 10.3. Нормальные формы ER-диаграмм
- 10.3.1. Первая нормальная форма ER-диаграммы
- 10.3.2. Вторая нормальная форма ER-диаграммы
- 10.3.3. Третья нормальная форма ER-диаграммы
- 10.4. Более сложные элементы ER-модели
- 10.4.1. Наследование типов сущности и типов связи
- 10.4.2. Взаимно исключающие связи
- 10.5. Получение реляционной схемы из ER-диаграммы
- 10.5.1. Базовые приемы
- 10.5.2. Представление в реляционной схеме супертипов и подтипов сущности
- 10.5.3. Представление в реляционной схеме взаимно исключающих связей
- 10.6. Заключение
- Лекция 11. Проектирование реляционных баз данных с использованием семантических моделей: диаграммы классов языка UML
- 11.1. Введение
- 11.2. Основные понятия диаграмм классов UML
- 11.2.1. Классы, атрибуты, операции
- 11.2.2. Категории связей. Связь-зависимость
- 11.2.3. Связи-обобщения и механизм наследования классов в UML
- 11.2.4. Связи-ассоциации: роли, кратность, агрегация
- 11.3. Ограничения целостности и язык OCL
- 11.3.1. Общая характеристика языка OCL
- 11.3.2. Инвариант класса
- 11.3.3. Операции над множествами, мультимножествами и последовательностями
- 11.3.4. Примеры инвариантов
- 11.3.5. Плюсы и минусы использования языка OCL при проектировании реляционных баз данных
- 11.4. Получение схемы реляционной базы данных из диаграммы классов UML
- 11.5. Заключение
- Лекция 12. Пример общей организации СУБД. Физическое представление реляционных баз данных во внешней памяти. Индексные структуры
- 12.1. Введение
- 12.2. Основные понятия, цели и общая организация System R
- 12.2.1. Используемая терминология
- 12.2.2. Цели System R и их связь с общей организацией системы
- 12.2.3. Организация внешней памяти в базах данных System R
- 12.2.4. Интерфейс RSS
- 12.3. Общие принципы организации данных во внешней памяти в SQL-ориентированных СУБД
- 12.3.1. Хранение таблиц
- 12.3.2. Индексы
- 12.3.3. Журнальная информация
- 12.3.4. Служебная информация
- 12.4. Заключение
- Лекция 13. Методы управления транзакциями. Сихронизационные блокировки, временные метки и версии
- 13.1. Введение
- 13.2. Общее понятие транзакции и основные характеристики транзакций
- 13.2.1. Атомарность транзакций
- 13.2.2. Транзакции и целостность баз данных
- 13.2.3. Изолированность транзакций
- 13.2.4. Сериализация транзакций
- 13.3. Методы сериализации транзакций
- 13.3.1. Синхронизационные блокировки
- 13.3.2. Синхронизационные тупики, их распознавание и разрушение
- 13.3.3. Метод временных меток
- 13.3.4. Методы сериализации транзакций на основе поддержки версий объектов базы данных
- 13.4. Заключение
- Лекция 14. Средства журнализации и восстановления баз данных
- 14.1. Введение
- 14.2. Буферизация блоков базы данных в основной памяти и ее связь с журнализацией
- 14.2.1. Управление буферным пулом базы данных
- 14.2.2. Физическая синхронизация
- 14.2.3. Протокол упреждающей записи в журнал и его связь с буферизацией
- 14.3. Индивидуальный откат транзакции
- 14.4. Восстановление после мягкого сбоя
- 14.4.1. Схема восстановления от точки физической согласованности
- 14.4.2. Восстановление физической согласованности базы данных
- 14.5. Восстановление базы данных после жесткого сбоя
- 14.6. Заключение
- Лекция 15. Общее введение в SQL, типы данных и средства определения доменов
- 15.1. Введение
- 15.1.1. Краткая история языка SQL
- 15.1.2. Структура языка SQL
- 15.2. Типы данных SQL
- 15.2.1. Tочные числовые типы
- 15.2.2. Приближенные числовые типы
- 15.2.3. Типы символьных строк
- 15.2.4. Типы битовых строк
- 15.2.5. Типы даты и времени
- 15.2.6. Булевский тип
- 15.2.7. Типы коллекций
- 15.2.8. Анонимные строчные типы
- 15.2.9. Типы, определяемые пользователем
- 15.2.10. Ссылочные типы
- 15.3. Средства определения, изменения определения и отмены определения доменов
- 15.3.1. Определение домена
- 15.3.2. Примеры определений доменов
- 15.3.3. Изменение определения домена
- 15.3.4. Примеры изменения определения домена
- 15.3.5. Отмена определения домена
- 15.4. Неявные и явные преобразования типа или домена
- 15.4.1. Неявные преобразования типов в SQL
- 15.4.2. Явные преобразования типов или доменов и оператор CAST
- 15.5. Заключение
- Лекция 16. Средства определения базовых таблиц и ограничений целостности
- 16.1. Введение
- 16.2. Средства определения, изменения и ликвидации базовых таблиц
- 16.2.1. Определение базовой таблицы
- 16.2.2. Определение табличного ограничения
- 16.3. Средства определения и отмены общих ограничений целостности
- 16.3.1. Определение общих ограничений целостности
- 16.3.2. Отмена определения общего ограничения целостности
- 16.3.3. Немедленная и откладываемая проверка ограничений
- 16.4. Заключение
- Лекция 17. Общая характеристика оператора SELECT и организация списка ссылок на таблицы в разделе FROM
- 17.1. Введение
- 17.2. Скалярные выражения
- 17.2.1. Общие синтаксические правила построения скалярных выражений
- 17.2.2. Численные выражения
- 17.2.3. Выражения, значениями которых являются символьные или битовые строки
- 17.2.4. Выражения даты-времени
- 17.2.5. Булевские выражения
- 17.2.6. Выражения с переключателем
- 17.3. Общая структура оператора выборки в языке SQL
- 17.3.1. Семантика оператора выборки
- 17.3.2. Ссылки на таблицы раздела FROM
- 17.3.3. Табличное выражение, спецификация запроса и выражение запросов
- 17.3.4. Раздел WITH выражения запросов
- 17.3.5. Конструкторы значения строки и таблицы
- 17.3.6. Ссылки на базовые, представляемые и порождаемые таблицы
- 17.3.7. Представляемые таблицы, или представления (VIEW)
- 17.4. Заключение
- Лекция 18. Предикаты раздела WHERE оператора SELECT
- 18.1. Введение
- 18.2. Логические выражения раздела WHERE
- 18.2.1. Предикат сравнения
- 18.2.2. Предикат between
- 18.2.3. Предикат is null
- 18.2.4. Предикат in
- 18.2.5. Предикат like
- 18.2.6. Предикат similar
- 18.2.7. Предикат exists
- 18.2.8. Предикат unique
- 18.2.9. Предикат overlaps
- 18.2.10. Предикат сравнения с квантором
- 18.2.11. Предикат match
- 18.2.12. Предикат is distinct
- 18.3. Заключение
- Лекция 19. Группировка и условия раздела HAVING, порождаемые и соединенные таблицы
- 19.1. Введение
- 19.1.1. Внешние соединения
- 19.2. Агрегатные функции, группировка и условия раздела HAVING
- 19.2.1. Семантика агрегатных функций
- 19.2.2. Результаты запросов и агрегатные функции
- 19.2.3. Логические выражения раздела HAVING
- 19.3. Ссылки на порождаемые таблицы в разделе FROM
- 19.3.1. Еще один способ формулировки запросов
- 19.3.2. Случаи, в которых без порождаемых таблиц обойтись невозможно
- 19.4. Более сложные конструкции оператора выборки
- 19.4.1. Соединенные таблицы
- 19.4.2. Порождаемые таблицы с горизонтальной связью (lateral_derived_table)
- 19.5. Заключение
- Лекция 20. Средства формулировки аналитических и рекурсивных запросов
- 20.1. Введение
- 20.2. Возможности формулирования аналитических запросов
- 20.2.1. Раздел GROUP BY ROLLUP
- 20.2.2. Агрегатная функция GROUPING
- 20.2.3. Раздел GROUP BY CUBE
- 20.3. Рекурсивные запросы
- 20.3.1. Определения, относящиеся к рекурсии
- 20.3.2. Рекурсивные запросы с разделом WITH
- 20.3.3. Рекурсивные представления
- 20.4. Заключение
- Лекция 21. Средства манипулирования данными
- 21.1. Введение
- 21.2. Базовые средства манипулирования данными
- 21.2.1. Оператор INSERT для вставки строк в существующие таблицы
- 21.2.2. Оператор UPDATE для модификации существующих строк в существующих таблицах
- 21.2.3. Оператор DELETE для удаления строк в существующих таблицах
- 21.3. Представления, над которыми возможны операции обновления
- 21.3.1. Представления, допускающие применение операций обновления, в стандарте SQL/92
- 21.3.2. Представления, допускающие применение операций обновления, в стандарте SQL:1999
- 21.3.3. Раздел WITH CHECK OPTION определения представления
- 21.3.4. Исторический очерк
- 21.4. Операции обновления баз данных и механизм триггеров
- 21.4.1. Понятие триггера в SQL:1999
- 21.4.2. Синтаксис определения триггеров и типы триггеров
- 21.4.3. Выполнение триггеров
- 21.4.4. Триггеры и ссылочные действия
- 21.5. Заключение
- Лекция 22. Средства языка SQL для обеспечения авторизации доступа к данным, управления транзакциями, сессиями и подключениями
- 22.1. Введение
- 22.2. Поддержка авторизации доступа к данным в языке SQL
- 22.2.1. Пользователи и роли
- 22.2.2. Применение идентификаторов пользователей и имен ролей
- 22.2.3. Создание и ликвидация ролей
- 22.2.4. Передача привилегий и ролей
- 22.2.5. Изменение текущих идентификаторов пользователей и имен ролей
- 22.2.6. Аннулирование привилегий и ролей
- 22.3. Управление транзакциями в SQL
- 22.3.1. ACID-транзакция
- 22.3.2. Порождение транзакций в SQL:1999
- 22.3.3. Уровни изоляции SQL-транзакции
- 22.3.4. Завершение транзакций
- 22.3.5. Транзакции и ограничения целостности
- 22.3.6. Точки сохранения
- 22.4. Подключения и сессии
- 22.4.1. Установление соединений
- 22.4.2. Операторы SQL для управления соединениями
- 22.5. Заключение
- Лекция 23. Объектные расширения
- 23.1. Введение
- 23.1.1. Истоки и краткая история объектно-реляционных баз данных
- 23.1.2. Объектная модель SQL
- 23.1.3. Цели лекции
- 23.2. Определяемые пользователями типы
- 23.2.1. Индивидуальные типы
- 23.2.2. Определение структурных типов
- 23.3. Типизированные таблицы
- 23.3.1. Определение типизированной таблицы
- 23.3.2. Ссылочные значения и REF-типы
- 23.3.3. Выборка данных из типизированных таблиц
- 23.3.4. Типизированные представления
- 23.4. Заключение
- Рекомендуемая литература
- 1. Книги на русском языке:
- 2. Классические статьи в русских переводах.
- 3. Неклассические статьи и другие материалы, доступные в Internet
- 4. Лучшие (в основном, не переведенные на русский язык) книги про SQL, модель данных ODMG и «истинную» реляционную модель
- 5. Статьи про System R, доступные в Internet
Содержание Вперёд