函数依赖和范式

一、函数依赖概念

1、函数依赖概念:相当于数学中的函数,U是属性全集,x和y是U上的子集,x对应唯一确定的y,即x->y(y依赖于x)。

2、完全依赖和不完全依赖:U是属性全集,x和y是U上的子集,x1是x的真子集,如果x->y,且x1不能确定y,则是完全函数依赖,反之x1->y,则是不完全函数依赖。

3、传递依赖:U是属性全集,x、y和z是U上的子集,x->y(但是y不能确定x),y->z,则x->z。

二、范式

作用与背景:消除关系模式的数据冗余,解决删除和插入操作的异常。从而为不同程度的规范化设立不同的标准。

1NF:属性不能再拆分。举一个反例,关系模式R(身份,身体状况),明显身份可以拆分为姓名,编号等,所以不是第一范式。

2NF:非主属性完全依赖于码。举一个反例,关系模式R(姓名,学号,班级编号,班级名),满足1NF,候选码为学号和班级编号,(学号,班级编号)->姓名,(学号,班级编号)->班级名,但是学号->姓名,班级编号->班级名,所以不是第二范式。(通过完全依赖概念得出)

3NF:非主属性不传递依赖于码。举一个反例,关系模式(姓名,学号,班级,班主任),满足2NF,,主键是学号,但是学号->班级,班级->班主任,得出学号->班主任,所以不是第三范式。(通过传递依赖概念得出)

BCNF:消除主属性对码的部分依赖和传递依赖。反例不好举出,凑一个吧,满足3NF,关系模式(姓名,学号,学科号,成绩),假设名字没有重复,得出依赖姓名->学号,学号->姓名,(学号,学科号)->成绩,(姓名,学科号)->成绩,可以看出主属性对码的部分依赖,达不到BCNF。

总结:一般达到3NF可在市场流通。

4NF:满足BCNF,消除“多对多”的关系模式。

如:“多对多”模式

可以看出学号,姓名,课程编号,课程名称重复,数据冗余,可以化为“一对多”的模式,从而实现4NF。

          

学生信息表(左)和选课表(右)(一对多)

课程表(左)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值