intermediate

Основы SQL

Моделируйте relational data через tables, keys, joins, indexes, transactions, isolation, plans, normalization и denormalization.

На интервью по основам SQL проверяют реляционное моделирование и рассуждение о запросах — общее для PostgreSQL, MySQL и SQLite. Ждут проектирования таблиц и ключей, выбора типов join, индексов под реальные предикаты и объяснения изоляции транзакций при конкуренции.

Подтемы: таблицы и ограничения, первичные и внешние ключи, join, индексы, транзакции, уровни изоляции, блокировки, планы запросов, нормализация и денормализация.

На интервью: по эскизу схемы объясните, как обеспечить инвариант, какой индекс поддержит горячий запрос и какая аномалия возможна при более слабой изоляции.

Типовые ошибки: суррогатные ключи без правил уникальности; внешние ключи без стратегии cascade; индекс на каждый столбец; денормализация до измерения боли на чтении.

Компромисс — между нормализацией для корректности записи и денормализацией для скорости чтения; обоснуйте паттернами доступа и планами.

Чеклист:

  • Отображайте сущности на таблицы с явными ограничениями.
  • Выбирайте тип join по кардинальности и null-семантике.
  • Индексируйте предикаты, join и сортировку из реальных запросов.
  • Выбирайте изоляцию по допустимым аномалиям, не по умолчанию.