Подходы к моделированию данных на собеседовании системного аналитика

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Зачем спрашивают на собесе SA

Data modeling — основа дизайна БД. SA участвует в conceptual / logical уровне. На собесе: «отличие моделей», «когда денормализация».

3 уровня моделирования

Conceptual (бизнес) → Logical (структура) → Physical (БД)

Каждый — добавляет detail.

Conceptual model

Что есть. Высокоуровневое представление сущностей и их связей.

  • Без атрибутов / типов.
  • Понятный бизнесу.
  • Используется на этапе анализа.
[Customer] ── places ── [Order] ── contains ── [Product]

В CASE-tools — рисуется через ER (но без типов).

Logical model

Что есть. Детализированная structure без привязки к конкретной СУБД.

  • Атрибуты с типами.
  • Primary / foreign keys.
  • Cardinality.
  • Нормализация (3НФ обычно).
  • Без implementation deталей (индексы, partitions).
Customer
  - id (PK)
  - name VARCHAR
  - email VARCHAR (UNIQUE)

Order
  - id (PK)
  - customer_id (FK)
  - amount NUMERIC
Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Physical model

Что есть. Конкретная implementation в выбранной СУБД.

  • Datatypes (BIGINT vs BIGSERIAL, специфика Postgres / Oracle).
  • Indexes (B-tree, GIN, partial).
  • Партиционирование.
  • Constraints с движкой (FK ON DELETE CASCADE).
  • Tablespaces, distribution keys (для GP / Redshift).
CREATE TABLE customer (
  id BIGSERIAL PRIMARY KEY,
  name TEXT NOT NULL,
  email TEXT UNIQUE NOT NULL,
  created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_customer_email ON customer(LOWER(email));

Нотации ER

Crow's foot. Самая популярная.

Customer ┃─< Order        (1:N)
Customer ─< Order          (0..N)

Chen. Старая, с овалами для атрибутов.

UML class diagram с «entity» стереотипами — для совместного использования с UML.

IDEF1X. Официальный, госсектор. ГОСТ-регулируемая.

Подходы к нормализации

1НФ. Атомарные значения. Никаких списков в одной cell.

2НФ. 1НФ + нет partial dependencies (атрибут зависит от composite PK only frmm part).

3НФ. 2НФ + нет transitive dependencies (атрибут зависит от non-key attribute).

BCNF. Strict variant 3НФ.

4НФ, 5НФ, DKNF. Редко в продакшне.

Денормализация. В DWH часто 1НФ или star — ОК, для performance.

Связанные темы

FAQ

Кто рисует physical model?

Database engineer / architect. SA обычно обозначает logical, оставляя физику DBA.

Это официальная информация?

Нет. Статья основана на классике (Codd, Date, Chen) и стандартных подходах database design.


Тренируйте системный анализ — откройте тренажёр с 1500+ вопросами для собесов.