Теория (Н, Т, Д)
Нормализация
Нормализация — процесс организации данных, цель которого избежать дублирования и избыточности. Некоторые из преимуществ:
Лучшая организация базы данных
Больше таблиц с небольшими строками
Эффективный доступ к данным
Большая гибкость для запросов
Быстрый поиск информации
Проще реализовать безопасность данных
Позволяет легко модифицировать
Сокращение избыточных и дублирующихся данных
Более компактная база данных
Обеспечивает согласованность данных после внесения изменений
Типы нормализации
Существует много последовательных уровней нормализации. Это так называемые нормальные формы. Каждая последующая нормальная форма включает предыдущую. Первых трех нормальных форм обычно достаточно (Всего их шесть, подробно тут).
Первая нормальная форма (1NF) — нет повторяющихся групп в строках
Вторая нормальная форма (2NF) — каждое неключевое (поддерживающее) значение столбца зависит от всего первичного ключа
Третья нормальная форма (3NF) — каждое неключевое значение зависит только от первичного ключа и не имеет зависимости от другого неключевого значения столбца
Транзакции
Транзакционность — это способность объединять несколько операций в одну логическую единицу, которая либо полностью выполняется, либо не выполняется вообще. Это свойство называется атомарностью и является частью требований ACID (Atomicity, Consistency, Isolation, Durability), которые обеспечивают целостность и надежность данных.
ACID
ACID означает атомарность (Atomicity), согласованность (Consistency), изолированность (Isolation), долговечность (Durability). Он используется для обеспечения надежной обработки транзакций данных в системе базы данных.
Атомарность. Гарантирует, что транзакция будет полностью выполнена или потерпит неудачу, где транзакция представляет одну логическую операцию данных. Это означает, что при сбое одной части любой транзакции происходит сбой всей транзакции и состояние базы данных остается неизменным.
Согласованность. Гарантирует, что данные должны соответствовать всем правилам валидации. Проще говоря, вы можете сказать, что ваша транзакция никогда не оставит вашу базу данных в недопустимом состоянии.
Изолированность. Основной целью изолированности является контроль механизма параллельного изменения данных.
Долговечность. Долговечность подразумевает, что если транзакция была подтверждена (COMMIT), произошедшие в рамках транзакции изменения сохранятся независимо от того, что может встать у них на пути (например, потеря питания, сбой или ошибки любого рода).
Уровни изоляции в PostgreSQL PostgreSQL поддерживает три основных уровня изоляции транзакций: Read Committed, Repeatable Read, и Serializable. Хотя в PostgreSQL можно запросить любой из четырех стандартных уровней, режим Read Uncommitted и Repeatable Read ведет себя как Read Committed из-за архитектуры многоверсионного управления параллелизмом (В PostgreSQL).
Read Committed
Описание: Это уровень изоляции по умолчанию в PostgreSQL. Транзакции видят только зафиксированные изменения.
Аномалии: Допускает неповторяемое чтение и фантомное чтение, но не грязное чтение.
Serializable
Описание: Самый строгий уровень изоляции. Транзакции выполняются так, как будто они запускаются последовательно. Не допускает никаких аномалий.
Аномалии: Не допускает грязное чтение, неповторяемое чтение, и фантомное чтение.
Денормализация
Денормализация — техника, которая используется для преобразования из высших к низшим нормальным формам. Она помогает разработчикам баз данных повысить производительность всей инфраструктуры, поскольку вносит избыточность в таблицу. Она добавляет избыточные данные в таблицу, учитывая частые запросы к базе данных, которые объединяют данные из разных таблиц в одну таблицу.