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

Обучение

Рис. 4.5. К иллюстрации многозначных зависимостей

Для примера рассмотрим таблицу "Обучение" (рис. 4.5). В ней есть многозначная зависимость "Дисциплина-Преподаватель": дисциплина (в примере Информатика) может может читаться несколькими преподавателями (в примере Шипиловым и Голованевским). Есть и другая многозначная зависимость "Дисциплина-Учебник": при изучении Информатики используются учебники "Паскаль для всех" и "Язык Си". При этом Преподаватель и Учебник не связныфункциональной зависимостью, что приводит к появлению избыточности (для добавление еще одного учебника придется ввести в таблицу две новых строки). Дело улучшается при замене этой таблицы на две: (Дисциплина-Преподаватель и Дисциплина-Учебник).

[ Назад ] [ Содержание ] [ Вперед ]

Базы данных: О нормализации, функциональных и многозначных зависимостях

страницы в данном разделе
Базы данных: Данные и ЭВМ Базы данных: Концепция баз данных
Базы данных: Архитектура СУБД Базы данных: Модели данных
Базы данных: Основные понятия Базы данных: Характеристика связей и язык моделирования

Многозначная зависимость и четвертая нормальная форма

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

Мы не случайно представили эти атрибуты в виде иерархической структуры, так как именно она наиболее адекват­но отражает смысл связей между указанными атрибутами. У нас нет конкретной информации о связи преподавате­лей с учебниками, мы не знаем по какому учебнику тот или иной преподаватель излагает конкретную дисциплину. Тем не менее, при представлении этого отношения мы должны в каждом его кортеже указать значения всœех трех атрибутов (по крайней мере потому, что эти атрибуты составляют ключ, а значения ключевых атрибутов всœегда должны быть определœены). Единственным выходом из данной ситуации является следующий: если с предметом, к примеру БД, связаны преподаватели Иванов и Петров и учебники Основы БД, Введение в БД и Теория БД, то в отношении каждый из этих преподавателœей должен быть связан (ассоциирован) с каждым учебником, как это показано на примере ниже. Другого выхода нет.

ЛЕКЦИЯ Предмет Преподаватель Учебник
БД Иванов Основы БД
БД Иванов Введение в БД
БД Иванов Теория БД
БД Петров Основы БД
БД Петров Введение в БД
БД Петров Теория БД

Другими словами, мы должны констатировать следующую семантику связи между преподавателями и учебника­ми: "Данный предмет преподают такие-то преподаватели и для чтения лекций по этому предмету всœе они исполь­зу­­ю­т ВСЕ указанные учебники".

Мы здесь приходим к следующему тезису:

Тезис: В случае если в предметной области отсутствует какая-либо непосредственная связь между атри­бу­та­ми А и В, а нам по тем или иным причинам крайне важно зафиксировать такую связь в отношении, то единственным коррект­ным решением является установление, что всœе значения атрибута А связаны со всœеми значениями атрибута В, и наоборот.

Отметим, что независимость преподавателœей от учебников и наоборот, а также трактовка такой независимости согласно приведенному выше тезису свидетельствует, что в нашем отношении Лекции атрибуты Преподаватель и Учебники обладают следующим важным свойством:

Множество учебников, которые связаны с конкретным предметом, совпадает со множеством учебников, которые связаны с парой значений <предмет, преподаватель> (с предметом "БД" связаны три учебника, эти же три учебника связаны с парами значений <"БД","Иванов"> и <"БД","Петров">). И наоборот, множество преподавате­лей, которые связаны с конкретным предметом, совпадает с множеством преподавателœей, которые связаны с парой значений <предмет, учебник>.

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

Очевидно, что такое отношение избыточно и приводит к трудностям в выполнении операций манипу­ли­ро­ва­ния. Лектор входит в атрибут Преподаватель столько раз, сколько имеется учебников и об этом следует помнить вся­кий раз, производя операции вставки удаления и замены преподавателœей. То же самое имеет место и для учебников.

В связи с этим было введено понятие многозначной зависимости.

Определœение . Пусть задано отношение R с атрибутами (или наборами атрибутов) А, В, С. Говорят, что существует многозначная зависимость (multivalued dependecy ) В от А (или А многозначно определяет В), и это обозначается как А ®® В, в случае если при заданных значениях атрибутов из А существует множество связанных значений атрибутов из В и это множество В-значений не зависит каким-либо образом от значений атрибутов из С.

К примеру, в отношении ЛЕКЦИЯ атрибут Преподаватель многозначно зависит от атрибута Предмет (Предмет ®® Преподаватель) и атрибут Учебник многозначно зависит от Предмет (Предмет ®® Учебник).

Дадим формальное определœение многозначной зависимости. Пусть отношение R определœено на множестве атрибутов M и А, В – подмножества М, причем А и В могут пересекаться. Определим через В R (а) множество проекций кортежей отношения R по атрибутам В, которые связаны с конкретным кортежем, спроецированным по атрибутам А, то есть:

В R (а) = {b | $r Î R, r[A] = a & r[B] = b}

Пусть С = М – (А В). Тогда будем говорить, что В R (а) в R имеет место многозначная зависимость А ®® В, если

"ас Î R В R (аc) = В R (а)

Другими словами, совокупность значений атрибутов В, которая появляется в кортежах отношения R с хаданным значением а атрибутов А, появляется также с каждой комбинацией значений а и с Î С, ас Î R. Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, множество значений В для заданного а не зависит от значений С, появляющихся вместе с а.

По определœению А ®® Æ для любой совокупности атрибутов А из R. Более того всœеда имеет место А ®® В, в случае если R определœено только на множестве атрибутов А В. Эти два вида многозначных зависимостей называются тривиальными так как они присутствуют во любых отношениях.

Очевидно, что любая функциональная зависимость является многозначной, но не наоборот. Тем не менее, функциональные и многозначные зависимости существенно различаются. Функциональная зависимость А ® В определяется только через А и В, существование же многозначной зависимости А ®® В является свойством всœей совокупности атрибутов R.

Займемся многозначными зависимостями возникающими при приведении в 1НФ отношений с двумя и более многозначными атрибутами. К определению четвертой нормальной формы придем через обобщение понятия функции, заданной на отношении, до многозначной функциональной зависимости. Обобщение теоремы Хиса на такие зависимости называется теоремой Фейгина. Она определяет правило приведения к четвертой нормальной форме. Рассмотрим отношение, в котором курс может считать не один лектор, но для каждого лектора обязателен один и тот же набор учебников, обозначенных по фамилиям авторов (таблица 5.10). Имейте в виду, что такие авторы, как Чучкин, Пупкин, Малинин и Буренин когда-то существовали.

Лектор и учебник независимы в том смысле, что возможны, любые их сочетания. Преобразуем отношение в 1НФ (таблица 5.11). С одной стороны получена НФБК, так как ключ охватывает все кортежи и возможны только тривиальные зависимости. С другой стороны, налицо избыточность. Имеются аномалии по включению (одного лектора включаем столько раз, сколько имеется учебников) и по удалению (при удалении лектора необходимо удалить столько строк, сколько имеется учебников).

Таблица 5.11. Пример многозначной зависимости. 1НФ
ДИСЦИПЛИНА ЛЕКТОР УЧЕБНИК
Арифметика Иванов Чучкин & Пупкин
Арифметика Иванов Малинин & Буренин
Арифметика Петров Чучкин & Пупкин
Арифметика Петров Малинин & Буренин
Генетика Карпов Вайсман
Генетика Карпов Лысенко
РК

Многозначные зависимости (multi-valued dependency) возникают, когда необходимо привести к первой нормальной форме отношение с независимыми многозначными атрибутами, имеющими несколько значений на пересечении строки и столбца. Пусть имеется два таких атрибута и . Тогда для получения 1НФ необходимо для каждого набора значений остальных атрибутов повторить эту строку для каждого сочетания атомарного значения с каждым атомарным значением .

Образуется многозначная зависимость, в которой:

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

Определение . MV-зависимость называется тривиальной если, либо .

Рассмотрим еще одно отношение с многозначными зависимостями (рисунок 5.17). Обозначения: 3 - завод, Т - товар, М - магазин. Выполняется условие: каждый товар из группы товаров продается во все магазины из некоторой группы магазинов. При этом и в группе товаров и в группе магазинов может быть один экземпляр. Исходное отношение ЗТМ разлагается на отношения ЗТ и ЗМ. В отличие от первых четырех нормальных форм связи между созданными отношениями (ЗТ и ЗМ) отсутствуют.

Определение (MV-зависимость). Пусть - отношение, а - непересекающиеся множества его атрибутов. Атрибуты и многозначно зависят от (обозначение ) если из того, что в отношении содержатся кортежи и , следует, что в отношении содержится также кортеж .

По симметрии определения в содержится и кортеж. Атрибуты и как бы симметричны по отношению к .

При наличии MV-зависимости кортежи обязаны вставляться и удаляться одновременно целыми наборами.

Теорема Фейгина (R. Fagin) играет для многозначных зависимостей ту же роль, что теорема Хиса для функциональных зависимостей. Примем ее без доказательства.

Теорема Фейгина. Пусть - три непересекающиеся подмножества атрибутов отношения . Декомпозиция отношения г на проекции на множества атрибутов и будет декомпозицией без потерь тогда и только тогда, когда имеется многозначная зависимость .

Многозначная зависимость существует, если при заданных значениях атрибута X существует множество, состоящее из 0 или более взаимосвязанных значений атрибута Y, причем множество значений атрибута Y связано со значением атрибута в отношении U-X-Y, где U – все множество атрибутов отношений.

Обозначение многозначной зависимости X->>Y.

Аксиомы многозначной зависимости

1. дополнение для многозначной зависимости: Если X>Y, то X->>U-X-Y

2. пополнение для многозначной зависимости: Если X>Y, то WuX->>VuY

3. транзитивность для многозначной зависимости: Если X>Y, Y->>Z, то X->>Z-Y

Дополнительные правила вывода для многозначных зависимостей

1. объединение Если X>Z, X->>Y, то X->>YuZ

2. псевдотранзитивность Если X>Y, WuY->>Z, то WuX->>Z-(WuY)

3. смешанное правило транзитивности Если X>Y, XuYàZ, то XàZ-Y

4. правило декомпозиции X>Y, X->>Z,то X->>Y^Z, X->>Y-Z, X->>Z-Y

Я нормальная форма

Отношение находится в 4 нормальной форме, если оно находится в НФБК и в нём отсутствуют однозначные зависимости являющиеся функциональными.

Пример: Рассмотрим зависимость (№, курс, дети, должность)

Между преподавателем и курсом связь M:M

Между преподавателем и детьми 1:M

Многозначные зависимости №->>курс, №->>дети

Схема отношения находится в 4НФ, если всякий раз, когда существует многозначная зависимость X->>Y, где Y непусто, и не является подмножеством X, и XvY состоит не из всех атрибутов R, X содержит к-н ключ отношения R, атрибуты, между которыми существует многозначная зависимость, выделяют в отдельные отношения

R1(№,курс) R2(№,дети) R3(№,должность)

Я нормальная форма

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

Говорят, что отношение находится в 5НФ, тогда и только тогда, когда любая зависимость по соединению определяется возможными ключами R. Иначе, каждая проекция содержит не менее одного ключа или по крайней мере один не первичный атрибут.

Декомпозиция отношений должна гарантировать обратимость. Обратимость предполагает:

1. отсутствие потери картежей

2. не появляются ранее отсутствующие картежи

3. сохранение функциональной зависимости

Соединение без потерь, сохраняющих зависимость

потерь

<=> если R1^R2àR1-R2 либо R1^R2àR2-R1 при многозначной зависимости R1^R2->>R1-R2, либо R1^R2->>R2-R1

Пример:

Служащие(№,отдел,город)

Условия отсутствия потерь при соединениях

Из всех возможных разложений схемы должны использоваться только те, которые обладают свойством соединений без потерь . Пусть в схеме R имеется множество функциональных зависимостей. Говорят, что схема R разложима без потерь на отношения R1,R2,Rk, с сохранением функциональной зависимости, если для каждого кортежа r из R может быть rвосстановлен соединением его проекций.

Условия отсутствия потерь при соединении:

Если R1 и R2 являются разложением R, с сокращением функциональных зависимостей – это разложение обеспечивает соединение без потерь с сохранением функциональной зависимости <=> если R1^R2àR1-R2 либо R1^R2àR2-R1 при многозначной зависимости R1^R2->>R1-R2, либо R1^R2->>R2-R1

Операции пересечения и разности определены над списками атрибутов отношений.

Пример:

Служащие(№,отдел,город)

1 разложение E1(№, отдел) E2(№, город)

2 разложение E3(№, отдел) E4(отдел, город)

1. E1^E2=№ E1-E2=отдел E2-E1=город. №àотдел, №àгород условие удовлетворяет, разложение без потерь.

2. E3^E4=отдел E3-E4=№ E4-E3=город. отделà№, отделàгород эти зависимости в исходном разложении не существуют, а исходные функциональные зависимости утеряны, значит это разложение с потерями.

Для разложений более чем из двух отношений можно использовать метод Табло

Метод в Табло

Дано множество функциональных зависимостей, схема отношения полученная в результате разложения. Процедура состоит в построении таблицы, строками которой являются разложенные отношения, а столбцами – список атрибутов этих отношений без повторений. Таблица заполняется символом aj если элементы строки i в столбце j соответствуют атрибуту Ajотношения Ri в противном случае ставится bij. После построения таблицы следует просмотр всех функциональных зависимостей XàY если для атрибутов из X найдутся строки, где в соответствующих местах стоят aj, то элементы bij этих строк соответствующие столбцам атрибутов из Y заменяется на aj. Если в результате появляется строка таблицы, полностью заполненная aj, то это соединение без потерь.

Пример: R(A,B,C,D) Ф.З. AàC, BàC, CàD.

Разложили: R1(A,B) R2(B,D) R3(A,B,C) R4(B,C,D)

A B C D
R1 a a b b
R2 b a b A
R3 a a a B
R4 b a a a
AàC
A B C D
R1 a a a b
R2 b a b A
R3 a a a B
R4 b a a a
BàC
A B C D
R1 a a a b
R2 b a a A
R3 a a a B
R4 b a a a
CàD
A B C D
R1 a a a A
R2 b a a A
R3 a a a A
R4 b a a A

Есть строки со всеми a, разложение без потерь.

Создание и модификация, перемещение БД. (FoxPro)

Создание БД начинается вводом команды для формирования структуры файла данных:

CREATE <имя файла базы данных>

После ввода этой команды появляется окно, в котором Вы должны задать все параметры структуры базы: Имя поля, Тип поля, Размер поля,Количество полей.

Завершение ввода всей структуры подтверждается нажатием клавиши "OK", затем FoxPro запрашивает необходимость заполнения полей создаваемой базы данных.

Чтобы убедиться в том, что Ваш файл действительно создан, можно ввести команду

В результате на экране появится список баз данных (в данном случае включающий одно имя), хранящихся на диске, сведения о занимаемом объеме памяти и о наличии на диске свободной памяти. Команду DIR можно использовать во всех случаях, когда необходимо посмотреть, какие БД находятся на диске, уточнить имя БД для последующего обращения к ней и т.д.

Для работы с созданной базой данных ее надо открыть посредством команды

USE <имя файла базы данных>

Для просмотра структуры файла ввести команду

DISPLAY STRUCTURE или LIST STRUCTURE

Закрытие базы данных осуществляется командой CLOSE <имя файла базы данных>

Дополнение БД записями выполняется по интерактивной команде APPEND

Получить на экране дисплея содержимое записей предварительно открытой базы данных можно по команде LIST <список полей> (и еще DISPLAY)

GO N позволяет сделать запись с номером N текущей. Она имеет два формата,

позволяющих сделать текущей:

а) первую по порядку запись - GO TOP

б) последнюю запись - GO BOTTOM

Для перемещения по базе данных на заданное число записей используется команда SKIP N

Продвижению вперед соответствует положительное значение N, продвижению назад - отрицательное.

Edit – позволяет редактировать её поля. Удалять и добавлять данные. Browse – тоже один из вариантов редактирования.

Создание индексов

Индекс – указатель на данные в таблице.

CREATE INDEX имя ON имя таблицы

Типы индексов:

1. простые – индекс, создаваемый по данным одного столбца таблицы

CREATE INDEX имя ON имя таблицы (имя столбца)

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

CREATE UNIQUE INDEX имя ON имя таблицы (имя столбца)

3. составные – индексы, составленные по значениям нескольких столбцов таблицы. При создании составного индекса следует учитывать вопросы производительности базы данных. Поскольку порядок столбцов в условии индекса может сильно влиять на скорость извлечения данных. Общее правило для повышения производительности – более ограничивающее значение должно идти первым. Но первым должен указываться столбец, наличие которого всегда предполагается в условиях выбора.

CREATE INDEX имя ON имя таблицы (имя столбца1, имя столбца2)

Использование составного индекса оказывается наиболее эффективным в том случае, когда соответствующие индексу столбцы часто одновременно используются в условиях запросов в выражении WHERE. Не рекомендуется создание индексов для таблиц с ключами очень большой длины, так как скорость работы такой таблицы снижается из-за больших объемов ввода/вывода.

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

Например:

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

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

Unique – создается индекс, в котором хранятся только неповторяющиеся значения индексного выражения. Если 2 или более записей содержат одинаковые значения индексного выражения, то будет храниться только одно значение и ссылка на первую из записей с одинаковым значением индексного выражения

Candidate – создается уникальный индекс, который не содержит полей с пустыми значениями

Primary – создается уникальный индекс, который используется для связывания таблиц и определения условий целостности данных. Поля, входящие в первичный ключ, не должны допускать ввода пустых значений.

Cascade – при изменении значений полей первичного ключа или ключа кандидата в родительской таблице, автоматически осуществляется каскадное изменение всех соответствующих значений в дочерней таблице.

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

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

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

25. Поиск и сортировка, ускоренный поиск (на примере СУБД FoxPro).

Пусть A, B, C – некоторое произвольное подмножество атрибутов схемы отношения R(A, B, C). Тогда B многозначно зависит от A (A →→ B) тогда и только тогда, когда множество значений B, соответствующее заданной паре отношения R, зависит только от A, но не зависит от C. многозначные зависимости всегда образуют пары: A →→ B | C.

Пример 1:

Есть ненормализованное отношение (рис. слева). Каждый кортеж такого отношения содержит индекс учебного курса, список дней недели, когда проводятся занятия, и список студентов, изучающих данный курс. Такое расписание означает, что занятия по каждому курсу проводятся во все указанные дни недели, и все студенты посещают все занятия по курсу.

Предположения, которые могут быть сделаны:

Каждый курс может иметь произвольное количество дней занятий.

Каждый курс могут изучать произвольное количество студентов.

Дни занятий и студенты совершенно не зависят друг от друга, т.е. независимо от дня занятий состав группы студентов один и тот же.

День занятий может быть связан с любыми курсами.

Каждый студент может быть связан с любым курсом.

Преобразуем данное отношение в нормализованное отношение CDS (рис слева).

Интуитивно ясно, что эти проблемы вызваны тем, что студенты и дни занятий никак не связаны друг с другом. Можно исправить эту ситуацию, если разбить данное отношение на два: CD(Учебный курс , День занятий ) и CS (Учебный курс , Студент ).

В нашем примере имеет место многозначная зависимость: Учебный курс →→ День занятий | Студент.

Пример 2: Предположим, что рестораны производят разные виды пиццы, а службы доставки ресторанов работают только в определенных районах города. Составной первичный ключ соответствующей переменной отношения включает три атрибута: {Ресторан, Вид пиццы, Район доставки}. Такая переменная отношения не соответствует 4НФ, так как существует следующая многозначная зависимость: {Ресторан}->-> {Вид пиццы}; {Ресторан} ->-> {Район доставки}. То есть, например, при добавлении нового вида пиццы придется внести по одному новому кортежу для каждого района доставки. Возможна логическая аномалия, при которой определенному виду пиццы будут соответствовать лишь некоторые районы доставки из обслуживаемых рестораном районов. Для предотвращения аномалии нужно декомпозировать отношение, разместив независимые факты в разных отношениях. В данном примере следует выполнить декомпозицию на {Ресторан, Вид пиццы} и {Ресторан, Район доставки}. Однако если к исходной переменной отношения добавить атрибут, функционально зависящий от потенциального ключа, например цену с учётом стоимости доставки ({Ресторан, Вид пиццы, Район доставки} → Цена), то полученное отношение будет находиться в 4НФ и его уже нельзя подвергнуть декомпозиции без потерь. Указанные выше многозначные зависимости в данном случае называются внедрёнными зависимостями.

21. Четвертая и пятая нормальные формы. Определение. Аномалии, возникающие при нарушении. Примеры нарушения и нормализации.

Проблема вставки . Чтобы добавить в приведенное отношение информацию о том, что занятия по курсу C2 могут проводиться еще и в четверг, надо включить в отношение два кортежа: и .

Проблема обновления . Чтобы перенести, например, день занятий по курсу C2 с пятницы на вторник, надо изменить данные в двух кортежах.

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

Учебный курс

День занятий

Понедельник

Понедельник

Понедельник

Отношение R находится в 4НФ тогда и только тогда, когда в случае существования многозначной зависимости A →→B все атрибуты отношения R функционально зависят от A. (В отношении отсутствуют многозначные зависимости)

(для достижения 4НФ необходимо разрешить все связи многие ко многим)

Диаграмма уровня сущностей

Так как предполагается, что занятия по курсу обязательно посещаются студентами, можно ввести общую дополнительную сущность ЗАНЯТИЕ, для которой не будет выполняться 4НФ

Если все-таки необходимо, чтобы отношения удовлетворяли 4НФ, и допускается наличие данных о проведении занятий по курсу, когда еще не определен состав студентов, изучающих данный курс, тогда каждая неопределенная связь должна разрешаться самостоятельно. В этом случае согласование данных, заносимых в отношения КУРС СТУДЕНТА и ЗАНЯТИЕ ПО КУРСУ, должны осуществляться с помощью триггеров и хранимых процедур, чтобы не получилось так, что студент изучает некоторый курс, для которого не назначены дни занятий.

Из книжки: Возможность существования в отношении многозначных зависимостей возникает вследствие приведения исходных таблиц к форме 1НФ, для которой не допускается наличие некоторого набора значений на пересечении одной строки и одного столбца. Например, при наличии в отношении двух многозначных атрибутов для достижения непротиворечивого состояния строк необходимо повторить в них каждое значение одного из атрибутов в сочетании с каждым значением другого атрибута. Подобный тип ограничения порождает многозначную зависимость и приводит к избыточности данных.

Многозначная зависимость . Представляет такую зависимость между атрибутами отношения (например, А, B и C), что каждое значение А представляет собой множество значений для A и множество значений для C. Однако множества значений для B и C не зависят друг от друга.

Четвертая нормальная форма (4НФ) - Отношение в нормальной форме Бойса-Кодда, которое не содержит нетривиальных многозначных зависимостей.

Пятая нормальная форма (5NF)

Декомпозиция схем отношений не всегда гарантирует обратимость. Это обстоятельство связано с существованием класса функциональных зависимостей (ФЗ) по соединению. Если отношение удовлетворяет ФЗ по соединению, то оно может быть восстановлено по своим проекциям. Отношения, содержащие более трех МФЗ, требуют особого внимания при построении логической модели реляционной базы данных . Также 4НФ не устраняет избыточность данных полностью, поэтому требуется дальнейшая декомпозиция схем отношений.

Отношение находится в пятой нормальной форме (5НФ), если оно находится в 4НФ и удовлетворяет зависимости по соединению относительно своих проекций. 5НФ называют также нормальной формой с проецированием соединений. Она используется для разрешения трех и более отношений, которые связаны более чем тремя ФЗ по типу «многие-ко-многим».

Пример. Приведение к 5НФ. Рассмотрим отношение с несколькими многозначными зависимостями, представленное на первом рисунке слева.

Рассмотрим сначала это отношение как три изолированных отношения со степенью связи «многие-ко-многим»:


Каждый автомобиль имеет определенный цвет и модель. Некоторые цвета характерны только для определенных моделей. Такие отношения разрешаются введением связывающих отношений, в данном случае таких отношений три (рисунок слева).

Предположим, что клиент желает приобрести автомобиль синего цвета модели C, при этом марка автомобиля роли не играет. Запрос к базе данных на поиск такого автомобиля будет содержать два соединения между тремя таблицами Car, Car Color и Car Model по атрибуту наименование машины и два предиката: цвет = синий и модель = С. Результат выполнения запроса будет удивителен: есть и Волга, и Жигули! Однако из таблицы Model Color видно, что автомобиля синего цвета модели С не существует. Появляется несуществующий кортеж. Такое явление представляет собой аномалию проецирования соединений и пример нарушения 5НФ.

Приведение отношения к 5НФ заключается во введении еще одного отношения, связывающего три исходных отношения, как показано на рисунке слева.

Таким образом, процедура приведения отношения, содержащего многозначные ФЗ, к 5НФ состоит в построении связывающего отношения, позволяющего исключить появление в соединениях ложных кортежей.