Многозначная зависимость в проектировании баз данных

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

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

Многозначная зависимость препятствует нормализации стандарта четвертой нормальной формы (4NF). Реляционные базы данных следуют пяти нормальным формам, которые представляют руководящие принципы для дизайна записей. Они предотвращают аномалии обновления и несоответствия в данных. Четвертая нормальная форма имеет дело с отношениями многие-к-одному в базе данных.

Функциональная зависимость против многозначной зависимости

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

Если атрибут X однозначно определяет атрибут Y, то Y функционально зависит от X. Это записывается как X -> Y. Например, в таблице учеников ниже, Student_Name определяет Major:

Имя ученика
Основной



Ravi История искусств
Beth Химия


Эта функциональная зависимость может быть записана: Student_Name -> Major . Каждое имя Student_Name определяет ровно один мажор и не более.

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

Имя ученика
Основной
спорт






Ravi История искусств Футбол
Ravi История искусств Волейбол
Ravi История искусств теннис
Beth Химия теннис
Beth Химия Футбол


Проблема здесь в том, что и Рави, и Бет занимаются несколькими видами спорта. Необходимо добавить новую строку для каждого дополнительного вида спорта.

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

Многозначная зависимость записывается X -> -> Y. В этом случае:

Student_Name -> -> Major
Student_Name -> -> Спорт .

Это читается как “Student_Name multidetermines определяет Major” и “Student_Name multidetermines определяет Sport”.

Многозначная зависимость всегда требует как минимум трех атрибутов, потому что она состоит как минимум из двух атрибутов, которые зависят от третьего.

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

Таблица с многозначной зависимостью нарушает стандарт нормализации Четвертой нормальной формы (4NK), поскольку создает ненужные избыточности и может вносить вклад в противоречивые данные. Чтобы довести это до 4NF, необходимо разбить эту информацию на две таблицы.

Таблица ниже теперь имеет функциональную зависимость Student_Name -> Major и не содержит многозначных зависимостей:

Имя ученика
Основной






Ravi История искусств
Ravi История искусств
Ravi История искусств
Beth Химия
Beth Химия

Хотя эта таблица также имеет одну функциональную зависимость Student_Name -> Sport:

Имя ученика
спорт






Ravi Футбол
Ravi Волейбол
Ravi теннис
Beth теннис
Beth Футбол

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

Оцените статью
Solutics.ru
Добавить комментарий