План курса

Часть 1. Проектирование

Тем: 4

Тема 1. Введение

Содержание

  1. Структура курса
  2. Развитие баз данных
    1. Требования к системам управления базами данных
    2. База данных на основе текстового файла
    3. База данных на основе файловой системы
    4. Иерархические базы данных
    5. Сетевые базы данных
    6. Реляционные базы данных
    7. Объектные базы данных
  3. Архитектура современных СУБД
  4. Обзор современных РСУБД
    1. Oracle (Сайт, Wikipedia)
    2. DB2 (Сайт, Wikipedia)
    3. Microsoft SQL Server (Сайт, Wikipedia)
    4. MySQL (Сайт, Wikipedia)
    5. PostgreSQL (Сайт, Wikipedia)
    6. Firebird (Сайт, Wikipedia)
    7. Derby (Сайт, Wikipedia)
    8. HSQLDB (Сайт, Wikipedia)
    9. Microsoft Access (Сайт, Wikipedia)
  5. Введение в SQL
    1. Ревизии стандарта SQL
    2. Пример создания базы данных

Слайды

HTML

Экзаменационные вопросы

  1. Развитие баз данных
  2. Архитектура современной СУБД

Библиография

  1. Дейт К. Введение в системы баз данных
  2. Уидом Д., Ульман Д. Основы реляционных баз данных
  3. Гарсиа Молина Г., Уидом Д., Ульман Д. Системы баз данных полный курс
  4. Фаулер М. Архитектура корпоративных программных приложений
  5. Эмблер С. В., Садаладж П. Дж. Рефакторинг баз данных. Эволюционное проектирование
  6. Garcia-Molina H., Ullman J., Widom J. Database System Implementation
  7. Silberschatz A., Korth H.F., Sudarshan S. Database System Concepts
  8. Gulutzan P., Pelzer T. SQL-99 complete, really
  9. Silberschatz A., Korth H.F., Sudarshan S. Database System Concepts (Slides)
  10. Werstein P. Database Theory and Applications (Slides)

Домашнее задание 1. Установка и использование СУБД

  1. Установите систему управления реляционными базами данных.
  2. Узнайте, как в вашей СУБД исполнять SQL в интерактивном режиме.
  3. Узнайте, как в вашей СУБД исполнять SQL в пакетном режиме.
  4. Разберитесь, как в вашей СУБД осуществляется поддержка русского языка.
  5. Создайте базу данных и наполните ее в соответствии с примерами из презентации.

Ожидаемая структура проекта

  1. Текстовая часть
    1. Описание предметной области с кратким описанием неочевидных сущностей и атрибутов.
    2. Предварительное разбиение на отношения (может отсутствовать).
    3. Для каждого отношения: определение функциональных зависимостей, нормализация до 5НФ, денормализация (при необходимости).
    4. Модель сущность-связь.
    5. Физическая модель (должна соответствовать ERM) с указанием типов для доменов.
  2. Часть на SQL
    • ddl.sql – описание таблиц и индексов.
    • insert.sql – добавление тестовых данных.
    • select.sql – запросы на получение данных и представления.
    • update.sql – запросы на изменение данных, хранимые процедуры и триггеры.

В рамках проекта:

  • Выберите тему проекта.
    • Тема должна быть уникальной.
    • Тема должна быть достаточно сложной.
    • Нельзя брать темы: обучение в университете; торговля (как товарами, так и билетами); cоревнования по программированию.

Тема 2. Моделирование баз данных

Содержание

  1. Физическая модель базы данных
    1. Таблицы
    2. Ключи
    3. Ссылки
    4. Графическая нотация
  2. Модель сущность-связь
    1. Сущности
    2. Связи
    3. Ассоциации
    4. Слабые сущности
    5. Альтернативные нотации
  3. Преобразование модели сущность-связь в физическую модель
  4. Запись физической модели на языке DDL
    1. DDL как часть SQL
    2. Типы данных
    3. Описание ключей
    4. Описание ссылок
    5. Создание, изменение и удаление таблиц

Слайды

HTML

Экзаменационные вопросы

  1. Физическая модель базы данных
  2. Модель сущность-связь
  3. Преобразование модели сущность-связь в физическую модель

Практические навыки

  1. Создание модели сущность-связь по словесному описанию
  2. Создание модели физической модели по словесному описанию
  3. Построение физической модели по модели сущность-связь
  4. Запись физической модели на DDL

Библиография

  1. Дейт К. Введение в системы баз данных (глава 14)
  2. Уидом Д., Ульман Д. Основы реляционных баз данных (глава 2)
  3. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 18 – SQL Table and View)
  4. Chen P. The Entity-Relationship Model: Toward a Unified View of Data
  5. Chen P. Entity-Relationship Modeling: Historical Events, Future Trends, and Lessons
  6. Hartmann S. Reasoning about participation constraints and Chen's constraints
  7. MySQL Data Definition Statements
  8. PostgreSQL Data Definition
  9. Oracle Managing tables
  10. MSSQL Server Transact-SQL statements

Домашнее задание 2. Моделирование БД «Университет»

Спроектируйте базу данных «Университет», позволяющую хранить информацию о факультетах, студентах, группах, преподавателях, дисциплинах и оценках.

  1. Составьте модель сущность-связь.
  2. Преобразуйте модель сущность-связь в физическую модель.
  3. Запишите физическую модель на языке SQL. Запись должна включать объявления ограничений.
  4. Создайте базу данных по спроектированной модели.
  5. Запишите операторы SQL, заполняющие базу тестовыми данными. Достаточно 2–3 записей на таблицу, если они в полной мере демонстрируют особенности БД.

Примечания

  1. Не требуется поддержка:
    • нескольких университетов;
    • дисциплин по выбору;
    • дисциплин с необычным распределением по группам (таких как физическая культура и иностранный язык);
    • переводов между группами;
    • исторических данных;
    • нескольких оценок по одной дисциплине.
  2. Многосеместровые дисциплины считаются по семестрам, например:
    • Математический анализ (семестр 1);
    • Математический анализ (семестр 2).

Форма для сдачи ДЗ. Проверка проводится в полуавтоматическом режиме, поэтому строго соблюдайте указанные форматы.

В рамках проекта:

  • Сделайте предварительную схему для БД проекта на основе моделей:
    • модель сущность-связь;
    • физическая модель;
    • определение схемы на SQL.

Тема 3. Реляционная модель и функциональные зависимости

Содержание

  1. Реляционная модель данных
    1. Отношение
    2. Кортежи
    3. Представление null'ов
    4. Отличия таблиц и отношений
  2. Ключи
    1. Надключи
    2. Ключи
    3. Требования к ключам
    4. Естественные и суррогатные ключи
    5. Выбор ключей
  3. Функциональные зависимости
    1. Определение и примеры
    2. Замыкание множества функциональных зависимостей
    3. Эквивалентность множеств функциональных зависимостей
    4. Правила вывода функциональных зависимостей
    5. Замыкание множество атрибутов
    6. Неприводимые множества функциональных зависимостей

Слайды

HTML

Экзаменационные вопросы

  1. Реляционная модель данных. Ключи
  2. Функциональные зависимости: замыкание, эквивалентность и правила вывода
  3. Функциональные зависимости: замыкание атрибутов, неприводимые множества функциональных зависимостей, их построение

Практические навыки

  1. Выделение надключей и ключей отношения
  2. Определение функциональных зависимостей в отношении
  3. Построение замыкания множества атрибутов
  4. Построение неприводимого множества функциональных зависимостей, эквивалентного данному

Библиография

  1. Дейт К. Введение в системы баз данных (главы 9 и 11)
  2. Уидом Д., Ульман Д. Основы реляционных баз данных (глава 3)
  3. Armstrong W.W. Dependency Structures of Data Base Relationships
  4. Fagin R. Functional Dependencies in a Relational Database and Propositional Logic
  5. Beeri C., Fagin R., Howard J. A complete axiomatization for functional and multivalued dependencies in database relations
  6. 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.

  1. Найдите функциональные зависимости в данном отношении.
  2. Найдите все ключи данного отношения.
  3. Найдите замыкание множеств атрибутов:
    1. GroupId, CourseId;
    2. StudentId, CourseId;
    3. StudentId, LecturerId;
    4. StudentId, LecturerFacultyDeanId;
    5. GroupName, LecturerId.
  4. Найдите неприводимое множество функциональных зависимостей для данного отношения.

Примечания

  1. Не требуется поддержка:
    • нескольких университетов;
    • дисциплин по выбору;
    • дисциплин с необычным распределением по группам (таких как физическая культура и иностранный язык);
    • переводов между группами;
    • нескольких оценок по одной дисциплине.
  2. Многосеместровые дисциплины считаются по семестрам, например: Математический анализ (семестр 1), Математический анализ (семестр 2).

Форма для сдачи ДЗ. Проверка проводится в полуавтоматическом режиме, поэтому строго соблюдайте указанные форматы.

В рамках проекта:

  1. Определите набор атрибутов, необходимых для проекта, и определите отношения на них.
  2. Найдите функциональные зависимости полученных отношений.
  3. Найдите все ключи полученных отношений.
  4. Найдите неприводимые множества функциональных зависимостей для полученных отношений.

Тема 4. Нормализация баз данных

Содержание

  1. Цели и средства нормализации
    1. Нормализация
    2. Проекции и соединения
    3. Декомпозиция отношений
  2. Первые нормальные формы
    1. Аномалии
    2. Первая нормальная форма
    3. Вторая нормальная форма
    4. Третья нормальная форма
    5. Нормальная форма Бойса-Кодда
  3. Многозначные зависимости и четвертая нормальная форма
    1. Многозначные зависимости
    2. Четвертая нормальная форма
  4. Зависимости соединения и пятая нормальная форма
    1. Зависимости соединения
    2. Пятая нормальная форма
  5. Процесс нормализации и другие нормальные формы
    1. Иерархия нормальных форм
    2. Связи нормальных форм
    3. Другие нормальные формы
    4. Денормализация

Экзаменационные вопросы

  1. Цели и средства нормализации
  2. Нормальные формы: первая и вторая
  3. Нормальные формы: третья и Бойса-Кодда
  4. Многозначные зависимости и четвертая нормальная форма
  5. Зависимости соединения и пятая нормальная форма

Слайды

HTML

Практические навыки

  1. Нормализация баз данных
  2. Проектирование высококачественных баз данных

Библиография

  1. Дейт К. Введение в системы баз данных (главы 12 и 13)
  2. Уидом Д., Ульман Д. Основы реляционных баз данных (глава 3)
  3. Fagin R. Multivalued Dependencies and a New Normal Form for Relational Databases
  4. Beeri C., Fagin R., Howard J. A complete axiomatization for functional and multivalued dependencies in database relations
  5. Date C.J., Fagin R. Simple conditions for guaranteeing higher normal forms in relational databases
  6. 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.
  1. Инкрементально приведите данное отношение в пятую нормальную форму.
  2. Постройте соответствующую модель сущность-связь.
  3. Постройте соответствующую физическую модель.
  4. Реализуйте SQL-скрипты, создающие схему базы данных.
  5. Создайте базу данных по спроектированной модели.
  6. Заполните базу тестовыми данными.

Форма для сдачи ДЗ

В рамках проекта:

  1. Приведите схему базы в пятую нормальную форму.
  2. Если итоговая схема не будет в НФ-5, то обоснуйте принятое решение.
  3. Запишите определения таблиц на языке SQL.
  4. Запишите на языке SQL наполнение таблиц тестовым данными.

Часть 2. Запросы

Тем: 3

Тема 5. Реляционная алгебра

Содержание

  1. Реляционная алгебра
    1. Предназначение
    2. Замкнутость
  2. Унарные операции
    1. Проекция
    2. Фильтрация
    3. Переименование
  3. Операции над множествами
    1. Объединение
    2. Пересечение
    3. Разность
  4. Соединения
    1. Полное соединение
    2. Естественное соединение
    3. Внешние соединения
    4. Полусоединения
    5. Условные соединения
  5. Деление
  6. Операции над данными
    1. Расширение
    2. Агрегирование
  7. Свойства реляционной алгебры
    1. Базис операций
    2. Ограничения реляционной алгебры
  8. Реляционная алгебра и SQL
    1. Простые операции
    2. Соединения

Слайды

HTML

Экзаменационные вопросы

  1. Реляционная алгебра: предназначение и свойства
  2. Реляционная алгебра: унарные и множественные операции
  3. Реляционная алгебра: соединения
  4. Реляционная алгебра: деление и операции над данными

Практические навыки

  1. Построение запросов в терминах реляционной алгебры
  2. Преобразование запросов
  3. Перевод запросов из терминов реляционной алгебры в термины SQL и обратно
  4. Построение запросов на SQL (без подзапросов)

Библиография

  1. Дейт К. Введение в системы баз данных (глава 7)
  2. Уидом Д., Ульман Д. Основы реляционных баз данных (главы 4 и 5)
  3. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 28 – Introduction to SQL-data operations)
  4. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 29 – Simple Search Conditions)
  5. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 30 – Searching with Joins)
  6. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 32 – Searching with Set Operators)
  7. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 33 – Searching with Groups)
  8. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 34 – Sorting Search Results)
  9. 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-запросы, позволяющие получать

  1. Информацию о студентах
    1. С заданным идентификатором (StudentId, StudentName, GroupId по :StudentId).
    2. С заданным ФИО (StudentId, StudentName, GroupId по :StudentName).
  2. Полную информацию о студентах
    1. С заданным идентификатором (StudentId, StudentName, GroupName по :StudentId).
    2. С заданным ФИО (StudentId, StudentName, GroupName по :StudentName).
    3. Из заданной группы (StudentId, StudentName, GroupName по :GroupName).
    4. C заданного факультета (StudentId, StudentName, GroupName по :FacultyName).
    5. C факультета, заданного деканом (StudentId, StudentName, GroupName по :LecturerName).
  3. Информацию о студентах с заданной оценкой по дисциплине
    1. С заданным идентификатором (StudentId, StudentName, GroupId по :Mark, :CourseId).
    2. С заданным названием (StudentId, StudentName, GroupId по :Mark, :CourseName).
    3. Которую у него вёл лектор заданный идентификатором (StudentId, StudentName, GroupId по :Mark, :LecturerId).
    4. Которую у них вёл лектор, заданный ФИО (StudentId, StudentName, GroupId по :Mark, :LecturerName).
    5. Которую вёл лектор, заданный идентификатором (StudentId, StudentName, GroupId по :Mark, :LecturerId).
    6. Которую вёл лектор, заданный ФИО (StudentId, StudentName, GroupId по :Mark, :LecturerName).
  4. Информацию о студентах не имеющих оценки по дисциплине
    1. Среди всех студентов (StudentId, StudentName, GroupId по :CourseName).
    2. Тут был дубль задачи, пункт оставлен для сохранения нумерации.
    3. Среди студентов факультета (StudentId, StudentName, GroupId по :CourseName, :FacultyName).
    4. Среди студентов, у которых есть эта дисциплина (StudentId, StudentName, GroupId по :CourseName).
  5. Для каждого студента ФИО и названия дисциплин
    1. Которые у него есть по плану (StudentName, CourseName).
    2. Есть, но у него нет оценки (StudentName, CourseName).
    3. Есть, но у него не 4 или 5 (StudentName, CourseName).
    4. Вёл преподаватель (StudentName, CourseName по :LecturerName).
    5. Вёл преподаватель с :FacultyName (StudentName, CourseName по :FacultyName).
    6. Вёл преподаватель другого факультета (StudentName, CourseName).
    7. Вёл декан (StudentName, CourseName).
  6. Идентификаторы студентов по преподавателю
    1. Имеющих хотя бы одну оценку у преподавателя (StudentId по :LecturerName).
    2. Не имеющих ни одной оценки у преподавателя (StudentId по :LecturerName).
    3. Имеющих оценки по всем дисциплинам преподавателя (StudentId по :LecturerName).
    4. Имеющих оценки по всем дисциплинам преподавателя, которые он вёл у этого студента (StudentId по :LecturerName).
  7. Группы и дисциплины, такие что все студенты группы имеют оценку по этой дисциплине
    1. Идентификаторы (GroupId, CourseId).
    2. Названия (GroupName, CourseName).

Составьте SQL-запросы, позволяющие получать

  1. Суммарный балл
    1. Одного студента (SumMark по :StudentId).
    2. Каждого студента (StudentName, SumMark).
    3. Каждой группы (GroupName, SumMark).
  2. Средний балл
    1. Одного студента (AvgMark по :StudentId).
    2. Каждого студента (StudentName, AvgMark).
    3. Каждой группы (GroupName, AvgMark).
    4. Средний балл средних баллов студентов каждой группы (GroupName, AvgAvgMark).
  3. Для каждого студента: число дисциплин, которые у него были, число сданных дисциплин и число несданных дисциплин (StudentId, Total, Passed, Failed).
Тестовый полигон

Технические особенности проверки.

  • Сдача — в PCMS. Если у вас нет аккаунта в PCMS, либо доступа к ДЗ, обратитесь к Николаю Викторовичу Ведерникову.
  • Проверяться и оцениваться будет последняя посланная версия.
  • Проверка разделена на 4 фазы:
    1. пустые таблицы (синтаксис и набор столбцов);
    2. таблицы с не более чем одной записью;
    3. таблицы с простыми данными;
    4. таблицы со сложными данными.
  • В случае проблем с синтаксисом или набором столбцов вы будете получать Presentation Error.
  • Реляционная алгебра проверяется одним тестом на фазу, движком из тестового полигона.
  • SQL проверяется тремя тестами на фазу — с разными СУБД. Первая СУБД — SQLite, как на тестовом полигоне.
  • Известные спецэффекты:
    • SQLite поддерживает только left join. right и оuter join делаются через него.
    • Все вложенные запросы надо именовать, даже если вы не будете использовать это имя:
          select ... from ... (select ... ) SubQueryName ...
      
    • Используйте данные из минимально возможного набора таблиц.

Тема 6. Реляционное исчисление

Содержание

  1. Реляционное исчисление
    1. Типы реляционного исчисления
    2. Структура запроса
  2. Исчисление кортежей
    1. Реляционные переменные
    2. Условия
      1. Простые
      2. С кванторами
  3. Связь реляционной алгебры и реляционного исчисления
    1. Выражение алгебры через исчисление
    2. Выражение исчисления через алгебру
    3. Реляционная полнота
  4. Исчисление доменов
    1. Доменные переменные
    2. Условие принадлежности
  5. Язык Datalog
    1. Определение отношений
    2. Реляционная полнота
    3. Рекурсия
  6. Реляционное исчисление и SQL
    1. Структура запроса
    2. Подзапросы
      1. Существования
      2. Вхождения
      3. Условные
      4. Скалярные
    3. Рекурсия

Слайды

HTML

Экзаменационные вопросы

  1. Исчисление кортежей и его реляционная полнота
  2. Исчисление доменов и его реляционная полнота
  3. Datalog и рекурсия

Практические навыки

  1. Построение запросов в терминах исчисления кортежей
  2. Построение запросов в терминах исчисления доменов
  3. Перевод запросов из терминов реляционного исчисления в SQL и обратно
  4. Построение запросов на SQL (с подзапросами)

Библиография

  1. Дейт К. Введение в системы баз данных (глава 8)
  2. Уидом Д., Ульман Д. Основы реляционных баз данных (главы 4 и 5)
  3. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 31 – Searching with Subqueries)
  4. Codd E.F. A relational model of data for large shared data banks
  5. Codd E.F. Relational completeness of data base sublanguages

Тема 7. Изменение данных

Содержание

  1. Операторы
    1. Вставка
    2. Обновление
    3. Объединение
    4. Удаление
  2. Целостность данных
    1. Корректность и целостность
    2. Типы ограничений целостности
      1. Типов и атрибутов
      2. Отношений
      3. Баз данных
    3. Компенсирующие действия
  3. Триггеры
  4. Представления
    1. Объявление и применения
    2. Обновление представлений
    3. Материализованные представления
  5. Управление доступом
    1. Схемы управления доступом
    2. Пользователи и группы
    3. Data Control Language
    4. Представления и права

Слайды

HTML

Экзаменационные вопросы

  1. Целостность данных. Триггеры
  2. Представления и их обновление
  3. Управление доступом к данным

Практические навыки

  1. Построение изменяющих запросов на SQL
  2. Задание ограничений целостности
  3. Работа с представлениями
  4. Управление доступом к данным

Библиография

  1. Дейт К. Введение в системы баз данных (главы 9, 10, 17)
  2. Уидом Д., Ульман Д. Основы реляционных баз данных (глава 6)
  3. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 35 – Changing SQL-data)
  4. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 18 – Table and View)
  5. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 20 – SQL Constraint and Assertion)
  6. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 24 – SQL Trigger)
  7. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 15 – SQL Authorization)

Часть 3. Реализация

Тем: 5

Тема 8. Хранение данных и индексирование

Содержание

  1. Подсистема хранения данных
    1. Структура подсистемы хранения данных
      1. Память и жёсткие диски
      2. Страничная организация памяти
      3. Интерфейс с СУБД
    2. Организация данных
      1. Списки страниц
      2. Хранение записей
      3. Сжатие данных
  2. Индексация данных
    1. Индексы
      1. Применение индексов
      2. Структура индекса
      3. Кластеризованные индексы
    2. Хеш-индексы
      1. Простой хеш-индекс
      2. Расширяемый хеш-индекс
    3. Упорядоченные индексы
      1. B-деревья
      2. B+-деревья
    4. Другие типы индексов
      1. Битовые индексы
      2. Индексы на R-деревьях
    5. Применение индексов
      1. Селективность индекса
      2. Покрывающие индексы
      3. Выбор индексов

Слайды

HTML

Экзаменационные вопросы

  1. Подсистема хранения данных
  2. Индексация данных. Упорядоченные и хеш-индексы
  3. Индексация данных. Другие типы индексов. Применение индексов

Практические навыки

  1. Выбор индексов в базе данных
  2. Запись индексов на языке SQL

Библиография

  1. Дейт К. Введение в системы баз данных (приложение Г)
  2. Кнут Д. Искусство программирования. Том 3. Сортировка и поиск
  3. Silberschatz A., Korth H.F., Sudarshan S. Database System Concepts

Тема 9. Хранимые процедуры

Содержание

  1. Хранимые процедуры
  2. Операторы
    1. Составной и присваивания
    2. Ветвления
    3. Циклы
    4. Обработка ошибок
  3. Курсоры
  4. Хранимые функции
  5. Управление доступом

Слайды

HTML

Экзаменационные вопросы

  1. Хранимые процедуры и функции. Сходства и различия
  2. Императивное подмножество SQL
  3. Data Control Language

Практические навыки

  1. Реализация хранимых процедур и функций
  2. Реализация сложных триггеров
  3. Управление правами доступа

Библиография

  1. Дейт К. Введение в системы баз данных (главы 4 и 7)
  2. Уидом Д., Ульман Д. Основы реляционных баз данных (раздел 7.4)
  3. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 25 – SQL-Invoked Routine)
  4. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 26 – PSM: Not Just Persistent Stored Modules)
  5.  MySQL 8.0: CREATE PROCEDURE and CREATE FUNCTION Statements

Тема 10. Транзакции

Содержание

  1. Транзакции
    1. Определение
    2. Свойства транзакций
  2. Восстановление
    1. Сбои и их типы
    2. Журнал транзакций
    3. Классический алгоритм восстановления
    4. Алгоритм ARIES
    5. Повторные сбои
    6. Отказ оборудования
  3. Параллельное исполнение
    1. Изоляция и конфликты
    2. Блокировки
    3. Упорядочиваемость
    4. Восстановление
    5. Гранулярность блокировок
  4. Транзакции в SQL
    1. Уровни изоляции транзакций
      1. Уровни изоляции
      2. Аномалии
    2. Синтаксис
      1. Транзакции
      2. Точки сохранения

Слайды

HTML

Экзаменационные вопросы

  1. Транзакции. Восстановление. Классический алгоритм
  2. Транзакции. Восстановление. Алгоритм ARIES
  3. Транзакции. Параллельное исполнение. Блокировки
  4. Транзакции. Параллельное исполнение. Уровни изоляции

Практические навыки

  1. Выбор границ транзакции
  2. Объявление транзакций на языке SQL

Библиография

  1. Дейт К. Введение в системы баз данных (главы 15 и 16)
  2. Уидом Д., Ульман Д. Основы реляционных баз данных (раздел 7.2)
  3. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 36 – SQL Transactions)
  4. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 37 – SQL Transactions Concurrency)
  5. 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
  6. Mohan C. Repeating History Beyond ARIES
  7. Bernstein P.A., Hadzilacos V., Goodman N. Concurrency Control and Recovery in Database Systems

Тема 11. Оптимизация запросов

Содержание

  1. Обработка запросов
    1. Разбор запроса
    2. Перезапись запроса
    3. Планировщик и его структура
  2. Перезапись запросов
    1. Минимизация набора операций
    2. Унарные операции
    3. Алгебраические свойства операций
    4. Обработка условий
    5. Семантические оптимизации
  3. Методы исполнения
    1. Унарные операции
    2. Операции над множествами
    3. Соединения
  4. Выбор структуры запроса
    1. Правила планирования операций
    2. Применение динамического программирования
    3. Применение других подходов
  5. Оценка размера и распределения
    1. Статистические характеристики
    2. Оценка худшего случая
    3. Оценка операций
  6. Пример оптимизации запроса
    1. Оценка путей доступа
    2. Оценка соединения

Слайды

HTML

Экзаменационные вопросы

  1. Этапы обработки запроса. Перезапись запросов
  2. Оптимизация запросов. Выбор структуры исполнения запроса
  3. Оптимизация запросов. Выбор методов исполнения запроса
  4. Оптимизация запросов. Оценка размера и распределения

Практические навыки

  1. Перезапись плана исполнения запроса
  2. Оптимизация плана исполнения запроса
  3. Оценка времени исполнения плана запроса

Библиография

  1. Дейт К. Введение в системы баз данных (глава 18)
  2. Ioannidis Y.E. Query Optimization
  3. Mannino M.V., Chu P., Sager T. Statistical profile estimation in database systems
  4. PostgreSQL Documentation Chapter 51. Overview of PostgreSQL Internals

Тема 12. Распределенные базы данных

Содержание

  1. Секционирование
    1. Цели секционирования
    2. Типы секционирования
    3. Методы секционирования
    4. Управление секциями
  2. Репликация
    1. Цели репликации
    2. Реализация репликации
    3. Применения репликации
  3. Распределенных базы данных
    1. Цели распределения
    2. Распределенные транзакции
    3. Проблемы распределенных баз данных

Слайды

HTML

Экзаменационные вопросы

  1. Секционирование
  2. Репликация
  3. Распределенные транзакции
  4. Распределенные базы данных. Цели и проблемы

Практические навыки

  1. Секционирование данных
  2. Организация репликации данных
  3. Организация распределенных баз данных

Библиография

  1. Дейт К. Введение в системы баз данных (глава 21)
  2. Partitioning in MySQL Reference Manual
  3. Replication in MySQL Reference Manual

Часть 4. Применение

Тем: 4

Тема 13. Неполные данные и null

Содержание

  1. Что означает null?
  2. Операции с null
  3. Null и SQL

Слайды

HTML

Экзаменационные вопросы

  1. Трактовки null и операции с ним
  2. Операции с null в SQL

Практические навыки

  1. Представление неполных данных

Библиография

  1. Дейт К. Введение в системы баз данных (глава 19)
  2. Gulutzan P., Pelzer T. SQL-99 complete, really (Chapter 13 – NULLs)
  3. Celko J. SQL and the Snare of Three-Valued Logic
  4. Wikibooks SQL: NULLs and the Three Valued Logic

Тема 14. Object-relational Mapping

Содержание

  1. Ключи и ссылки
    1. Генерация ключей
    2. Ссылки и их типы
  2. Наследование
    1. «Широкая» таблицы
    2. Таблицы конкретных классов
    3. Таблицы классов
  3. Динамичные структуры и модель сущность-атрибут-значение

Слайды

HTML

Экзаменационные вопросы

  1. ORM. Ключи и ссылки
  2. ORM. Наследование
  3. ORM. Модель сущность-атрибут-значение

Практические навыки

  1. Применение различных стратегий генерации ключей
  2. Управление ссылками
  3. Преставление наследования в БД
  4. Представление динамичных структур в БД

Библиография

  1. Дейт К. Введение в системы баз данных (глава 26)
  2. Фаулер М. Архитектура корпоративных программных приложений (главы 3, 13)

Тема 15. Иерархические данные

Содержание

  1. Операции
    1. Базовые представления
    2. Навигационные запросы и пути
    3. Предикаты и статистика
    4. Упорядочивание
    5. Обновление
  2. Модель близости
    1. Представление данных
    2. Базовые представления
    3. Обновление
    4. Характеристики
  3. Вложенные множества
    1. Представление данных
    2. Базовые представления и упорядочивание
    3. Обновление
    4. Характеристики
  4. Модель путей
    1. Представление данных
    2. Базовые представления и упорядочивание
    3. Обновление
    4. Характеристики

Слайды

HTML

Экзаменационные вопросы

  1. Иерархические данные. Модель близости
  2. Иерархические данные. Вложенные множества
  3. Иерархические данные. Модель путей

Практические навыки

  1. Проектирование БД для хранения иерархических данных
  2. Управление иерархическими данными

Библиография

  1. Celko J. Деревья в SQL
  2. Celko J. SQL for Smarties (глава 28)

Тема 16. Временны́е данные

Содержание

  1. Время в SQL
  2. Временны́е данные
  3. Полутемпоральные базы данных
  4. Темпоральные базы данных
    1. Модель интервалов
    2. Модель событий

Слайды

HTML

Экзаменационные вопросы

  1. Временны́е данные. Полутемпоральные базы данных
  2. Временны́е данные. Модель интервалов
  3. Временны́е данные. Модель событий

Практические навыки

  1. Умение работать с временны́ми данными
  2. Проектирование БД для хранения темпоральных данных

Библиография

  1. Дейт К. Введение в системы баз данных (глава 23)
  2. Celko J. SQL for Smarties (глава 4)
  3. Gao D., Jensen C., Snodgrass R., Soo M. Join operations in temporal databases