Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пбд(.docx
Скачиваний:
8
Добавлен:
03.08.2024
Размер:
5.3 Mб
Скачать

22. Нормализация. Функциональная зависимость. Третья нормальная форма

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

Требования к третьей нормальной форме:

  • таблицы должны быть в 2NF

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

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

Таблица сотрудников в 2NF:

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

Однако, в результате проверки мы выясняем, что столбец «Описание подразделения» не зависит напрямую от первичного ключа. Мы это выяснили, когда задали себе один вопрос «Каким образом описание подразделения связано с сотрудником?». И наш ответ звучит следующим образом: «Атрибут описание подразделения содержит детальные сведения того подразделения, в котором работает сотрудник».

Отсюда следует, что столбец «Описание подразделения» не связан напрямую с сотрудником, он связан напрямую со столбцом «Подразделение», который напрямую связан с сотрудником, ведь сотрудник работает в каком-то конкретном подразделении. Это и есть транзитивная зависимость, когда один неключевой столбец связан с первичным ключом через другой неключевой столбец.

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

Таблица сотрудников в третьей нормальной форме:

Таблица подразделений в третьей нормальной форме:

23. Нормализация. Функциональная зависимость. Нормальная форма Бойса – Кодда

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

Требования к BCNF:

  • таблица должна находится в 3NF;

  • ключевые атрибуты составного ключа не должны зависеть от неключевых атрибутов

Требования BCNF актуальны только для таблиц с составными ключами. Если таблица имеет простой ключ, то она автоматически находится в BCNF.

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

Допустим, что нам нужно хранить информацию о кураторах всех проектов по каждому направлению.

В итоге мы реализуем следующую таблицу, в которой первичный ключ составной «Проект + Направление», так как в каждом проекте есть несколько направлений работы и поэтому, зная только проект, мы не можем определить куратора направления, так же как зная только направление, мы не сможем определить куратора, нам нужно знать и проект, и направление, чтобы определить куратора этого направления в этом проекте.

Таблица проектов и кураторов:

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

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

Таблица кураторов:

Таблица связи кураторов и проектов:

Соседние файлы в предмете Проектирование баз данных