55
回回 回回 5.1 5.1 回回回回回 回回回回回 5.1.1 5.1.1 回回回回回回回回回回回 回回回回回回回回回回回 5.1.2 5.1.2 回回回回回回回回回回回回回 回回回回回回回回回回回回回 (1) (1) 信信信信信信信信信 信信信信信信信信信 (2) (2) 信信信信信信信 信信信信信信信 5.2 5.2 回回回 回回回 5.2.1 5.2.1 回回回回 回回回回

5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

  • Upload
    binah

  • View
    183

  • Download
    0

Embed Size (px)

DESCRIPTION

回顾. 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1 函数依赖. 6.2.3 范式 ( 续 ). 规范化的 基本思想 是消除关系模式中的数据冗余,消除数据依赖中的不合适的部分,解决数据插入、删除、更新时发生异常现象。 这就要求关系数据库设计出来的关系模式要满足一定的条件。 我们把关系数据库的规范化过程中为不同程度的规范化要求设立的不同标准称为 范式 ( Normal Form ). 6.2.3 范式 ( 续 ). - PowerPoint PPT Presentation

Citation preview

Page 1: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

回顾回顾回顾回顾 5.1 5.1 问题的提出问题的提出

5.1.1 5.1.1 关系数据模型的简单回顾关系数据模型的简单回顾 5.1.2 5.1.2 数据库设计中的数据语义问题数据库设计中的数据语义问题

(1) (1) 信息的不可表示问题信息的不可表示问题 (2) (2) 信息的冗余问题信息的冗余问题

5.2 5.2 规范化规范化 5.2.1 5.2.1 函数依赖函数依赖

Page 2: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

规范化的规范化的基本思想基本思想是消除关系模式是消除关系模式中的数据冗余,消除数据依赖中的中的数据冗余,消除数据依赖中的不合适的部分,解决数据插入、删不合适的部分,解决数据插入、删除、更新时发生异常现象。除、更新时发生异常现象。

这就要求关系数据库设计出来的关这就要求关系数据库设计出来的关系模式要满足一定的条件。系模式要满足一定的条件。

我们把关系数据库的规范化过程中我们把关系数据库的规范化过程中为不同程度的规范化要求设立的不为不同程度的规范化要求设立的不同标准称为同标准称为范式范式(( Normal Normal FormForm ))

Page 3: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

由于规范化的程度不同,就产生由于规范化的程度不同,就产生了了不同的范式不同的范式。。 满足最基本规范化要求的关系模满足最基本规范化要求的关系模式叫式叫第一范式第一范式,, 在第一范式中进一步满足一些要在第一范式中进一步满足一些要求为求为第二范式第二范式,, 以此类推就产生了以此类推就产生了第三范式第三范式等概念。等概念。 每种范式都规定了一些限制约束条件。每种范式都规定了一些限制约束条件。

Page 4: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

1NF1NF 定义定义

关系中每一分量不可再分。关系中每一分量不可再分。即不能以集合、序列等作为即不能以集合、序列等作为属性值属性值

Page 5: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

如果一个关系模式如果一个关系模式 RR 的所有属性的所有属性都是都是不可分的基本数据项不可分的基本数据项,则,则R 1NF∈R 1NF∈ 。。

第一范式是对关系模式的最起码第一范式是对关系模式的最起码的要求。不满足第一范式的数据的要求。不满足第一范式的数据库模式不能称为关系数据库。库模式不能称为关系数据库。

但是满足第一范式的关系模式并但是满足第一范式的关系模式并不一定是一个好的关系模式。不一定是一个好的关系模式。

Page 6: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

表 2.3 非规范化关系POSTGRADUATE

SUPERVISORSPECIALITY PG1 PG2

张清玫 信息专业 李勇 刘晨刘逸 信息专业 王敏

Page 7: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

S#S# C#C#S1S1 {C1{C1,, C2C2,, C3}C3}

S#S# C#C#S1S1 C1C1S1S1 C2C2S1S1 C3C3

Page 8: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

2NF2NF 定义定义 6.66.6

若若 RR1NF1NF ,且每个非主属性完全,且每个非主属性完全函数依赖于码,则称函数依赖于码,则称 RR2NF2NF

消除非主属性对码的部分函数依赖消除非主属性对码的部分函数依赖

Page 9: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

例例 : : 关系模式 关系模式 SLC(Sno, Sdept, Sloc, Cno, SLC(Sno, Sdept, Sloc, Cno,

Grade)Grade) SlocSloc 为学生住处,假设每个系的学生住在同地方为学生住处,假设每个系的学生住在同地方 函数依赖包括:函数依赖包括: (Sno, Cno) → Grade(Sno, Cno) → Grade Sno → SdeptSno → Sdept (Sno, Cno) → Sdept(Sno, Cno) → Sdept Sno → SlocSno → Sloc (Sno, Cno) → Sloc(Sno, Cno) → Sloc Sdept → SlocSdept → Sloc

Page 10: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

SLC 的码为 (Sno, Cno)

SLC 满足第一范式 非主属性 Sdept和 Sloc 部分函数依赖于码 (Sno,

Cno)

Sno

Cno

Grade

Sdept

Sloc

SLC

Page 11: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

SLC(Sno, Sdept, Sloc, Cno, Grade)

SLC 不是一个好的关系模式 (1) 插入异常

假设 Sno=95102, Sdept= IS, Sloc=N 的学生还未选课,因课程号是主属性,因此该学生的信息无法插入 SLC 。

Page 12: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

(2) 删除异常 假定某个学生本来只选修了 3

号课程这一门课。现在因身体不适,他连 3 号课程也不选修了。因课程号是主属性,此操作将导致该学生信息的整个元组都要删除。

Page 13: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

(3) 数据冗余度大 如果一个学生选修了 10 门课程

,那么他的 Sdept和 Sloc 值就要重复存储了 10 次。

Page 14: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

(4) 修改复杂(更新异常) 例如学生转系,在修改此学生元

组的 Sdept 值的同时,还可能需要修改住处( Sloc )。如果这个学生选修了 K 门课,则必须无遗漏地修改 K 个元组中全部 Sdept、 Sloc 信息。

Page 15: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

原因SLCSLC2NF2NF

因为因为 Sdept 、 Sloc 部分函数依赖于码。

p

p(Sno,Cno) Sdept

(Sno,Cno) Sloc

Page 16: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

解决方法 SLC 分解为两个关系模式,

以消除这些部分函数依赖 SC( Sno, Cno, Grade ) SL( Sno, Sdept, Sloc )

Page 17: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

分解成 2NF 后的函数依赖图:

Sno

Cno

Grade

SCSL

Sno

Sdept

Sloc

Page 18: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

定义定义 6.66.6 若若 RR1NF1NF ,且每个非主属性完,且每个非主属性完

全函数依赖于码,则称全函数依赖于码,则称 RR2NF2NF

消除非主属性对码的部分函消除非主属性对码的部分函数依赖数依赖

Page 19: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

例:SLC(Sno, Sdept, Sloc, Cno, Grade) 1NF∈

SLC(Sno, Sdept, Sloc, Cno, Grade) 2NF ∈

SC( Sno , Cno , Grade ) ∈ 2NF

SL( Sno , Sdept , Sloc ) ∈ 2NF

Page 20: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

采用投影分解法将一个 1NF的关系分解为多个 2NF 的关系,可以在一定程度上减轻原1NF 关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。

Page 21: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

将一个 1NF 关系分解为多个2NF 的关系,并不能完全消除关系模式中的各种异常情况和数据冗余等问题。

Page 22: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

定义定义 6.7 6.7 关系模式R<U, F> 中若不存在这样的码 X 、属性组 Y 及非主属性Z(Z Y), 使得 X→Y,Y → X,Y→Z, 成立,则称R<U, F> ∈ 3NF 。

Page 23: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

定义 6.7 如果关系模式 R的任何一个非主属性

既不部分函数依赖于候选码,也不传递依赖于候选码,则称 R 是第三范式,

则记为 3NF (或 R 3NF)∈

Page 24: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

例: 2NF 关系模式 SL(Sno, Sdept, Sloc) 中

函数依赖: Sno→Sdept Sdept→Sloc Sno→Sloc

Page 25: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

函数依赖图:

SL

Sno

Sdept

Sloc

Page 26: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

20010521352001052135 ISIS 8#8#

20010221202001022120 CSCS 7#7#

20010221212001022121 CSCS 7#7#

20010121212001012121 GLGL 3#3#

SL

Page 27: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

插入异插入异常:常: 如果没有如果没有 ISIS 系学生尚未报道,系学生尚未报道,

则则ISIS 系学生住系学生住 8#8# 的信息就难以插入的信息就难以插入

删除异常:删除异常: 如果仅有学生如果仅有学生 20010521352001052135在在 ISIS

系,如果改学生因毕业而删除,系,如果改学生因毕业而删除,则有关则有关 ISIS 系学生住系学生住 8#8# 的信息也的信息也随之删除了。随之删除了。

Page 28: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

数据冗余:数据冗余: 学生很多,系有限,每个系学生学生很多,系有限,每个系学生

住的楼栋信息反复存储多次住的楼栋信息反复存储多次 更新异常:更新异常:

如果将如果将 CSCS 系的学生搬到系的学生搬到 44 #,#,则需要找到则需要找到 CSCS 系的每个学生,系的每个学生,逐一修改逐一修改

Page 29: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

解决方法 采用投影分解法,把 SL 分解为两

个关系模式,以消除传递函数依赖: SD( Sno , Sdept ) DL( Sdept , Sloc ) SD 的码为 Sno , DL 的码为 Sdept

Page 30: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

3NF

Sno Sdept

SD

Sdept Sloc

DL

Page 31: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

例 SL(Sno, Sdept, Sloc) 2NF∈ SL(Sno, Sdept, Sloc) 3NF ∈ SD( Sno , Sdept ) ∈

3NF

DL( Sdept , Sloc )∈ 3NF

Page 32: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

若 R 3NF∈ ,则 R 的每一个非主属性既不部分函数依赖于候选码也不传递函数依赖于候选码。

如果 R 3NF∈ ,则 R 也是2NF

Page 33: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

采用投影分解法将一个 2NF的关系分解为多个 3NF 的关系,可以在一定程度上解决原 2NF 关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。

Page 34: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

将一个 2NF 关系分解为多个3NF 的关系后,并不能完全消除关系模式中的各种异常情况和数据冗余。

Page 35: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

BCBC 范式(范式( BCNFBCNF )) 定义定义 5.9 5.9 设关系模式设关系模式

R<UR<U,, F>∈F>∈1NF1NF ,如果对于,如果对于 RR

的的每个函数依赖每个函数依赖 X→YX→Y ,若,若 YY 不不属于属于 XX ,则,则 XX 必含有候选码,那必含有候选码,那么么 R BCNF∈R BCNF∈ 。。

Page 36: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 )) 若 R BCNF∈ 每一个决定属性集 ( 因素 ) 都包含 ( 候选 ) 码 R 中的所有非主属性对每一个码都是完全函

数依赖 R 中的所有主属性对每一个不包含它的码,

也是完全函数依赖 没有任何属性完全函数依赖于非码的任何一

组属性 R 3NF∈R 3NF∈ (证明)(证明) 若若 R 3NF ∈R 3NF ∈ 则 则 RR 不一定不一定∈∈ BCNFBCNF

Page 37: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

例:在关系模式例:在关系模式

STJSTJ(( SS,, TT,, JJ )中,)中, SS 表表

示学生,示学生, TT 表示教师,表示教师, JJ 表示课表示课

程。程。

Page 38: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

每一教师只教一门课。每门课由若干教每一教师只教一门课。每门课由若干教

师教,某一学生选定某门课,就确定了师教,某一学生选定某门课,就确定了

一个固定的教师。某个学生选修某个教一个固定的教师。某个学生选修某个教

师的课就确定了所选课的名称 : 师的课就确定了所选课的名称 :

(S(S,, J)→TJ)→T,,

(S(S,, T)→JT)→J,, T→JT→J

Page 39: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

S

J

T

S

T

J

STJ

Page 40: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 )) STJ 3NF ∈ (S, J)和 (S, T) 都可以作为

候选 码 S、 T、 J 都是主属性 STJ BCNF∈ T→J, T 是决定属性集, T 不是

候选码 (T 不包含有码 )

Page 41: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

解决方法:将 STJ 分解为二个关系模式: SJ(S, J) BCNF∈ , TJ(T, J) BCNF∈

没有任何属性对码的部分函数依赖和传递函数依赖

S J

ST

T J

TJ

BCNF

Page 42: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

6.2.3 6.2.3 范式范式 ((续续 ))6.2.3 6.2.3 范式范式 ((续续 ))

3NF与 BCNF 的关系 如果关系模式 R BCNF∈ ,

必定有 R 3NF∈ 。 如果 R 3NF∈ ,且 R 只有

一个候选码,则 R 必属于BCNF 。

Page 43: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

思考思考思考思考

SCOSCO(S# , C# , ORDER)(S# , C# , ORDER) ,表,表示学生选修课程的名次,一个元组示学生选修课程的名次,一个元组的意义是一个特定的学生在指定的的意义是一个特定的学生在指定的课程中考试的名次课程中考试的名次 . . 并有下列语义并有下列语义规则规则 ::

* * 在同一课程考试中没有两个学生在同一课程考试中没有两个学生有相同的名次有相同的名次 ..

有函数依赖有函数依赖 (S#(S#,, C#)C#) ORDERORDER , , (C#(C#,, ORDER) ORDER) S# S# ,它,它属于属于 BCNFBCNF 吗?吗?

Page 44: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

解答解答

(S#,C#) 或者 (C#,ORDER) 都可以作为候选码

不存在非主属性对码传递依赖或部分依赖, SCO 3NF∈

没有其他决定因素, SCO BCNF∈

Page 45: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

BCNFBCNF 的关系模式所具有的性质的关系模式所具有的性质BCNFBCNF 的关系模式所具有的性质的关系模式所具有的性质

⒈ ⒈ 所有所有非主属性非主属性都完全函数依赖于每个候选码都完全函数依赖于每个候选码

⒉ ⒉ 所有所有主属性主属性都完全函数依赖于每个不包含它的都完全函数依赖于每个不包含它的

候选码候选码

⒊ ⒊ 没有任何属性完全函数依赖于没有任何属性完全函数依赖于非码非码的任何一组的任何一组

属性属性

Page 46: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

5.2.5 5.2.5 多值依赖与第四范式(多值依赖与第四范式( 4NF4NF ))5.2.5 5.2.5 多值依赖与第四范式(多值依赖与第四范式( 4NF4NF ))

例例 : : 学校中某一门课程由多个教师学校中某一门课程由多个教师

讲授,他们使用相同的一套参考讲授,他们使用相同的一套参考

书。书。

关系模式关系模式 Teaching(C, T, B)Teaching(C, T, B)

课程课程 CC 、教师、教师 T T 和 参考书和 参考书 BB

Page 47: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

……

…课 程 C 教 员 T 参 考 书 B

  

物理

 数学

   

计算数学

李 勇王 军

 

 李 勇张 平

   

张 平周 峰

普通物理学光学原理

物理习题集 

数学分析微分方程高等代数

  

数学分析   

 

表 5.1

Page 48: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

普通物理学普通物理学光学原理光学原理

物理习题集物理习题集普通物理学普通物理学

光学原理光学原理物理习题集物理习题集

数学分析数学分析微分方程微分方程高等代数高等代数数学分析数学分析微分方程微分方程高等代数高等代数

……

李 勇李 勇李 勇李 勇李 勇李 勇王 军王 军王 军王 军王 军王 军李 勇李 勇李 勇李 勇李 勇李 勇张 平张 平张 平张 平张 平张 平 ……

物 理物 理物 理物 理物 理物 理物 理物 理物 理物 理物 理物 理数 学数 学数 学数 学数 学数 学数 学数 学数 学数 学数 学数 学 ……

参考书参考书 BB教员教员 TT课程课程 CC

用二维表表示用二维表表示 TeachingTeaching

Page 49: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

多值依赖与第四范式(续)多值依赖与第四范式(续)多值依赖与第四范式(续)多值依赖与第四范式(续) Teaching BCNF:∈Teaching BCNF:∈

TeachTeach 具有唯一候选码具有唯一候选码 (C(C,, TT,, B)B) , 即全, 即全码码

TeachingTeaching 模式中存在的问题模式中存在的问题

(1)(1) 数据冗余度大:有多少名任课教师,参考书数据冗余度大:有多少名任课教师,参考书就要存储多少次就要存储多少次

Page 50: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

多值依赖与第四范式(续)多值依赖与第四范式(续)多值依赖与第四范式(续)多值依赖与第四范式(续)

(2)(2) 插入操作复杂:当某一课程增加一名任课教插入操作复杂:当某一课程增加一名任课教师时,该课程有多少本参照书,就必须插入师时,该课程有多少本参照书,就必须插入多少个元组多少个元组

例如物理课增加一名教师刘关,需要插入两例如物理课增加一名教师刘关,需要插入两

个元组: 个元组:

(物理,刘关,普通物理学) (物理,刘关,普通物理学)

(物理,刘关,光学原理)(物理,刘关,光学原理)

Page 51: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

多值依赖与第四范式(续)多值依赖与第四范式(续)多值依赖与第四范式(续)多值依赖与第四范式(续)

(3) (3) 删除操作复杂:某一门课要去掉一本参考书,该课程删除操作复杂:某一门课要去掉一本参考书,该课程

有多少名教师,就必须删除多少个元组有多少名教师,就必须删除多少个元组

(4) (4) 修改操作复杂:某一门课要修改一本参考书,该课程修改操作复杂:某一门课要修改一本参考书,该课程

有多少名教师,就必须修改多少个元组 有多少名教师,就必须修改多少个元组

产生原因产生原因

存在多值依赖存在多值依赖

Page 52: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

一、多值依赖一、多值依赖一、多值依赖一、多值依赖 定义定义 5.10 5.10

设设 R(U)R(U) 是一个属性集是一个属性集 UU上的一个关系模式, 上的一个关系模式, XX 、 、 YY和和 ZZ是是 UU 的子集,并且的子集,并且 ZZ== UU-- XX--YY ,,多值依赖 多值依赖 X→→YX→→Y成立当且仅当对成立当且仅当对 RR 的的任任一关系一关系 rr,, rr 在(在( XX,, ZZ )上的每个值对应一)上的每个值对应一组组 YY 的值,这组值仅仅决定于的值,这组值仅仅决定于 XX 值而与值而与 ZZ 值无值无关关

例 例 TeachingTeaching(( C, T, BC, T, B ))

对于对于 CC 的每一个值,的每一个值, TT 有一组值与之对应,而有一组值与之对应,而不论不论 BB取何值取何值

Page 53: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

一、多值依赖一、多值依赖一、多值依赖一、多值依赖 在在 RR(( UU )的任一关系)的任一关系 rr 中,如果存在元组中,如果存在元组 tt,, s s 使使得得 tt[[XX]=]=ss[[XX]] ,那么就必然存在元组 ,那么就必然存在元组 ww,, vv rr ,(,( ww

,, vv 可以与可以与 ss,, tt 相同),使得相同),使得 ww[[XX]=]=vv[[XX]=]=tt[[XX]] ,而,而ww[[YY]=]=tt[[YY]],, ww[[ZZ]=]=ss[[ZZ]],, vv[[YY]=]=ss[[YY]],, vv[[ZZ]=]=tt[[ZZ]] (即(即交换交换 ss,, tt 元组的元组的 YY 值所得的两个新元组必在值所得的两个新元组必在 rr 中),中),则则 YY 多值依赖于多值依赖于 XX ,记为,记为 XX→→→→YY 。 这里,。 这里, XX,, YY是是UU 的子集,的子集, ZZ==U-XU-X--YY 。。

t x y1 z2t x y1 z2

s x y2 z1s x y2 z1

w x y1 z1w x y1 z1

v x y2 z2v x y2 z2

Page 54: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

多值依赖(续)多值依赖(续)多值依赖(续)多值依赖(续)

平凡多值依赖和非平凡的多值依赖平凡多值依赖和非平凡的多值依赖

若若 X→→YX→→Y ,而,而 ZZ== φφ ,,

则称则称 X→→YX→→Y 为为平凡的多值依赖平凡的多值依赖

否则称否则称 X→→YX→→Y 为为非平凡非平凡

的多值依赖的多值依赖

Page 55: 5.1 问题的提出 5.1.1 关系数据模型的简单回顾 5.1.2 数据库设计中的数据语义问题 (1) 信息的不可表示问题 (2) 信息的冗余问题 5.2 规范化 5.2.1

多值依赖的性质多值依赖的性质多值依赖的性质多值依赖的性质

(( 11 )多值依赖具有对称性)多值依赖具有对称性 若若 X→→YX→→Y ,则,则 X→→ZX→→Z ,其中,其中 ZZ== UU-- XX-- YY

多值依赖的对称性可以用完全二多值依赖的对称性可以用完全二分图直观地表示出来。分图直观地表示出来。

(( 22 )多值依赖具有传递性)多值依赖具有传递性 若若 X→→YX→→Y,, Y→→ZY→→Z , 则, 则

X→→Z -YX→→Z -Y