Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Третья нормальная форма

Транзитивная функциональная зависимость

Для изучения третьей нормальной формы рассмотрим понятие транзитивной функциональной зависимости.

Определение 1

Пусть $a, b, c$ – атрибуты некоторого отношения, причем $a \to b$ и $b \to c$, но обратного соответствия нет ($c \not \to b$ и $b \not \to a$). Тогда $c$ транзитивно зависит от $a$.

Рассмотрим пример.

Пример 1

Пусть существует отношение ХРАНИЛИЩЕ, которое содержит атрибуты Организация, Склад, Объемы и хранит информацию об организациях, которые получают товары со складов, и об объемах складов. Ключевым является атрибут Организация. Если каждая организация может получить товар лишь с одного склада, то данное отношение имеет такие функциональные зависимости:

  • Организация $\to$ Склад;
  • Склад $\to$ Объемы.

В таком случае возникают аномалии:

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

Во избежание таких ситуаций нужно разбить на два исходное отношение:

  • ХРАНИЛИЩЕ (Организация, Склад);
  • ОБЪЕМЫ_СКЛАДА (Склад, Объемы).

Третья нормальная форма

Определение 2

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

То есть, если существует отношение $R (k, a, b)$, которое находится во второй нормальной форме, где $k$ является первичным ключом, а $a$ и $b$ – неключевыми атрибутами отношения $R$, и существуют функциональные зависимости: $k \to a$,

$a \to b$,

то атрибут $b$ состоит в транзитивной зависимости от $k$.

Чтобы привести отношение $R4 к третьей нормальной форме его нужно декомпозировать на 2 отношения:R4 к третьей нормальной форме его нужно декомпозировать на 2 отношения:

$R1 (k, a)$ и $R2 (a, b)$.

Между отношениями $R1$ и $R2$ будет связь «многие-к-одному» по атрибуту $a$.

Пример 2

Пусть существует отношение Группы (Номер_группы, Название_специальности, Факультет) и имеет первичным ключ Номер_группы.

Специальность однозначно определяется атрибутом Номер_группы, а факультет однозначно определяется атрибутом Название_специальности.

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

  • Номер_группы $\to$ Название_специальности (Название_специальности $\not \to$ Номер_группы);
  • Название_специальности $\to$ Факультет (Факультет $\not \to$ Название_специальности).

Если исключить транзитивную функциональную зависимость, будем иметь отношения:

  • Группы (Номер_группы, Название_специальности);
  • Специальности (Название_специальности, Факультет).
«Третья нормальная форма» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

Рассмотрим еще один пример.

Пример 3

Пусть база данных содержит следующие отношения:

ПРЕПОДАВАТЕЛИ (Табельн_номер, ФИО, Должность);

СТУДЕНТЫ (Зачетн_книжка, ФИО, Тема_диплома);

КОНСУЛЬТАЦИИ (Табельн_номер, Зачетн_книжка, Дата, Номер_ауд, Число_мест).

Отношение КОНСУЛЬТАЦИИ содержит транзитивную зависимость:

(Табельн_номер, Зачетн_книжка, Дата) $\to$ Номер_ауд $\to$ Число_мест.

Таким образом, отношение КОНСУЛЬТАЦИИ не находится в третьей нормальной форме, вследствие чего может произойти следующее:

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

Чтобы устранить транзитивную зависимость нужно декомпозировать последнее отношение, выполнив удаление из него транзитивно зависимого атрибута, и перенести его в новое отношение с копией атрибута, от которого он зависит.

База данных без транзитивных зависимостей в третьей нормальной форме будет иметь вид:

ПРЕПОДАВАТЕЛИ (Табельн_номер, ФИО, Должность);

СТУДЕНТЫ (Зачетн_книжка, ФИО, Тема_диплома);

КОНСУЛЬТАЦИИ (Табельн_номер, Зачетн_книжка, Дата, Номер_ауд);

АУДИТОРИИ (Номер_ауд, Число_мест).

В процессе проектирования структуры реляционной БД принято создавать БД как минимум в третьей нормальной форме. Если реляционная база данных приведена к третьей нормальной форме, то процесс ее проектирования обычно заканчивается.

Воспользуйся нейросетью от Автор24
Не понимаешь, как писать работу?
Попробовать ИИ
Дата написания статьи: 01.08.2016
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot