17:22
Оптимизация структуры базы данных: Нормализация и денормализация данных.

Курс по SQL

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

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

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

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

Основные нормальные формы

  • Первая нормальная форма (1NF): Все столбцы таблицы содержат только атомарные (неделимые) значения, и каждая строка уникальна.
  • Вторая нормальная форма (2NF): Таблица находится в 1NF, и каждый неключевой столбец зависит от всего первичного ключа, а не от его части.
  • Третья нормальная форма (3NF): Таблица находится в 2NF, и каждый неключевой столбец не зависит от других неключевых столбцов.
  • Бойс-Кодд нормальная форма (BCNF): Ужесточенная версия 3NF, требующая, чтобы каждый детерминант был кандидатом на ключ.

Пример нормализации данных

Рассмотрим пример таблицы с данными о заказах:

Заказы (ЗаказID, Клиент, Адрес, Продукт, Количество, Цена)

Эта таблица не находится в 1NF, так как некоторые столбцы содержат повторяющиеся группы данных. Нормализуем эту таблицу до 3NF.

1NF

Заказы (ЗаказID, Клиент, Продукт, Количество, Цена)

2NF

Заказы (ЗаказID, КлиентID)
Клиенты (КлиентID, Имя, Адрес)
ДеталиЗаказа (ЗаказID, Продукт, Количество, Цена)

3NF

Заказы (ЗаказID, КлиентID)
Клиенты (КлиентID, Имя, Адрес)
ДеталиЗаказа (ЗаказID, ПродуктID, Количество, Цена)
Продукты (ПродуктID, Название, Категория)

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

Денормализация — это процесс объединения данных из нескольких таблиц в одну, чтобы уменьшить количество соединений (JOIN) и повысить производительность запросов. Денормализация может увеличить избыточность данных, но при этом повысить скорость выполнения запросов.

Пример денормализации данных

Рассмотрим денормализованную версию данных о заказах:

Заказы (ЗаказID, Клиент, Адрес, Продукт, Категория, Количество, Цена)

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

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

Нормализация и денормализация имеют свои преимущества и недостатки, и выбор между ними зависит от конкретных требований приложения:

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

Упражнения

Упражнение 1: Нормализация таблицы

Дана таблица "Сотрудники" (СотрудникID, Имя, Отдел, ОтделТелефон). Приведите эту таблицу к 3NF.

Решение:

-- 1NF
Сотрудники (СотрудникID, Имя, Отдел, ОтделТелефон)

-- 2NF
Сотрудники (СотрудникID, Имя, ОтделID)
Отделы (ОтделID, Отдел, ОтделТелефон)

-- 3NF
Сотрудники (СотрудникID, Имя, ОтделID)
Отделы (ОтделID, Название, ОтделТелефон)

Объяснение: Таблица "Сотрудники" нормализована до 3NF путем создания таблиц "Сотрудники" и "Отделы".

Упражнение 2: Денормализация таблицы

Даны таблицы "Заказы" (ЗаказID, КлиентID), "Клиенты" (КлиентID, Имя, Адрес) и "ДеталиЗаказа" (ЗаказID, ПродуктID, Количество, Цена). Объедините эти таблицы в одну для денормализации.

Решение:

Заказы (ЗаказID, КлиентID, Имя, Адрес, ПродуктID, Количество, Цена)

Объяснение: Таблицы "Заказы", "Клиенты" и "ДеталиЗаказа" объединены в одну таблицу "Заказы" для уменьшения количества соединений при выполнении запросов.

Упражнение 3: Анализ преимуществ и недостатков

Опишите преимущества и недостатки нормализации и денормализации данных в системе управления запасами (inventory management system).

Решение:

-- Нормализация
Преимущества:
- Уменьшение избыточности данных
- Улучшение целостности данных
- Упрощение обновления данных

Недостатки:
- Увеличение сложности запросов
- Замедление выполнения запросов из-за большого количества соединений

-- Денормализация
Преимущества:
- Повышение производительности запросов
- Уменьшение количества соединений (JOIN)
- Упрощение структуры данных для чтения

Недостатки:
- Увеличение избыточности данных
- Усложнение процесса обновления данных
- Потенциальные проблемы с целостностью данных

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

Упражнение 4: Применение нормализации и денормализации

Примените нормализацию к таблице "Студенты" (СтудентID, Имя, Курс, Преподаватель, ПреподавательТелефон) до 3NF и затем денормализуйте ее обратно.

Решение:

-- Нормализация до 3NF
Студенты (СтудентID, Имя, КурсID)
Курсы (КурсID, Название, ПреподавательID)
Преподаватели (ПреподавательID, Имя, Телефон)

-- Денормализация
Студенты (СтудентID, Имя, Курс, Преподаватель, ПреподавательТелефон)

Объяснение: Таблица "Студенты" нормализована до 3NF, а затем денормализована обратно для уменьшения количества соединений при выполнении запросов.

Категория: SQL | Просмотров: 118 | Добавил: Admin | Рейтинг: 1.0/1
Всего комментариев: 0
Имя *:
Email *:
Код *: