数据库中关于范式的判断

1NF
实体中不能有重复的属性。每个元组的每个分量都是原子的。

2NF
数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖。
在1NF的基础上,要求每个非键属性依赖于键的整体(直接或间接),而不是键的部分属性,即不允许有非平凡函数依赖的右面是非键属性,而左面是某个键的真子集。
满足2NF的几种情形:
1.不存在非平凡函数依赖。
2.存在非平凡函数依赖,且其右面是某个键的组成部分(键属性)。
3.存在非平凡函数依赖,且其右面是非键属性,则其左面要么是超键,要么包含非键属性。

3NF
在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。
关系模式R满足3NF当且仅当若非平凡函数依赖 A1A2…An → B 在关系R中成立,则{A1,A2,…,An}是R的超键,或者B是某个键的组成部份(键属性)。
3NF分解算法:
1.对于关系模式R和R上的函数依赖集F,先求出F的最小依赖集,然后再把最小依赖集中那些左部相同的函数依赖用合并规则合并起来。
2.对最小依赖集中的每个函数依赖X→Y去构成一个模式XY。
3.在构成的模式集中,如果每个模式都不包含R的候选键,那么把任一候选键作为一个模式放入模式集中。
这样得到的模式集是关系模式R的一个分解,并且这个分解既是无损分解,又能保持函数依赖。
第三范式结论:一个关系模式总可以分解为满足3NF的模式,且所有的函数依赖都可得到保持。

BCNF
BCNF:在第三范式的基础上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合第三范式。
BC范式成立当且仅当若非平凡函数依赖 A1A2…An → B1B2…Bm 在关系R中成立,则{A1,A2,…,An}是R的超键。
关系R满足BC范式的两种情形:关系R中不存在非平凡函数依赖或每个非平凡函数依赖的左边都是超键。
关系R违背BC范式的唯一情形:关系R中至少存在一个函数依赖,其左边不是超键。
判断BC范式的方法:找出所有的键和所有的非平凡函数依赖,判断左边是否是超键。
仅有两个属性的关系必是BC范式。
BC范式分解算法:
1.找一个违背BCNF的非平凡函数依赖A1A2…An → B1B2…Bm 。
2.把关系R分解成两个关系:
R1(A1,A2,…,An, B1,B2,…,Bm)。
R2(A1,A2,…,An, 所有其它属性)。
若不满足BC范式,则再分解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值