第2章 关系数据库基本原理

90
1 1 第2第 第第第第第第第第第

Upload: hanmo1988

Post on 31-May-2015

227 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: 第2章  关系数据库基本原理

1 1

第 2 章 关系数据库基本原理

Page 2: 第2章  关系数据库基本原理

2 2

本章内容1.1 关系数据库基本原理2.2 关系代数的基本原理2.3 关系模式的分解2.4 关系模型的完整性约束2.5 数据库的设计方法

Page 3: 第2章  关系数据库基本原理

3 3

2.1 关系数据库概述关系数据模型 数据模型的任务是描述现实世界中的实体及其联系。关系

数据模型就是采用一个有序数组描述实体及其属性,用这种有序数组的集合描述一个实体集合,而采用定义在两个集合上的关系反映不同实体间的联系。

部门编号 部门名称 员工编号 员工姓名 性别 住址

D001 总经理办 E001 钱达理 男 东风路 78号

D001 总经理办 E002 东方牧 男 五一北路 25号

D002 市场部 E003 郭文斌 男 公司集体宿舍

D003 销售部 E004 肖海燕 女 公司集体宿舍

D004 仓储部 E005 张明华 男 韶山北路 55号

表 2-1 关系模型示例

Page 4: 第2章  关系数据库基本原理

4 4

关系数据模型关系数据库系统是支持关系模型的数据库系统关系模型的组成

关系数据结构关系操作集合关系完整性约束

Page 5: 第2章  关系数据库基本原理

5 5

单一数据结构课程(课程号,课程名,学分)学生(学号,姓名,所在系)选修(课程号,学号,成绩)

01 数据结构 4

02 C 语言 3

03 数据库 3

04 操作系统 3

课程

选修

学生

03001 张三 CS

02210 李四 MA

03123 王五 CS

02221 田七 IE

01 03001 95

01 02210 88

01 03123 74

02 02210 90

02 03123

03 03001 98

03 02221 89

04 03123

Page 6: 第2章  关系数据库基本原理

6 6

2.1 关系数据库概述关系数据库基本概念 定义:关系数据库就是一些相关的二维表和其他数据库

对象的集合。在这个定义中明确,关系数据库中的所有信息都存储在

二维表格中;一个关系数据库可能包含多个表;除了这种二维表外,关系数据库还包含一些其他对象,如视图等。

关系模型的基本概念 :

1 .关系一个关系就是一张二维表,通常将一个没有重复行、重

复列的二维表看成一个关系,每个关系都有一个关系名。

Page 7: 第2章  关系数据库基本原理

7 7

2.1 关系数据库概述2 .元组二维表的每一行在关系中称为元组 (Tuple) 。一行描述了

现实世界中的一个实体,或者描述了不同实体间的一种联系。3 .属性二维表的每一列在关系中称为属性 (Attribute) ,每个属

性都有一个属性名,各个属性的取值称为属性值。每个属性有一定的取值范围,称为值域。

4 .关键字关系中能惟一区分、确定不同元组的属性或属性组合,

称为该关系的一个关键字。关键字又称为键或码 (Key) 。

Page 8: 第2章  关系数据库基本原理

8 8

2.1 关系数据库概述5 .外部关键字如果关系中某个属性或属性组合并非关键字,但却是另

一个关系的主关键字,则称此属性或属性组合为本关系的外部关键字或外键 (Foreign Key) 。在关系数据库中,用外部关键字表示两个表间的联系。

Page 9: 第2章  关系数据库基本原理

9 9

2.1 关系数据库概述关系数据库基本特征

有坚实的理论基础 数据结构简单、易于理解 对用户提供了较全面的操作支持得到了众多开发商的支持

Page 10: 第2章  关系数据库基本原理

10 10

关系模型的完整性约束实体完整性所谓实体完整性,就是一个关系模型中的所有元组都是

惟一的,没有两个完全相同的元组,也就是一个二维表中没有两个完全相同行,也称为行完整性。

域完整性域完整性就是对表中列数据的规范,也称列完整性,用

于限制列的数据类型、格式以及取值范围。参照完整性 当一个数据表中有外部关键字 ( 即该列是另外一个表的关

键字 ) 时,外部关键字列的所有值,都必须出现在其所对应的表中,这就是参照完整性的含义 。

用户定义完整性

Page 11: 第2章  关系数据库基本原理

11 11

实体完整性实体完整性规则

若属性 A 是基本关系 R 的主属性,则属性 A 不能取空值

01 数据结构 4

02 C 语言 3

03 数据库 3

04 操作系统 3

JAVA 语言 3

课程(课程号,课程名,学分)01 03001 95

01 02210 88

01 03123 74

02 02210 90

02 03123

03 03001 98

03 02221 89

04 03123

选修(课程号,学号,成绩)

Page 12: 第2章  关系数据库基本原理

12 12

参照完整性参照完整性示例

Sno Sname Ssex Sage Sdept

03001 张三 男 20 CS

02210 李四 男 21 MA

… … … … …

02221 田七 女 20 IE

Sdept Sloc Sname

CS A 楼 计算机IS B 楼 信息

MA C 楼 数学… … …

Student

Department

主码

外码不是student的主码,但是 department的主码

Page 13: 第2章  关系数据库基本原理

13 13

用户定义的完整性除了实体完整性和参照完整性以外的完整性规则关系模型应提供定义和检验这类完整性的机制

例如教授的工资不低于 2000

性别只能是男或女

Page 14: 第2章  关系数据库基本原理

14 14

2.2 关系代数的基本原理关系数据结构的形式化定义 1 .域(集合)域是一组具有相同数据类型的值的集合。 2 .元组几个元素组成的一个有序组称为一个元组,通常元组用

圆括号括起来的一些元素表示,元素间使用逗号分隔。例如 (3 , 5 , 6) 和 (E001, 钱达理 , 男 , 东风路 78 号 ) 是

元组的例子。在关系数据库中,可以把一个表的每一行看作一个元组。

Page 15: 第2章  关系数据库基本原理

15 15

2.2 关系代数的基本原理3 .笛卡尔积给定一组域 D1,D2 , ... , Dn ,这些域可以完全不同,也可以部分

或全部相同, D1 、 D2 、…、 Dn 的笛卡尔积为: D1×D2×…×Dn= {(d1 ,d2 ,…, dn)|di Di∈ , i=1 , 2 ,…, n} ,其中每一个元素 (d1 , d2 ,…, dn) 称作一个 n 元组( n-tuple )或简称元组,它的每个元素 di 取自对应的集合 Di 。

元组中的每一个值 di 称作一个分量( component )若 di 为有限集,其基数为 mi(i=1,2,3…n), 则 D1×D2×…×Dn

的基数为

m=∏mi

例如,设 A={1 , 2} , B={a , b} ,则 A×B={(1 , a) , (1 ,b) , (2 , a) , (2 , b)} 。

i=1

n

Page 16: 第2章  关系数据库基本原理

16 16

2.2 关系代数的基本原理4 .笛卡尔积可表示为一个二维表,表中的每行对应一个

元组,每列对应一个域.5 .关系关系是一个集合,其组成元素是元组而不是组成元组的

元素。 D1×D2×…×Dn 的子集叫做在域 D1 、 D2 、…、 Dn上的关系,用 R ( D1 、 D2 、…、 Dn )表示,其中 R 表示关系的名字, n 表示关系的目或度。

当 n=1 时,称为单元关系当 n=2 时,称为二元关系关系是笛卡尔积的子集,所以关系也是一个二维

Page 17: 第2章  关系数据库基本原理

17 17

笛卡尔积示例D1

张三

李四

王五

D2

C 语言

高数

D1×D2

张三 C 语言张三 高数李四 C 语言李四 高数王五 C 语言王五 高数

选修

张三 高数

李四 C 语言

李四 高数

王五 C 语言

Page 18: 第2章  关系数据库基本原理

18 18

关系中的码

候选码 能唯一标示一个元组的属性组

主码 多个候选码中的主要应用属性组,其中的每个属性都称为主属性,不属于任何候选码的属性称为非码属性

合成码 码含有多个属性

外码 不是当前关系的码,但是其他关系中的主码

全码 所有属性共同组成关系模式的候选码

Page 19: 第2章  关系数据库基本原理

19 19

关系模式关系的描述称为关系模式,可以表示为 R(U,D,DOM,F)

R 为关系名, U 为属性名集合, D 为域集合, DOM 为属性向域的映像集合, F 为属性间的依赖关系集合

关系模式是型,关系是值例:学生选修课成绩登记表,定义关系模式 SC 如下:

SC ({sno,cno,grade},

{N(6),N(3)},

{(sno,N(6)),(cno,N(3)),(grade,N(3))},

{(sno,cno)→grade}

Page 20: 第2章  关系数据库基本原理

20 20

关系代数关系代数有哪些?各关系代数运算的具体含义

Page 21: 第2章  关系数据库基本原理

21 21

关系代数运算关系代数是一种抽象的查询语言,它是用对关系的运算来表达查

询运算符 含义 运算符 含义

集合运算符

∪-∩

并差交

逻辑运算符

┐Λν

非与或

专门的关系运算符

×

σ∏

%

广义笛卡尔积选择投影连接除

比较运算符

>

<

=

大于等于大于小于等于小于等于不等于

Page 22: 第2章  关系数据库基本原理

22 22

2.2 关系代数的基本原理关系运算 对二维表格进行运算的机制。 1 .并设 A 、 B 同为 n 元关系,则 A 、 B 的并也是一个 n 元关

系,记作 A B∪ 。2 .交设 A 、 B 同为 n 元关系,则 A 、 B 的交也是一个 n 元关

系,记作 A∩B 。 A∩B 包含了所有同属于 A 、 B 的元组。3 .差设 A 、 B 同为 n 元关系,则 A 、 B 的差也是一个 n 元关

系,记作 A-B 。 A-B 包含了所有属于 A 但不属于 B 的元组。

Page 23: 第2章  关系数据库基本原理

23 23

传统的集合运算1. 并( union )

R S={∪ t|t R∈ ν t S}∈R 、 S 为同类关系(关系的度相同,且相应属性

都来自相同的域),并的结果与 R 、 S 也是同类关系

R S

Page 24: 第2章  关系数据库基本原理

24 24

传统的集合运算2.差( difference )

R - S={t|t R∈ Λ ┐ t S}= {∈ t|t R∈ Λ t S}∈R 、 S 为同类关系,差的结果与 R 、 S 也是同类

关系

R S

Page 25: 第2章  关系数据库基本原理

25 25

传统的集合运算3.交( intersection )

R ∩ S ={t|t R∈ Λ t S}∈R 、 S 为同类关系,交的结果与 R 、 S 也是同类

关系

R S

Page 26: 第2章  关系数据库基本原理

26 26

传统的集合运算3.广义笛卡尔积( extended cartesian product )

R × S ={trts|tr R∈ Λ ts S}∈R 、 S 具有相同属性组,结果不为同类关系

R SR ×S

Page 27: 第2章  关系数据库基本原理

27 27

2.2 关系代数的基本原理例 2-1 设 A={(湖南,长沙 ) , (河北,石家庄 ) , (陕

西,西安 )} , B={(湖北,武汉 ) , (广东,广州 ) , (广东,深圳 ) , (陕西,西安 )} ,求 A B∪ 、 A∩B 、 A-B 。显然, A 、 B 是表示城市和所在省的关系。

A B={(∪ 湖南,长沙 ) , (河北,石家庄 ) , (陕西,西安 ) ,(湖 北,武汉 ) , (广东,广州 ) , (广东,深圳 )}

A∩B={(陕西,西安 )}

A-B={(湖南,长沙 ) , (河北,石家庄 )}

Page 28: 第2章  关系数据库基本原理

28 28

2.2 关系代数的基本原理4 .连接设 A 是一个包含 m 个元组的 k1 元关系, B 是一个包含 n

个元组的 k2 元关系,则 A 、 B 的连接是一个包含 m×n 个元组的 k1+k2 元关系,记作 A×B 。

5 .投影设 R=R(A1 , A2 ,…, An) 是一个 n 元关系, {i1 , i2 ,

…, im} 是 {1 , 2 ,…, n} 的一个子集,并且 i1<i2<…<im ,定义:

称 π(R) 是在 R 上的一个投影。6 .选择设 R={(a1 , a2 ,…, an)} 是一个 n 元关系, S 是关于

(a1 , a2 ,…, an) 的一个条件, R 中所有满足 S条件的元组组成的子关系 S(R) ,称为 R 的一个选择。

),,,()(21 miii AAAR

Page 29: 第2章  关系数据库基本原理

29 29

专门的关系运算1. 选择( selection ) : 对关系而言,选择是从行的角度取关系的子

公式表示 :R[F] 或σ F(R)={t|t R ∈ ΛF(t)=True}公式的含义: R中使布尔函数为真的元组集, F为布尔函数,

即限定条件F的基本形式为: x1θy1[Φx2θy2……],其中 θ 为比较运

算符,Φ为逻辑运算符, x1,y1是属性名或常量,属性名也可用序号表示

例: σ 5=‘IS’(student) 或 student[5=‘IS’]

σ Sage<19(student) 或 student[Sage<19]

181617

201918211617

F:A<19

Page 30: 第2章  关系数据库基本原理

30 30

专门的关系运算2.投影( projection ) : 对关系而言,投影是从列的角度

取关系的子集公式表示 :R[A] 或∏ A(R)={t[A]|t R∈ }公式的含义:包含 A中各属性组的元组集投影之后不仅取消了某些属性列,而且还可能取消

某些元组例:∏ Sname,Sdept(student) 或 student[Sname,Sde

pt]∏2,5(student) 或 student[2,5] A=(c,d,f)a b ec d f

Rc d f

Page 31: 第2章  关系数据库基本原理

31 31

专门的关系运算3.连接( join ) :

公式表示 :

R ∞F S 或 R[F]S={trts|tr R ∈ Λts S ∈ ΛF(tr,ts)=True}或表示为:R ∞A θB S 或 R[F]S={trts|tr R ∈ Λts S ∈ Λtr[A]θts[B])=True}

公式的含义:从两个关系的笛卡尔积中选取属性间满足一定条件的元组

18

1921

2016

182317

R S

tr[A] ts[B]

1818

19 2321 23

18 2320 23161616

182317

R ∞SA <=B

Page 32: 第2章  关系数据库基本原理

32 32

专门的关系运算等值连接 :

等值连接中的 θ “即为 =”

从某种意义上说,连接与投影是相反的操作,即投影是减少属性,而连接是增加属性例:有 R( A1,A2,A3) ,S(A4,A5,A6),其中 A3和 A4是相同属性,

则有

18

1821

2017

182317

R S

A3 A4

1818 18

1817 17

R ∞SA3 =A4

Page 33: 第2章  关系数据库基本原理

33 33

专门的关系运算自然连接:

自然连接是特殊的等值连接,它要求 A和 B是相同的属性组,且结果中去掉了相同的属性

公式表示 :R*S={trts[Z]|Z=XAYΛtr R ∈ Λts S ∈ }其中 R(X,A),S(Y,A),A为公共属性

例:有 R( A1,A2,A3) ,S(A4,A5,A6),其中 A3和 A4是相同属性,则有

18

1821

2017

182317

R S

A3 A4

181818181717

R *S

Page 34: 第2章  关系数据库基本原理

34 34

专门的关系运算除( division):

公式表示 :R/S={tr[X]|tr R ∈ ΛYx ∏A(S) }其中 Yx为 x在 R中的象集,即 Yx为属性 X取值 x时,相应的 Y

值集合含义: R/S是关系 R在 X上的分量 x的集合,且这些分量 x在

R中的象集应包含集合 S在 Y上的投影 S[Y]

与前面各种关系运算不同的是,在除运算当中首次出现了集合比较

Page 35: 第2章  关系数据库基本原理

35 35

除的示例关系 R 关系 S

sno cno cno

07601 C501 C501

07601 C502 C504

07601 C504

07602 C501

07602 C502

07602 C503

07603 C501

07603 C504

07604 C502

07605 C504

Page 36: 第2章  关系数据库基本原理

36 36

除的示例X 取 x值

象集 YxS[Y]

07601 {C501, C502, C504} {C501, C504}

07602 {C501, C502, C503} {C501, C504}

07603 {C501, C504} {C501, C504}

07604 {C502} {C501, C504}

07605 {C504} {C501, C504}X={sno},Y={cno}

R/S={07601,07603}

实际意义是:求至少选修了 C501, C504 课程的学生学号

Page 37: 第2章  关系数据库基本原理

37 37

2.2 关系代数的基本原理例 2-2 设 R1=R1( 姓名 , 性别 )={( 钱达理 , 男 ) , ( 东方牧 , 男 )} , R2=R2( 所在

部门,住址 )={(总经理办 , 东风路 78 号 ) , (销售部 , 五一北路 25 号 )} ,求(1)R=R1×R2 。(2)R 在 ( 姓名,所在单位,住址 ) 的投影。(3)根据表 2-1 ( P18 ),求 R 关系的一个选择。

解:(1) R={( 钱达理 , 男 ,总经理办 , 东风路 78 号 ) , ( 钱达理 , 男 ,销售部 , 五一北路 25 号 ) , ( 东方牧 , 男 ,总经理办 , 东风路 78 号 ) , ( 东方牧 , 男 ,销售部 , 五一北路 25 号 )} 。R 是一个包含 4 个元组的 4 元关系。

(2) ∏(R)={( 钱达理 ,总经理办 , 东风路 78 号 ) , ( 钱达理 ,销售部 , 五一北路 25 号 ) , ( 东方牧 ,总经理办 , 东风路 78 号 ) , ( 东方牧 ,销售部 , 五一北路 25 号 )}

(3) R[S]={( 钱达理 ,总经理办 , 东风路 78 号 )}

Page 38: 第2章  关系数据库基本原理

40 40

关系数据理论关系数据库设计中的异常问题关系数据库设计理论中的基本概念

函数依赖范式

Page 39: 第2章  关系数据库基本原理

41 41

关系数据库设计中的异常问题数据冗余更新异常插入异常 删除异常

关系数据理论的目标就是通过规范化的设计解决或缓解上述问题。

Page 40: 第2章  关系数据库基本原理

42 42

示例数据

学号 (6) 姓名 (8) 系名 (8) 系负责人 (8) 课程名 (10) 成绩 (2)

060701 张三 管理系 李瑞 市场营销 86

060701 张三 管理系 李瑞 技术经济 78

060701 张三 管理系 李瑞 生产管理 80

060702 李四 管理系 李瑞 市场营销 90060702 李四 管理系 李瑞 技术经济 88060702 李四 管理系 李瑞 生产管理 75060703 王五 管理系 李瑞 市场营销 82060703 王五 管理系 李瑞 技术经济 93060703 王五 管理系 李瑞 生产管理 70060704 丁七 管理系 李瑞 市场营销 75060704 丁七 管理系 李瑞 技术经济 79

060704 丁七 管理系 李瑞 生产管理 85

学生 ( 学号 , 姓名 , 系名 , 系负责人 , 课程名 , 成绩 )主码 ={ 学号 , 课程名 } 每一行字节数 =6+8+8+8+10+2

=42

Page 41: 第2章  关系数据库基本原理

43 43

数据冗余总字节数 =12*42=504B

系名和系负责人重复 12次学号和姓名重复 3次课程名重复 4次

Page 42: 第2章  关系数据库基本原理

44 44

更新异常管理系负责人改为李瑞祥

需要修改 12条记录

( 所有相关的记录,与该系学生有关 )

由于数据重复存储导致数据更新操作复杂化

Page 43: 第2章  关系数据库基本原理

45 45

插入异常计算机系成立但尚未招生——不能插入

主属性(学号 + 课程名)为空,违背实体完整性原则招生完毕但学生尚未选修课程——不能插入

学号有了但无课程名,同样不能达到主属性不为空的实体完整性要求

求学校有多少系?

结果不正确,学生表中未包含计算机系问计算机系负责人是谁?

不知道,因为计算机系不存在

由于信息不全,导致应该存储的数据无法存储

Page 44: 第2章  关系数据库基本原理

46 46

删除异常管理系 06级学生毕业,删除所有该年级学生

学生信息删除后连带管理系及其负责人信息一起被删除

学校有几个系?

管理系负责人是谁?若 060701 取消三门选修课程,需要删除该生对应的三条记录,该生

的所有信息将被删除

管理系有多少学生?

删除元组时会导致额外信息的丢失

Page 45: 第2章  关系数据库基本原理

47 47

根本原因:上述学生关系模式的规范化程度较低解决方法:通过规范化理论对其进行规范,逐步降低和

消除上述问题

Page 46: 第2章  关系数据库基本原理

48 48

2.3 关系模式的分解函数依赖的基本概念

非平凡的函数依赖完全函数依赖部分函数依赖传递函数依赖

Page 47: 第2章  关系数据库基本原理

49 49

2.3 关系模式的分解函数依赖的基本概念定义 1 对于 R 中属性 X 的任何一个具体值, Y仅有唯

一的具体值与之对应,则称 R 的属性 Y函数依赖于属性 X 。记为: X→Y , X 称为决定因素。

设 R(U) 是一关系模式, U 是 R 的属性集合, X 和 Y是 U 的子集,对于 R(U) 的任何一个可能的关系 r ,若果 r中不存在两个元组,它们在 X 上的属性值相同,而在 Y 上的属性值不同,则称 X函数决定 Y ,或 Y函数依赖于 X ,记为: X→Y 。

例:学号→姓名,学号→系名 ( 学号,课程名 ) → 成绩

Page 48: 第2章  关系数据库基本原理

50 50

2.3 关系模式的分解在关系模式 R(U) 中,对于 U 的子集 X 和 Y ,如果 X→Y

成立,但 Y X ,则称 X→Y 是非平凡函数依赖,若 Y X ,则称 X→Y 是平凡函数依赖。

对任一关系模式,平凡函数依赖必然成立,不能反映语义环境,故一般只讨论非平凡函数依赖。

Page 49: 第2章  关系数据库基本原理

51 51

2.3 关系模式的分解定义 2 在 R 中,如果属性集 Y函数依赖于属性集 X ,

且不函数依赖于 X 的任意真子集,则称 Y 完全函数依赖于 X ,记做: X Y , 否则,称 Y 部分函数依赖于 X ,记做: X Y 。

例:关系 SC(Sno,Cno,Grade) 中,由于Sno→Grade, Cno → Grade ,所以有(Sno,Cno) Grade

ƒ p

ƒ

Page 50: 第2章  关系数据库基本原理

52 52

2.3 关系模式的分解定义 3 设 X , Y , Z 是关系模式 R 的不同属性集,若

X Y( 并且 Y∈X) , Y→Z ,称 X传递决定 Z ,或称 Z传递函数依赖于 X ,记做 X Z 。

例:如关系 Std(Sno,Sdept,Mname) 中,有 Sno → Sdept , Sdept → Mname ,且 Sdept ∈ Sno ,所以 Sno Mname

ƒ

t

t

Page 51: 第2章  关系数据库基本原理

53 53

码超级码

如果 K →U ,则 K 是关系模式 R(U) 的超级码候选码

K 是关系模式 R(U) 的候选码当且仅当 K →U且 不存在 α包含于 K,使 α →U 成立即 K U

主码若关系模式 R 有多个候选码,则选定其中一个作

为主码

ƒ

Page 52: 第2章  关系数据库基本原理

54 54

2.3 关系模式的分解关系的规范化 主属性与非主属性

候选关键属性和关键属性定义 4 设关系模式 R(A1,A2,…,An) , A1,A2,…,An 是 R 的属性,

X 是 R 的一个属性集,如果 ① X→(A1,A2,…,An) ,

② 对于 X 的任意真子集 X1 , X1→(A1,A2,…,An) 都不成立,则称属性集 X 是关系模式 R 的一个候选关键属性。 如果关系模式 R 只有一个候选关键属性,称这惟一的候选关键属性

为关键属性,否则,应从多个候选关键属性中指定一个作为关键属性。习惯上把候选关键属性称为候选关键字,关键属性称为关键字。

主属性和非主属性定义 5 设 Ai 是关系模式 R 的一个属性,若 Ai 属于 R 的某个候选

关键属性,称 Ai 是 R 的主属性,否则,称 Ai 为非主属性。

Page 53: 第2章  关系数据库基本原理

55 55

范式是符合某一规范级别的关系模式的集合,目前主要有六

种范式,分别是第一范式( 1NF )、第二范式( 2NF )…、第五范式( 5NF )和 BC 范式( BCNF )

若 R 为第 n 范式,记做 R ∈nNF

Page 54: 第2章  关系数据库基本原理

56 56

第 1范式对关系模式的规范化要求分成从低到高不同的层次,分

别称为第 1 范式、第 2 范式、第 3 范式、 Boyce-Codd 范式、第 4 范式和第 5 范式。

定义 6 当关系模式 R 的所有属性都不能分解为更基本的数据单位时,称 R 是满足第 1 范式的,则 R ∈ 1NF 。

第 1 范式要求一行中的每一列仅有唯一的值并且具有原子性。

例如,如果关于员工的关系中有一个工资属性,而工资又由更基本的两个数据项基本工资和岗位工资组成,则这个员工的关系模式就不满足 1NF 。

Page 55: 第2章  关系数据库基本原理

57 57

第 2 范式定义 7 如果关系模式 R满足第 1 范式,并且 R 的所有

非主属性都完全函数依赖于 R 的码,称 R满足第 2 范式,简记为 R ∈ 2NF 。

例如在学生表 ( 学号 , 姓名 , 系名 , 系负责人 , 课程名 , 成绩 ) 中存在非主属性对码的部分函数依赖

姓名 , 系名 , 系负责人部分函数依赖于 { 学号,课程名 }

姓名 , 系名 , 系负责人完全函数依赖于学号

Page 56: 第2章  关系数据库基本原理

58 58

第 2 范式消除表中非主属性对码的部分函数依赖采取投影分解方法得到两个新的关系

学生情况 ( 学号 , 姓名 , 系名 , 系负责人 )

成绩 ( 学号,课程名,成绩 )

Page 57: 第2章  关系数据库基本原理

59 59

规范化结果

学号 (6) 姓名 (8) 系名 (8) 系负责人 (8)

060701 张三 管理系 李瑞060702 李四 管理系 李瑞060703 王五 管理系 李瑞060704 丁七 管理系 李瑞

学生情况 ( 学号 , 姓名 , 系名 , 系负责人 )

Page 58: 第2章  关系数据库基本原理

60 60

规范化结果

学号 (6) 课程名 (10) 成绩 (2)

060701 市场营销 86

060701 技术经济 78

060701 生产管理 80

060702 市场营销 90060702 技术经济 88060702 生产管理 75060703 市场营销 82060703 技术经济 93060703 生产管理 70060704 市场营销 75060704 技术经济 79

060704 生产管理 85

成绩 ( 学号,课程名,成绩 )

规范化前总字节数 = (6+8+8+8+10+2)*12=504B

规范化后总字节数 =(6+8+8+8)*4+(6+10+2)*12=120B+216B=336B

Page 59: 第2章  关系数据库基本原理

61 61

异常问题缓解数据冗余(减轻,但仍存在)

系名和系负责人重复 4次;学号重复 3次;课程名重复 4次更新异常(减轻,但仍存在)

修改管理系负责人为李瑞祥需涉及 4条记录插入异常(减轻,但仍存在)

计算机系成立但尚未招生——不能插入(未解决)

招生完毕但学生尚未选修课程——可以插入删除异常(减轻,但仍存在)

取消选修不会删除学生信息

但删除系中学生仍会导致学生信息表中信息的丢失(未解决)

Page 60: 第2章  关系数据库基本原理

62 62

第 3 范式定义 8 如果 R ∈ 2NF ,且它的任何一个非主属性都不

传递依赖于 R 的任意一个候选关键字,称 R满足第 3 范式,简记为 R ∈ 3NF 。

第三范式要求非主键列互不依赖,消除传递依赖。如果非主属性之间存在了函数依赖,就会存在传递依赖,这样就不满足第三范式。

定理 若关系模式 R符合 3NF条件,则 R 一定符合 2NF条件。

Page 61: 第2章  关系数据库基本原理

63 63

第 3 范式消除表中非主属性对码的传递函数依赖

将函数关系中起传递作用的非主属性(决定方)和非主属性取出单独构成一个关系模式

将决定方和余下的属性加上主码构成另外一个关系模式

Page 62: 第2章  关系数据库基本原理

64 64

规范化结果由于系负责人传递函数依赖于学号

(学号 → 系名,系名 → 系负责人)分解得到

系(系名,系负责人)学生表(学号,姓名,系名)

系名 (8) 系负责人 (8)

管理系 李瑞

学号 (6) 姓名 (8) 系名 (8)06070

1张三 管理系

060702

李四 管理系

060703

王五 管理系

060704

丁七 管理系

规范化前学生情况表总字节数 = (6+8+8+8)*4=120B

规范化后总字节数 =(8+8)*1+(6+8+8)*4=104B

Page 63: 第2章  关系数据库基本原理

65 65

异常问题缓解数据冗余降低更新异常消除

修改管理系负责人只与该系的一个元组有关插入异常消除

计算机系成立但尚未招生——可以插入删除异常消除

删除管理系的所有学生并不会将管理系的信息丢失

Page 64: 第2章  关系数据库基本原理

66 66

进一步优化减少作为外码的字段所占空间,即减少重复项的空间占用如将系名用系号表示( 2B ),课程名用课程号表示( 2B )

系号 (2) 系名 (8) 系负责人 (8)

MD 管理系 李瑞

学号 (6) 姓名 (8) 系号 (2)06070

1张三 MD

060702

李四 MD

060703

王五 MD

060704

丁七 MD

优化前总字节数 = (8+8)*1+(6+8+8)*4=104B

优化后总字节数 = (2+8+8)*1+(6+8+2)*4=82B

Page 65: 第2章  关系数据库基本原理

67 67

2.3 关系模式的分解5. Boyce-Codd 范式定义 9 设 R 是一个关系模式,若 R 的每一个函数依赖关

系的左部都是 R 的一个候选关键字,称 R满足 Boyce-Codd范式,简记为 BCNF 。即每个属性,包括主属性或非主属性,都完全依赖于候选键,并且不存在传递依赖情况。

可以证明, BCNF 是比 3NF更强的规范 (证明略 ) ,即符合 BCNF条件的关系模式一定符合 3NF条件,但反过来却不成立。

Page 66: 第2章  关系数据库基本原理

71 71

2.3 关系模式的分解关系的分解 1. 关系模式分解的一般问题所谓关系模式的分解,就是对原有关系在不同的属性上

进行投影,从而将原有关系分解为两个或两个以上的含有较少属性的多个关系。

2. 3NF 分解(1) 如果 R 不满足 1NF条件,先对其分解,使其满足 1N

F 。对 R进行 1NF 分解的方法不是采用投影,而是直接将其

复合属性进行分解,用分解后的基本属性集取代原来的属性,以获得 1NF 。

Page 67: 第2章  关系数据库基本原理

72 72

2.3 关系模式的分解例 2-3 将 R(员工号 , 姓名 , 工资 )进行分解,使其满足 1

NF条件。假定 R 的工资属性由基本工资和岗位工资组成,直接用

属性集 ( 基本工资 ,岗位工资 ) 取代工资属性,得到新关系 R_NEW(员工号 , 姓名 , 基本工资 ,岗位工资 ) , R_NEW满足 1NF 。

(2)R符合 1NF条件但不符合 2NF条件时,分解 R 使其满足 2NF 。

(3)R符合 2NF条件但不符合 3NF条件时,分解 R 使其满足 3NF 。

Page 68: 第2章  关系数据库基本原理

73 73

2.5 数据库的设计方法数据库设计过程 数据库设计过程一般包括:(1)需求分析:目标需求、数据表现形式;(2) 概念设计:用户需求的综合、归纳与抽象,形成数据

库的概念模型;(3)逻辑设计:转换为某个 DBMS 所支持的数据模型,并

优化;(4)物理设计:选取一个最适合应用环境的物理结构(存

取结构、存取方法);(5) 实施与维护:用数据定义语言( DDL )来严格定义

数据库(创建表和表约束),另进行数据库运行后的评价、调整、修改等维护工作。

Page 69: 第2章  关系数据库基本原理

74 74

2.5 数据库的设计方法E-R 模型到关系模型的转化从概念模型转换成数据模型,即由 E-R 图转换为数据模型

E-R 模型 关系模型对问题进行分析 转化

图 2-2 E-R 模型到关系模型的转化过程

1 .独立实体到关系模型的转化一将每个实体集转换为对应的一个关系模式,实体集的属

性就是关系的属性。

Page 70: 第2章  关系数据库基本原理

75 75

2.5 数据库的设计方法例:例如对于图 2-3 所示的学生实体,应将其转化为关

系: 学生 ( 学号 , 姓名 ,民族 ,籍贯 )

其中下划线标注的属性表示关键字。

学 生

学 号

民 族

籍 贯

姓 名

图 2-3 学生实体的 E-R 图

Page 71: 第2章  关系数据库基本原理

76 76

2.5 数据库的设计方法2 . 1:1 联系到关系模型的转化对于一对一的两个实体集,将其中一个实体集的键及联系本身的属性

加入到另一个实体中。

11经 理 公 司领 导

姓 名

住 址

出生年月

电 话

民 族名 称

电 话 类 型

注册地

图 2-4 1:1 联系到关系模型的转化

Page 72: 第2章  关系数据库基本原理

77 77

E-R 图分析方法

一对一 一对多

Page 73: 第2章  关系数据库基本原理

78 78

2.5 数据库的设计方法对图 2-4 模型转化为关系模型:经理 ( 姓名 ,民族 ,住址 , 出生年月 ,电话 , 名称 )

公司 ( 名称 ,注册地 , 类型 ,电话 )

或者公司 ( 名称 ,注册地 , 类型 ,电话 , 姓名 )

经理 ( 姓名 ,民族 ,住址 , 出生年月 ,电话 )

Page 74: 第2章  关系数据库基本原理

79 79

学生和照片两个实体,其两个关系为: 学生(学号,姓名,性别,系别,专业) 照片(照片编号,照片图像,学号) 或者 照片(照片编号,照片图像) 学生(学号,姓名,性别,系别,专业,照片编

号)

Page 75: 第2章  关系数据库基本原理

80 80

2.5 数据库的设计方法3 . 1:n 联系到关系模型的转化对于一对多的两个实体集,将 “一”方实体集的主键及

联系本身的属性加入到“多”方实体集中。

1n学 生班 级属 于

姓 名学 号

民 族出生年月

名 称

班 号

年 级

专 业

图 2-5 1:n 关系到关系模型的转化

Page 76: 第2章  关系数据库基本原理

81 81

2.5 数据库的设计方法如图 2-5 所示,“班级”与“学生”的联系是 1:n 的联系,

学生方是 n 方,对图 2-5进行转化,得到关系模型:学生 ( 学号 , 姓名 ,民族 , 出生年月 ,班号 )

班级 (班号 , 名称 ,年级 , 系 ,专业 )

在学生表中增加“班级”中的关键字“班号”作为外部关键字。

Page 77: 第2章  关系数据库基本原理

82 82

2.5 数据库的设计方法4 . m:n 联系到关系模型的转化对于多对多联系的两个实体集,就将联系本身也转换成一个关系模式,

这个关系应包括本身的属性和两个实体集的主键。如图 5.9 所示中的学生和课程两个实体,其三个关系为:

学 习m n学 生

学 号 姓 名

出生年月

民 族

课程号 课程名

学时数

课程

成绩

图 2-6 m:n 关系到关系模型的转化

Page 78: 第2章  关系数据库基本原理

83 83

2.5 数据库的设计方法图 2-6 描述的学生与课程的联系是 m:n 联系,将 E-R 图

转化为 3 个关系:学生 ( 学号,姓名,民族,出生年月 )

课程 ( 课程号,课程名,学时数 )

学习 ( 学号,课程号,成绩 )

Page 79: 第2章  关系数据库基本原理

84 84

2.5 数据库的设计方法

图 2-7 m:n 关系到关系模型的转化

Page 80: 第2章  关系数据库基本原理

85 85

图 2-7所示的订书系统 E-R图,两个实体集“客户”和“书目”的关系分别表示如下:客户(客户代码,客户名称,邮编,客户地址,联系电话)书目(条码号,书名,出版社,主编,单价)

两个实体之间的联系“订单”的关系表示如下:订单(订单号,日期,客户代码,条码号,数量)

Page 81: 第2章  关系数据库基本原理

86 86

2.5 数据库的设计方法5 .多元联系到关系模型的转化所谓多元联系,即是说该联系涉及两个以上的实体。例如一个课程表,涉及班级、课程、教师、教室等 4 个

实体。转化时,应建立一个单独的关系表,将该联系所涉及的全部实体的关键字作为该关系表的外部关键字,再加上适当的其他属性,得到关系模式如下:

课程表 (班号 , 课程号 , 教师号 , 教室号 ,周次 ) 。

Page 82: 第2章  关系数据库基本原理

87 87

2.5 数据库的设计方法6 .自联系到关系模型的转化自联系指同一个实体类中实体间的联系。例如一个公司

的所有员工组成的实体类中,员工中存在领导与被领导这样的联系,只要分清两部分实体在联系中的身份,其余的情况与一般二元关系相同,如图 2-8 所示。

姓 名员工号

民 族

基本工资

职 务

住 址

领 导员 工

图 2-8 自联系关系到关系模型的转化

Page 83: 第2章  关系数据库基本原理

88 88

2.5 数据库的设计方法对图 2-8 所示 E-R 图转化为关系模型:员工 (员工号 , 姓名 ,住址 ,民族 , 基本工资 ,职务 )

领导 (领导员工号 ,被领导员工号 )

在领导关系表中,是只反映直接领导关系,还是把非直接领导关系也进行反映,由应用系统的要求确定。

Page 84: 第2章  关系数据库基本原理

89 89

2.5 数据库的设计方法数据库设计实例 1 .问题概述

销售公司

商品供应商 客户

采购订单 销售订单

库存文件

图 2-8 某销售公司业务流程图

Page 85: 第2章  关系数据库基本原理

90 90

2.5 数据库的设计方法该系统数据模型包含的数据实体有:(1) 供应商 (Supplier) :为该公司提供商品的公司。(2) 商品 (Goods) :该公司经营的商品。(3)客户 (Customer) :该公司提供服务的厂家。(4)员工 (Employee) :该公司的员工。(5)运输商 (Transporter) :为该公司提供运输服务的公司。(6)销售订单 (Sell_Order) :该公司与用户签定的销售合

同。(7) 采购订单 (Purchase_Order) :该公司与供应商签定的

采购合同。

Page 86: 第2章  关系数据库基本原理

91 91

2.5 数据库的设计方法

员工

销售订单

商品

采购订单 供应商

运输商

客户

图 2-9 数据实体之间的关系

Page 87: 第2章  关系数据库基本原理

92 92

2.5 数据库的设计方法2 .数据实体的 E-R 图这个实例包含的数据实体较多,联系较复杂,如果用一

般的 E-R 图描述,幅面会比较大,对于这种问题,常常用一种 E-R 图的变形图来描述。在这种变形图中,实体及其属性用一个矩形框描述,实体名称标注在矩形框的顶部,实体关键字用 *标出,并紧跟在实体名称后面,实体属性依次标注。实体间的联系省略菱形框,只用连线,并在连线的两端标注联系类型。

图示:见书 35页实体分解:见书 36页

Page 88: 第2章  关系数据库基本原理

93 93

2.5 数据库的设计方法3 .数据表设计示例以员工、销售订单、商品以及部门 4 个数据实体及其相

互间的联系为例,说明这种转换过程。 (1)“员工”实体到关系模式的转换从图 2-10 和图 2-11 中看出,“员工”实体有 9 个属性,

Employee_ID 是其关键属性,该实体与“销售订单”实体间有一个 1:n 的联系。此外,与“部门”实体间有一个 n:1 的联系,为描述这种联系,需要增加一个外部关键字 Department_ID ,转换结果见表 2-8 。

Page 89: 第2章  关系数据库基本原理

94 94

2.5 数据库的设计方法(2)“销售订单”实体到关系模式的转换“销售订单”实体包含 Order_ID1 等 7 个属性,还与

“客户”等 4 个实体具有 n:1 的联系,为描述这种联系,需要增加 4 个外部关键字 ( 实体中已列出了这 4 个外部关键字 ) 。转换结果见表 2-9 。

(3)“ 商品”实体到关系模式的转换“商品”实体包含 6 个属性,关键属性是“商品代码 (Go

ods_ID)” ,“商品”实体与“销售订单”实体及“采购订单”实体间有 1:n 的联系,与“商品规格”实体有 n:1 的联系。转换结果见表 2-10 。

(4)“ 部门”实体到关系模式的转换“部门”实体有 4 个属性,并且与“员工”实体有 1:n 的

联系,转换结果见表 2-11 。

Page 90: 第2章  关系数据库基本原理

95 95

本章小结(1) 关系数据库是二维表的集合,这种表的列应满足原子

特征,即列是不可分解的。(2) 关系运算是关系数据库操作的数学基础,通常的关系

运算包括并、交、差、乘积、选择、投影等 6 种。(3) 不好的关系模式存在数据冗余、插入异常、删除异常

等许多问题,解决这些问题的基本方法是对关系模式进行分解。

(4) 数据完整性是保证数据正确性的一组规则。完整性分为实体完整性、域完整性、参照完整性和自定义完整性 4 种。

(5) 数据库应用系统开发有两个任务,一是数据库的设计,二是应用程序的开发。