Какие знаешь нормальные формы БД
Нормальные формы (НФ) — это правила проектирования реляционных баз данных, которые помогают избежать аномалий при операциях с данными. Основные нормальные формы:
-
1НФ — все атрибуты атомарны (неделимы), нет повторяющихся групп.
Пример: вместо столбцаТелефоныс данными"123, 456"создаются отдельные записи для каждого телефона. -
2НФ — выполняется 1НФ + все неключевые атрибуты зависят от всего первичного ключа (нет частичной зависимости).
Пример: в таблицеЗаказы(OrderID, ProductID, ProductName, Quantity)полеProductNameзависит только отProductID— нарушение. Нужно разделить наЗаказыиПродукты.
-
3НФ — выполняется 2НФ + нет транзитивных зависимостей (неключевые атрибуты не зависят от других неключевых атрибутов).
Пример: вСотрудники(EmployeeID, Department, Manager)полеManagerзависит отDepartment— нарушение. Нужно выделить таблицуОтделы. -
НФБК (Бойса-Кодда) — частный случай 3НФ, где любая детерминанта (атрибут, от которого зависит другой) является потенциальным ключом.
-
4НФ — выполняется НФБК + нет многозначных зависимостей.
Пример: вСтуденты-Курсы(StudentID, CourseID, Hobby)хобби не зависит от курса — нарушение. Нужно разделить. -
5НФ (ПНФ) — выполняется 4НФ + отсутствуют зависимости соединения.
Пример приведения к 3НФ:
-- Исходная таблица (нарушает 2НФ и 3НФ)
CREATE TABLE Orders (
OrderID INT,
ProductID INT,
ProductName VARCHAR(100),
CustomerName VARCHAR(100),
PRIMARY KEY (OrderID, ProductID)
);
-- Нормализованная структура
CREATE TABLE Orders (OrderID INT PRIMARY KEY, CustomerName VARCHAR(100));
CREATE TABLE Products (ProductID INT PRIMARY KEY, ProductName VARCHAR(100));
CREATE TABLE OrderItems (OrderID INT, ProductID INT, PRIMARY KEY (OrderID, ProductID));
офферы быстрее!
Следующий вопрос
Это единственный вопрос по вашему фильтру