关系型数据库设计的三大范式


一、函数依赖

在这里插入图片描述
1、完全函数依赖
假设X,Y是关系R的两个属性集合,X’是X的真子集,若存在X->Y,对于每个X’都有X’!->Y,则称Y完全函数依赖于X。
即:通过AB能得出C,但是A或B单独得不出C,那么说C完全依赖于AB。
举例:在上图中,通过学号和课程可以确定成绩,但是单用学号和课程无法确定成绩,也就是说成绩完全依赖于学号和课程

2、部分函数依赖
假设Y函数依赖于X,但不是完全函数依赖于X,则称Y部分函数依赖于X。
即:通过AB能得出C,但是只通过A也能得出C,或者只通过B也能得出C,则称C部分函数依赖于AB。
举例:在上图中,通过学号和课程可以得出姓名,而只通过学号也可以得出姓名,所以姓名部分函数依赖于学号和课程

3、传递函数依赖
假设X,Y,Z是关系R中互不相同的属性集合,存在X->Y(Y!->X),Y->Z,则称Z传递函数依赖于X。
即:通过A得出B,通过B得出C,但是C得不出A,则称C传递函数依赖于A。
举例:通过学号可得出学院,通过学院可得出院长,但是院长得不出学号,院长要依赖于学院,也就是院长传递函数依赖于学号

二、三大范式

1、第一范式(1NF)
数据库表中的每一列都是不可分割的原子数据项
在这里插入图片描述
上图商品列中的数据2个风扇,既包含了数量2,又包含了商品名称风扇,不是原子项,需对此列进行拆分:
在这里插入图片描述
2、第二范式(2NF)
在1NF的基础上,实体的属性完全函数依赖于主关键字,不能存在部分函数依赖于主关键字
在这里插入图片描述
上图中的主关键字是学号和课名,成绩完全函数依赖于学号和课名,但是姓名部分函数依赖于学号和课名,即通过学号就可以得出姓名,因此需对表进行拆分:
在这里插入图片描述
在这里插入图片描述

3、第三范式(3NF)
在2NF的基础上,任何非主属性不传递函数依赖于其它非主属性
在这里插入图片描述
在上图中,由学号可以得出学院,由学院可以得出院长,但是院长得不出学号,即存在传递函数依赖,需对表进行进一步拆分:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值