数据库 系统原理及应用

102
1 第6第 第第第第第第 6.3 规规规 6.1 规规规规规规规规规规 6.2 规规规规规规规规规 6.4 规规规规

Upload: nizana

Post on 13-Jan-2016

83 views

Category:

Documents


9 download

DESCRIPTION

第六章 关系数据库的规范化设计. 6.1 关系模式的设计的问题. 数据库 系统原理及应用. 6.2 规范化. 6.3 数据依赖的推理规则. 6.4 模式分解. 6.1 关系模式的设计的问题. 1 、当用户给定了一组数据后,应该构成几个关系,每个关系应由哪些属性组成,这个问题是一个 DB 设计问题,确切地讲是 DB 的逻辑设计问题。 2 、由于关系模型有严格的数学理论基础,并且可以向其他模型进行转换,故以关系模型为背景进行这个问题的讨论,也就形成了 DB 逻辑设计的一个有力工具 —— 关系数据库的规范化理论。. 6.1. 关系模式的设计的问题. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 数据库 系统原理及应用

11

第 6 章 关系数据理论

6.3规范化

6.1关系模式的设计的问题

6.2 数据依赖的推理规则

6.4模式分解

Page 2: 数据库 系统原理及应用

22

6.1 关系模式的设计的问题

1. 当用户给定了一组数据后,应该构成几个关系?每个关系应由哪些属性组成?这个问题是一个 DB 设计问题,确切地讲是 DB 的逻辑设计问题。

2. 由于关系模型有严格的数学理论基础,并且可以向其他模型进行转换,故以关系模型为背景进行这个问题的讨论,也就形成了 DB 逻辑设计的一个有力工具——关系数据库的规范化理论。

3. 对于一个现实问题,在不同的时刻关系模式的关系(值)也会有变化,但现实世界中许多已知的事实又限定了关系模式的所有可能的关系必须满足一个的完整性约束条件,

6.1

关系模式的设计的问题

Page 3: 数据库 系统原理及应用

33

这些约束或者通过对属性值的限定,或者通过属性间的属性值的相互关系(称为数据依赖,是语意范畴)反映出来,这就是数据模式设计的关键。

4. 数据依赖前面讲过: R ( U, D, DOM, F ) 关系 属性 域 属性→域的影射 数据依赖

本章讨论 R( U、 F )

6.1

关系模式的设计的问题

Page 4: 数据库 系统原理及应用

44

数据依赖:• 函数依赖( Functional Dependency) FD

• 多值依赖( Multivalued Dependency)MD

• 联接依赖( Join Denpendency) JD

FD 是重点,顾名思义,同数学中的函数,如 Y=f(x)

6. 对于任一个不考虑 FD 的关系模式会有什么不当之处?

6.1

关系模式的设计的问题

Page 5: 数据库 系统原理及应用

55

6.1

关系模式的设计的问题

在该关系中:

例 6-1-1 :R( SNO, CNO, GRADE, SD,MN )

U ={ SNO, CNO , GRADE , SD,MN }

已知函数依赖:

F ={ SNO→SD, SD→MN ,

( SNO, CNO )→ GRADE }

Page 6: 数据库 系统原理及应用

66

6.1

关系模式的设计的问题

如有一系刚成立,尚无学生 则系名,系主任无法加入

如有一门新课,尚无人选 则无法加入

如有一学生尚无选择课 则无法加入

插入异常

R( SNO, CNO, GRADE, SD,MN )

Page 7: 数据库 系统原理及应用

77

6.1

关系模式的设计的问题

如只有一学生选过某课,

而现在毕业(不选) 则该课被删除,不存在

如某系的学生全毕业 则该系不存在

删除异常

R( SNO, CNO, GRADE, SD,MN )

Page 8: 数据库 系统原理及应用

88

6.1

关系模式的设计的问题

如一个系换了系主任,则需对所有该系的学生信息进行修改,若一些元组的信息修改,而另一些元组的相同信息没有修改,导致数据的不一致性……

修改异常

系名,系主任,( SD,MN )的存储次数同该系的学生的选课人次有关。即:浪费存储,又要付出代价来维护。

数据冗余

R( SNO, CNO, GRADE, SD,MN )

Page 9: 数据库 系统原理及应用

99

6.1

关系模式的设计的问题

则会减少上述的问题,但这也是通过经验分解,是否有理论来支持这一分解呢?

本节结束

如果 R( SNO, CNO, GRADE, SD,MN )分解为 :

R1( SNO, CNO, GRADE ) R2( SNO, SD )

R3( SD,MN )

Page 10: 数据库 系统原理及应用

1010

引例:

2013年 3 月全国计算机三级数据库技术笔试试题

设有关系模式 R   (   S,T,C,D,G   ), F={ (S,C) →T, C→D, (S, C)→G, T→C  } 关系模式 R 的候选键是   。

A. SC B. ST C. SC 和 T D. SC 和 ST

6.2 数据依赖的推理规则

数据依赖的推理规则

6.2

Page 11: 数据库 系统原理及应用

1111

本章的一些符号约定:

• 英文单个首部大写字母“ A、 B、 C、 D、 E、…”代表单个属性。

• 英文单个尾部大写字母,“ U、 V、W、 X、 Y、 Z” 代表属性集。

• 大写字母 R 代表关系模式,小字字母 r 代表其关系(值),也用属性名组合的方式表示关系模式。如属性有 A、 B、 C ,则可用 ABC表示该关系模式。

• 属性集{ A1, A2,… An }写为 A1,… An

• 属性集 X Y ∪ 写为 XY

• 属性集 X A∪ 写为 XA

数据依赖的推理规则

6.2

Page 12: 数据库 系统原理及应用

1212

1. 函数依赖( FD )的定义: 设 R( U )是属性集 U 上的关系模式, X、 Y是 U 的子集,若对 R( U )的任意一个可能的关系 r, r 中不可能存在两个元组在 X 上属性值相等,而在 Y 上属性值不等(或对 X 的每一个具体值, Y都有唯一一个具体值与之相对应) 。则 X 函数决定 Y ,或 Y 函数依赖 X ,记作X→Y

注意是语义范畴: 例: SNO→SEX, SNAME→SEX

(当有同名时,则 SNAME→SEX )

数据依赖的推理规则

6.2

6.2.1 函数依赖

Page 13: 数据库 系统原理及应用

1313

2. 完全函数依赖的定义:

在 R( U )中,如果 X→Y ,并对 X 的任一真子集 X`,都有 X`→Y ,则 Y对 X 是完全函数依赖 ,( Full Functional Dependency )记作 X F Y 。

数据依赖的推理规则

6.2

候选码:设 K为 R( U, F )中的属性或属性集,若K F U ,则 K为 R 的候选码。

Page 14: 数据库 系统原理及应用

1414

1. F 逻辑蕴含的定义:

对于满足一组函数依赖 F 的关系模式 R(U,F) ,对于任一关系 r ,若函数依赖 X→Y都成立,则称 F 逻辑蕴含 X→Y ,记作: F |= X→Y 。

6.2.2 F 逻辑蕴含

数据依赖的推理规则

6.2

Page 15: 数据库 系统原理及应用

1515

2. Armstrong公理系统

• 分解规则: X→Y , ZY ,则 X→Z

• A1 自反律: YXU 则 X→Y

• A2 增广律: X→Y , Z U ,则 XZ→YZ

• A3 传递律: X→Y , Y→Z ,则 X→Z

• 合并规则: X→Y , X→Z ,则 X→YZ

• 伪传递规则: X→Y,W Y→Z ,则 WX→Z

函数依赖的推理规则最早出现在 1974年W.W.Armstrong

的论文里,这些规则常被称作 "Armstrong 公理 "

数据依赖的推理规则

6.2

Page 16: 数据库 系统原理及应用

1616

1. F闭包的定义

被 F 逻辑蕴含的 FD 的全体构成的集合称为 FD集 F的闭包,

记作: F +

F + ={X→Y| F |=X→Y}

例 6-2-1: R(ABC) F={ A→B, B→C} 求 F + 。

6.2.3 F 的闭包

数据依赖的推理规则

6.2

Page 17: 数据库 系统原理及应用

解: A→ A→A A→B A→C

A→AB A→AC A→BC A→ABC

B→ B→B B→C B→BC

C→ C→C

AB→ AB→A AB→B AB→AB

AB→AC   AB→BC   AB→C AB→ABC

AC→   AC→AC   AC→A   AC→C AC→B    AB→BC   AC→AB   AC→ABCBC→   BC→BC   BC→B   BC→CABC→   ABC→A   ABC→B   ABC→C ABC→AB ABC→BC ABC→AC ABC→ABC→     共 43个 FD

F={ A→B, B→C}

数据依赖的推理规则

6.2

Page 18: 数据库 系统原理及应用

1818

2. 求 F + 的意义

设关系模式 R(U,F), X是 U 的子集,如果 X→U在F + 。那么称 X是 R 的一个超键,如果 X 的任一真子集 X’ →U都不在 F + 中,那么称 X是 R 的一个候选键。

上例中, AB,AC,ABC 是超键, A 是候选键。

在实际应用中,从 F求 F + 是一个 NP 完全问题(指数级问题),下面引进属性闭包的概念,将使该问题转化为多项式级时间(与全部 FD 的数目相关)问题。

数据依赖的推理规则

6.2

Page 19: 数据库 系统原理及应用

1919

6.2.4 属性集的闭包

1. 属性集的闭包定义

设 F 是属性组 U的 FDS, X是 U 的子集,那么(对F )属性集 X 的闭包,用 XF

+ 表示,它是 一个从 F集使用 FD 的推理规则推出的所有满足 X→A 的属性 A 的集合,

XF+={属性 A| X→A在 F + 中}

数据依赖的推理规则

6.2

Page 20: 数据库 系统原理及应用

2020

2. 求属性集 X 相对于 FD集 F 的闭包的算法。与全部

(与 FD 的个数成正比,是一个多项式级时间复杂度)

输入:属性集 U, U上 FD集 F, X U输出: X 相对于 FD集 F 的闭包 X + 。方法: result:=X repeat for F 中的每一个 FD Y →Z do if Y result then result:= result U Z; until(result 没有改变 ); result 即所求的 X + 。

数据依赖的推理规则

6.2

Page 21: 数据库 系统原理及应用

例 6-2-2: R( ABC )  F ={ A→B, B→C },求所有属性子集的属性闭包。

∵A→B B→C∵ ∴A + ={ ABC }∵B→C

A +

 B +  ∴B + ={ BC }∴ C + ={ C }

(AB) + ∵B→C ∴(AB) + ={ ABC }(AC) + ∵ A→B   ∴ (AC) + ={ ABC }

∴ (BC) + ={ BC }∴ (ABC) + ={ ABC }

A + B + C +( AB) +( BC) +( AC) +( ABC) +

(BC) +

C+

(ABC) + 

得到一个引理:X→Y 能用 FD 推理规则推出的充分必要条件是 YX + 。(任意 X→Y, Y 必会在 X +)

数据依赖的推理规则

6.2

Page 22: 数据库 系统原理及应用

2222

3.求属性闭包的意义

• 从属性闭包求 F 的闭包容易。• X 的闭包是所有属性 U ,则 X 是超键;如果 X 的任一真子集 X’ 的闭包不是所有属性 U ,则 X 是候选键。

上例 6-2-1: R( ABC )  F ={ A→B, B→C },通过求所有属性子集的属性闭包,判断出候选键。在实际应用中对于属性的子集有 2n-1 个(最多)需要判断。

数据依赖的推理规则

6.2

Page 23: 数据库 系统原理及应用

2323

目前有以下六种求候选键的常用方法:

• 求候选键基本算法• 快速求候选键法• 多属性依赖集候选键求解法• 依次递推法• 一般求候选键的算法• 图论判定方法

数据依赖的推理规则

6.2

Page 24: 数据库 系统原理及应用

2424

6.2.5 求候选键 1. 快速求候选键法

在关系模式 R(U,F) 中,可以将属性分为 4类:L类:仅出现在 F 的函数依赖左部的属性R类:仅出现在 F 的函数依赖右部的属性LR类:在 F 的函数依赖左右两边都出现的属性N类:在 F 的函数依赖左右两边都未出现的属性

例 6-2-2 :设关系模式 R( A, B, C, D, E, G ),其函数依赖集 F={DB, B D, AD B, AC D, D E} L类: A, C

R类: ELR类: B, DN类: G

数据依赖的推理规则

6.2

Page 25: 数据库 系统原理及应用

2525

定理 1 : 对 R( U, F ),若 X( X U∈ )是 L类属性,则 X必为 R 的任意候选键的成员。推论 1 : 对 R( U, F ),若 X( X U∈ )是 L类属性,且X+包含了 R 的全部属性 U ,则 X为 R 的唯一候选键。例 6-2-3 :设 R( A, B, C, D ), F={D B, B D, AD B, ACD},求 R 的所有候选键。解: L类: A, C R类: LR类: B, D N类:

(AC)+={ACBD} ,由推论 1, AC是 R 的唯一候选键。

数据依赖的推理规则

6.2

Page 26: 数据库 系统原理及应用

2626

定理 2 :对 R( U, F ),若 X( X U∈ )是 R类属性,则 X 不在任意候选键中。

定理 3 :对 R( U, F ),若 X( X U∈ )是 N类属性,则 X 必包含在 R 的任意候选键中。

推论 2 :对 R( U, F ),若 X( X U∈ )是 L类和 N类组成的属性集,且 X+包含了 R 的全部属性 U ,则 X为 R 的唯一候选键。

数据依赖的推理规则

6.2

Page 27: 数据库 系统原理及应用

2727

例 6-2-4 :设 R( A, B, C, D, E, P ), F={A D, E D, D B, BC D, DC A} ,求 R 的候选键。解: L类: C, E; R类: LR类: A , B, D N类: P

由定理 1, CE 为任意候选键成员由定理 3, P 为任意候选键成员( CEP) +=ABCDEP ,由推论 2, CEP为 R 的唯一候选键。

数据依赖的推理规则

6.2

Page 28: 数据库 系统原理及应用

2828

2. 多属性依赖集候选键求解法

具体步骤:(1)把 R 的所有属性分为 L、 R、 N和 LR四类,并令 X 代表 L、 N类, Y 代表 LR类。(2)求 X+ ,如果 X +包含了 R 的全部属性,则 X为 R 的唯一候选码,转 (5);否则,转 (3) 。(3)在 Y 中取一个属性 A ,求( XA) + ,如果它包含了 R 的全部属性,则转⑷;否则,调换另一个属性反复进行这一过程,直到试完所有 Y 中的属性。(4) 如果已经找到所有的候选码,则转 (5);否则在 Y 中依次去两个、三个……求它们的属性闭包,直到其闭包包含 R 的所有属性。(5)停止,输出结果。

数据依赖的推理规则

6.2

Page 29: 数据库 系统原理及应用

2929

简而言之:取一个 X 属性( X为 L、 N类)求闭包,如果包含 R 全部属性则为候选键,否则取一个 LR类的 Y属性 A ,求 XA闭包,未包含 R 全属性则调换 A ,包含 R全属性且找到所有候选键则结束,否则依次取 2、 3个 ......。

数据依赖的推理规则

6.2

Page 30: 数据库 系统原理及应用

3030

例 6-2-5 : R( ABCD) F={AB→C, C→D, D→A} 求: R 的候选键

解: L类: B LR类: A,C,D R类: N类: B+={B} 不是候选键。 (AB)+={ABCD} (BC)+={BCDA} (BD)+={BDAC}

候选键: AB、 BC、 BD

数据依赖的推理规则

6.2

Page 31: 数据库 系统原理及应用

3131

练习 1 :已知: R( ABCDE )F={AB→C, C→D, D→BE}求:码。L类: ALR类: B,C,DR类: EN类:解:A+={A}(AB) +={ABCDE}(AC) +={ACDBE}(AD) +={ADBEC}码: AB、 AC、 AD 。

数据依赖的推理规则

6.2

Page 32: 数据库 系统原理及应用

3232

练习 2 :

已知: R( ABCDE )F={AB→C, DE→C, B→D}求: R 的码。L类: A,B,ELR类: DR类: CN类:解:(ABE)+={ABCDE}根据推论 A码: ABE

数据依赖的推理规则

6.2

Page 33: 数据库 系统原理及应用

3333

练习 3 :

已知: R( ABCD) F={A→BC, B→D}求:候选键

解:L类: ALR类: BR类: C,DN类:A+={ABCD}由推论 1 , A是 R 的唯一候选键。

数据依赖的推理规则

6.2

Page 34: 数据库 系统原理及应用

3434

2013年 3 月全国计算机三级数据库技术笔试试题

设有关系模式 R   (   S,T,C,D,G   ), F= { (S,C) →T,C→D, (S, C)→G, T→C  } 关系模式 R 的候选码是   。

A. SC B. ST C. SC 和 T D. SC 和 ST数据依赖的推理规则

6.2

Page 35: 数据库 系统原理及应用

3535

小 结小 结

1. 函数依赖2. Armstrong 推理公理3. F+

4. 属性 X+

5. 求候选键数据依赖的推理规则

6.2

Page 36: 数据库 系统原理及应用

3636

1. 任一关系模式可能会出现哪些问题?

2. 已知: R( ABCDEG )F={D→G, C→A, CD→E, A→B} 求: D+ 、 C +、 A + 、 (CD) + 、 (AD) +、 (AC) + 、 (ACD )+ 。

3. 已知: R( ABCDE )F={AB→C, DE→C, B→D}求: R 的候选键

4. 已知: R( ABCD) F={A→BC, B→D}求:候选键

5. 已知: R( ABCDE) F={AB→C, C→D,D→B, D→E}求:候选键

作 业:作 业:

本节结束

数据依赖的推理规则

6.2

Page 37: 数据库 系统原理及应用

3737

6.3 规范化1971年, E. F. Codd提出该理论,即使数据库设计走向完备的规范化理论。

一般按属性间的依赖情况来区分。

分为: 1NF, 2NF, 3NF BCNF…

6.3

规范化

Page 38: 数据库 系统原理及应用

3838

1. 定义: 设 R( U )是属性集 U 上的关系模式, X、 Y是 U 的子集,若对 R( U )的任意一个可能的关系 r, r 中不可能存在两个元组在 X 上属性值相等,而在 Y 上属性值不等(或对 X 的每一个具体值, Y都有唯一一个具体值与之相对应) 。则 X 函数决定 Y ,或 Y 函数依赖 X ,记作X→Y

2. 语义范畴:

例: SNO→SEX, SNAME→SEX

(当有同名时,则 SNAME→SEX )

6.3.1 函数依赖( FD )回顾

6.3

规范化

Page 39: 数据库 系统原理及应用

3939

• 若 Y不 FD于 X ,则 X

3. 一些术语和记号

• X→Y ,但 Y X ,则称 X→Y 是非平凡的 FD 。

• X→Y, YX ,则 X→Y 称平凡的 FD 。

• X→Y 中, X 为决定因素。

• X→Y, Y→X ,则 XY 。

Y 。

6.3

规范化

Page 40: 数据库 系统原理及应用

4040

4. 定义:

在 R( U )中,如果 X→Y ,并对 X 的任一真子集 X` ,都有 X`→Y ,则 Y对 X 是完全函数依赖 ,( Full Functional Dependency )记作 X F Y 。

若 X→Y ,但 Y 不完全 FD于 X ,则称 Y对 X 部分函数依赖( Partial Functional Dependency ),记作:X P Y

6.3

规范化

Page 41: 数据库 系统原理及应用

4141

例 6-3-1 :

R( SNO, CNO, GRADE, SD,MN )

因为 SNO GRADE

CNO GRADE

所以( SNO, CNO) F GRADE

( SNO, CNO )→ SD ,因为 SNO→SD

所以( SNO, CNO ) P SD

已知: F ={ SNO→SD, SD→MN ,

( SNO, CNO )→ GRADE }

6.3

规范化

Page 42: 数据库 系统原理及应用

4242

5. 定义:

在 R( U )中,如果 X→Y ,( YX ), Y→Z 则称Z传递函数依赖于 X( Transitive Functional Dependency )。记作: X T Z

例 6-3-2 :

R( SNO, CNO, GRADE, SD,MN )

已知: F ={ SNO→SD, SD→MN ,

( SNO, CNO )→ GRADE }

因为: SNO→SD, SD→MN

则: SNO T MN

6.3

规范化

Page 43: 数据库 系统原理及应用

4343

6. FD 的推理规则回顾:

• 分解规则: X→Y , ZY ,则 X→Z

• A1 自反律: YXU 则 X→Y

• A2 增广律: X→Y , Z U ,则 XZ→YZ• A3 传递律: X→Y , Y→Z ,则 X→Z

• 合并规则: X→Y , X→Z ,则 X→YZ

• 伪传递规则: X→Y,W Y→Z ,则 WX→Z6.3

规范化

Page 44: 数据库 系统原理及应用

4444

以更单纯,结构更规则的关系逐步取代原有关系的过程(其过程是一个模式分解的过程)。

在规范化过程中所产生的满足不同的约束条件的关系的结构,称为第 N 范式( Normal Form )。

1NF, 2NF, 3NF, BCNF, 4NF , 5NF( PJNF ), DKNF, 6NF 。

6.3

规范化

6.3.2 范式1. 规范化:

2. 范式:

范式为:

Page 45: 数据库 系统原理及应用

6.3

规范化

1971至 1972年 ,E.F.Codd 于提出 1NF、 2NF、 3NF

1974年 , Boyce 和 E.F.Codd提出 BCNF(3NF 的修正 )

1976年, Fagin提出 4NF ,后来提出 5NF( PJNF)目前还有 DKNF、 6NF 。范式间关系式: 6NF DKNF 5NF 4NF BCNF 3NF 2NF 1NF

INF 2NF 3NF BCNF …

Page 46: 数据库 系统原理及应用

4646

6.3

规范化

1. 定义:

如果关系模式 R 的每一个属性值都是不可分的原子值,那么称 R 是第 1 范式,记作 R 1NF∈ 。

例:

出现了嵌套

6.3.3 1NF

学号 课程号 成绩

S1 C1 30 60 90

S1 C2 28 52 80

S2 C1 25 50 75

学号 课程号 平时成绩 期末成绩 总评

S1 C1 30 60 90

S1 C2 28 52 80

S2 C1 25 50 75

Page 47: 数据库 系统原理及应用

4747

出现了重复组

1NF 是关系模式应具备的最起码的条件。

例:

6.3

规范化

学号 课程号 成绩

S1 C1 80

C2 90

S2 C1 90

C3 70

C2 60

学号 课程号 成绩

S1 C1 80

S1 C2 90

S2 C1 90

S2 C3 70

S2 C2 60

Page 48: 数据库 系统原理及应用

4848

6.3

规范化

1. 定义:

若 R 1NF∈ ,且每一个非主属性完全函数依赖于码,则 R 2NF∈ 。

严格的说:若 R 1NF∈ ,且每一个非主属性都不部分函数依赖于码,则 R 2NF∈ 。

例 6-1-1 :

S( SNO, CNO, GRADE, SD,MN )

码: ( SNO, CNO )

非主属性: GRADE, SD,MN

6.3.4 2NF

Page 49: 数据库 系统原理及应用

4949

6.3

规范化

取消部分函数依赖。

S1( SNO, CNO, GARDE)∈ 2NF

S2( SNO, SD,MN)∈ 2NF

( SNO, CNO ) F GRADE

( SNO, CNO ) P SD  

( SNO, CNO ) P/T MN

该关系模式不是 2NF ,会产生相应的四个问题。

Page 50: 数据库 系统原理及应用

5050

1. 定义:

R 2NF∈ ,且每个非主属性都不传递依赖于码,则R 3NF∈ 。

或: R 1NF∈ ,且每个非主属性既不部分依赖于码,也不传递依赖于码。

6.3.5 3NF

6.3

规范化

Page 51: 数据库 系统原理及应用

5151

2. 继续 6-3-2 例S2( SNO, SD,MN )∈ 2NF , SNO T MN

S21  ( SNO, SD )S22  ( SD,MN )

S1 ( SNO, CNO, GRADE ) ∈ 3NF

S21( SNO, SD )∈ 3NF

S22 ( SD,MN ) ∈ 3NF

一般情况下, 3NF 已经解决绝大多数数据的冗余、插入、删除、修改异常。

进行分解:

到此, S 关系所分解得到了以下三个关系:6.3

规范化

Page 52: 数据库 系统原理及应用

5252

3. 出现异常的问题 例 6-3-3 :R( BNO, BNAME, AUTHOR ) 书号  书名   作

者 约定:一本书只有一个书号(即:一个书号对应一个书名)。

一个书名可有多个书号(即:不同书号可以有相同的书名)。 每本书可由多个作者,但一个作者编的书名应不同。

从语义得到 F={BNO→BNAME ,( AUTHOR, BNAME )→ BNO}

求:码

6.3

规范化

Page 53: 数据库 系统原理及应用

5353

解: 因为: BNO→BNO, BNO→BNAME所以: BNO→BNO, BNAME

据 A2: BNO, AUTHOR→BNO, BNAME ,

AUTHOR 候选键:( BNO, AUTHOR )

又因为: AUTHOR, BNAME→BNO

据 A1:AUTHOR, BNAME→AUTHOR, BNAME

据 A4: AUTHOR, BNAME→BNO, BNAME, AUTHOR 侯选键:( AUTHOR, BNAME

)因为该关系模式中无非主属性,所以 R 3NF∈ 。

F={BNO→BNAME ,( AUTHOR, BNAME )→ BNO}

6.3

规范化

Page 54: 数据库 系统原理及应用

5454

6.3

规范化

1. 定义:

R( U, F )∈ 1NF ,若 X→Y ,且 Y X∈ 时, X 必含有码,则 R BCNF∈ 。

即:每一个决定因素必含有码。

可以推出以下结论: R BCNF∈ , 则

• 没有任何属性完全依赖于非码的任何一组属性。

6.3.6 BCNF( Boyce Codd Normaol Form)

• 所有非主属性对每一个码都是完全函数依赖。

• 所有主属性对每一个不包含它的码,也是完全函数依赖。

Page 55: 数据库 系统原理及应用

5555

例 6-8 中:

因为 BNO→BNAME ,而 BNO 不是码。

所以 R BCNF∈ 。分解:

R1( BNO, BNAME ) ∈ BCNF

R2( BNO, AUTHOR )∈ BCNF

但会丢失( AUTHOR, BNAME )→ BNO ,产生语义矛盾。

6.3

规范化

Page 56: 数据库 系统原理及应用

5656

如例 6-3-3 在分解前:

BNO BNAME AUTHOR

1 OS A

1 OS B

2 OS C

2 OS D

3 DB A

3 DB E6.3

规范化

Page 57: 数据库 系统原理及应用

5757

在分解后:

BNO BNAME

1 OS

2 OS

BNO AUTHOR

1 A

1 B

2 A

即:同一作者可以编写同名的两本书,违背了语义 ,丢失了( AUTHOR, BNAME )→ BNO 函数依赖。

故:范式级别并非越高越好。

6.3

规范化

Page 58: 数据库 系统原理及应用

5858

例 6-3-4: R( S , C , P )学生 课程 名次

约定:每一个学生选一课有一名次, ( S, C )→ P

每门课每一名只有一个人(无并列) ( C, P )→ S

码是( S, C ), ( C, P ) 。即决定因素含有码。

符合 BCNF 的定义。 R BCNF∈

例 6-1-1 经过分解得到的 :

( SNO, CNO, GRADE )∈ BCNF

( SNO, SD )∈ BCNF    ( SD,MN )∈ BCNF    

6.3

规范化

Page 59: 数据库 系统原理及应用

5959

小 结小 结

1. 求码。

2. 1NF、 2NF、 3NF、 BCNF 的判断。

6.3

规范化

Page 60: 数据库 系统原理及应用

6060

1. 如何判断一个关系模式的范式级别?

P195 2

上次作业 增加判断范式级别2. 已知: R( ABCDE )F={AB→C, DE→C, B→D}求: R 的候选键和范式级别3. 已知: R( ABCD) F={A→BC, B→D}求:候选键和范式级别4. 已知: R( ABCDE) F={AB→C,

C→D,D→B, D→E}求:候选键和范式级别

作 业作 业

本节结束

Page 61: 数据库 系统原理及应用

6161

1. 引例例 6-3-5: R( C , T , B )

课程  老师  教课书 约定:某一门课有多个老师教,他们使用相同一套书,每个老师可以教多门课,一种参考书可以供多门课用。

C T B

C1

T1

T2

B1

B2

B3

C2

T2

T3

B1

B4

B5

C3 T2

T4

B1

B6

6.3.7  多值依赖

6.3

规范化

Page 62: 数据库 系统原理及应用

6262

2. 变为二维表:C T B

C1 T1 B1

C1 T1 B2

C1 T1 B3

C1 T2 B1

C1 T2 B2

C1 T2 B3

C2 T2 B1

C2 T2 B4

C2 T2 B5

C2 T3 B1

C2 T3 B4

C2 T3 B5

C3 T2 B1

C3 T2 B6

C3 T4 B1

C3 T4 B6

在 R( C, T, B )中,码为 (C, T, B) 是全码 。

6.3

规范化

Page 63: 数据库 系统原理及应用

6363

上述的问题,因为 B和 T 的取值毫无关系,只取决于 C ,即 R 中存在着一种称为多值依赖的数据依赖。

3. 存在问题:

①冗余大。② 增加复杂:每增加一老师,就要增加若干记录。

③ 删除复杂:每门课去一门参考书,就要删去若干记录。

④ 修改复杂:每门课改一门参考书,就要改若干记录。

6.3

规范化

Page 64: 数据库 系统原理及应用

6464

4. 定义: 设 R( U )是属性集 U 上的一个关系模式。 X, Y, Z是 U 的子集,并且 Z= U- X- Y,关系模式 R( U )中多值依赖 X→→Y 成立,当且仅当对 R( U )的任一关系 r ,给定的一对( X, Z)值,有一组 Y 的值,这组值仅仅决定于 X 的值而与Z 无关。

或:如果存在 ( X, Y1, Z1 )

( X, Y2, Z2 )

( X, Y1, Z2 )

( X, Y2, Z1 ) 则称为多值依赖 X→→Y 。

则存在

6.3

规范化

Page 65: 数据库 系统原理及应用

6565

即交换 s, t 元组中的 Y 值即得的两个新元组必在 r 中,则 X→→Y 。

另定义:R( U )中的任一关系 r 中, X, Y, Z= U- X-Y ,任意两个元组 t、 s ,有 t[X] = s[X] ,就存在元组 w, v r∈ ( w, v 可以与 t, s 相同)使得:

w[X]=v[X]=t[X]

有 w[Y]=t[Y] 和 v[Y]=s[Y]

w[Z]=s[Z] v[Z]=t[Z]

存在

6.3

规范化

Page 66: 数据库 系统原理及应用

6666

另定义:

把 r投影到 XY和 R-XY 上,连接两投影,如果仍为 r ,则是 MVD 。当且仅当 R 无损分解为XY, XZ 。

6.3

规范化

Page 67: 数据库 系统原理及应用

6767

6. MVD 的性质:

⑴. 对称性: X→→Y则 X→→Z ,其中 Z= U- X-Y

⑵. 传递性: X→→Y则 Y→→Z ,则 X→→Z-Y

⑶. FD是MVD 的特殊情况:若 X→Y则 X→→Y

平凡的 MVD :如果 X→→Y ,而 Z =,则X→→Y 为平凡的 MVD 。

上例中: C →→ T, C →→ B

6.3

规范化

Page 68: 数据库 系统原理及应用

6868

6. FD和MVD 的区别、联系

( 1 )联系:

FD 可以看作是 MVD 的一个子集。

因为 X→Y描述了 X和 Y 之间 1: 1 的联系,而X→→Y 是描述 X与 Y 之间 1:M 的联系。如果X→→Y 中规定每个 X 只有一个 Y与之对应,那么X→→Y 就成了 X→Y 。6.3

规范化

Page 69: 数据库 系统原理及应用

6969

( 2 )区别:

MVD 的有效性与属性集范围有关。

① FD: X→Y 的有效性仅取决于 X, Y ,只要在 W上成立,则在 U 上也成立( XYWU )。

MVD: X→→Y 不仅与 X 有关,还与 U- X-Y 有关, X→→Y在W 上成立,在 U 上不一定成立。( WU ) ② FD: X→Y在 R( U )上成立,则对 Y`Y ,有 X→Y`

MVD: X→→Y在 R( U )上成立,则 Y`Y ,不一定有 X→→Y` 。

6.3

规范化

Page 70: 数据库 系统原理及应用

7070

例 6-3-6:

R1( SNO, SAGE ) R2( SNO, SSEX, SAGE )SAGE SNO SSEX

18 S1 女18 S2 男19 S3 女19 S4 男

对 R1: SAGE→→SNO 成立。对 R2 : SAGE→→SNO 成立吗?( X, Y1, Z1 )则存在( X, Y1, Z2 )

( X, Y2, Z2 ) ( X, Y2, Z1 )则有: 18 s1 女 18 s1 男

18 s2 男 18 s2 女 存在显然是不可能的。所以: SAGE→→SNO

SAGE SNO

18 S1

18 S2

19 S3

19 S4

6.3

规范化

Page 71: 数据库 系统原理及应用

7171

小 结小 结

1. BCNF 的判断。

2. MVD 。

3. MVD和 FD 的区别。

本节结束

6.3

规范化

Page 72: 数据库 系统原理及应用

7272

6.3

规范化

1. 定义: R( U )∈ 1NF ,如果对于 R 的每个非平凡的MVD, X→→Y( YX ), X都含有码,则 R( U)∈ 4NF 。

(因为 X含有码,则 X→Y 。 4NF 所允许的非平凡的 MVD 实际上就是 FD 。)

6.3.8 4NF

Page 73: 数据库 系统原理及应用

7373

2. 举例

例 6-3-7 :R( C, T, B )   R BCNF∈   C→→T (非平凡)  而码为 CTB

C→→B (非平凡) 而码为 CTBR 4NF∈

分解为:

R1( C, T )   C→→T (平凡)码为 CT

R2( C, B )   C→→B (平凡)码为 CB

所以 R1 4NF∈

   R2 4NF∈

6.3

规范化

Page 74: 数据库 系统原理及应用

7474

例 6-3-8 :R( SD , T , S )

系名  老师  学生

一个系有多个老师  SD→→T

一个系有多个学生  SD→→S

老师、学生只能属于一个系, T→SD, S→SD

该关系的码为( T, S )

SD→→T SD 不含有码 SD→→S SD 不含有码

所以, R4NF

分解为: R1( SD, T )∈ 4NF

R2( SD, S )∈ 4NF

6.3

规范化

Page 75: 数据库 系统原理及应用

7575

例 6-3-9 :R(W , S , C )仓库  保管员  商品

一个仓库有多个保管员: W→→S

一个仓库有多个商品: W→→C

保管员只能属于是某一仓库: S→W ,

则码是( S , C )

W→→S 不含有码( S, C )W→→C 不含有码( S, C )

分解为: R1(W, S )∈ 4NF

R2(W, C )∈ 4NF

6.3

规范化

Page 76: 数据库 系统原理及应用

7676

结论: 在 FD 范畴内, BCNF 是最高范式。

在MVD 范畴内, 4NF 是最高范式。

6.3

规范化

Page 77: 数据库 系统原理及应用

7777

6.3

规范化

6.3.9 联接依赖( JD )定义: 设 U 是关系模式 R 的属性域, R1, R2…Rn为 U 的子集,满足 U= R1 R2 … R∪ ∪ ∪ n,= {R1, R2,…Rn }是 R 的一分解,如果对于 R 的每个关系 r都有 M (r)=r ,即

r =∏ R1(r) ∏R2(r)…∏Rn(r)

那么,称联接依赖在模式 R 上成立,记作:

*( R1, R2,… Rn )

Page 78: 数据库 系统原理及应用

7878

例 6-3-10 :

设 R( SPJ )有一个 JD *( SP, PJ, JS )

如果 R 的关系中已有两个元组( S1, P1, J2 )和( S1, P2, J1 )现在要插入一个元组( S2, P1, J1 ),据JD 的定义,只有再插入一个元组( S1, P1, J1 )才能保持 JD 。

R1

S P J

S1 P1 J2

S1 P2 J1

R2

S P J

S1 P1 J2

S1 P2 J1

S2 P1 J1

图 1 图 2

6.3

规范化

Page 79: 数据库 系统原理及应用

7979

R2 不符合*( SP, PJ, JS )

因为 R2 分解为:

S P

S1 P1

S1 P2

S2 P1

P J

P1 J2

P2 J1

P1 J1

J S

J2 S1

J1 S1

J1 S2

S P J

S1 P1 J2

S1 P2 J1

S2 P1 J1

R2

6.3

规范化

Page 80: 数据库 系统原理及应用

SP∞PJ

S P J

S1 P1 J2

S1 P1 J1

S1 P2 J1

S2 P1 J2

S2 P1 J1

SP∞PJ∞JS

S P J

S1 P1 J2

S1 P2 J1

S2 P1 J1

S1 P1 J1

同理,要删除一个元组,也必须删除其他元组,才能保持 JD ,对这种异常,用分解方法,提出一个比 4NF提高的范式 5NF 。

S P

S1 P1

S1 P2

S2 P1

P J

P1 J2

P2 J1

P1 J1

J S

J2 S1

J1 S1

J1 S2

6.3

规范化

Page 81: 数据库 系统原理及应用

8181

6.3

规范化

6.3.10 投影连接范式 PJNF( 5NF )定义:

如果关系模式 R 的每个 JD均由 R 的候选键隐含,那么称 R 是投影连接范式( Project join NF) PJNF或5NF 。如果*( R1, R2,… Rn )中某个 Ri是 R ,则JD 称为平凡的 JD 。 ① JD 是现实世界中属性间的一种抽象,是语义的体现。但较之 FD,MVD 不直观,很难断定是一个模式是否是 5NF 。 ② 但 R 5NF∈ ,则 R 4NF∈ 。

③ 现在还没有完备的推理规则。

④ JD 只有在关系的连接运算时才反映出来。

Page 82: 数据库 系统原理及应用

8282

6.3.11 关系模式的规范化步骤

6.3

规范化

1NF

2NF

3NF

BCNF

4NF

5NF

取消非主属性对码的部分 FD

取消非主属性对码的传递 FD

取消主属性对码的部分、传递 FD

取消非平凡的 MVD 不是 FD 的(即非平凡的 MVD都是 FD )

取消不是由候选码所蕴涵的 JD本节结束

Page 83: 数据库 系统原理及应用

8383

6.4

模式分解

在关系模式分解过程中,低一级关系模式分解为若干个高一级的模式的方法并不是标准。

例 6-4-1: R( SNO, SD,MN )

F ={ SNO→SD, SD→MN }

分解一: R1( SNO )∈ 5NF

R2( SD )∈ 5NF

R3(MN )∈ 5NF

但分解后,丢失了许多信息,如查:学生的系主任,连接成了笛卡儿积。

6.4 模式分解

Page 84: 数据库 系统原理及应用

8484

分解二:

6.4

模式分解

R1( SNO, SD ) R2( SNO,MN )

但丢失 SD→MN 。

分解三: R1( SNO, SD ) R2( SD,MN )

∴分解:

既要保持“无损连接”(和原来的 r 一样)又要保持“函数依赖”(和 FD等价)

Page 85: 数据库 系统原理及应用

8585

1. 无损连接分解的形式定义  无损连接分解的形式定义如下:设 R 是一个关系模式, F是 R 上的一个函数依赖 (FD)集。 R 分解成数据库模式δ={R1,……,Rk} 。如果对 R 中每一个满足 F 的关系 r都有下式成立:   那么称分解 δ 相对于 F 是“无损连接分解”,否则称为“损失连接分解”。  从上述形式定义中可知,若直接根据定义来判断某个分解是否具有无损连接性,那么就得“对 R 中每一个满足F 的关系 r” 进行测试,看是否满足上面的等式,这显然不可操作,因为“对 R 中每一个满足 F 的关系 r” 进行测试就意味着“对 R 中所有满足 F 的关系 r” 进行测试,显然是不可能的。这里所说的“关系”就是指一张具体的表。  因此,必须寻求其它的可操作性方法来判别分解的无损连接性。

6.4

模式分解

Page 86: 数据库 系统原理及应用

8686

2. 无损连接分解的普通判别方法——表格法   设关系模式 R=A1,…,An, R 上成立的 FD集 F, R 的一个分解 p={R1,…,Rk} 。无损连接分解的判断步骤如下:   (1) 构造一张 k行 n列的表格,每列对应一个属性Aj(1≤j≤n) ,每行对应一个模式 Ri(1≤i≤k) 。如果 Aj在 Ri中,那么在表格的第 i 行第 j列处填上符号 aj ,否则填上符号 bij 。   (2)把表格看成模式 R 的一个关系,反复检查 F 中每个 FD 在表格中是否成立,若不成立,则修改表格中的元素。修改方法如下:对于 F 中一个 FD: X→Y ,如果表格中有两行在 X 分量上相等,在 Y 分量上不相等,那么把这两行在 Y 分量上改成相等。如果 Y 的分量中有一个是 aj ,那么另一个也改成 aj; 如果没有 aj ,那么用其中的一个 bij替换另一个 (尽量把 ij 改成较小的数,亦即取 i 值较小的那个 ) 。 

6.4

模式分解

Page 87: 数据库 系统原理及应用

8787

   若在修改的过程中,发现表格中有一行全是 a ,即a1,a2,…,an ,那么可立即断定 p 相对于 F 是无损连接分解,此时不必再继续修改。若经过多次修改直到表格不能修改之后,发现表格中不存在有一行全是 a 的情况,那么分解就是有损的。特别要注意,这里有个循环反复修改的过程,因为一次修改可能导致表格能继续修改。  修改过程中要特别注意,若某个 bij 被改动,那么它所在列的所有 bij都需要做相应的改动。为了明确这一点,举例说明。例如,我们根据 FD“H→I”、“ K→L” 来修改表格之前时的表格如表 1 所示 ( 已经过多次修改,非初始表,空的单元表示省略 ) :  

6.4

模式分解

Page 88: 数据库 系统原理及应用

8888

     表 1 H I J K LR1 b12 b35R2 a1 a2 a4 b25R3 a1 b12 a4 b35R4 b12 b35

6.4

模式分解

Page 89: 数据库 系统原理及应用

8989

R2、 R3 所在行的 H 分量都为 a1 ,根据 FD“H→I”,需要修改这两行对应的 I 分量,而 R2 所在行的 I 分量为 a2 ,因此,要将 R3 所在行的 I 分量 b12 修改为 a2 ,注意到, R1、 R4 所在行的 H 分量也为 b12 ,因此,这两行对应的 I 分量也必须修改为 a2。 R2、 R3 所在行的K 分量都为 a4 ,根据 FD“K→L” ,需要修改这两行对应的 L 分量,于是将 R3 所在行的 L 分量 b35 修改为较小的b25 ,同时注意到, R1、 R4 所在行的 L 分量也为 b35,因此,这两行对应的 L 分量也必须修改为 b25 。修改后的表格如表 2 所示:  

6.4

模式分解

Page 90: 数据库 系统原理及应用

9090

   表 2 H I J K LR1 a2 b25R2 a1 a2 a4 b25R3 a1 a2 a4 b25R4 a2 b25

6.4

模式分解

Page 91: 数据库 系统原理及应用

9191

   例题 : (软件设计师试题 38)   设关系模式 R 为 R(H,I,J,K,L), R 上的一个函数依赖集为 F={H→J,J→K,I→J,JL→H} ,分解 (38) 是无损连接的。  供选择的答案:   (38) A. p={HK, HI, IJ, JKL, HL} B. p={HIL, IKL, IJL}   C. p={HJ, IK, HL} D. p={HI, JK, HL}  试题分析:  根据上述判断方法,我们列出选项 B( 分解成三个关系模式 R1(HIL)、 R2(IKL)、 R3(IJL) ) 的初始表如表 3 所示:  

6.4

模式分解

Page 92: 数据库 系统原理及应用

9292

     表 3 选项 B 的初始表  H I J K L HIL a1 a2 b13 b14 a5IKL b21 a2 b23 a4 a5 IJL b31 a2 a3 b34 a5  对于函数依赖集中的 H→J、 J→K 对表 3 进行处理,由于属性列 H 和属性列 J 上无相同的元素,所以无法修改。但对于 I→J 在属性列 I 上对应的 1、 2、 3 行上全为 a2元素,所以,将属性列 J 的第一行 b13 和第二行 b23 改为a3 。修改后如表 4 所示:

6.4

模式分解

Page 93: 数据库 系统原理及应用

9393

表 4 选项 B 的中间表  H I J K L HIL a1 a2 a3 b14 a5 IKL b21 a2 a3 a4 a5 IJL b31 a2 a3 b34 a5   对于函数依赖集中的 JL→H 在属性列 J和 L 上对应的 1、 2、 3 行上为 a3、 a5 元素,所以,将属性列 H 的第二行 b21和第三行 b31 改为 a1 。修改后如表 5 所示:  表 5 选项 B 的结果表  H I J K L HIL a1 a2 a3 b14 a5 IKL a1 a2 a3 a4 a5IJL a1 a2 a3 b34 a5   从表 5 可以看出,第二行为 a1、 a2、 a3、 a4、 a5 ,所以分解 p 是无损的。

6.4

模式分解

Page 94: 数据库 系统原理及应用

9494

  有一种特殊情况要注意:分解后的各个关系模式两两均无公共属性。由于是模式分解,那么任一一个分解后的关系模式覆盖的属性集不可能是分解前的整个全部属性 U ,因此初始表中不存在全是 a 的行。又注意到,分解后的各个关系模式两两均无公共属性,表明任两行在任一列上都没有相同的分量,这导致整个表格无法修改,保持初始状态。而初始状态不存在全是 a 的行,因此这种特殊情况的分解是有损的。  例如,函数依赖集合 FD ,将关系模式 R(ABCDEF) 分解成 R1(AB)、 R2(CDE)、 R3(F) ,那么这种分解肯定是有损的。考试中可能碰到这种情况,那么一眼就可以判断出结果,从而节省了时间。

6.4

模式分解

Page 95: 数据库 系统原理及应用

9595

   3. 无损连接分解的快捷判别方法   首先要申明,这种快捷方法是有前提的,前提就是分解后的关系模式只有两个。其内容为:  设 ρ={R1, R2 }是 R 的一个分解, F是 R 上的FD集,那么分解 ρ 相对于 F 是无损分解的充分必要条件是: (R1∩R2)→(R1–R2)或 (R1∩R2)→(R2–R1)。这个“或”字很重要,这里表示 (R1∩R2)→(R1–R2)、 (R1∩R2)→(R2–R1) 中只要有一个成立就行。这里的求交和相减运算的对象是关系模式的属性。  

6.4

模式分解

Page 96: 数据库 系统原理及应用

9696

   例题  关系模式 R(U, F) ,其中U={W,X,Y,Z},F={WX→Y,W→X, X→Z,Y→W} 。那么下列分解中是无损分解的是 。  供选择的答案:   A.p={R1(WY),R2(XZ)} B.p={R1(WZ),R2(XY)}   C.p={R1(WXY),R2(XZ)} D.p={R1(WX),R2(YZ)}  试题分析:   A 选项, R1∩R2 为空,肯定不满足条件。   B 选项, R1∩R2 为空,肯定不满足条件。   C 选项, R1∩R2={X}, R1-R2={WY}, R2-R1={Z},根据函数依赖集, X→Z 成立,所以满足条件。   D 选项, R1∩R2 为空,肯定不满足条件。  

6.4

模式分解

Page 97: 数据库 系统原理及应用

9797

     4. 总结  模式分解无损性判别的源泉仍然是普通的表格法。这种快捷方法只不过是根据这种表格法推断出来的而已,是它的一个特列。但是这种快捷方法却往往非常有用。

6.4

模式分解

Page 98: 数据库 系统原理及应用

9898

小 结小 结

1. 推理公理2. F 的闭包3. 属性闭包4. 要保持“无损连接” 又要保持“函数依赖”6.4

模式分解

本节结束

Page 99: 数据库 系统原理及应用

9999

1. 已知: R( ABCDEG )F={D→G, C→A, CD→E, A→B} 求: D+ 、 C + 、 A + 、 CD + 、 AD + 、 AC + 、 ACD +

。 解:D+={DG}C+={CAB}A+={AB}CD+={CDAGEB}AD+={ADBG}AC+={ACB}ACD+={ACDBEG}

Page 100: 数据库 系统原理及应用

100100

2.

(1) 学生(学号 ,姓名 , 出生年月 , 系名 ,班号 ,宿舍区)

F={ 系名→宿舍区 }

码 : 学号

学号→系名 , 系名→宿舍区 , 有传递 FD

学生∈ 2NF

(2)班级 (班号 ,专业名 , 系名 , 人数 , 入校年份 )

F={(专业名 , 入校年份 ) ←→班号 }

码 : (专业名 , 入校年份 ) 班号

因为 专业名→系名 , 所以 (专业名 , 入校年份 ) → 系名

班级∈ 1NF

P

Page 101: 数据库 系统原理及应用

101101

(3) 系 ( 系名 , 系号 , 系办公地点 , 人数 )

F={ 系名←→系号 }

码 : 系名 , 系号

系∈ BCNF

(4) 学会 ( 学会名 , 成立年份 , 地点 , 人数 )

码 : 学会名

学会∈ BCNF

(5) 参加 ( 学生 , 学会名 , 入会年份 )

F={ ( 学生 , 学会名 ) → 入会年份 }

码 : ( 学生 , 学会名 )

参加∈ BCNF

Page 102: 数据库 系统原理及应用

Click to edit company slogan .