首页 > 编程知识 正文

判断多值依赖,函数依赖是多值依赖的特例

时间:2023-05-03 21:15:05 阅读:163008 作者:482

数据库中的函数依赖,主码,候选码等的区别:单击以打开链接

数据库范式:分为1NF、2NF、3NF、BCNF、4NF。 一般来说,我们把数据库设计到第三范式也是完整的。 这些关系如下

第一范式:定义有很多,但其实说的是分不开的事情。

例如:

发货日期

总额

数量

单价

在关系数据库中不能这样做。

3358www.Sina.com/:r1nf,如果每个非主属性的完全函数依赖于代码,则R2NF。 非主属性意味着完全依赖于代码(候选代码、主代码),但这里需要注意。 非主要属性)候补代码以外的属性),在上一篇文章中进行了叙述。

例如:

(学校编号、学部名称、课程编号、成绩(1nf )学校编号、学部名称、课程编号、成绩)不属于2NF。 在该关系模型中,学校号码的课程号码是代码,其他属性都是非主属性,但只有成绩完全依赖于代码,学部名称部分依赖。 要说为什么,那是因为你可以用学号打出学生所在的系。

3358 www.Sina.com/: http://www.Sina.com/http://www.Sina.com /

http://www.Sina.com/http://www.Sina.com /

http://www.Sina.com/http://www.Sina.com /

第二范式定义

第三范式定义

它的定义。。不打了,太烦了。其实说的就是

消除传递依

。每一个非主属性都要直接依赖于码,不能传递依赖于码。如:在一个

学生表中,我们

规定一个系的学生是住在同一个宿舍区域的,于是,该关

系模型为:

学生表(学号,系名,宿舍区)

在这关系中,学号为码,学号——系名,学号——宿舍区,但是,系名也能推出宿舍区,变成 学号——系名——宿舍区,即宿舍区传递依赖于学好了。

解决方法:拆分成两个表:

1(学号,系名),2(系名,宿舍区)

从上面我们可以看到,在两个表中我们可以看到,当两个表通过外键(1表的系名,2中系名为主健)关联后,另一个表的的信息(如2表中的宿舍区)不能再写到包含外键关系的表中(1表)。

BC范式:前面的三个范式是针对非主属性的,BC范式则是针对于码(什么是码,前篇文章说过),它要求每个函数的依赖关系中其决定因素都要包含码。

http://www.Sina.com/http://www.Sina.com /

如:

在关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。

>若X→→Y,而Z=φ,则称X→→Y为平凡的多值依赖否则称X→→Y为非平凡的多值依赖。

 

多值依赖与函数依赖的区别:

 

1)若函数依赖X→Y在R(U)上成立,则对于任何Y' 属于Y均有X→Y' 成立

 

2)多值依赖X→→Y若在R(U)上成立,不能断言对于任何Y' 属于Y有X→→Y' 成立,因为多值依赖中,其实就是一对一组,一个老师可能交多门课,所以不同老师可能有教相同的课,所以不能推出X→→Y' 成立。我们可以看出,如果把一组改为一个,实际上就是函数依赖,所以所函数依赖是多值依赖的特例,多值依赖不一定是函数依赖,但函数依赖一定是多值依赖。

 

 

多值依赖性质:

 

(1)多值依赖具有对称性

若X→→Y,则X→→Z,其中Z=U-X-Y

(2)多值依赖具有传递性

若X→→Y,Y→→Z, 则X→→Z –Y

(3)函数依赖是多值依赖的特殊情况。

若X→Y,则X→→Y。

(4)若X→→Y,X→→Z,则X→→YU Z。

(5)若X→→Y,X→→Z,则X→→Y∩Z。

 

(6)若X→→Y,X→→Z,则X→→Y-Z,X→→Z -Y。

 

 

 

 

第四范式:1)不允许有非平凡且非函数依赖的多值依赖


                 2)允许的非平凡多值依赖是函数依赖

                 3)平凡的多值依赖属于第四范式

 

像,我们上面的图表(C,T,B),如果改成属于第四范式,就要分为:

 

                           CT(C, T) ∈ 4NF

             CB(C, B) ∈ 4NF

其中, C→→T, C→→B是平凡多值依赖。

 

总结:

目的:尽量消除插入、删除异常,修改复杂,数据冗余

 

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。