В реляционной базе данных зависимость возникает, когда информация, хранящаяся в той же таблице базы данных, однозначно определяет другую информацию, хранящуюся в той же таблице. Многозначная зависимость возникает, когда наличие одной или нескольких строк в таблице подразумевает наличие одной или нескольких других строк в этой же таблице. Другими словами, два атрибута (или столбцы) в таблице независимы друг от друга, но оба они зависят от третьего атрибута.
Многозначная зависимость предотвращает стандартную четвертую нормальную форму нормализации (4NF). Реляционные базы данных соответствуют пяти нормальным формам, которые представляют собой рекомендации по созданию записей. Они предотвращают аномалии обновления и несоответствия данных. Четвертая нормальная форма относится к отношениям «один-два-один» в базе данных.
Функциональная зависимость от многозначной зависимости
Чтобы понять многозначную зависимость, полезно вернуться к тому, что такое функциональная зависимость.
Если атрибут X однозначно определяет атрибут Y, то Y функционально зависит от X. Это записывается как X -> Y. Например, в таблице «Студенты» имя Student_Name определяет Major:
Имя ученика | Основной |
---|---|
Ravi | История искусства |
в промежутке | Химия |
Эта функциональная зависимость может быть написана: Student_Name -> Major . Каждый Student_Name определяет ровно один майор и не более. Если вы хотите, чтобы база данных также отслеживала спортивные состязания, которые эти студенты берут, вы можете подумать, что самый простой способ сделать это - просто добавить еще один столбец под названием Sport: Проблема здесь в том, что и Рави, и Бет играют в несколько видов спорта. Для каждого дополнительного вида спорта необходимо добавить новую строку. Эта таблица ввела многозначную зависимость, потому что майор и спорт независимы друг от друга, но оба зависят от ученика. Это простой пример и легко идентифицируемый, но многозначная зависимость может стать проблемой в большой, сложной базе данных. Многозначная зависимость записывается X -> -> Y. В этом случае: Имя ученика ->-> ОсновнойИмя ученика->-> спорт
Это читается как «Student_Name multidetermines Major» и «Student_Name multidetermines Sport». Многозначная зависимость всегда требует не менее трех атрибутов, поскольку она состоит из по меньшей мере двух атрибутов, которые зависят от третьего. Таблица с многозначной зависимостью нарушает стандарт нормализации четвертой нормальной формы (4NK), поскольку она создает ненужные избыточности и может способствовать несогласованности данных. Чтобы довести это до 4NF, необходимо разбить эту информацию на две таблицы. В приведенной ниже таблице есть функциональная зависимость Student_Name -> Major и не многозначные зависимости: Хотя эта таблица также имеет одну функциональную зависимость Student_Name -> Sport: Понятно, что нормализация часто устраняется путем упрощения сложных таблиц, чтобы они содержали информацию, связанную с одной идеей или темой, вместо того, чтобы пытаться сделать одну таблицу, содержать слишком много разрозненной информации.Имя ученика Основной спорт Ravi История искусства Футбольный Ravi История искусства Волейбол Ravi История искусства Большой теннис в промежутке Химия Большой теннис в промежутке Химия Футбольный Многозначная зависимость и нормализация
Имя ученика Основной Ravi История искусства Ravi История искусства Ravi История искусства в промежутке Химия в промежутке Химия Имя ученика спорт Ravi Футбольный Ravi Волейбол Ravi Большой теннис в промежутке Большой теннис в промежутке Футбольный