Ответ
Первая нормальная форма (1NF) — это базовое правило проектирования реляционной базы данных, которое требует, чтобы каждая таблица удовлетворяла следующим условиям:
- Атомарность значений (Atomicity of Values): Все значения в каждом столбце должны быть неделимыми (атомарными). В одной ячейке не может быть множественных значений (массивов, списков) или составных данных.
- Отсутствие повторяющихся групп: Не должно быть столбцов, которые представляют собой повторяющиеся атрибуты (например,
Phone1,Phone2,Phone3). - Уникальность строк: Каждая строка должна быть уникально идентифицируема с помощью первичного ключа (простого или составного).
Пример нарушения 1NF:
-- НЕ в 1NF: столбец `Phones` содержит составное значение
CREATE TABLE Employees (
EmployeeID INT,
Name VARCHAR(100),
Phones VARCHAR(200) -- Может содержать "123-456, 789-012"
);
Приведение к 1NF:
-- В 1NF: Каждый телефон вынесен в отдельную строку
CREATE TABLE Employees (
EmployeeID INT,
Name VARCHAR(100),
PRIMARY KEY (EmployeeID)
);
CREATE TABLE EmployeePhones (
EmployeeID INT,
PhoneNumber VARCHAR(20),
PRIMARY KEY (EmployeeID, PhoneNumber),
FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
);
-- Теперь для сотрудника с ID=1 может быть две записи:
-- (1, '123-456') и (1, '789-012')
Зачем это нужно? 1NF устраняет избыточность и аномалии при обновлении данных, обеспечивает согласованность и упрощает выполнение запросов (например, поиск по конкретному номеру телефона). Это обязательная основа для приведения таблиц ко второй (2NF) и третьей (3NF) нормальным формам.