Database Normalization

123bc范式定义作用

  • 范式:范式是为了消除重复数据减少冗余数据,从而让数据库内的数据更好的组织,让磁盘空间得到更有效利用的一种标准化标准,满足高等级的范式的先决条件是满足低等级范式。

  • 函数依赖:一行中,一列可以决定另一列

    Student(Sno, Sname, Ssex, Sage, Sdept),

    Sno → Ssex, Sno → Sage

    Sno → Sdept, Sno ←→ Sname

    Sname → Ssex, Sname → Sage

    但Ssex →Sage, Ssex→ Sdept

  • XY,但 YX 则称 XY 是非平凡的函数依赖。

    XY,但 YX 则称 XY 是平凡的函数依赖。

  • 如果说对于属性组 X,X–>Y,并且 X 的子集 X’ 也同样决定了 Y,即 X‘–>Y。我们将其称为 Y 对 X 的部分函数依赖,记作 X-P->Y

    反之,如果不存在 X 的子集 X’可以决定 Y,并且 X–>Y,那么我们将其称之为完全函数依赖,记作:X-F->Y

    v在关系SC(Sno, Cno, Grade)中,有:

    n 由于:Sno ↛Grade,Cno ↛ Grade,

    因此:(Sno, Cno) F→ Grade

    ​ (Sno, Cno)P→Sno

    ​ (Sno, Cno) P→Cno

  • v如果 XY(YX),YXYZZY, 则称 ZX 传递函数依赖。记为:XZ

    n在关系Std(Sno, Sdept, Mname)中,有:

    Sno → Sdept,Sdept → Mname,

    Mname传递函数依赖于Sno

范式

  1. 1NF:在关系模式 R 中,其所有属性均为简单属性,即每个属性都是不可再分的,那么则称 R 为第一范式

    关系模式 R 为:

    (学生ID,姓名,课程号,课程名,所在系,系主任,成绩)
    
  2. 2NF:关系 R 属于第一范式,同时 R 的每个非主属性完全依赖于码,那么我们将其称之为第二范式。

    R0(学生号,学生名,所在系,系主任)
    R1(学生号,课程号,成绩)
    R2 (课程号,课程名)
    
  3. 3NF:消除传递依赖

    R0(学生号,学生名,所在系)
    R1(所在系,系主任)
    R2(学生号,课程号,成绩)
    R3 (课程号,课程名)
    
  4. BC 范式:他强调了关系模式 R 中所有的属性(包括主属性和非主属性)都完全依赖于码或候选键,并且不存在传递依赖的情况。第二范式是消除了非主属性对主属性的部分依赖,第三范式消除了非主属性对主属性的传递依赖,那么 BC 范式则是对所有属性消除了对于主属性的传递依赖与部分依赖。换句话说,在第三范式的基础上,他消除了主属性之间的传递依赖与部分依赖。 分解为ST(S,T)与TJ(T,J)

模式分解两个原则

模式分解的原则是与原模式等价,模式分解的标准是:

模式分解具有无损连接性

模式分解能够保持函数依赖

Contents