Эти концепции являются краеугольными камнями теории реляционных баз данных и играют ключевую роль в проектировании эффективных и надёжных информационных систем.

Прежде чем перейти к следующему уровню, нужно полностью выполнить все требования текущего этапа
Классические стадии нормализации:
Стадия  | 
  Избыточные аномалии  | 
 
| 
   Ненормализованная (нулевая) форма (UNF) 
  | 
  
   Это состояние перед любой нормализацией. В таблице присутствуют избыточные и сложные значения  | 
 
| 
   Первая нормальная форма (1NF) 
  | 
  
   Разбиваются повторяющиеся и сложные значения; все экземпляры становятся атомарными  | 
 
| 
   Вторая нормальная форма (2NF) 
  | 
  
   Частичные зависимости разделяются на новые таблицы. Все строки функционально зависимы от первичного ключа  | 
 
| 
   Третья нормальная форма (3NF) 
  | 
  
   Транзитивные зависимости разбиваются на новые таблицы. Не ключевые атрибуты зависят от первичного ключа  | 
 
| 
   Нормальная форма Бойса-Кода (BCNF) 
  | 
  
   Транзитивные и частичные функциональные зависимости для всех потенциальных ключей разбиваются на новые таблицы  | 
 
| 
   Четвертая нормальная форма (4NF)  | 
  
   Удаляются многозначные зависимости  | 
 
| 
   Пятая нормальная форма (5NF)  | 
  
   Удаляются JOIN-зависимости (зависимости соединения)  | 
 
Классификация 1NF-6NF + DKNF
Первая нормальная форма (1NF)Первая нормальная форма является базовым уровнем нормализации и требует, чтобы все атрибуты отношения были атомарными, то есть неделимыми.
Примеры:
- Бизнес: таблица «Сотрудники» с атрибутами «ID сотрудника», «ФИО», «Должность» и «Отдел».
 - Математика: таблица «Числа» с атрибутами «ID числа», «Значение».
 
Пример таблицы в первой нормальной форме (1НФ):
| 
   Номер заказа  | 
  
   Дата заказа  | 
  
   Клиент  | 
  
   Сумма заказа  | 
 
| 
   1  | 
  
   01.01.2023  | 
  
   Иван  | 
  
   1000  | 
 
| 
   2  | 
  
   02.01.2023  | 
  
   Мария  | 
  
   1500  | 
 
| 
   3  | 
  
   03.01.2023  | 
  
   Пётр  | 
  
   2000  | 
 
Пример таблицы с нарушением первой нормальной формы (1НФ):
| 
   Номер заказа  | 
  
   Дата заказа  | 
  
   Клиент  | 
  
   Сумма заказа  | 
  
   Товары  | 
 
| 
   1  | 
  
   01.01.2023  | 
  
   Иван  | 
  
   1000  | 
  
   {ручка, бумага}  | 
 
| 
   2  | 
  
   02.01.2023  | 
  
   Мария  | 
  
   1500  | 
  
   {карандаш, ластик}  | 
 
В этом примере атрибут «Товары» содержит списки, что нарушает принцип 1НФ, так как значения должны быть скалярными.
Вторая нормальная форма (2NF)
Вторая нормальная форма требует, чтобы все неключевые атрибуты полностью зависели от первичного ключа.
Примеры:
· Бизнес: таблица «Заказы» с атрибутами «ID заказа», «ID клиента», «Дата заказа» и «Сумма заказа».
· Математика: таблица «Функции» с атрибутами «ID функции», «Аргумент», «Значение», где «Аргумент» однозначно определяет «Значение».
Пример таблицы в правильном варианте (во 2НФ):
| 
   Номер заказа  | 
  
   Клиент  | 
  
   Товар  | 
  
   Цена  | 
 
| 
   1  | 
  
   Иванов  | 
  
   стул  | 
  
   1000  | 
 
| 
   2  | 
  
   Петров  | 
  
   стол  | 
  
   2000  | 
 
В этом примере каждый атрибут зависит только от первичного ключа (Номер заказа), и нет составных ключей или функциональных зависимостей, которые можно упростить.
Пример таблицы с нарушением 2НФ:
| 
   Номер заказа  | 
  
   Отдел  | 
  
   Клиент  | 
  
   Товар  | 
  
   Цена  | 
 
| 
   1  | 
  
   Мебель  | 
  
   Иванов  | 
  
   стул  | 
  
   1000  | 
 
| 
   2  | 
  
   Мебель  | 
  
   Петров  | 
  
   стол  | 
  
   2000  | 
 
| 
   3  | 
  
   Мебель  | 
  
   Семёнов  | 
  
   диван  | 
  
   3000  | 
 
| 
   4  | 
  
   Электроника  | 
  
   Иванов  | 
  
   ноутбук  | 
  
   5000  | 
 
В этом примере первичный ключ — это «Номер заказа». Однако атрибут «Отдел»
не связан функционально только с первичным ключом, а скорее связан с выбором
товара. Это создаёт частичную зависимость, что является нарушением 2НФ.
Пример таблицы в НФБК
| 
   Номер заказа  | 
  
   Клиент  | 
  
   Товар  | 
  
   Количество  | 
  
   Дата заказа  | 
 
| 
   1  | 
  
   Иванов И. И.  | 
  
   Книга А  | 
  
   5  | 
  
   01.01.2023  | 
 
| 
   2  | 
  
   Петров П. П.  | 
  
   Книга Б  | 
  
   3  | 
  
   02.01.2023  | 
 
В этой таблице каждый атрибут зависит только от первичного ключа (Номер заказа), и нет транзитивных зависимостей.
Пример таблицы с нарушением НФБК
| 
   Номер заказа  | 
  
   Клиент  | 
  
   Товар  | 
  
   Цена  | 
  
   Общая стоимость  | 
 
| 
   1  | 
  
   Иванов И. И.  | 
  
   Книга А  | 
  
   100 руб.  | 
  
   500 руб.  | 
 
| 
   2  | 
  
   Петров П. П.  | 
  
   Книга Б  | 
  
   150 руб.  | 
  
   450 руб.  | 
 
В этой таблице атрибут «Общая стоимость» зависит не только от первичного
ключа, но и от атрибутов «Товар» и «Количество» (хотя в явном виде количество
не указано). 
Для соответствия НФБК нужно было бы разделить таблицу на две: одна содержала бы информацию о заказе и товаре, а другая — расчёт общей стоимости на основе цены и количества.
Третья нормальная форма (3NF)
Когда отношение содержит два или более потенциальных ключа.
Когда эти потенциальные ключи являются составными.
Когда они пересекаются, то есть имеют хотя бы один общий атрибут.
Отношение находится в НФБК, если каждая нетривиальная и неприводимая функциональная зависимость имеет потенциальный ключ в качестве детерминанта.
Третья нормальная форма является более строгим требованием и требует, чтобы все неключевые атрибуты были взаимно независимыми.
Примеры:
· Бизнес: таблица «Клиенты» с атрибутами «ID клиента», «ФИО», «Адрес» и «Телефон».
· Математика: таблица «Переменные» с атрибутами «ID переменной», «Обозначение», «Значение», где каждая переменная имеет уникальное обозначение и независимое значение.
Пример таблицы в третьей нормальной форме (3НФ):
| 
   ID  | 
  
   Имя  | 
  
   Адрес  | 
  
   Город  | 
  
   Телефон  | 
 
| 
   1  | 
  
   Иван  | 
  
   ул. Цветочная, д. 5  | 
  
   Москва  | 
  
   +7 (900) 111-11-11  | 
 
| 
   2  | 
  
   Пётр  | 
  
   пр. Солнечный, д. 10  | 
  
   Санкт-Петербург  | 
  
   +7 (900) 222-22-22  | 
 
В этой таблице каждый атрибут зависит только от первичного ключа (ID) и не содержит транзитивных зависимостей.
Пример таблицы с нарушением третьей нормальной формы:
| 
   ID  | 
  
   Имя  | 
  
   Адрес  | 
  
   Город  | 
  
   Тип адреса  | 
 
| 
   1  | 
  
   Иван  | 
  
   ул. Цветочная, д. 5  | 
  
   Москва  | 
  
   Частный  | 
 
| 
   2  | 
  
   Пётр  | 
  
   пр. Солнечный, д. 10  | 
  
   Санкт-Петербург  | 
  
   Квартира  | 
 
| 
   3  | 
  
   Анна  | 
  
   д. 15, СНТ «Зелёный»  | 
  
   Подмосковье  | 
  
   Частный  | 
 
В данном примере атрибут «Тип адреса» зависит не только от первичного ключа, но и от атрибута «Адрес». Это создаёт транзитивную зависимость и нарушает 3НФ.
Четвёртая нормальная форма (4NF)
Четвёртая нормальная форма исключает нетривиальные многозначные зависимости.
Примеры:
· Бизнес: таблица «Книги» с атрибутами «ID книги», «Автор», «Жанр» и «Издательство».
· Математика: таблица «Пары чисел» с атрибутами «ID пары», «Первое число», «Второе число», где каждому первому числу соответствует определённое множество вторых чисел.
Пример таблицы в четвёртой нормальной форме (4НФ):
| 
   Номер заказа  | 
  
   Клиент  | 
  
   Товар  | 
  
   Количество  | 
 
| 
   1  | 
  
   Клиент 1  | 
  
   Товар 1  | 
  
   10  | 
 
| 
   2  | 
  
   Клиент 2  | 
  
   Товар 2  | 
  
   5  | 
 
В этой таблице каждый атрибут зависит только от первичного ключа, и нет
многозначных зависимостей.
Пример таблицы с нарушением 4НФ:
| 
   Номер заказа  | 
  
   Клиент  | 
  
   Категории товаров  | 
  
   Товары  | 
 
| 
   1  | 
  
   Клиент 1  | 
  
   Электроника  | 
  
   Телевизор, ноутбук  | 
 
| 
   2  | 
  
   Клиент 2  | 
  
   Одежда  | 
  
   Куртка, свитер  | 
 
| 
   3  | 
  
   Клиент 3  | 
  
   Электроника  | 
  
   Смартфон, наушники  | 
 
В этой таблице существует нетривиальная многозначная зависимость: клиент
может заказывать несколько категорий товаров, и каждая категория может
содержать несколько товаров. Это нарушает 4НФ, так как зависимость между
категориями товаров и товарами не является функциональной и может привести к
аномалиям при добавлении, изменении и удалении данных.
Пятая нормальная форма (5NF)
Пятая нормальная форма исключает сложные зависимости между атрибутами, которые не могут быть разложены на более простые.
Примеры:
· Бизнес: таблица «Продажи» с атрибутами «ID продажи», «ID товара», «Цена» и «Количество».
· Математика: таблица «Комбинации» с атрибутами «ID комбинации», «Элемент 1», «Элемент 2», «Элемент 3», где каждая комбинация однозначно определяется тремя элементами.
Пример таблицы в правильном варианте (5 НФ):
| 
   Номер заказа  | 
  
   Клиент  | 
  
   Товар  | 
  
   Количество  | 
  
   Дата заказа  | 
 
| 
   1  | 
  
   Иванов И. И.  | 
  
   Ноутбук  | 
  
   1 шт.  | 
  
   01.03.2023  | 
 
| 
   2  | 
  
   Петров П. П.  | 
  
   Мышь  | 
  
   2 шт.  | 
  
   02.03.2023  | 
 
В этом примере каждый атрибут зависит только от первичного ключа (номер заказа), и между атрибутами нет сложных зависимостей.
Пример с нарушением 5 НФ:
| 
   Номер группы товаров  | 
  
   Группа товаров  | 
  
   Цена группы  | 
  
   Количество в группе  | 
  
   Товары в группе  | 
 
| 
   1  | 
  
   Электроника  | 
  
   1000  | 
  
   5 шт.  | 
  
   Ноутбук, Мышь, Клавиатура  | 
 
В этом примере атрибут «Цена группы» зависит не только от первичного ключа, но и от состава группы товаров (набор товаров в группе влияет на цену группы).
Это нарушает 5 НФ, так как зависимость между атрибутами не может быть разложена на более простые зависимости.
Шестая нормальная форма (6NF)
Шестая нормальная форма является наиболее строгой и редко используется на практике. Она предполагает дальнейшее разбиение отношений до атомарного уровня, чтобы исключить любые виды зависимостей между атрибутами, которые могут привести к нарушению целостности данных.
Примеры на практике найти сложно из-за редкости применения, однако можно представить следующую ситуацию:
· Бизнес: представьте систему, где каждая деталь информации хранится отдельно и не зависит от других деталей (например, информация о клиентах, заказах, товарах может быть разделена на несколько таблиц с минимальным количеством зависимостей между ними).
Пример таблицы в шестой нормальной форме (6НФ):
Предположим, у нас есть таблица «Сотрудники» с атрибутами:
| 
   ID  | 
  
   Имя  | 
  
   Отдел  | 
  
   Должность  | 
  
   Телефон  | 
  
   | 
 
| 
   1  | 
  
   Иван  | 
  
   HR  | 
  
   Менеджер  | 
  
   123-45-67  | 
  
Каждый атрибут в этой таблице является атомарным и не зависит от других атрибутов.
Пример с нарушением 6НФ:
Допустим, у нас есть таблица с данными о проектах, которая выглядит следующим образом:
| 
   ID  | 
  
   Название проекта  | 
  
   Руководитель проекта  | 
  
   Отдел  | 
  
   Дата начала  | 
  
   Дата окончания  | 
  
   Бюджет  | 
 
| 
   1  | 
  
   Проект А  | 
  
   Иван  | 
  
   HR  | 
  
   01.01.2023  | 
  
   31.12.2023  | 
  
   100000  | 
 
Для приведения таблицы в соответствие с 6НФ, можно разбить её на две таблицы: одну с информацией о проектах и другую с информацией о руководителях проектов и их отделах. Например:
Таблица «Проекты»:
| 
   ID  | 
  
   Название проекта  | 
  
   Дата начала  | 
  
   Дата окончания  | 
  
   Бюджет  | 
 
| 
   1  | 
  
   Проект А  | 
  
   01.01.2023  | 
  
   31.12.2023  | 
  
   100000  | 
 
Таблица «Руководители проектов»:
| 
   ID  | 
  
   Имя  | 
  
   Отдел  | 
 
| 
   1  | 
  
   Иван  | 
  
   HR  | 
 
Теперь между атрибутами нет явных или неявных зависимостей, и таблица соответствует 6НФ.
Доменно-ключевая нормальная форма (DKNF)
Доменно-ключевая нормальная форма требует, чтобы каждый атрибут в отношении был частью первичного ключа или находился в функциональной зависимости от первичного ключа. Это обеспечивает максимальную степень нормализации и минимизацию избыточности.
Примеры:
· Бизнес: таблица, где «ID клиента» является первичным ключом, а все остальные атрибуты (например, «ФИО», «Адрес», «Телефон») зависят от этого ключа.
· Математика: таблица, где каждый атрибут однозначно определяется через первичный ключ (например, таблица с координатами точек в пространстве, где «ID точки» — первичный ключ, а «x», «y», «z» — зависимые атрибуты).
Пример таблицы в правильном варианте (ДКНФ):
| 
   ID заказа  | 
  
   ID товара  | 
  
   Количество  | 
  
   Дата заказа  | 
 
| 
   1  | 
  
   101  | 
  
   2  | 
  
   2023-03-15  | 
 
| 
   2  | 
  
   102  | 
  
   5  | 
  
   2023-03-16  | 
 
В этом примере каждый атрибут (ID заказа, ID товара, Количество, Дата заказа) зависит от первичного ключа (ID заказа), и все атрибуты являются частью определения первичного ключа или функционально зависят от него.
Пример таблицы с нарушением ДКНФ:
| 
   ID клиента  | 
  
   Имя клиента  | 
  
   Город  | 
  
   Телефон  | 
  
   Дата последнего заказа  | 
  
   Последний заказываемый товар  | 
 
| 
   1  | 
  
   Иван  | 
  
   Москва  | 
  
   +7 (495) 123-45-67  | 
  
   2023-03-15  | 
  
   Товар 101  | 
 
| 
   2  | 
  
   Пётр  | 
  
   Санкт-Петербург  | 
  
   +7 (812) 234-56-78  | 
  
   2023-03-16  | 
  
   Товар 102  | 
 
В этом примере атрибут «Последний заказываемый товар» нарушает ДКНФ, так как содержит информацию, которая не зависит исключительно от первичного ключа (ID клиента).
Этот атрибут функционально зависит не только от первичного ключа, но и от
других атрибутов (Дата последнего заказа), что приводит к избыточности и
потенциальным ошибкам при обновлении данных.
Научные обоснования и споры
Исследования в этой области привели к созданию новых алгоритмов нормализации, методов анализа и оптимизации баз данных, а также разработке инструментов для автоматизации процесса нормализации.
Процесс нормализации является ключевым этапом в проектировании реляционных баз данных. Он позволяет не только устранить избыточность данных, но и обеспечить их логическую целостность, что особенно важно при работе с большими объёмами информации. Понимание и применение шести нормальных форм и доменно-ключевой нормальной формы позволяет создавать эффективные и надёжные информационные системы, способные эффективно справляться с задачами хранения и обработки данных.
Что такое транзитивная зависимость
Транзитивная зависимость (ТЗ) — это специфический вид зависимости в реляционных базах данных (БД), который представляет собой косвенную связь между атрибутами одной таблицы. Эта связь приводит к функциональной зависимости (ФЗ), то есть к ситуации, когда одно значение атрибута однозначно определяет другое. Транзитивная зависимость играет ключевую роль в нормализации данных, которая является важным процессом для обеспечения целостности, согласованности и эффективности базы данных.
Основные характеристики транзитивной зависимости
ТЗ обычно включает как минимум три атрибута, которые функционально зависят друг от друга. Например, если у нас есть таблица с тремя столбцами A, B и C, и значение A однозначно определяет значение B, а значение B однозначно определяет значение C, то существует транзитивная зависимость между A и C.
Если нормализация проводится только до первой или второй нормальной формы, транзитивные зависимости могут оставаться в таблице без необходимости их устранения. Однако, если цель нормализации — достичь 3НФ, то все транзитивные зависимости должны быть удалены.
Рассмотрим пример таблицы Orders,
которая содержит информацию о заказах клиентов:
Для устранения этой транзитивной зависимости необходимо разделить таблицу на две:
OrderID (первичный ключ)
CustomerID
2. Customers:
CustomerID (первичный ключ)
Price
Важность устранения транзитивных зависимостей
- Повышение производительности: Удаление транзитивных зависимостей может ускорить выполнение запросов, так как уменьшается количество промежуточных шагов при обработке данных.
 - Улучшение целостности данных: Разделение таблиц на более мелкие и логически независимые части помогает избежать ошибок и несогласованности данных.
 - Упрощение структуры базы данных: Нормализация до 3НФ делает структуру базы данных более понятной и удобной для управления.
 - Снижение дублирования данных: Устранение транзитивных зависимостей помогает избежать дублирования данных, что, в свою очередь, уменьшает объём хранимой информации и снижает риск ошибок.
 
Работа с нормализованными данными напоминает поход за продуктами с книгой рецептов. Чтобы приготовить салат оливье, нужно открыть книгу рецептов, перейти в раздел «Салаты», найти нужный рецепт и купить только те ингредиенты, которые указаны в нём. Примерно так работают связи между таблицами в базе данных.
Без нормализации база данных была бы одной большой таблицей, где все данные хранятся в одном месте. Это привело бы к дублированию информации и усложнило бы управление данными. Например, чтобы купить продукты для оливье, пользователю пришлось бы сначала собрать все ингредиенты из этой большой таблицы, а затем вручную выбирать нужные.
Преимущества нормализации данных
5. Улучшение структуры данных
Примеры применения нормализации
Пример 1: Интернет-магазин
В интернет-магазине нормализация данных помогает улучшить работу с товарами, категориями и заказами. Например, данные о товарах могут быть разделены на несколько таблиц:
· Таблица товаров (ID товара, название, описание, цена и т.д.)
· Таблица категорий (ID категории, название, описание)
· Таблица заказов (ID заказа, ID клиента, дата заказа, статус и т.д.)
Такая структура позволяет легко добавлять новые товары, категории и заказы, а также упрощает поиск и обработку данных.
Пример 2: Система управления складом
В системе управления складом нормализация данных помогает оптимизировать работу с товарами и складами. Например, данные о товарах могут быть разделены на несколько таблиц:
· Таблица товаров (ID товара, название, описание, цена, поставщик и т.д.)
· Таблица складов (ID склада, название, адрес, вместимость и т.д.)
· Таблица запасов (ID запаса, ID товара, ID склада, количество и т.д.)
Такая структура позволяет легко отслеживать запасы товаров на разных складах и оптимизировать их управление.
Нормализация данных — это важный процесс, который помогает улучшить структуру, производительность и удобство работы с базами данных. Она позволяет избежать дублирования информации, снизить вероятность ошибок и упростить поиск данных. Нормализация особенно полезна для больших систем, где управление данными играет ключевую роль.
Что такое денормализация?
Некоторые специалисты по базам данных утверждают, что излишняя упорядоченность может усложнить и замедлить доступ к информации. Это связано с тем, что в правильно структурированных базах данных множество взаимосвязанных таблиц, что делает запросы сложными и времязатратными. В таких ситуациях они рекомендуют упростить структуру, допустив некоторое дублирование данных. Этот процесс называется денормализацией.
Денормализация — это намеренное ослабление структуры базы данных для ускорения доступа к данным. Мы дублируем информацию, упрощая связи между таблицами, что особенно полезно, когда скорость важнее абсолютной точности данных.
Важно отметить, что денормализация не означает возврат к хаосу. Ненормализованные базы данных характеризуются чрезмерным дублированием, сложностью обновлений и риском потери данных. Денормализация же — это способ оптимизировать базу данных для быстрого доступа, сохраняя при этом достаточную точность.
Плюсы:
- Быстрее читать данные: Когда в базе данных много повторяющейся информации, нужно делать меньше запросов, и это ускоряет процесс чтения.
 - Проще делать запросы: Структура базы данных становится проще, и запросы к ней становятся более понятными и легкими для выполнения.
 - Лучше подходит для чтения: В системах, где важно быстро читать данные, а не часто их обновлять, денормализация помогает работать быстрее.
 
- Медленнее записывать данные: Из-за повторения информации в базе данных она занимает больше места и требует больше времени для обновления.
 - Сложно управлять: Денормализованные базы данных труднее поддерживать и обновлять.
 - Дублирование информации: Когда информация повторяется, это увеличивает риск ошибок и усложняет её обновление и проверку на правильность.
 
Денормализацию обычно используют в следующих случаях:
- Создание сайтов и приложений: Например, для социальных сетей или интернет-магазинов, где чаще читают информацию, чем ее изменяют.
 - Анализ больших данных: Программы для работы с большими объемами данных, где важнее быстро читать информацию, чем быстро ее записывать.
 - Программы с редкими изменениями: Программное обеспечение, где данные редко меняются, и можно пожертвовать скоростью записи ради более быстрого чтения.
 
Пример нормализации в SQL
Нормализация — это процесс организации данных в базе данных, включающий создание таблиц и установление отношений между ними в соответствии с правилами, которые обеспечивают защиту данных и делают базу данных более гибкой, устраняя избыточность и несогласованные зависимости.
Пример упорядочивания данных на таблице:
Предположим, у нас есть таблица Employees с данными о сотрудниках компании, и мы хотим упорядочить их по фамилии в алфавитном порядке.
Таблица Employees:
| 
   ID  | 
  
   ФИО  | 
  
   Должность  | 
  
   Отдел  | 
 
| 
   1  | 
  
   Иванов Иван  | 
  
   Менеджер  | 
  
   Продажи  | 
 
| 
   2  | 
  
   Петров Пётр  | 
  
   Специалист  | 
  
   Разработка  | 
 
| 
   3  | 
  
   Миронов Мирон  | 
  
   Руководитель  | 
  
   Управление  | 
 
| 
   4  | 
  
   Фёдоров Фёдор  | 
  
   Специалист  | 
  
   Разработка  | 
 
SQL-запрос для упорядочивания данных по фамилии:
SELECT * FROM Employees ORDER BY ФИО ASC;
Этот запрос выберет все столбцы из таблицы Employees и упорядочит их по столбцу ФИО в алфавитном порядке (ASC — ascending, возрастающий).
Результат выполнения запроса:
| 
   ID  | 
  
   ФИО  | 
  
   Должность  | 
  
   Отдел  | 
 
| 
   1  | 
  
   Иванов Иван  | 
  
   Менеджер  | 
  
   Продажи  | 
 
| 
   3  | 
  
   Миронов Мирон  | 
  
   Руководитель  | 
  
   Управление  | 
 
| 
   2  | 
  
   Петров Пётр  | 
  
   Специалист  | 
  
   Разработка  | 
 
| 
   4  | 
  
   Фёдоров Фёдор  | 
  Специалист  | 
  Разработка  | 
 
Пример нормализации и упорядочивания данных в SQL
Предположим, у нас есть таблица Employees с данными о сотрудниках компании. Таблица содержит следующие столбцы:
- EmployeeID (первичный ключ);
 - FirstName;
 - LastName;
 - DepartmentID (внешний ключ);
 - Salary;
 - HireDate.
 
- DepartmentID (первичный ключ);
 - DepartmentName.
 
FROM Employees
ORDER BY Salary DESC;
Пример нормализации и упорядочивания данных через создание новой таблицы
Предположим, нам нужно создать новую таблицу EmployeeProjects для хранения информации о проектах, в которых участвуют сотрудники. Таблица EmployeeProjects должна содержать следующие столбцы:
- ProjectID (первичный ключ);
 - EmployeeID (внешний ключ);
 - ProjectName;
 - StartDate;
 - EndDate.
 
ProjectID INT PRIMARY KEY,
EmployeeID INT,
ProjectName VARCHAR(255),
StartDate DATE,
EndDate DATE,
FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
);
Из примера явно понятно, что можно использовать SQL для нормализации данных и упорядочивания их в соответствии с заданными критериями.



