数据库的设计,数据依赖的概念及关系模式的规范化理论

一、数据依赖

1.函数依赖(Functional Dependency, FD)

  • 定义:若属性集 X 的值唯一确定属性集 Y 的值,则称 Y 函数依赖于 X,记作 X → Y。
  • 完全函数依赖:Y 依赖于 X 的全部属性,而非 X 的任意子集。
  • 部分函数依赖:Y 依赖于 X 的某个真子集。
  • 传递函数依赖:若 X → Y,Y → Z,且 Y ↛ X,则称 Z 传递依赖于 X。

2.多值依赖(Multivalued Dependency, MVD)

  • 定义:若属性集 X 的值决定属性集 Y 的多个独立值集合,则称 Y 多值依赖于 X,记作 X ↠ Y。
  • 当且仅当关系模式中存在非平凡多值依赖时,需分解为更高范式。

3.连接依赖(Join Dependency)

  • 关系模式可无损分解为多个子模式,并通过自然连接恢复原关系。

二、关系模式规范化理论

目的:消除数据冗余、插入/删除/更新异常

1. 范式(Normal Forms)

  • 第一范式(1NF)属性不可再分(原子性),每列存储单一值。
  • 第二范式(2NF)满足 1NF,且所有非主属性完全函数依赖于候选键(消除部分依赖)。
  • 第三范式(3NF)满足 2NF,且非主属性不传递依赖于候选键(消除传递依赖)。
  • 巴斯-科德范式(BCNF)满足 3NF,且所有函数依赖的左部均为超键(消除主属性对候选键的部分/传递依赖)。
  • 第四范式(4NF)满足 BCNF,且消除非平凡多值依赖。
  • 第五范式(5NF)消除连接依赖,确保关系模式无损分解为更小关系。

2. 规范化过程

  • 分解方法:将低范式关系模式分解为多个高范式关系模式,确保无损连接性和依赖保持性。无损分解:分解后的关系通过自然连接能恢复原数据。
    依赖保持:分解后的依赖集与原依赖集等价。
  • Armstrong公理:推导函数依赖的基本规则(自反律、增广律、传递律)。

3. 候选键与闭包

  • 候选键:能唯一标识元组的最小属性集。
  • 闭包(X⁺):由属性集 X 通过函数依赖可推导出的所有属性集合。
  • 覆盖(Cover):最小函数依赖集,与原依赖集等价但无冗余。

三、关键算法与概念

  • 求候选键:通过属性闭包确定候选键。
  • 最小函数依赖集:消除冗余依赖和属性。
  • BCNF分解算法:通过递归分解消除非平凡函数依赖。
  • 3NF合成算法:保持依赖的无损分解方法。

四、规范化的优缺点

  • 优点:减少冗余、避免数据异常、提升一致性。
  • 缺点:过度分解可能导致查询效率降低(需通过反规范化权衡)。

五、实际应用

  • 反规范化:为优化查询性能,允许一定程度冗余。
  • 设计工具:ER图、依赖图辅助分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值