04第六章关系数据理论

  • 6.1问题的提出
    • 数据库设计步骤

    • 关系模式的形式化定义
      • 关系模式由五部分组成,是一个五元组:R(U, D, DOM, F)
      • 关系名R是符号化的元组语义
      • U为一组属性
      • D为属性组U中的属性所来自的域
      • DOM为属性到域的映射
      • F为属性组U上的一组数据依赖
      • 讨论R(U,F)
    • 数据依赖
      • 是一个关系内部属性与属性之间的一种约束关系。
      • 是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现
      • 函数依赖(FD)在数据依赖中,函数依赖是最基本、最重要的一种依赖之一
        • 例如y=f(x)中一个x对应一个y 表中一个学号对应一个学生姓名
      • 多值依赖(自学)
    • Student关系中函数依赖
      • 在Student关系中:Sname=f(Sno),Sdept=f(Sno) 即Sno函数决定Sname Sno函数决定Sdept
      • 记作Sno→Sname,Sno→Sdept
      • x决定y y依赖X
      • 关系模式Student的属性集合为:U={Sno,Sdept,Mname,Cno,Grade}
      • 现实世界的已知事实(语义) :
        • (1)一个系有若干学生,但一个学生只属于一个系;Sno→Sdept
        • (2)一个系只有一名(正职)负责人;Sdept→Sname
        • (3)一个学生可以选修多门课程,每门课程有若干学生选修;
        • (4)每个学生学习每一门课程有一个成绩( Sno,Cno)→grade
    • Student关系模式存在的问题
      • (1)数据冗余
      • (2)修改异常
      • (3)插入异常
      • (4)删除异常
      • 由这个关系模式中的某些数据依赖存在某些不好的性质,用规范化理论改造关系模式来消除其中不合适的数据依赖,把这个单一的模式分成三个关系模式
  • 6.2规范化(重点)
    • 6.2.1  函数依赖
      • 对于R(A,B),如果A的每个值都是与B中惟一一个值对应,就称B函数依赖于A(表示为A→B)

      • 平凡的函数依赖与非平凡的函数依赖
        • 在关系模式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
        • 对于任一关系模式,平凡的函数依赖都是必然成立的,它不反映新的语义。若不特别声明, 我们总是讨论非平凡的函数依赖。
        • 非平凡函数
          • 完全函数依赖与部分函数依赖
            • 定义:在R(U)中,如果X→Y,并且对于X的任何一个真子集X,都有X/→Y(即缺一不可,必须全部出动)则称Y对X完全函数依赖,记作X F→  Y
            • 若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X  P →  Y
          • 传递函数依赖
            • 定义:在R(U)中,如果X→Y,(Y不属于X) ,Y→X,Y→Z, 则称Z对X传递函数依赖。
            • 记为:X → Z 注: 如果Y→X, 即X←→Y,则Z直接依赖于X
    • 6.2.2  码
      • 第一章 码是能够唯一确定某一个元组或某一条记录
      • 第二章唯一确定元组的最小属性组
      • 第六章 属性/属性集合能够完全决定R所有的属性
      • 定义:设K为R<U,F>中的属性或属性组合。若K  → F U, 则K称为R的侯选码若候选码多于一个,则选定其中的一个做为主码(Primary Key)。
      • 设K为R<U,F>中的属性或属性组合。若K —>  U, 则K称为R的侯选码  
      • 超码
        • 如果U部分函数依赖于K,即K →U,则称K为超码。候选码是最小的超码,即K的任意一个真子集都不是候选码。 候选码+属性=超码
      • 主属性与非主属性
        • 包含在任何一个候选码中的属性 ,称为主属性(Prime attribute)不包含在任何码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute)

      • 全码
        • 整个属性组是码,称为全码(All-key)

      • 外部码
        • 定义6.5  关系模式 R中属性或属性组X 并非 R的码,但 X 是另一个关系模式的码,则称 X 是R 的外部码(Foreign key)也称外码
        • 主码与外部码一起提供了表示关系间联系的手段
    • 6.2.3  范式
      • 范式的作用
        • 衡量关系模式好坏的标准就是模式的范式,(Normal Forms,简记为NF)。范式的种类与数据依赖有着直接的联系,基于FD的范式有1NF,2NF,3NF,BCNF等多种。

        • 规范化

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

    • 习题

      • 存在问题
        • (1)插入异常
          • 要插入的学生还未选课,即Cno为空值。
        • (2)删除异常
          • 某个学生只选修一门课程。
        • (3)修改复杂
          • 某学生从数学系转到计算机系,修改内容较多
      • 模式分解算法

        • 关系模式:S-L-C(Sno, Sdept, Sloc, Cno, Grade)
          • 分解成:(1)SC(Sno,Cno,Grade)(2)S-L(Sno,Sdept,Sloc)SC ∈2NF,S-L∈2NF

          • 箭头左边不可分,右边可以
            • AB➡️C AB➡️D AB为码 A→D 部分函数依赖 (有非主属性部分函数依赖码)
          • 1NF通过模式分解可以转化成2NF,主要消除了非主属性对码的部分函数依赖
          • 单个属性做码首先一定是第二范式
    • 6.2.5  3NF(重点)
      • 3NF 不传递依赖于任何的码 存在非主属性传递依赖与码的不是3NF

      • 模式分解算法
      • 非主属性传递依赖的优化

    • 6.2.6  BCNF(重点)
      • 消除主属性问题 如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除异常。

      • 所有的函数依赖左边决定方是否含有候选码,有则为BCDF 非主属性为空

      • 3NF与BCNF的关系

    • *6.2.7  多值依赖
    • *6.2.8  4NF
    • 6.2.9  规范化小结
      • 基本思想:逐步消除数据依赖中不合适的部分
      • 实质:概念的单一化

  • 6.3数据依赖的公理系统(重难点)
  • 6.4模式分解
  • 6.5小结
    • 内容要求:1,了解什么是一个不好的数据库模式,关系模式的沉余和异常问题
    • 2.掌握数据依赖的基本概念,范式的概念,从1NF到BCNF的定义
    • 3.灵活掌握各级范式中存在的问题和解决办法---模式分解
  • 数据库逻辑设计的工具──关系数据库的规范化理论
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章