Проектирование баз данных. Нормализация - 1NF, 2NF, 3NF, BCNF, аномалии, отношения
Этот материал представляет справочное объяснение нормализации баз данных с примерами экзаменационных вопросов и ключевыми терминами.
In a Nutshell
Нормализация устраняет избыточность и аномалии в базах данных путём пошагового разложения отношений на корректно структурированные нормальные формы, обеспечивая целостность и согласованность данных.
Полное описание
Нормализация — это систематический процесс преобразования реляционных баз данных с целью исключить избыточность и предотвратить аномалии. Первая нормальная форма (1NF) требует атомарных значений и уникальных первичных ключей. Вторая нормальная форма (2NF) опирается на 1NF и устраняет частичные зависимости неключевых атрибутов. Третья нормальная форма (3NF) требует соблюдения 2NF и удаляет транзитивные зависимости. Нормальная форма Бойса-Кодда (BCNF) — это более строгий вариант 3NF, в котором каждая детерминанта должна быть кандидатом в ключи. Нормализация предотвращает аномалии вставки, обновления и удаления, повышая целостность данных.
Основные экзаменационные пункты
- 1NF: атомарные значения, отсутствие повторяющихся групп, уникальные первичные ключи
- 2NF: соблюдение 1NF, отсутствие частичных зависимостей, полная зависимость неключевых атрибутов
- 3NF: соблюдение 2NF, отсутствие транзитивных зависимостей
- BCNF: каждая детерминанта является кандидатом в ключи
- Функциональные зависимости: X → Y означает функциональную зависимость Y от X
- Предотвращение аномалий: аномалии вставки, обновления, удаления
- Требования к экзамену: уметь определять и применять нормальные формы
- На практике: сокращение избыточности, оптимизация производительности, обеспечение согласованности
Ключевые компоненты
- Атомарные значения и 1NF
- Функциональные зависимости
- Первичные ключи и кандидаты в ключи
- Частичные зависимости и 2NF
- Транзитивные зависимости и 3NF
- Детерминанты и BCNF
- Аномалии (вставка, обновление, удаление)
- Избыточность и её последствия
- Отношения и внешние ключи
- Денормализация как противоположность
Практический пример
// До нормализации (проблема с избыточностью)
Bestellung(BestellNr, KundenNr, KundenName, ArtikelNr, ArtikelName, Menge)
// После нормализации до 3NF
Kunde(KundenNr, KundenName)
Artikel(ArtikelNr, ArtikelName)
Bestellung(BestellNr, KundenNr, Datum)
BestellPosition(BestellNr, ArtikelNr, Menge)
Erklärung: Redundanzen устранены, каждый элемент данных хранится один раз, аномалии исключены.
Преимущества и недостатки
Преимущества
- Снижает избыточность и требования к хранилищу
- Предотвращает аномалии при манипуляции данными
- Улучшает целостность и согласованность данных
- Обеспечивает гибкость при изменении структуры данных
Недостатки
- Возрастает сложность из-за большого количества таблиц
- Снижение производительности из-за операций JOIN
- Повышенные затраты на реализацию
- Может потребоваться денормализация для улучшения производительности
Типичные экзаменационные вопросы (краткие ответы)
-
Что требует 1NF? Атомарные значения, отсутствие повторяющихся групп, уникальные первичные ключи.
-
Чем 2NF отличается от 1NF? 2NF требует соблюдения 1NF и устраняет частичные зависимости неключевых атрибутов.
-
Транзитивная зависимость в 3NF? Атрибут A зависит от B, B зависит от C, но A не зависит непосредственно от C.
-
BCNF строже, чем 3NF? BCNF требует, чтобы каждая детерминанта была кандидатом в ключи — это более строгое условие, чем в 3NF.
-
Как предотвратить аномалию вставки? Через нормализацию можно вставлять новые данные без необходимости дублирования существующих.
-
Что означает функциональная зависимость X → Y? Для каждого значения X существует ровно одно соответствующее значение Y.
-
Аномалия обновления и пример? Изменение имени клиента требует обновления во всех заказах, создавая риск несогласованности.
-
Когда денормализация оправдана? При проблемах с производительностью, вызванных сложными объединениями таблиц, когда целенаправленная избыточность приемлема.
Основные источники
- https://de.wikipedia.org/wiki/Normalisierung_(Datenbanken)
- https://docs.microsoft.com/de-de/sql/relational-databases/normalization
- https://www.guru99.com/database-normalization.html
Рекомендуемая литература: базы данных
Keine Bücher für Kategorie "datenbanken" gefunden.



