数据库-规范化理解

数据库概论-关系数据理论-规范化

范式

ps:关系数据库中的关系是要瞒住一定要求的,满足不同程度要求的为不同范式。

一个低一级范式的关系模式通过模式分解(schema decomposition)可以转换为若干`个高一级范式的关系模式的集合,这种过程就叫*规范性*

在这里插入图片描述

2NF

简单来说,在第一范式的基础上,且每一个非主属性完全函数依赖于任何一个候选码,则此时为第二范式。

举个栗子:
具体意思可以不用搞懂,可以先只分析一下函数依赖
S-L-C(sno,sdept,sloc,cno,grade),码为(sno,cno)
有函数依赖:
(sno,cno)—F—>grade
sno->sdept,(sno,cno)—p—>sdept
sno->sloc ,(sno,cno)–p–>sloc
sdept->sloc

sdept和sloc并不是完全函数依赖于码,是部分函数依赖于码,而grade是完全函数依赖于码

而第二范式需要的就是要每一个非主属性完全函数依赖于任何一个候选码

这里就可以看出区别啦,只需要使用投影分解把关系模型分解为两个关系模型,

sc(sno,cno,grade)和s-l(sno,sdept,sloc)

3NF

同样的,在2NF的基础上,每一个非主属性不传递依赖于码,就是3NF。
ps:即第三范式,每一个非主属性即不传递依赖于码,也不部分依赖于码,也就是说,可以证明如果关系属于3NF,则必属于2NF.

举个栗子:
拿上面的栗子来说,
sc没有传递依赖,即属于3NF
s-l,中sno->sdept,sdept->sloc,即sno–传递–>sloc,此时有非主属性对码的传递依赖。

解决的方法同样是将S-L分解
s-d(sno,sdept)和d-l(sdept,sloc)

BCNF

可以理解为升级版的第三范式,即若在关系模式中,若每一个决定属性集都包含候选码,则为BCNF。

举个栗子
若有关系模型stj(s,t,j)
有函数依赖:
(s,j)–>t
(s,t)–>j
t–>j
(s,j),(s,t)都是候选码

很明显,此时t是决定因素,但是t不包含码
所以此时stj只是属于3NF,但是不属于BCNF哦

提一点:一个关系模式中的关系模式如果都属于BCNF,那么在函数依赖范畴内它已经实现了彻底的分离。

规范化小结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值