Любая информационная система должна где-то хранить используемые ею данные. Обычно в роли этого "где-то" используется реляционная база данных. В несложных решениях она может быть "встроенной" в приложение (например, Derby), в системах посложнее используются уже более "серьёзные" решения - как открытые (MySQL), так и "тяжёлые" проприетарные "монстры" (например, Oracle).
Вне зависимости от конкретного выбранного решения, взаимодействие с такой базой обычно осуществляется с помощью языка SQL -- Structured Query Language. Таким образом, знакомство с этим языком входит в "теорминимум", необходимый программисту для того, чтобы эффективно работать с реляционными БД. Именно эти вопросы рассматриваются в первые три дня программы курса.
Если вы профессионально занимаетесь разработкой информационных систем, "шапочного знакомства" с принципами работы с реляционными БД уже недостаточно. Вы должны понимать, как управлять структурой вашей базы данных, на каком уровне (БД или приложение) лучше будет реализовать программные модули, а также уметь решать нетривиальные задачи вроде изменения структуры "живой" БД без потери данных. Этим вопросам посвящены оставшиеся два учебных дня.
Каждый модуль сопровождается практическим заданием. Практические задания выполняются в окружении на базе СУБД PostgreSQL.
Программа:
- Историческая справка: как возникли базы данных и зачем они нужны.
- Архитектура современных информационных систем и место баз данных в них.
- БД и СУБД: что такое СУБД и какими они бывают.
- Реляционные СУБД: область применения и ключевые особенности.
- Модель "сущность-связь". Таблицы, данные и ключи. Целостность данных.
- Язык SQL: стандарты и основные понятия.
- Операторы SQL: DML и DDL.
- Выборка данных из таблицы: знакомство с оператором SELECT.
- Выборка данных из нескольких таблиц: соединение таблиц и разрые виды join'ов.
- Процедуры и функции.
- Агрегация данных, фразы GROUP BY и HAVING.
- Модификация и удаление данных: фразы UPDATE и DELETE.
- Управление транзакциями.
- DDL: создание, модификация и удаление таблиц.
- Триггеры.
- Оптимизация запросов. План выполнения запроса. Индексы.