04第六章关系数据理论
分类:
文章
•
2024-11-20 17:24:28
- 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(重点)
- 第二范式

- 习题


- 存在问题
- 模式分解算法

- 关系模式: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.灵活掌握各级范式中存在的问题和解决办法---模式分解
- 数据库逻辑设计的工具──关系数据库的规范化理论