MySQL丨理论丨(五)理论范式

同步发布:Hedon丨MySQL丨理论丨(五)理论范式 (排版更佳!)

1. 函数依赖

1.1 函数依赖的概念

[1] 决定关系

其实就是 Y = f(X),X决定Y,Y依赖于X。

[2] 非平凡的函数依赖

X -> Y,但是 Y ⊊ X

[3] 平凡的函数依赖

X -> Y,但是 Y ⊆ X

[4] 完全函数依赖(X-F>Y)

R(U)是属性集U上的关系模式,X,Y,Z是U的不同子集,非空且不互相包含。

X -> Y,且任意 X 的真子集 X`,都有 X` ⧷> Y ,也就是 X 中没有滥竽充数的,每个都得要。

[5] 部分函数依赖(X-P>Y)

就是不完全函数依赖。

[6] 传递依赖(X-t>Z)

若有 X->Y( Y ⊊ X),Y⧷>X,Y->Z,则必有 X->Z,则称 Z 传递依赖于 X。

△[例题]
  • 左部位单属性的函数依赖一定是完全函数依赖。
    • sno -> sname
    • sno -> class
    • tno -> tname
  • 左部有多个,那就看起真子集能否决定右部属性。
    • (sno,cno) -> grade:
      • sno ⧷> grade
      • cno ⧷> grade
      • 完全函数依赖
    • (sno,cno) -> sname:
      • sno -> sname
      • cno ⧷> sname
      • 部分函数依赖
    • cno -> tname
      • cno -> tno, tno⧷> cno
      • tno -> tname
      • 传递函数依赖

1.2 候选键

[1] 定义

唯一标识实体,且不包含多余属性的属性集。

[2] 相关概念
  • 主键

  • 主属性

    包含在任何一个候选键中的属性。

  • 非主属性

    不包含在任何一个候选键中的属性。

2. 关系模型的规范化

第 1 范式(1NF)

MySQL丨理论丨(五)理论范式
[1] 特点
  • 不重复
  • 原子性
[2] 问题
  • 数据冗余

  • 插入异常

    MySQL丨理论丨(五)理论范式
  • 删除异常

    MySQL丨理论丨(五)理论范式
  • 修改异常

    MySQL丨理论丨(五)理论范式

第 2 范式(2NF)

[1] 特点

任意一个非主属性都完全依赖于R的任一候选键。

MySQL丨理论丨(五)理论范式

MySQL丨理论丨(五)理论范式
[2] 问题
  • 减少了数据冗余

  • 插入异常

    MySQL丨理论丨(五)理论范式
  • 删除异常

    MySQL丨理论丨(五)理论范式
  • 修改异常

    一个地方修改,可能需要修改很多个表。

第 3 范式(3NF)

[1] 特点

消除了非主属性对候选码的传递函数依赖

MySQL丨理论丨(五)理论范式MySQL丨理论丨(五)理论范式
[2] 问题
  • 减少了数据冗余
  • 减少了前面的删除异常
  • 减少了前面的插入异常
  • 减少了前面的修改异常
  • 不彻底性。

BC 范式(BCNF)

[1] 特点
  • R 中的每一个非平凡函数依赖的决定因素都包含一个候选键(只有依赖于候选键的函数依赖)。

    • 消除部分依赖
    • 消除传递依赖
  • BCNF 必定是 3NF

第 4 范式(4NF)

多值依赖(一对多)

MySQL丨理论丨(五)理论范式MySQL丨理论丨(五)理论范式
[1] 特点

如果存在元组(x,y1,z1)和(x,y2,z2),一定存在元组(x,y2,z1)和元组(x,y1,z2)。

U=X+Y+Z,X →→ Y 表示 X 多值决定 Y

  • X的一个值可以确定Y的多个值(这个关系决定于Z的取值无关,也就是说当X值确定后,无论Z取何值,得到的Y总是固定的。
  • 对称性
    • 若 X →→ Y,则 X →→ Z
  • 合并性
    • 若 X →→ Y,且 X →→ Z,则 X →→ YZ
  • 相交性
    • 若 X →→ Y,且 X →→ Z,则 X →→ (Y∩Z)
  • 传递性
    • 若X →→ Y,且 Y →→ Z,则 X →→ (Y-Z),X →→(Z-Y)

第 4 范式(4NF)

[1] 特点

设 R(U)是一个关系模式,D是R上的多值依赖集合。如果D中每个非平凡多值依赖X→→Y,X都包含R的候选键,则R∈4NF。

MySQL丨理论丨(五)理论范式
  • 4NF必定是BCNF
上一篇:SQL数据查询


下一篇:暑期项目实训--第四周3(7.23)