DBMS中的多值依赖

什么是多值依赖?

当表中存在一个或多个行时,意味着同一表中存在一个或多个其他行,则发生多值依赖关系。

如果表具有属性P,Q和R,则Q和R是P的多值事实。

用双箭头表示-

->->


对于我们的示例:

P->-> Q
P->-> R


在上述情况下,仅当Q和R是独立属性时,才存在多值依赖关系。

具有多值依赖关系的表违反了4NF。

示例

让我们看一个例子&mins;

<学生>

学生姓名
课程学科
活动项目
阿米特
数学
唱歌
阿米特
数学
跳舞
尤夫拉吉
电脑
蟋蟀
阿卡什
文学
跳舞
阿卡什
文学
蟋蟀
阿卡什
文学
唱歌


在上表中,我们可以看到Student Amit Akash 对不止一项活动感兴趣。

这是多值依赖关系,因为学生的CourseDiscipline 独立于“活动”,但依赖于学生。

因此,多值依赖关系-

StudentName->-> CourseDiscipline
StudentName->->活动


上述关系违反了归一化中的第四范式。

要更正它,请将表分为两个单独的表,然后中断多值依赖关系-

<StudentCourse>

学生姓名
课程学科
阿米特
数学
阿米特
数学
尤夫拉吉
电脑
阿卡什
文学
阿卡什
文学
阿卡什
文学


<学生活动>

学生姓名
活动项目
阿米特
唱歌
阿米特
跳舞
尤夫拉吉
蟋蟀
阿卡什
跳舞
阿卡什
蟋蟀
阿卡什
唱歌


这打破了多值依赖关系,现在我们有了两个功能依赖关系-

StudentName-> CourseDiscipline
StudentName->活动