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 подскажет развёрнутый ответ в реальном времени.