Mediumnormalization

Что такое нормализация БД?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Нормализация — разделение таблиц для устранения избыточности и аномалий обновления. Нормальные формы (практически важны первые три).

Нарушение 3NF — dept_head зависит от department, а не от student_id:

-- ПЛОХО: дублирование dept_head, аномалии при обновлении
CREATE TABLE students_bad (
  student_id INT PRIMARY KEY,
  name VARCHAR(100),
  department VARCHAR(50),
  dept_head VARCHAR(100)   -- зависит от department, не от student_id
);

-- ХОРОШО: разнесли по двум таблицам
CREATE TABLE students (
  student_id INT PRIMARY KEY,
  name VARCHAR(100),
  department VARCHAR(50) REFERENCES departments(name)
);
CREATE TABLE departments (
  name      VARCHAR(50) PRIMARY KEY,
  dept_head VARCHAR(100)
);

Правило 3NF: «ключ, весь ключ и ничего кроме ключа». На практике 3NF обычно достаточно.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.