Lectures Index — INF202 Database Management Systems

Учебные конспекты по курсу DBMS (INF202) — для подготовки к финалу. Базируются на Database System Concepts, 7th Ed. — Silberschatz, Korth, Sudarshan.

Зачем этот индекс

Это карта всего курса. Открыл индекс → увидел тему → перешёл к нужной главе. Каждая глава — самодостаточный конспект на ~600-1000 строк с теорией, SQL, callouts и mini-quiz.

🎯 Практические квизы — 420 вопросов

К каждой лекции — 30 multiple-choice вопросов с ответами и объяснениями. Главный проект (project_id = 7): https://sdu.javazhan.tech/questions/7


How to read

  1. Иди по порядку 01 → 14, если готовишься с нуля.
  2. Прыгай по теме, если повторяешь нужный блок.
  3. В конце каждой главы — mini-quiz: ответил ≥ 4 из 5 → можешь идти дальше.

Стратегия за 7 дней до финала

День 1-2: 01 → 05 (модель + SQL). День 3: 06 + 07 (ER + normalization — обязательно тренировка декомпозиции). День 4: 08 + 09 (complex types + application). День 5: 10 + 11 + 12 (storage + indexing). День 6: 13 + 14 (query processing + transactions). День 7: повторение mini-quiz, проблемные места.


Part 1. Foundations — основы

#ФайлТемаГлавное
0101-introduction-to-databases.mdIntroduction to DBMSDDL/DML/DCL/TCL, schema vs instance, 3-tier
0202-relational-model.mdRelational Modeltuple, attribute, keys, relational algebra

DBMS (Database Management System) abbreviation — система управления базой данных.

relation dbterm — таблица в реляционной модели.

primary key dbterm — уникальный идентификатор каждой строки.

Без чего нельзя дальше

Реляционная алгебра (σ, π, ⋈, ∪, −, ×) — это язык, в котором мыслит DBMS. Хорошо понимать SQL = переводить SQL → алгебру в голове.


Part 2. SQL — язык запросов

#ФайлТемаГлавное
0303-sql-basics.mdSQL BasicsSELECT, INSERT, UPDATE, DELETE, GROUP BY, базовые JOIN
0404-intermediate-sql.mdIntermediate SQLвсе JOIN-ы, подзапросы, CTE, views, constraints
0505-advanced-sql.mdAdvanced SQLfunctions, procedures, triggers, recursive CTE, window functions

SELECT col FROM table WHERE cond GROUP BY col HAVING cond ORDER BY col; sqlcommand Базовый шаблон запроса. Порядок выполнения: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY.

LEFT JOIN + WHERE на правую таблицу

Превращает LEFT JOIN в INNER JOIN. Условие должно идти в ON. Главный exam trap по JOIN-ам.

SQL injection

Никогда не склеивай user input в SQL-строку. Только prepared statements с параметрами ? или :param.


Part 3. Database Design — проектирование

#ФайлТемаГлавное
0606-er-model.mdER Modelentity, attribute, relationship, кардинальности, ISA, ER → таблицы
0707-normalization.mdNormalizationFD, 1NF/2NF/3NF/BCNF, decomposition, lossless join

ERD (Entity-Relationship Diagram) abbreviation — диаграмма проектирования.

functional dependency dbtermA → B: зная A, всегда знаешь B.

1NF / 2NF / 3NF / BCNF normalization — последовательные шаги нормализации.

Алгоритм нормализации

1NF — все атомарно → 2NF — нет частичных зависимостей от PK → 3NF — нет транзитивных зависимостей → BCNF — каждая FD идёт от super key.

Memory hook

2NF имеет смысл ТОЛЬКО при составном PK. Если PK один атрибут → 2NF выполняется автоматически.


Part 4. Application Layer — приложения

#ФайлТемаГлавное
0808-complex-data-types.mdComplex Data TypesJSON/JSONB, arrays, composite types, temporal, spatial
0909-application-development.mdApplication DevelopmentJDBC/ODBC, prepared statements, ORM, connection pool, sessions

N+1 проблема

ORM может молча выполнять 100 запросов вместо одного JOIN. Использовать select_related / eager loading.


Part 5. Storage & Indexing — внутренности

#ФайлТемаГлавное
1010-physical-storage.mdPhysical Storagehierarchy, HDD/SSD, RAID 0/1/5/10
1111-data-storage-structures.mdStorage Structuresslotted page, RID, buffer manager, MVCC
1212-indexing.mdIndexingB+ tree, hash, clustered, composite, covering

B+ tree dbterm — сбалансированное дерево, листья связаны в список — основа большинства индексов.

RAID abbreviation — Redundant Array of Independent Disks: striping/mirroring/parity.

Индекс — это всегда trade-off

Ускоряет SELECT. Замедляет INSERT/UPDATE/DELETE. Занимает место. Создавай по реальным запросам, не “на всякий случай”.


Part 6. Query Processing — выполнение запросов

#ФайлТемаГлавное
1313-query-processing.mdQuery Processing & Optimizationlogical/physical plan, join algorithms, cost estimation

query optimizer dbterm — выбирает самый дешёвый план.

Join algorithmКогда
Nested-loopмаленькая R + индекс на S
Sort-mergeданные уже отсортированы
Hashбольшие equi-join, есть RAM

EXPLAIN ANALYZE

Запускает запрос и показывает реальное время. Главный инструмент при оптимизации.


Part 7. Transactions — транзакции

#ФайлТемаГлавное
1414-transactions.mdTransactionsACID, isolation levels, locking, deadlock, recovery, WAL

ACID abbreviation — Atomicity, Consistency, Isolation, Durability.

deadlock dbterm — две транзакции блокируют друг друга.

WAL (Write-Ahead Log) abbreviation — сначала лог, потом данные. Основа durability.

Isolation levelDirtyNon-repeatablePhantom
Read uncommittedвозможновозможновозможно
Read committedНЕТвозможновозможно
Repeatable readНЕТНЕТвозможно*
SerializableНЕТНЕТНЕТ

Exam trap — TRUNCATE vs DELETE

DELETE — DML, в транзакции, можно ROLLBACK. TRUNCATE — DDL, авто-commit, обычно не откатить.


Tag cheatsheet

ТегКогда использовать
#abbreviationACID, DDL, DML, DCL, TCL, ERD, DBMS, SQL, RAID, MVCC, WAL, CAP
#sqlcommandSELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, GRANT, BEGIN
#dbtermprimary key, foreign key, index, view, trigger, deadlock, MVCC
#normalization1NF, 2NF, 3NF, BCNF, 4NF

Cross-cutting связи между главами

  • 02 → 03 — реляционная алгебра напрямую переводится в SQL.
  • 02 → 07 — ключи и FD это математика normalization.
  • 06 → 07 — ER переведён в таблицы → нормализуем.
  • 04 → 09 — views и constraints используются приложением.
  • 05 → 14 — transactions всплывают в triggers и procedures.
  • 10 → 11 → 12 — диск → страница → индекс — снизу вверх.
  • 12 → 13 — какие индексы есть → какой план выберет оптимизатор.
  • 11 → 14 — buffer manager и checkpoint — часть recovery.

Топ-10 exam questions (вероятностные)

  1. Найди (X)+ по списку FD; определи candidate keys; нормализуй до 3NF.
  2. Дано ER → нарисуй таблицы с PK/FK.
  3. Объясни ACID и приведи пример нарушения каждого свойства.
  4. На каком isolation level возможен phantom read? Почему?
  5. Сравни B+ tree и hash index, когда какой использовать.
  6. Объясни LEFT JOIN с условием в WHERE — почему может превратиться в INNER.
  7. Чем TRUNCATE отличается от DELETE и DROP?
  8. Что произойдёт в recursive CTE без условия выхода?
  9. Объясни EXPLAIN ANALYZE plan и его операторы.
  10. Защита от SQL injection — как и почему prepared statements.

Если ты понимаешь все 14 глав

Ты сдашь финал на достойный балл и сможешь пройти технический интервью на джуниор уровне по БД. Это не просто конспект для экзамена — это база для индустрии.