Что такое нормализация данных в контексте тестирования баз данных?

«Что такое нормализация данных в контексте тестирования баз данных?» — вопрос из категории Базы данных и SQL, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В контексте баз данных и тестирования нормализация — это процесс организации данных в таблицах для устранения избыточности и аномалий при вставке, обновлении и удалении. Это структурное проектирование схемы БД, а не приведение значений к единому формату.

Основные цели (с точки зрения QA):

  1. Целостность данных: Минимизация дублирования предотвращает противоречивые данные.
  2. Упрощение тестирования: Четкие связи между таблицами (через внешние ключи) облегчают написание тестов на корректность отношений.

Пример перехода от ненормализованной к нормализованной форме:

До (аномалии): order_id customer_name product_name
1 Иван Петров Монитор, Клавиатура
2 Иван Петров Мышь
  • Аномалия обновления: Чтобы изменить имя клиента, нужно обновить все его заказы.
  • Аномалия вставки: Нельзя добавить клиента без заказа.

После (1NF, 2NF):

Таблица customers: customer_id customer_name
101 Иван Петров
Таблица orders: order_id customer_id
1 101
2 101
Таблица order_items: item_id order_id product_name
1 1 Монитор
2 1 Клавиатура
3 2 Мышь

Для QA-инженера: Понимание нормализации помогает:

  • Проектировать тестовые данные без дублирования.
  • Писать SQL-запросы для проверки целостности связей (например, найти заказы без клиента).
  • Понимать, какие ограничения (NOT NULL, FOREIGN KEY) должны быть протестированы.
  • Отличать нормализацию БД от нормализации/стандартизации значений данных (например, приведение телефонных номеров к единому формату), что является другой задачей.