18.09.25
Нормализация баз данных: теоретический и практический аспекты

Особое внимание уделяется шести нормальным формам (1NF, 2NF, 3NF, 4NF, 5NF и 6NF), а также доменно-ключевой нормальной форме. 

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

Screenshot_6.png
Каждый этап нормализации проходит последовательно. 

Прежде чем перейти к следующему уровню, нужно полностью выполнить все требования текущего этапа

Классические стадии нормализации:

Стадия

Избыточные аномалии

Ненормализованная (нулевая) форма (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)

Нормальная форма Бойса-Кодда (НФБК)

Определение третьей нормальной формы (3НФ) не вполне подходит для следующих типов отношений

  • Когда отношение содержит два или более потенциальных ключа.

  • Когда эти потенциальные ключи являются составными.

  • Когда они пересекаются, то есть имеют хотя бы один общий атрибут.

Для отношений с одним потенциальным ключом (первичным) НФБК совпадает с 3НФ.

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

Третья нормальная форма является более строгим требованием и требует, чтобы все неключевые атрибуты были взаимно независимыми.

Примеры:

·         Бизнес: таблица «Клиенты» с атрибутами «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

Имя

Отдел

Должность

Телефон

Email

1

Иван

HR

Менеджер

123-45-67

ivan@example.com

Каждый атрибут в этой таблице является атомарным и не зависит от других атрибутов.

Пример с нарушением 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НФ). 3НФ требует устранения всех транзитивных зависимостей, чтобы каждый атрибут в таблице зависел только от первичного ключа. Это позволяет улучшить структуру базы данных, повысить её производительность и снизить риск ошибок.

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

Пример транзитивной зависимости

Рассмотрим пример таблицы Orders, которая содержит информацию о заказах клиентов:

| OrderID | CustomerID | ProductID | Price | |---------|------------|-----------|-------| | 1 | 101 | 201 | 500 | | 2 | 102 | 202 | 600 | | 3 | 103 | 203 | 700 |

В этой таблице существует транзитивная зависимость между OrderID и Price. Это связано с тем, что значение OrderID однозначно определяет значение CustomerID, а значение CustomerID в свою очередь однозначно определяет значение Price.

Для устранения этой транзитивной зависимости необходимо разделить таблицу на две:

1. Orders:
OrderID (первичный ключ)
CustomerID
2. Customers:
CustomerID (первичный ключ)
Price

Теперь OrderID напрямую зависит только от первичного ключа в таблице Orders, и транзитивная зависимость устранена.

Важность устранения транзитивных зависимостей

Устранение транзитивных зависимостей важно по нескольким причинам:

  1. Повышение производительности: Удаление транзитивных зависимостей может ускорить выполнение запросов, так как уменьшается количество промежуточных шагов при обработке данных.
  2. Улучшение целостности данных: Разделение таблиц на более мелкие и логически независимые части помогает избежать ошибок и несогласованности данных.
  3. Упрощение структуры базы данных: Нормализация до 3НФ делает структуру базы данных более понятной и удобной для управления.
  4. Снижение дублирования данных: Устранение транзитивных зависимостей помогает избежать дублирования данных, что, в свою очередь, уменьшает объём хранимой информации и снижает риск ошибок.

Зачем нормализовать данные в базе данных (БД)

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

Работа с нормализованными данными напоминает поход за продуктами с книгой рецептов. Чтобы приготовить салат оливье, нужно открыть книгу рецептов, перейти в раздел «Салаты», найти нужный рецепт и купить только те ингредиенты, которые указаны в нём. Примерно так работают связи между таблицами в базе данных.

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

Преимущества нормализации данных

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

2. Упрощение поиска и улучшение удобства работы
Нормализованная база данных состоит из связанных таблиц, что упрощает поиск и обработку данных. Например, для поиска товаров по категории можно использовать отдельную таблицу категорий, что значительно быстрее, чем искать нужную информацию в одной большой таблице. Это особенно полезно для больших объёмов данных, где ручной поиск может занять много времени.

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

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

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

Примеры применения нормализации

Пример 1: Интернет-магазин

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

·         Таблица товаров (ID товара, название, описание, цена и т.д.)

·         Таблица категорий (ID категории, название, описание)

·         Таблица заказов (ID заказа, ID клиента, дата заказа, статус и т.д.)

Такая структура позволяет легко добавлять новые товары, категории и заказы, а также упрощает поиск и обработку данных.

Пример 2: Система управления складом

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

·         Таблица товаров (ID товара, название, описание, цена, поставщик и т.д.)

·         Таблица складов (ID склада, название, адрес, вместимость и т.д.)

·         Таблица запасов (ID запаса, ID товара, ID склада, количество и т.д.)

Такая структура позволяет легко отслеживать запасы товаров на разных складах и оптимизировать их управление.

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

Что такое денормализация?

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

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

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

Плюсы и минусы денормализации

Плюсы:

  1. Быстрее читать данные: Когда в базе данных много повторяющейся информации, нужно делать меньше запросов, и это ускоряет процесс чтения.
  2. Проще делать запросы: Структура базы данных становится проще, и запросы к ней становятся более понятными и легкими для выполнения.
  3. Лучше подходит для чтения: В системах, где важно быстро читать данные, а не часто их обновлять, денормализация помогает работать быстрее.

Минусы:

  1. Медленнее записывать данные: Из-за повторения информации в базе данных она занимает больше места и требует больше времени для обновления.
  2. Сложно управлять: Денормализованные базы данных труднее поддерживать и обновлять.
  3. Дублирование информации: Когда информация повторяется, это увеличивает риск ошибок и усложняет её обновление и проверку на правильность.

Когда нужно использовать денормализацию?

Денормализацию обычно используют в следующих случаях:

  • Создание сайтов и приложений: Например, для социальных сетей или интернет-магазинов, где чаще читают информацию, чем ее изменяют.
  • Анализ больших данных: Программы для работы с большими объемами данных, где важнее быстро читать информацию, чем быстро ее записывать.
  • Программы с редкими изменениями: Программное обеспечение, где данные редко меняются, и можно пожертвовать скоростью записи ради более быстрого чтения.

Денормализация — это эффективный способ улучшить производительность чтения, но она требует тщательного анализа. Этот метод не является универсальным решением и должен применяться с учётом специфики работы системы.

Пример нормализации в 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.
Также у нас есть таблица Departments с данными о отделах:
  • DepartmentID (первичный ключ);
  • DepartmentName.
Предположим, нам нужно вывести список сотрудников, отсортированный по их зарплате в порядке убывания. Для этого мы можем использовать следующий SQL-запрос:

SELECT FirstName, LastName, Salary
FROM Employees
ORDER BY Salary DESC;

Этот запрос выведет список сотрудников с их именами и зарплатами, отсортированный по зарплате в порядке убывания.

Пример нормализации и упорядочивания данных через создание новой таблицы

Предположим, нам нужно создать новую таблицу EmployeeProjects для хранения информации о проектах, в которых участвуют сотрудники. Таблица EmployeeProjects должна содержать следующие столбцы:
  • ProjectID (первичный ключ);
  • EmployeeID (внешний ключ);
  • ProjectName;
  • StartDate;
  • EndDate.
Мы можем создать эту таблицу с помощью следующего SQL-кода:

CREATE TABLE EmployeeProjects (
    ProjectID INT PRIMARY KEY,
    EmployeeID INT,
    ProjectName VARCHAR(255),
    StartDate DATE,
    EndDate DATE,
    FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID)
);

Этот код создаст новую таблицу EmployeeProjects с указанными столбцами и установит связь между таблицей EmployeeProjects и таблицей Employees с помощью внешнего ключа EmployeeID.

Из примера явно понятно, что можно использовать SQL для нормализации данных и упорядочивания их в соответствии с заданными критериями.


Наши менеджеры ответят на все вопросы, произведут расчет стоимости услуг и подготовят коммерческое предложение!
Заказать проект

Это интересно