数据库三范式和BC范式

范式

什么是范式

范式 是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。

满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

函数依赖

在学习范式前,我们还需要了解函数依赖

1. 函数依赖的定义

函数依赖(functional dependency,FD)是一种完整性约束,是现实世界事物属性之间的一种制约关系,它广泛地存在于现实世界中。

在这里插入图片描述

图1可称α函数确定β,或β函数依赖于α,记作α→β

2. 平凡函数依赖与非平凡函数依赖

在这里插入图片描述
在这里插入图片描述

3. 完全函数依赖和部分函数依赖

注:可以看出,当α是单属性是,α→β完全函数依赖总是成立的。

在这里插入图片描述

4. 传递函数依赖

若α→β,β→γ和α→γ都是非平凡函数依赖,且β→α不成立,则称α→γ是传递函数依赖

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ogJiLHR4-1576659913273)(D:\张文东\md笔记\数据库\pictures\图5 传递函数α→γ依赖图.png)]

第一范式(1NF)——码
定义

如果一关系模式r(R)的每个属性对应的域值都是不可分的,则称r(R)属于第一范式(1NF),记为r(R)∈1NF。

目标

将基本数据划分成称为实体集或表的逻辑单元,当设计好每个实体后,需要为其指定主码

第二范式2NF——全部是码
定义

如果一个关系模式r(R)∈1NF,且所有非主属性都完全依赖于r(R)的候选码,则称r(R)属于第二范式(2NF),记作r(R)∈2NF。

设有一关系模式r(R),α ⊆ R。

若α包含在r(R)某一个候选码中,则称α主属性,否则α为非主属性

如:r(R)=r(A,B,C,D),候选码为AB和AD,那么A、B、D就是主属性,C是非主属性。

也就是说,对于满足1NF的关系模式,如果有复合候选码(即多个属性共同构成的候选码),那么非主属性不允许依赖于部分的候选码属性,必须完全依赖于全部的候选码属性——全部是码

目标

将只部分依赖于候选码(即依赖于候选码的部分属性)的非主属性通过关系模式分解到其他表当中。

第三范式3NF——仅仅是码
定义

如果一个关系模式r(R)∈2NF,且所有非主属性都直接依赖于r(R)的候选码(即不存在非主属性传递依赖于候选码),则称r(R)属于第三范式(3NF),记为r(R)∈3NF。

也就是说,对于满足2NF的关系模式,非主属性不能依赖于另一个(组)非主属性(这样就形成了对于候选码的传递依赖),即非主属性只能直接依赖于候选码——仅仅是码

目标

将不直接依赖于候选码(即传递依赖于候选码)的非主属性通过关系模式分解到其它表中去。

总之,所有的非主属性应该直接依赖于(即不能存在传递依赖,这是3NF的要求)全部候选码(即必须完全依赖,不能存在部分依赖,这是2NF的要求)。

Boyce-Codd范式BCNF
定义

给定关系模式r(R)∈1NF,函数依赖集F,若F+(F的闭包)中的所有函数依赖α→β至少满足下列条件之一:

  • α→β是平凡函数依赖(即β⊆α)
  • α是r(R)的一个超码(即α中包含r®的候选码)

则称r(R)属于Boyce-Codd范式,记为r(R)∈BCNF。

从函数依赖角度可得出,一个满足BCNF的关系模式必然满足下列结论:

  1. 所有非主属性都完全依赖于每个候选码
  2. 所有主属性都完全依赖于每个不包含它的候选码。
  3. 没有任何属性完全函数依赖于非候选码的任一组属性。

因此,BCNF不仅排除了任何属性(包括主属性和非主属性)对候选码的部分依赖和传递依赖,而且派出了主属性之间的传递依赖。BCNF确保了通过函数依赖不能再查出任何冗余,即只考虑函数依赖关系时,BCNF已是最好的范式。

做题方法

求候选码

将关系模式r(R)里的所有属性分为4类

  • L:只存在依赖集左边的属性(一定是候选码的属性)
  • R:只存在依赖集右边的属性
  • LR:存在于依赖集左右两边的属性(可能是候选码的属性)
  • N:不存在于依赖集的属性

求候选码顺序

  1. 将关系模式r(R)里的L类和LR类属性写出来
  2. 求L类里的所有属性组成的属性集的闭包
  • 如果闭包等于r(R)里的所有属性,那么该属性集就是候选码,到此结束
  • 不等于则进入第3步
  1. 将LR类里的属性逐个加进L类的属性集,然后求新属性集的闭包
  • 如果闭包等于r(R)里的所有属性,那么该新属性集就是候选码;
  • 如果不是则该新属性集不是候选码;
  • 继续第3步,直至遍历完LR类所有属性
判断最高满足哪种范式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-08Jnezo9-1576659913277)(C:\Users\SAMSUNG\AppData\Roaming\Typora\typora-user-images\1576659444190.png)]

例题

【例1】对于关系模式r(R)=r(A,B,C,D),判断下列关系模式r(R)的候选码和最高满足哪种范式?
  1. F1={C→D,C→A,B→C};
  2. F2={ABC→D,D→A};
  3. F3={A→B,BC→D};

解:

  1. 候选码为:B;因为存在传递依赖,所以最高满足2NF;
  2. 候选码为:ABC和BCD;因为存在依赖D→A,D不是r®的超码,所以最高满足3NF;
  3. 候选码为:AC;因为B部分依赖于候选码AC,所以最高满足1NF。
  • 9
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值