Справочник от Автор24
Нужна помощь?
Найдем эксперта за 5 минут
Подобрать эксперта
+2
Забирай в ТГ промокод на 1000 рублей
А еще там много крутого контента!
Подписаться

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

Срочно нужна работа?
Мы готовы помочь!
Найти эксперта

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

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

Определение 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$ Название_специальности).

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

  • Группы (Номер_группы, Название_специальности);
  • Специальности (Название_специальности, Факультет).

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

Пример 3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Срочно нужна работа?
Мы готовы помочь!
Найти эксперта
Дата написания статьи: 01.08.2016
Нужна помощь
с заданием?

Поможем справиться с любыми заданиями. Квалифицированные и проверенные эксперты

Получить помощь
Забирай в ТГ промокод
на 1000 ₽

А еще в нашем канале много крутого контента

Перейти в Telegram bot