> 文档中心 > 数据管理基础-ch32-36

数据管理基础-ch32-36


ch 32 关系模式及范式

关系模式及第一范式(1 NF)

  • 关系模式由五部分组成,是一个五元组:

    R(U,D,DOM,F)
    • 关系名R是符号化的元组语义
    • U为一组属性
    • D为属性组U中的属性所来自的域
    • DOM为属性到域的映射
    • F为属性组U上的一组数据依赖
  • 由于D,DOM与模式设计关系不大,因此可以把关系模式看作一个三元组:R

    • 当且仅当U上的一个关系r满足F时,r称为关系模式R的一个关系
    • 作为二维表,关系要符合一个最基本的条件,每个分量必须是不可分开的数据项,满足了这个条件的关系模式就属于第一范式(1 NF)
  • 数据依赖

    • 是一个关系内部属性与属性之间的一种约束关系
      • 通过属性间值的相等与否体现出来的数据间相互联系
    • 是现实世界属性间相互联系的抽象
    • 是数据内在的性质
    • 是语义的体现
  • 数据以来的主要类型

    • 函数依赖(Functional Dependency,简记为FD)
    • 多值依赖(Multi-Valued Dependency,简记为MVD)

函数依赖

  • 函数依赖普遍存在在现实生活中

    • 描述一个学生关系,可以有学号、姓名、系名等属性

      • 一个学号值对应一个学生,一个学生只在一个系中学习

      • “学号”值确定后,学生的姓名及所在系的值就被唯一确定

        Sname = f(Sno), Sdept = f(Sno)-记作Sno->Sname,Sno->Sdept
  • [例6.1] 建立一个描述学校教务的数据库。涉及的对象包括:

    • 学生的学号(Sno)
    • 所在系(Sdept)
    • 系主任姓名(Mname)
    • 课程号(Cno)
    • 成绩(Grade)
    • 数据管理基础-ch32-36
  • 假设学校教务的数据库模式用一个单一的关系模式Student来表示,则该关系模式的属性集合为:

    U = {Sno,Sdept,Mname,Cno,Grade}
  • 现实世界已知的事实

    • 一个系有若干学生, 但一个学生只属于一个系;
    • 一个系只有一名(正职)负责人;
    • 一个学生可以选修多门课程,每门课程有若干学生选修;
    • 每个学生学习每一门课程有一个成绩。
  • 由此得到属性组U上的一组函数依赖F:

    F = (Sno->Sdept,Sdept->Mname,(Sno,Cno)->Grade

1 NF的问题

1 NF的问题 1

  • 关系模式Student存在的问题:
    • 数据冗余
      • 浪费大量的存储空间
    • 修改复杂,更新异常(Update Anomalies)
      • 数据冗余,更新数据时,维护数据完整性代价大
    • 插入异常
    • 删除异常

1 NF的问题 2

  • 结论

    • Student关系模式不是一个好的关系模式
  • 原因

    • 由存在于模式中的某些数据依赖引起的
  • 解决方法

    • 用规范化理论改造关系模式来消除其中不合适的数据依赖
  • 把这个单一的模式分成三个关系模式:

    S(Sno,Sdept,Sno->Sdept);SC(Sno,Cno,Grade,(Sno,Cno)->Grade);DEPT(Sdept,Mname,Sdept->Mname);
  • 这三个模式不会发生插入异常,删除异常的问题,数据的冗余也得到了控制

范式

范式 1

  • 范式是符合某一种级别的关系模式的集合。
  • 关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。
  • 范式的种类:
    • 第一范式(1NF)
    • 第二范式(2NF)
    • 第三范式(3NF)
    • BC范式(BCNF)
    • 第四范式(4NF)
    • 第五范式(5NF)

范式 2

  • 各种范式之间存在联系:

    数据管理基础-ch32-36

    • 某一关系模式R为第n范式,可简记为R∈ n N FnNF nNF

    • 一个低一级范式的关系模式,通过模式分解(schema decomposition)可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化(normalization)

      数据管理基础-ch32-36

ch 33 函数依赖与码

函数依赖

函数依赖 1

  • 定义6.1 设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y,X称为这个函数依赖的决定因素(Determinant)

  • [例] Student(Sno, Sname, Ssex, Sage, Sdept), 假设不允许重名,则有:

    Sno → Ssex,      Sno → SageSno → Sdept,    Sno ←→ SnameSname → Ssex, Sname → SageSname → Sdept但Ssex ↛ Sage, Ssex ↛ Sdept

    数据管理基础-ch32-36

函数依赖 2

  • 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。
  • 函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。
    • 例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立
  • 数据库设计者可以对现实世界作强制的规定。
    • 例如规定不允许同名人出现,函数依赖“姓名→年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在, 则拒绝插入该元组。

平凡函数依赖与非平凡函数依赖

  • 在关系模式R(U)中,对于U的子集X和Y,

    • X→Y,但Y ⊈ X,则称X→Y是非平凡的函数依赖
    • X→Y,但Y  X, 则称X→Y是平凡的函数依赖
  • 对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义。因此若不特别声明, 我们总是讨论非平凡函数依赖

  • 例:在关系SC(Sno, Cno, Grade)中

      非平凡函数依赖: (Sno, Cno) → Grade  平凡函数依赖:   (Sno, Cno) → Sno     (Sno, Cno) → Cno

完全函数依赖与部分函数依赖

  • 定义6.2 在R(U)中,如果X→Y,并且对于X的任何一个真子集X’, 都有 X’ ↛ Y, 则称Y对X完全函数依赖,记作X→F Y X\rightarrow^{F} Y XFY
  • 若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X→P Y X\rightarrow^{P} Y XPY

传递函数依赖

数据管理基础-ch32-36

码 1

数据管理基础-ch32-36

码 2

数据管理基础-ch32-36

外码

数据管理基础-ch32-36

ch 34 1NF , 2NF, 3NF

1 NF

  • 如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。
  • 第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。
  • 但是满足第一范式的关系模式并不一定是一个好的关系模式。

2 NF

2 NF 1

数据管理基础-ch32-36

2 NF 2

数据管理基础-ch32-36

2 NF 3

数据管理基础-ch32-36

3 NF