【数据库笔记】范式(1NF、2NF、3NF)

1NF | 第一范式

表的每一个单元格都是不可再细分的项(原子性),换句话说不可大表套小表。这是一张表可以成为关系表的前提,不满足第一范式的表不是关系表。

2NF | 第二范式

在满足第一范式的前提下, 若关系中每一个非主属性都完全依赖于任何一个候选码(即不存在部分依赖),则该关系满足第二范式。
例:

Student(
Sno 学号 候选码
Cno 课程号 候选码
Grade 成绩
Sdept 专业
Sloc 宿舍号
)

我们假设同一专业的学生都居住在同一个宿舍中。那么有以下的函数依赖关系:
在这里插入图片描述
可以看出Sdept和Sloc对两个候选码是部分函数依赖关系,那么在增删改时就容易出现问题。

解决方式:投影分解法: 将一张表中部分依赖于某些候选码的属性与对应的候选码单独拆开成新表。

SC(Sno, Cno, Grade)
SL(Sno, Sdept, Sloc)

这样就产生了两个满足第二范式的关系。

3NF | 第三范式

在满足第二范式的前提下,若关系中不存在传递函数依赖,则该关系满足第三范式。
例:
上文中的

SL(Sno, Sdept, Sloc)

学号可以决定专业和所住的宿舍,同时宿舍也被专业决定了,这就存在传递函数依赖。

需要注意的是,若X←→Y,X→Y→Z,这种情况并不是传递函数依赖。

解决方式依然是拆分,将X→Y→Z拆分成X→Y与Y→Z两个关系。

SD(Sno, Sdept)
DL(Sdept, Sloc)

这样就得到了两个满足第三范式的关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值