范式篇 - BCNF、3NF和4NF

Boyce - Codd范式

具有函数依赖集合F的关系模式R属于BCNF的条件是,当且仅当对F+中所有函数依赖α → β(其中,α包含于β,且β包含于R),下列至少有一项成立

  • α → β是平凡的函数依赖(即,β包含于α)
  • α是R的超码(即,R包含于α+,α → R)

在这里插入图片描述
回顾:公共部分是否已子关系的键 → 无损连接分解

检查是否为BCNF

为检查非平凡依赖α →β 是违反BCNF的要求

  • 计算α+
  • 检验α+是否包含R的所有属性(即,是否为R的超码)

简化的测试:为检查具有函数依赖集合F的关系模式R是否属于BCNF,只需检查F中的函数依赖是否违反BCNF即可,而不需要检查F+中的所有函数依赖

  • 可以证明如果F中没有违反BCNF的依赖,则F+中也没有违反BCNF的依赖
    因为F+是由Armstrong的3个公理从F推出的而任何公理都会使函数依赖的左边变小(拆分),故若果F中没有违反BCNF的函数依赖(即,左边是超码),则F+中也不会。

但是,当检查R的分解后的关系时仅用F是错误的
在这里插入图片描述

BCNF 分解算法

在这里插入图片描述
BCNF分解示例
在这里插入图片描述
在这里插入图片描述

BCNF与保持依赖

BCNF分解不总是保持依赖的
在这里插入图片描述
因此,我们并不总能满足这三个设计目标:

  • 无损连接
  • BCNF
  • 保持依赖

第三范式(3NF)- 动机

存在这样的情况

  • BCNF不保持依赖
  • 但是,有效检查更新是违反函数依赖是重要的

解决方法:定义一种较弱的范式,称为第三范式(3NF)

  • 允许出现一些冗余(从而会带来一些问题)
  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值