关系数据库设计

关系数据库设计

  • 函数依赖
    • 定义
      • 已知元组 UU、关系模式 R(U)R(U) 和关系 r(R)r(R),X,Y⊆UX, Y \subseteq U。
      • 若对任意 t1,t2∈rt_1, t_2 \in r,t1[X]=t2[X]t_1[X] = t_2[X] 时 t1[Y]=t2[Y]t_1[Y] = t_2[Y],则 XX 函数决定 YY,YY 函数依赖于 XX,记作 FD X→Y\mathrm{FD}\ X \to Y。
    • 分类
      • 平凡和非平凡
        • 已知 FD X→Y\mathrm{FD}\ X \to Y,如果 Y⊈XY \not\subseteq X,则其为非平凡函数依赖,否则为平凡函数依赖。
        • 平凡函数依赖中 YY 是 XX 分量中的一部分,函数由整体得到部分。
        • 平凡函数依赖一定成立。
      • 完全和部分
        • 已知 FD X→Y\mathrm{FD}\ X \to Y,如果任意 X′⊂XX' \subset X 都没有 FD X′→Y\mathrm{FD}\ X' \to Y,则其为完全函数依赖,否则为部分函数依赖。
        • 完全函数依赖 XX 的每一部分都是必要的,部分函数依赖只要一部分 XX 就可以决定 YY。
      • 传递和直接
        • 已知 FD X→Y\mathrm{FD}\ X \to Y,FD Y→Z\mathrm{FD}\ Y \to Z,则 FD X→Z\mathrm{FD}\ X \to Z。
        • 如果 Y↛XY \not\to X,则  X→Z\mathrm\ X \to Z 为传递函数依赖,否则为直接函数依赖。
        • 直接函数依赖中 X,YX, Y 一一对应,X,ZX, Z 之间的依赖关系可以与 YY 无关。
  • 多值依赖
    • 定义
      • 已知元组 UU、关系模式 R(U)R(U) 和关系 r(R)r(R),X,Y⊂U,Z=U−X−YX, Y \subset U, Z = U - X - Y。
      • 若对任意 s,t∈Rs, t \in R 满足 s[X]=t[X]s[X] = t[X],都存在 u∈Ru \in R 满足 u[X]=s[X]=t[X],u[Y]=s[Y],u[Z]=t[Z]u[X] = s[X] = t[X], u[Y] = s[Y], u[Z] = t[Z],则有多值依赖 X→→YX \to \to Y。
      • 等价定义:对任意 x∈ΠX(r)x \in \Pi_X(r),都存在一组 {y1,y2,… }⊆ΠY(r)\{y_1, y_2, \dots\} \subseteq \Pi_Y(r) 与其对应,与 ZZ 无关,(x,z1),(x,z2),…(x, z_1), (x, z_2), \dots 对应相同的一组 {y1,y2,… }\{y_1, y_2, \dots\}。
    • 分类
      • 若 X→→Y,Z=U−X−Y⊆∅X \to \to Y, Z = U - X - Y \subseteq \varnothing,则 X→→YX \to \to Y 是平凡多值依赖,否则是非平凡多值依赖。
    • 性质
      • 对称性:若 X→→YX \to \to Y, 则 X→→Z=U−X−YX \to \to Z = U - X - Y。
      • 传递性:若 X→→Y,Y→→ZX \to \to Y, Y \to \to Z,则 X→→Z−YX \to \to Z - Y。
  • 范式
    • 1NF
      • 若关系模式 RR 的每一个属性对应的值域都不可再分,则 RR 满足 1NF,记作 R∈1NFR \in \mathrm{1NF}。
      • 1NF 是最低级别的,所有关系都是 1NF。
    • 2NF
      • 已知 R∈1NFR \in \mathrm{1NF},若 RR 中所有非主属性都完全依赖于每个候选键,则 R∈2NFR \in \mathrm{2NF}。
      • 如果候选键有多个属性,则其部分可能重复,非主属性如果依赖部分,则会产生重复。
      • 如果 R∉2NFR \notin \mathrm{2NF},则可以把 RR 以及其候选键拆分,直到子关系满足 2NF。
    • 3NF
      • 已知 R∈1NFR \in \mathrm{1NF},若 RR 中所有非主属性都直接依赖于每个候选键,则 R∈3NFR \in \mathrm{3NF}。
      • 如果 R∈3NFR \in \mathrm{3NF} 则 R∈2NFR \in \mathrm{2NF},3NF⊂2NF\mathrm{3NF} \subset {2NF}。
    • BCNF
      • 已知 R∈1NFR \in \mathrm{1NF},若 RR 中所有属性都直接依赖于每个候选键,则 R∈BCNFR \in \mathrm{BCNF}。
      • 等价定义:R∈1NFR \in \mathrm{1NF} 的所有函数依赖 F:X→YF: X \to Y 都满足 XX 包含一个候选键,则 R∈BCNFR \in \mathrm{BCNF}。
      • BCNF⊂3NF\mathrm{BCNF} \subset \mathrm{3NF}。
      • 3NF 仅解决非主属性的传递函数依赖问题,BCNF 解决了所有传递函数依赖问题,是函数依赖范围内的最高范式。
    • 4NF
      • 已知 R∈1NFR \in \mathrm{1NF},若 RR 中任意多值依赖 X→→YX \to \to Y 满足 XX 包含键,则 R∈4NFR \in \mathrm{4NF}。
      • 4NF⊂BCNF\mathrm{4NF} \subset \mathrm{BCNF}。
      • 4NF 解决了非平凡非函数依赖的多值依赖,4NF 所允许的非平凡多值依赖实际上是函数依赖。