← Назад ко всем вопросам

Что такое нормализация БД

1️⃣ Как кратко ответить

Нормализация базы данных — это процесс организации данных в таблицах для минимизации избыточности и обеспечения целостности данных. Она включает в себя разбиение больших таблиц на более мелкие и установление связей между ними, следуя определенным нормальным формам.

2️⃣ Подробное объяснение темы

Нормализация базы данных — это методология проектирования структуры базы данных, которая направлена на уменьшение избыточности данных и обеспечение их целостности. Основная цель нормализации — сделать так, чтобы каждая часть данных хранилась только в одном месте, что упрощает управление данными и снижает вероятность ошибок.

Основные концепции нормализации

  1. Избыточность данных: Это ситуация, когда одни и те же данные хранятся в нескольких местах. Избыточность может привести к несоответствиям и ошибкам при обновлении данных.

  2. Аномалии данных: Это проблемы, которые возникают из-за избыточности данных. Существуют три основных типа аномалий:

    • Аномалия вставки: Невозможность добавить данные из-за отсутствия других данных.
    • Аномалия обновления: Необходимость обновления данных в нескольких местах.
    • Аномалия удаления: Удаление данных может привести к потере другой важной информации.

Нормальные формы

Нормализация осуществляется через последовательные этапы, называемые нормальными формами. Каждая следующая нормальная форма решает проблемы предыдущей.

  1. Первая нормальная форма (1NF):

    • Все столбцы должны содержать только атомарные (неделимые) значения.
    • Все записи в таблице должны быть уникальными.
    -- Пример таблицы, не находящейся в 1NF
    CREATE TABLE Orders (
        OrderID INT,
        CustomerName VARCHAR(100),
        ProductIDs VARCHAR(100) -- Содержит несколько значений, например, '1,2,3'
    );
    ​
    -- Пример таблицы в 1NF
    CREATE TABLE Orders (
        OrderID INT,
        CustomerName VARCHAR(100),
        ProductID INT -- Каждое значение атомарно
    );
    
  2. Вторая нормальная форма (2NF):

    • Таблица должна находиться в 1NF.
    • Все неключевые столбцы должны зависеть от всего первичного ключа, а не от его части.
    -- Пример таблицы, не находящейся в 2NF
    CREATE TABLE OrderDetails (
        OrderID INT,
        ProductID INT,
        ProductName VARCHAR(100) -- Зависит только от ProductID
    );
    ​
    -- Пример таблицы в 2NF
    CREATE TABLE Products (
        ProductID INT PRIMARY KEY,
        ProductName VARCHAR(100)
    );
    ​
    CREATE TABLE OrderDetails (
        OrderID INT,
        ProductID INT,
        FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
    );
    
  3. Третья нормальная форма (3NF):

    • Таблица должна находиться в 2NF.
    • Все неключевые столбцы должны зависеть только от первичного ключа, а не от других неключевых столбцов.
    -- Пример таблицы, не находящейся в 3NF
    CREATE TABLE Employees (
        EmployeeID INT PRIMARY KEY,
        DepartmentID INT,
        DepartmentName VARCHAR(100) -- Зависит от DepartmentID
    );
    ​
    -- Пример таблицы в 3NF
    CREATE TABLE Departments (
        DepartmentID INT PRIMARY KEY,
        DepartmentName VARCHAR(100)
    );
    ​
    CREATE TABLE Employees (
        EmployeeID INT PRIMARY KEY,
        DepartmentID INT,
        FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)
    );
    

Применение нормализации

Нормализация используется в проектировании баз данных для:

  • Уменьшения избыточности данных.
  • Обеспечения целостности данных.
  • Упрощения структуры базы данных.
  • Повышения гибкости и масштабируемости базы данных.

Однако, в некоторых случаях, например, в системах, требующих высокой производительности, может быть целесообразно использовать денормализацию — процесс, обратный нормализации, для ускорения операций чтения за счет увеличения избыточности данных.

Тема: БД и транзакции
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки