关系数据库设计

关系数据库设计

  • 函数依赖
    • 定义
      • 已知元组 UU、关系模式 R(U)R(U)关系 r(R)r(R)X,YUX, Y \subseteq U
      • 若对任意 t1,t2rt_1, t_2 \in rt1[X]=t2[X]t_1[X] = t_2[X]t1[Y]=t2[Y]t_1[Y] = t_2[Y],则 XX 函数决定 YYYY 函数依赖于 XX,记作 FD XY\mathrm{FD}\ X \to Y
    • 分类
      • 平凡和非平凡
        • 已知 FD XY\mathrm{FD}\ X \to Y,如果 Y⊈XY \not\subseteq X,则其为非平凡函数依赖,否则为平凡函数依赖。
        • 平凡函数依赖中 YYXX 分量中的一部分,函数由整体得到部分。
        • 平凡函数依赖一定成立。
      • 完全和部分
        • 已知 FD XY\mathrm{FD}\ X \to Y,如果任意 XXX' \subset X 都没有 FD XY\mathrm{FD}\ X' \to Y,则其为完全函数依赖,否则为部分函数依赖。
        • 完全函数依赖 XX 的每一部分都是必要的,部分函数依赖只要一部分 XX 就可以决定 YY
      • 传递和直接
        • 已知 FD XY\mathrm{FD}\ X \to YFD YZ\mathrm{FD}\ Y \to Z,则 FD XX\mathrm{FD}\ X \to X
        • 如果 Y↛XY \not\to X,则  XZ\mathrm\ X \to Z 为传递函数依赖,否则为直接函数依赖。
        • 直接函数依赖中 X,YX, Y 一一对应,X,ZX, Z 之间的依赖关系可以与 YY 无关。
  • 多值依赖
    • 定义
      • 已知元组 UU、关系模式 R(U)R(U) 和关系 r(R)r(R)X,YU,Z=UXYX, Y \subset U, Z = U - X - Y
      • 若对任意 s,tRs, t \in R 满足 s[X]=t[X]s[X] = t[X],都存在 uRu \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],则有多值依赖 XYX \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\}
    • 分类
      • XY,Z=UXYX \to \to Y, Z = U - X - Y \subseteq \varnothing,则 XYX \to \to Y 是平凡多值依赖,否则是非平凡多值依赖。
    • 性质
      • 对称性:若 XYX \to \to Y, 则 XZ=UXYX \to \to Z = U - X - Y
      • 传递性:若 XY,YZX \to \to Y, Y \to \to Z,则 XZYX \to \to Z - Y
  • 范式
    • 1NF
      • 若关系模式 RR 的每一个属性对应的值域都不可再分,则 RR 满足 1NF,记作 R1NFR \in \mathrm{1NF}
      • 1NF 是最低级别的,所有关系都是 1NF。
    • 2NF
      • 已知 R1NFR \in \mathrm{1NF},若 RR 中所有非主属性都完全依赖于每个候选键,则 R2NFR \in \mathrm{2NF}
      • 如果候选键有多个属性,则其部分可能重复,非主属性如果依赖部分,则会产生重复。
      • 如果 R2NFR \notin \mathrm{2NF},则可以把 RR 以及其候选键拆分,直到子关系满足 2NF。
    • 3NF
      • 已知 R1NFR \in \mathrm{1NF},若 RR 中所有非主属性都直接依赖于每个候选键,则 R3NFR \in \mathrm{3NF}
      • 如果 R3NFR \in \mathrm{3NF}R2NFR \in \mathrm{2NF}3NF2NF\mathrm{3NF} \subset {2NF}
    • BCNF
      • 已知 R1NFR \in \mathrm{1NF},若 RR 中所有属性都直接依赖于每个候选键,则 RBCNFR \in \mathrm{BCNF}
      • 等价定义:R1NFR \in \mathrm{1NF} 的所有函数依赖 F:XYF: X \to Y 都满足 XX 包含一个候选键,则 RBCNFR \in \mathrm{BCNF}
      • BCNF3NF\mathrm{BCNF} \subset \mathrm{3NF}
      • 3NF 仅解决非主属性的传递函数依赖问题,BCNF 解决了所有传递函数依赖问题,是函数依赖范围内的最高范式。
    • 4NF
      • 已知 R1NFR \in \mathrm{1NF},若 RR 中任意多值依赖 XYX \to \to Y 满足 XX 包含键,则 R4NFR \in \mathrm{4NF}
      • 4NFBCNF\mathrm{4NF} \subset \mathrm{BCNF}
      • 4NF 解决了非平凡非函数依赖的多值依赖,4NF 所允许的非平凡多值依赖实际上是函数依赖。