Получить доступ

Что требуют первые три нормальные формы?

MiddleМоделирование данныхSQL
Ещё спрашивают так:
  • Что такое 1НФ, 2НФ и 3НФ?
Коротко

1НФ — атомарные значения, нет списков в ячейке. 2НФ — нет частичной зависимости неключевых полей от части составного ключа. 3НФ — нет транзитивных зависимостей (неключевое поле не зависит от другого неключевого).

  • 1НФ: не «телефоны: 123, 456», а отдельная таблица телефонов
  • 2НФ: в позициях заказа (order_id, product_id) название товара зависит только от product_id — вынести
  • 3НФ: город зависит от индекса, а не от клиента — вынести

А ещё «Каждое неключевое поле зависит от ключа, всего ключа и ничего, кроме ключа»

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Практический смысл всех трёх один: каждый факт хранится в одном месте, поэтому аномалии вставки, обновления и удаления становятся невозможными. Нарушение 2NF: в таблице позиций заказа с ключом (заказ, товар) лежит название товара, зависящее только от товара, — и оно дублируется в каждой позиции. Нарушение 3NF: в таблице сотрудников рядом с кодом отдела лежит его название, которое зависит от кода, а не от сотрудника; переименование отдела потребует обновить все строки. Стоит помнить и продолжение: BCNF усиливает 3NF для случаев с несколькими перекрывающимися ключами-кандидатами. На практике проектируют до 3NF, а денормализуют потом и осознанно.

Что хотят услышать

  • Определение каждой формы с примером.
  • Какие аномалии они устраняют.

Частые ошибки

  • Заучивать формулировки без примера аномалии.
  • Считать нормализацию самоцелью и нормализовать витрины для чтения.

Проверьте себя

Несколько верных вариантов. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓1NF: значения атомарны — никаких списков и структур в одной ячейке
  • ✓2NF: нет зависимости неключевого атрибута от части составного ключа
  • ✓3NF: неключевые атрибуты зависят только от ключа, а не друг от друга — нет транзитивных зависимостей
  • ✗3NF требует, чтобы в таблице было не более трёх внешних ключей

Что спросят дальше

  • Приведите пример аномалии обновления при нарушении 3NF.
  • Когда денормализация оправдана и чем за неё платят?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем