Часть 1. Проектирование
Тем: 4
Тема 1. Введение
Содержание
- Структура курса
- Развитие баз данных
- Требования к системам управления базами данных
- База данных на основе текстового файла
- База данных на основе файловой системы
- Иерархические базы данных
- Сетевые базы данных
- Реляционные базы данных
- Объектные базы данных
- Архитектура современных СУБД
- Обзор современных РСУБД
- Введение в SQL
- Ревизии стандарта SQL
- Пример создания базы данных
Экзаменационные вопросы
- Развитие баз данных
- Архитектура современной СУБД
Библиография
- Дейт К. Введение в системы баз данных
- Уидом Д., Ульман Д. Основы реляционных баз данных
- Гарсиа Молина Г., Уидом Д., Ульман Д. Системы баз данных полный курс
- Фаулер М. Архитектура корпоративных программных приложений
- Эмблер С. В., Садаладж П. Дж. Рефакторинг баз данных. Эволюционное проектирование
- Garcia-Molina H., Ullman J., Widom J. Database System Implementation
- Silberschatz A., Korth H.F., Sudarshan S. Database System Concepts
- Gulutzan P., Pelzer T. SQL-99 complete, really
- Silberschatz A., Korth H.F., Sudarshan S. Database System Concepts (Slides)
- Werstein P. Database Theory and Applications (Slides)
Домашнее задание 1. Установка и использование СУБД
- Установите систему управления реляционными базами данных.
- Узнайте, как в вашей СУБД исполнять SQL в интерактивном режиме.
- Узнайте, как в вашей СУБД исполнять SQL в пакетном режиме.
- Разберитесь, как в вашей СУБД осуществляется поддержка русского языка.
- Создайте базу данных и наполните ее в соответствии с примерами из презентации.
Ожидаемая структура проекта
-
Текстовая часть
- Описание предметной области с кратким описанием неочевидных сущностей и атрибутов.
- Предварительное разбиение на отношения (может отсутствовать).
- Для каждого отношения: определение функциональных зависимостей, нормализация до 5НФ, денормализация (при необходимости).
- Модель сущность-связь.
- Физическая модель (должна соответствовать ERM) с указанием типов для доменов.
-
Часть на SQL
ddl.sql
– описание таблиц и индексов.insert.sql
– добавление тестовых данных.select.sql
– запросы на получение данных и представления.update.sql
– запросы на изменение данных, хранимые процедуры и триггеры.
В рамках проекта:
-
Выберите тему проекта.
- Тема должна быть уникальной.
- Тема должна быть достаточно сложной.
- Нельзя брать темы: обучение в университете; торговля (как товарами, так и билетами); cоревнования по программированию.
Тема 2. Моделирование баз данных
Содержание
- Физическая модель базы данных
- Таблицы
- Ключи
- Ссылки
- Графическая нотация
- Модель сущность-связь
- Сущности
- Связи
- Ассоциации
- Слабые сущности
- Альтернативные нотации
- Преобразование модели сущность-связь в физическую модель
- Запись физической модели на языке DDL
- DDL как часть SQL
- Типы данных
- Описание ключей
- Описание ссылок
- Создание, изменение и удаление таблиц
Экзаменационные вопросы
- Физическая модель базы данных
- Модель сущность-связь
- Преобразование модели сущность-связь в физическую модель
Практические навыки
- Создание модели сущность-связь по словесному описанию
- Создание модели физической модели по словесному описанию
- Построение физической модели по модели сущность-связь
- Запись физической модели на DDL
Библиография
- Дейт К. Введение в системы баз данных (глава 14)
- Уидом Д., Ульман Д. Основы реляционных баз данных (глава 2)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 18 – SQL Table and View)
- Chen P. The Entity-Relationship Model: Toward a Unified View of Data
- Chen P. Entity-Relationship Modeling: Historical Events, Future Trends, and Lessons
- Hartmann S. Reasoning about participation constraints and Chen's constraints
- MySQL Data Definition Statements
- PostgreSQL Data Definition
- Oracle Managing tables
- MSSQL Server Transact-SQL statements
Домашнее задание 2. Моделирование БД «Университет»
Спроектируйте базу данных «Университет», позволяющую хранить информацию о факультетах, студентах, группах, преподавателях, дисциплинах и оценках.
- Составьте модель сущность-связь.
- Преобразуйте модель сущность-связь в физическую модель.
- Запишите физическую модель на языке SQL. Запись должна включать объявления ограничений.
- Создайте базу данных по спроектированной модели.
- Запишите операторы SQL, заполняющие базу тестовыми данными. Достаточно 2–3 записей на таблицу, если они в полной мере демонстрируют особенности БД.
Примечания
-
Не требуется поддержка:
- нескольких университетов;
- дисциплин по выбору;
- дисциплин с необычным распределением по группам (таких как физическая культура и иностранный язык);
- переводов между группами;
- исторических данных;
- нескольких оценок по одной дисциплине.
-
Многосеместровые дисциплины считаются по семестрам,
например:
- Математический анализ (семестр 1);
- Математический анализ (семестр 2).
Форма для сдачи ДЗ. Проверка проводится в полуавтоматическом режиме, поэтому строго соблюдайте указанные форматы.
В рамках проекта:
-
Сделайте предварительную схему для БД проекта на основе моделей:
- модель сущность-связь;
- физическая модель;
- определение схемы на SQL.
Тема 3. Реляционная модель и функциональные зависимости
Содержание
- Реляционная модель данных
- Отношение
- Кортежи
- Представление null'ов
- Отличия таблиц и отношений
- Ключи
- Надключи
- Ключи
- Требования к ключам
- Естественные и суррогатные ключи
- Выбор ключей
- Функциональные зависимости
- Определение и примеры
- Замыкание множества функциональных зависимостей
- Эквивалентность множеств функциональных зависимостей
- Правила вывода функциональных зависимостей
- Замыкание множество атрибутов
- Неприводимые множества функциональных зависимостей
Экзаменационные вопросы
- Реляционная модель данных. Ключи
- Функциональные зависимости: замыкание, эквивалентность и правила вывода
- Функциональные зависимости: замыкание атрибутов, неприводимые множества функциональных зависимостей, их построение
Практические навыки
- Выделение надключей и ключей отношения
- Определение функциональных зависимостей в отношении
- Построение замыкания множества атрибутов
- Построение неприводимого множества функциональных зависимостей, эквивалентного данному
Библиография
- Дейт К. Введение в системы баз данных (главы 9 и 11)
- Уидом Д., Ульман Д. Основы реляционных баз данных (глава 3)
- Armstrong W.W. Dependency Structures of Data Base Relationships
- Fagin R. Functional Dependencies in a Relational Database and Propositional Logic
- Beeri C., Fagin R., Howard J. A complete axiomatization for functional and multivalued dependencies in database relations
- Maier D. Maier D. - Minimum covers in the relational database model
Домашнее задание 3. Функциональные зависимости в БД «Университет»
Дано отношение с атрибутами StudentId, StudentName, GroupId, GroupName, GroupFacultyId, CourseId, CourseName, LecturerId, LecturerName, LecturerFacultyId, Mark, FacultyId, FacultyName, FacultyDeanId.
- Найдите функциональные зависимости в данном отношении.
- Найдите все ключи данного отношения.
-
Найдите замыкание множеств атрибутов:
- GroupId, CourseId;
- StudentId, CourseId;
- StudentId, LecturerId;
- StudentId, LecturerFacultyDeanId;
- GroupName, LecturerId.
- Найдите неприводимое множество функциональных зависимостей для данного отношения.
Примечания
-
Не требуется поддержка:
- нескольких университетов;
- дисциплин по выбору;
- дисциплин с необычным распределением по группам (таких как физическая культура и иностранный язык);
- переводов между группами;
- нескольких оценок по одной дисциплине.
- Многосеместровые дисциплины считаются по семестрам, например: Математический анализ (семестр 1), Математический анализ (семестр 2).
Форма для сдачи ДЗ. Проверка проводится в полуавтоматическом режиме, поэтому строго соблюдайте указанные форматы.
В рамках проекта:
- Определите набор атрибутов, необходимых для проекта, и определите отношения на них.
- Найдите функциональные зависимости полученных отношений.
- Найдите все ключи полученных отношений.
- Найдите неприводимые множества функциональных зависимостей для полученных отношений.
Тема 4. Нормализация баз данных
Содержание
- Цели и средства нормализации
- Нормализация
- Проекции и соединения
- Декомпозиция отношений
- Первые нормальные формы
- Аномалии
- Первая нормальная форма
- Вторая нормальная форма
- Третья нормальная форма
- Нормальная форма Бойса-Кодда
- Многозначные зависимости и четвертая нормальная форма
- Многозначные зависимости
- Четвертая нормальная форма
- Зависимости соединения и пятая нормальная форма
- Зависимости соединения
- Пятая нормальная форма
- Процесс нормализации и другие нормальные формы
- Иерархия нормальных форм
- Связи нормальных форм
- Другие нормальные формы
- Денормализация
Экзаменационные вопросы
- Цели и средства нормализации
- Нормальные формы: первая и вторая
- Нормальные формы: третья и Бойса-Кодда
- Многозначные зависимости и четвертая нормальная форма
- Зависимости соединения и пятая нормальная форма
Практические навыки
- Нормализация баз данных
- Проектирование высококачественных баз данных
Библиография
- Дейт К. Введение в системы баз данных (главы 12 и 13)
- Уидом Д., Ульман Д. Основы реляционных баз данных (глава 3)
- Fagin R. Multivalued Dependencies and a New Normal Form for Relational Databases
- Beeri C., Fagin R., Howard J. A complete axiomatization for functional and multivalued dependencies in database relations
- Date C.J., Fagin R. Simple conditions for guaranteeing higher normal forms in relational databases
- Fagin R. Normal forms and relational database operators
Домашнее задание 4. Нормализация БД «Университет»
Дано отношение с атрибутами StudentId, StudentName, GroupId, GroupName, GroupFacultyId, GroupFacultyName, GroupFacultyDeanId; CourseId, CourseName, LecturerId, LecturerName, LecturerFacultyId, LecturerFacultyName, LecturerFacultyDeanId, Mark. и функциональными зависимостями:
- StudentId → StudentName, GroupId, GroupName;
- GroupId → GroupName, GroupFacultyId;
- GroupName → GroupId;
- CourseId → CourseName;
- LecturerId → LecturerName, LecturerFacultyId;
- StudentId, CourseId → Mark;
- GroupId, CourseId → LecturerId;
- GroupFacultyId → GroupFacultyName, GroupFacultyDeanId;
- GroupFacultyName → GroupFacultyId;
- LecturerFacultyId → LecturerFacultyName, LecturerFacultyDeanId;
- LecturerFacultyName → LecturerFacultyId.
- Инкрементально приведите данное отношение в пятую нормальную форму.
- Постройте соответствующую модель сущность-связь.
- Постройте соответствующую физическую модель.
- Реализуйте SQL-скрипты, создающие схему базы данных.
- Создайте базу данных по спроектированной модели.
- Заполните базу тестовыми данными.
В рамках проекта:
- Приведите схему базы в пятую нормальную форму.
- Если итоговая схема не будет в НФ-5, то обоснуйте принятое решение.
- Запишите определения таблиц на языке SQL.
- Запишите на языке SQL наполнение таблиц тестовым данными.
Часть 2. Запросы
Тем: 3
Тема 5. Реляционная алгебра
Содержание
- Реляционная алгебра
- Предназначение
- Замкнутость
- Унарные операции
- Проекция
- Фильтрация
- Переименование
- Операции над множествами
- Объединение
- Пересечение
- Разность
- Соединения
- Полное соединение
- Естественное соединение
- Внешние соединения
- Полусоединения
- Условные соединения
- Деление
- Операции над данными
- Расширение
- Агрегирование
- Свойства реляционной алгебры
- Базис операций
- Ограничения реляционной алгебры
- Реляционная алгебра и SQL
- Простые операции
- Соединения
Экзаменационные вопросы
- Реляционная алгебра: предназначение и свойства
- Реляционная алгебра: унарные и множественные операции
- Реляционная алгебра: соединения
- Реляционная алгебра: деление и операции над данными
Практические навыки
- Построение запросов в терминах реляционной алгебры
- Преобразование запросов
- Перевод запросов из терминов реляционной алгебры в термины SQL и обратно
- Построение запросов на SQL (без подзапросов)
Библиография
- Дейт К. Введение в системы баз данных (глава 7)
- Уидом Д., Ульман Д. Основы реляционных баз данных (главы 4 и 5)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 28 – Introduction to SQL-data operations)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 29 – Simple Search Conditions)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 30 – Searching with Joins)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 32 – Searching with Set Operators)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 33 – Searching with Groups)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 34 – Sorting Search Results)
- Select Syntax in MySQL Reference Manual
Домашнее задание 5. Реляционная алгебра
Структура базы данных «Университет»:
- Faculties(FacultyId, FacultyName, DeanId)
- Groups(GroupId, GroupName, GroupFacultyId)
- Students(StudentId, StudentName, GroupId)
- Courses(CourseId, CourseName)
- Lecturers(LecturerId, LecturerName, LecturerFacultyId)
- Plan(GroupId, CourseId, LecturerId)
- Marks(StudentId, CourseId, Mark)
Составьте выражения реляционной алгебры и соответствующие SQL-запросы, позволяющие получать
-
Информацию о студентах
- С заданным идентификатором (StudentId, StudentName, GroupId по :StudentId).
- С заданным ФИО (StudentId, StudentName, GroupId по :StudentName).
-
Полную информацию о студентах
- С заданным идентификатором (StudentId, StudentName, GroupName по :StudentId).
- С заданным ФИО (StudentId, StudentName, GroupName по :StudentName).
- Из заданной группы (StudentId, StudentName, GroupName по :GroupName).
- C заданного факультета (StudentId, StudentName, GroupName по :FacultyName).
- C факультета, заданного деканом (StudentId, StudentName, GroupName по :LecturerName).
-
Информацию о студентах с заданной оценкой по дисциплине
- С заданным идентификатором (StudentId, StudentName, GroupId по :Mark, :CourseId).
- С заданным названием (StudentId, StudentName, GroupId по :Mark, :CourseName).
- Которую у него вёл лектор заданный идентификатором (StudentId, StudentName, GroupId по :Mark, :LecturerId).
- Которую у них вёл лектор, заданный ФИО (StudentId, StudentName, GroupId по :Mark, :LecturerName).
- Которую вёл лектор, заданный идентификатором (StudentId, StudentName, GroupId по :Mark, :LecturerId).
- Которую вёл лектор, заданный ФИО (StudentId, StudentName, GroupId по :Mark, :LecturerName).
-
Информацию о студентах не имеющих оценки по дисциплине
- Среди всех студентов (StudentId, StudentName, GroupId по :CourseName).
- Тут был дубль задачи, пункт оставлен для сохранения нумерации.
- Среди студентов факультета (StudentId, StudentName, GroupId по :CourseName, :FacultyName).
- Среди студентов, у которых есть эта дисциплина (StudentId, StudentName, GroupId по :CourseName).
-
Для каждого студента ФИО и названия дисциплин
- Которые у него есть по плану (StudentName, CourseName).
- Есть, но у него нет оценки (StudentName, CourseName).
- Есть, но у него не 4 или 5 (StudentName, CourseName).
- Вёл преподаватель (StudentName, CourseName по :LecturerName).
- Вёл преподаватель с :FacultyName (StudentName, CourseName по :FacultyName).
- Вёл преподаватель другого факультета (StudentName, CourseName).
- Вёл декан (StudentName, CourseName).
-
Идентификаторы студентов по преподавателю
- Имеющих хотя бы одну оценку у преподавателя (StudentId по :LecturerName).
- Не имеющих ни одной оценки у преподавателя (StudentId по :LecturerName).
- Имеющих оценки по всем дисциплинам преподавателя (StudentId по :LecturerName).
- Имеющих оценки по всем дисциплинам преподавателя, которые он вёл у этого студента (StudentId по :LecturerName).
-
Группы и дисциплины, такие что все студенты группы имеют оценку по этой дисциплине
- Идентификаторы (GroupId, CourseId).
- Названия (GroupName, CourseName).
Составьте SQL-запросы, позволяющие получать
-
Суммарный балл
- Одного студента (SumMark по :StudentId).
- Каждого студента (StudentName, SumMark).
- Каждой группы (GroupName, SumMark).
-
Средний балл
- Одного студента (AvgMark по :StudentId).
- Каждого студента (StudentName, AvgMark).
- Каждой группы (GroupName, AvgMark).
- Средний балл средних баллов студентов каждой группы (GroupName, AvgAvgMark).
- Для каждого студента: число дисциплин, которые у него были, число сданных дисциплин и число несданных дисциплин (StudentId, Total, Passed, Failed).
Технические особенности проверки.
- Сдача — в PCMS. Если у вас нет аккаунта в PCMS, либо доступа к ДЗ, обратитесь к Николаю Викторовичу Ведерникову.
- Проверяться и оцениваться будет последняя посланная версия.
-
Проверка разделена на 4 фазы:
- пустые таблицы (синтаксис и набор столбцов);
- таблицы с не более чем одной записью;
- таблицы с простыми данными;
- таблицы со сложными данными.
- В случае проблем с синтаксисом или набором столбцов вы будете получать Presentation Error.
- Реляционная алгебра проверяется одним тестом на фазу, движком из тестового полигона.
- SQL проверяется тремя тестами на фазу — с разными СУБД. Первая СУБД — SQLite, как на тестовом полигоне.
-
Известные спецэффекты:
-
SQLite поддерживает только
left join
.right
иоuter join
делаются через него. -
Все вложенные запросы надо именовать, даже если вы не будете
использовать это имя:
select ... from ... (select ... ) SubQueryName ...
- Используйте данные из минимально возможного набора таблиц.
-
SQLite поддерживает только
Тема 6. Реляционное исчисление
Содержание
- Реляционное исчисление
- Типы реляционного исчисления
- Структура запроса
- Исчисление кортежей
- Реляционные переменные
- Условия
- Простые
- С кванторами
- Связь реляционной алгебры и реляционного исчисления
- Выражение алгебры через исчисление
- Выражение исчисления через алгебру
- Реляционная полнота
- Исчисление доменов
- Доменные переменные
- Условие принадлежности
- Язык Datalog
- Определение отношений
- Реляционная полнота
- Рекурсия
- Реляционное исчисление и SQL
- Структура запроса
- Подзапросы
- Существования
- Вхождения
- Условные
- Скалярные
- Рекурсия
Экзаменационные вопросы
- Исчисление кортежей и его реляционная полнота
- Исчисление доменов и его реляционная полнота
- Datalog и рекурсия
Практические навыки
- Построение запросов в терминах исчисления кортежей
- Построение запросов в терминах исчисления доменов
- Перевод запросов из терминов реляционного исчисления в SQL и обратно
- Построение запросов на SQL (с подзапросами)
Библиография
- Дейт К. Введение в системы баз данных (глава 8)
- Уидом Д., Ульман Д. Основы реляционных баз данных (главы 4 и 5)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 31 – Searching with Subqueries)
- Codd E.F. A relational model of data for large shared data banks
- Codd E.F. Relational completeness of data base sublanguages
Тема 7. Изменение данных
Содержание
- Операторы
- Вставка
- Обновление
- Объединение
- Удаление
- Целостность данных
- Корректность и целостность
- Типы ограничений целостности
- Типов и атрибутов
- Отношений
- Баз данных
- Компенсирующие действия
- Триггеры
- Представления
- Объявление и применения
- Обновление представлений
- Материализованные представления
- Управление доступом
- Схемы управления доступом
- Пользователи и группы
- Data Control Language
- Представления и права
Экзаменационные вопросы
- Целостность данных. Триггеры
- Представления и их обновление
- Управление доступом к данным
Практические навыки
- Построение изменяющих запросов на SQL
- Задание ограничений целостности
- Работа с представлениями
- Управление доступом к данным
Библиография
- Дейт К. Введение в системы баз данных (главы 9, 10, 17)
- Уидом Д., Ульман Д. Основы реляционных баз данных (глава 6)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 35 – Changing SQL-data)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 18 – Table and View)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 20 – SQL Constraint and Assertion)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 24 – SQL Trigger)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 15 – SQL Authorization)
Часть 3. Реализация
Тем: 5
Тема 8. Хранение данных и индексирование
Содержание
- Подсистема хранения данных
- Структура подсистемы хранения данных
- Память и жёсткие диски
- Страничная организация памяти
- Интерфейс с СУБД
- Организация данных
- Списки страниц
- Хранение записей
- Сжатие данных
- Структура подсистемы хранения данных
- Индексация данных
- Индексы
- Применение индексов
- Структура индекса
- Кластеризованные индексы
- Хеш-индексы
- Простой хеш-индекс
- Расширяемый хеш-индекс
- Упорядоченные индексы
- B-деревья
- B+-деревья
- Другие типы индексов
- Битовые индексы
- Индексы на R-деревьях
- Применение индексов
- Селективность индекса
- Покрывающие индексы
- Выбор индексов
- Индексы
Экзаменационные вопросы
- Подсистема хранения данных
- Индексация данных. Упорядоченные и хеш-индексы
- Индексация данных. Другие типы индексов. Применение индексов
Практические навыки
- Выбор индексов в базе данных
- Запись индексов на языке SQL
Библиография
- Дейт К. Введение в системы баз данных (приложение Г)
- Кнут Д. Искусство программирования. Том 3. Сортировка и поиск
- Silberschatz A., Korth H.F., Sudarshan S. Database System Concepts
Тема 9. Хранимые процедуры
Содержание
- Хранимые процедуры
- Операторы
- Составной и присваивания
- Ветвления
- Циклы
- Обработка ошибок
- Курсоры
- Хранимые функции
- Управление доступом
Экзаменационные вопросы
- Хранимые процедуры и функции. Сходства и различия
- Императивное подмножество SQL
- Data Control Language
Практические навыки
- Реализация хранимых процедур и функций
- Реализация сложных триггеров
- Управление правами доступа
Библиография
- Дейт К. Введение в системы баз данных (главы 4 и 7)
- Уидом Д., Ульман Д. Основы реляционных баз данных (раздел 7.4)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 25 – SQL-Invoked Routine)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 26 – PSM: Not Just Persistent Stored Modules)
- MySQL 8.0: CREATE PROCEDURE and CREATE FUNCTION Statements
Тема 10. Транзакции
Содержание
- Транзакции
- Определение
- Свойства транзакций
- Восстановление
- Сбои и их типы
- Журнал транзакций
- Классический алгоритм восстановления
- Алгоритм ARIES
- Повторные сбои
- Отказ оборудования
- Параллельное исполнение
- Изоляция и конфликты
- Блокировки
- Упорядочиваемость
- Восстановление
- Гранулярность блокировок
- Транзакции в SQL
- Уровни изоляции транзакций
- Уровни изоляции
- Аномалии
- Синтаксис
- Транзакции
- Точки сохранения
- Уровни изоляции транзакций
Экзаменационные вопросы
- Транзакции. Восстановление. Классический алгоритм
- Транзакции. Восстановление. Алгоритм ARIES
- Транзакции. Параллельное исполнение. Блокировки
- Транзакции. Параллельное исполнение. Уровни изоляции
Практические навыки
- Выбор границ транзакции
- Объявление транзакций на языке SQL
Библиография
- Дейт К. Введение в системы баз данных (главы 15 и 16)
- Уидом Д., Ульман Д. Основы реляционных баз данных (раздел 7.2)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 36 – SQL Transactions)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 37 – SQL Transactions Concurrency)
- Mohan C., Haderle D., Lindsay B., Pirahesh H., Schwarz P. ARIES: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging
- Mohan C. Repeating History Beyond ARIES
- Bernstein P.A., Hadzilacos V., Goodman N. Concurrency Control and Recovery in Database Systems
Тема 11. Оптимизация запросов
Содержание
- Обработка запросов
- Разбор запроса
- Перезапись запроса
- Планировщик и его структура
- Перезапись запросов
- Минимизация набора операций
- Унарные операции
- Алгебраические свойства операций
- Обработка условий
- Семантические оптимизации
- Методы исполнения
- Унарные операции
- Операции над множествами
- Соединения
- Выбор структуры запроса
- Правила планирования операций
- Применение динамического программирования
- Применение других подходов
- Оценка размера и распределения
- Статистические характеристики
- Оценка худшего случая
- Оценка операций
- Пример оптимизации запроса
- Оценка путей доступа
- Оценка соединения
Экзаменационные вопросы
- Этапы обработки запроса. Перезапись запросов
- Оптимизация запросов. Выбор структуры исполнения запроса
- Оптимизация запросов. Выбор методов исполнения запроса
- Оптимизация запросов. Оценка размера и распределения
Практические навыки
- Перезапись плана исполнения запроса
- Оптимизация плана исполнения запроса
- Оценка времени исполнения плана запроса
Библиография
- Дейт К. Введение в системы баз данных (глава 18)
- Ioannidis Y.E. Query Optimization
- Mannino M.V., Chu P., Sager T. Statistical profile estimation in database systems
- PostgreSQL Documentation Chapter 51. Overview of PostgreSQL Internals
Тема 12. Распределенные базы данных
Содержание
- Секционирование
- Цели секционирования
- Типы секционирования
- Методы секционирования
- Управление секциями
- Репликация
- Цели репликации
- Реализация репликации
- Применения репликации
- Распределенных базы данных
- Цели распределения
- Распределенные транзакции
- Проблемы распределенных баз данных
Экзаменационные вопросы
- Секционирование
- Репликация
- Распределенные транзакции
- Распределенные базы данных. Цели и проблемы
Практические навыки
- Секционирование данных
- Организация репликации данных
- Организация распределенных баз данных
Библиография
- Дейт К. Введение в системы баз данных (глава 21)
- Partitioning in MySQL Reference Manual
- Replication in MySQL Reference Manual
Часть 4. Применение
Тем: 4
Тема 13. Неполные данные и null
Содержание
- Что означает null?
- Операции с null
- Null и SQL
Экзаменационные вопросы
- Трактовки null и операции с ним
- Операции с null в SQL
Практические навыки
- Представление неполных данных
Библиография
- Дейт К. Введение в системы баз данных (глава 19)
- Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 13 – NULLs)
- Celko J. SQL and the Snare of Three-Valued Logic
- Wikibooks SQL: NULLs and the Three Valued Logic
Тема 14. Object-relational Mapping
Содержание
- Ключи и ссылки
- Генерация ключей
- Ссылки и их типы
- Наследование
- «Широкая» таблицы
- Таблицы конкретных классов
- Таблицы классов
- Динамичные структуры и модель сущность-атрибут-значение
Экзаменационные вопросы
- ORM. Ключи и ссылки
- ORM. Наследование
- ORM. Модель сущность-атрибут-значение
Практические навыки
- Применение различных стратегий генерации ключей
- Управление ссылками
- Преставление наследования в БД
- Представление динамичных структур в БД
Библиография
- Дейт К. Введение в системы баз данных (глава 26)
- Фаулер М. Архитектура корпоративных программных приложений (главы 3, 13)
Тема 15. Иерархические данные
Содержание
- Операции
- Базовые представления
- Навигационные запросы и пути
- Предикаты и статистика
- Упорядочивание
- Обновление
- Модель близости
- Представление данных
- Базовые представления
- Обновление
- Характеристики
- Вложенные множества
- Представление данных
- Базовые представления и упорядочивание
- Обновление
- Характеристики
- Модель путей
- Представление данных
- Базовые представления и упорядочивание
- Обновление
- Характеристики
Экзаменационные вопросы
- Иерархические данные. Модель близости
- Иерархические данные. Вложенные множества
- Иерархические данные. Модель путей
Практические навыки
- Проектирование БД для хранения иерархических данных
- Управление иерархическими данными
Библиография
- Celko J. Деревья в SQL
- Celko J. SQL for Smarties (глава 28)
Тема 16. Временны́е данные
Содержание
- Время в SQL
- Временны́е данные
- Полутемпоральные базы данных
- Темпоральные базы данных
- Модель интервалов
- Модель событий
Экзаменационные вопросы
- Временны́е данные. Полутемпоральные базы данных
- Временны́е данные. Модель интервалов
- Временны́е данные. Модель событий
Практические навыки
- Умение работать с временны́ми данными
- Проектирование БД для хранения темпоральных данных
Библиография
- Дейт К. Введение в системы баз данных (глава 23)
- Celko J. SQL for Smarties (глава 4)
- Gao D., Jensen C., Snodgrass R., Soo M. Join operations in temporal databases