Ответ
В контексте баз данных и тестирования нормализация — это процесс организации данных в таблицах для устранения избыточности и аномалий при вставке, обновлении и удалении. Это структурное проектирование схемы БД, а не приведение значений к единому формату.
Основные цели (с точки зрения QA):
- Целостность данных: Минимизация дублирования предотвращает противоречивые данные.
- Упрощение тестирования: Четкие связи между таблицами (через внешние ключи) облегчают написание тестов на корректность отношений.
Пример перехода от ненормализованной к нормализованной форме:
| До (аномалии): | 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) должны быть протестированы. - Отличать нормализацию БД от нормализации/стандартизации значений данных (например, приведение телефонных номеров к единому формату), что является другой задачей.