数据库范式规范化

博客围绕数据库展开,介绍了关系模型五元组,阐述数据依赖中的函数依赖,包括完全、部分和传递函数依赖。定义了候选键、超键和外键。还讲解了不同范式,如1NF、2NF、3NF和BCNF,说明了范式间关系及范式化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由关系模型的形式化定义得出:一个关系模型应当是一个五元组。
R(U,D,DOM,F)R(U,D,DOM,F)R(U,D,DOM,F)

参数含义
R符号化的元组语义
U为一组属性
D为属性组U中的属性所来自的域
DOM属性到域的映射
F属性组U上的一组数据依赖

数据依赖是一个关系内部属性与属性之间的一种约束关系。这种约束关系是通过属性间值得相等与否体现出来的数据间得相关联系。

函数依赖

定义:设R(U)是属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X→YX \rightarrow YXY

定义:在R(U)R(U)R(U)中,如果X→YX \rightarrow YXY,并且对于X的任何一个真子集X′X'X,都有X′↛YX' \nrightarrow YXY,则称Y对X完全函数依赖,记作X→FYX \rightarrow^F YXFY
X→YX \rightarrow YXY,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X→PYX \rightarrow^P YXPY

定义:在R(U)R(U)R(U)中,如果X→Y(Y⊈)X,Y↛X,Y→Z,Z⊈YX \rightarrow Y(Y \nsubseteq) X,Y \nrightarrow X,Y \rightarrow Z,Z \nsubseteq YXY(Y)X,YX,YZ,ZY则称Z对X传递函数依赖,记为X→传递ZX \rightarrow^{传递} ZX传递Z

定义: 设K为R<U,F>中的属性或属性组合,若K→FUK \rightarrow^F UKFU则K为R的候选键(candidate key)。
如果U部分函数依赖于K,即K→PUK \rightarrow^P UKPU则K称为超键(Surpkey)。候选键是最小的超键,即K的任意一个真子集都不是候选键。

定义: 关系模式R中属性或属性组X并非R的键,但X是另一个关系模式的键,则称X是R的外部键(foreign key),也称外键。

范式

关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。
1971-1972年Codd系统的提出了1NF、2NF、3NF的概念,讨论了规范化的问题。1974年,Codd和Boyce共同提出一个新范式,即BCNF。1976年Fagin提出了4NF。后来又有研究人员提出5NF。

对于各种范式之间的关系有:
5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF5NF \subset 4NF \subset BCNF \subset 3NF \subset 2NF \subset 1NF5NF4NFBCNF3NF2NF1NF
一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫做范式化。

1NF

符合1NF的关系中每个属性都不可再分。
即列不可再分,每一列具有原子性。

2NF

定义:若R∈1NFR \in 1NFR1NF且每一个非主属性完全函数依赖于任何一个候选键,则R∈2NFR \in 2NFR2NF
即在满足1NF的前提下,属性完全依赖于主键,不存在对主键的部分依赖

3NF

定义:设关系模式R<U,F>∈1NFR<U,F> \in 1NFR<U,F>∈1NF若R中不存在这样的键X,属性组Y及非主属性Z(Z⊉Y)(Z \nsupseteq Y)(ZY)使得X→Y,Y→ZX \rightarrow Y,Y \rightarrow ZXY,YZ成立,Y↛XY \nrightarrow XYX,则称R<U,F>∈3NFR<U,F> \in 3NFR<U,F>∈3NF
即在满足2NF的前提下,没有间接依赖于主键的列

BCNF

BCNF(Boyce Codd Normal Form)是由Boyce与Codd提出,比3NF又进一步,通常认为BCNF是修正的第三范式

定义:关系模式R<U,F>∈1NFR<U,F> \in 1NFR<U,F>∈1NF,若X→YX \rightarrow YXYY⊈XY \nsubseteq XYX时X比含有键,则R<U,F>∈BCNFR<U,F> \in BCNFR<U,F>∈BCNF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盛者无名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值