第 3 章 关系数据库
DESCRIPTION
第 3 章 关系数据库. 本章主要介绍 : 关系数据库设计步骤 概念模型的设计 ( 难点 ) 逻辑模型的设计(难点) 关系模式的规范化处理(难点). 3.1 数据库设计概述. 数据库设计 是指对一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(包括信息要求和处理要求)。. 3.1 数据库设计概述. 关系数据库设计分为以下五个阶段 : 1) 需求分析 2) 概念模式设计( E-R 模型) 3) 逻辑模式设计( RDBMS ) 4) 数据库实施 5) 数据库运行和维护 见下图所示。. 数据库运行 - PowerPoint PPT PresentationTRANSCRIPT
1 数据库技术及应用DB
第 3 章 关系数据库本章主要介绍 :
关系数据库设计步骤概念模型的设计 ( 难点 )
逻辑模型的设计(难点)关系模式的规范化处理(难点)
2
3.1 数据库设计概述
• 数据库设计是指对一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(包括信息要求和处理要求)。
3
3.1 数据库设计概述• 关系数据库设计分为以下五个阶段:1) 需求分析2) 概念模式设计( E-R 模型)3) 逻辑模式设计( RDBMS )4) 数据库实施5) 数据库运行和维护
见下图所示。
4
3.1 数据库设计概述
需求分析
概念模式设计 逻辑模式设计 数据库实施
E/R 图RDBMS
模式 存储模式
数据库运行和维护
图 3.1.1 数据库的设计过程
5
3.2 概念模式设计• 数据库概念模式与计算机实现无关。它是
对现实世界的第 1 层抽象。• 直接把现实世界事物及其联系抽象为数据
世界的数据模型过于复杂,因此一般是先将现实世界的事物及其联系抽象为信息世界实体及其联系(概念模型),然后再将其转换为计算机世界的数据模型(关系数据库模式)。
6
3.2 概念模式设计
现实世界 ( 事物及其联系 )
信息世界(概念模式)
计算机世界(关系数据库模式)
抽象
转换
数据建模过程
7
• 实体 - 联系模型 (Entity-Relationship Model ,简称为 E-R 模型 ) 是 1976 年美籍华人 P.S.Chen (陈平山)提出的。这个模型直接将现实世界中的事物及其之间的联系抽象为实体类型和实体间联系,然后用实体联系图表示数据模型。
3.2.1 实体联系模型
8
3.2.1 实体联系模型 P39
E-R 模型是用 E-R 图表示的。 E-R 图中有下面四个基本成分:
① 矩形框:表示实体型。② 菱形框:表示联系。③ 椭圆形框:表示实体或联系类型的属性。④ 直线:联系类型与其所涉及的实体之间用
直线连接,实体与实体之间用直线连接。
9
m
1
m
1
n 学生 课程 选课
任课
教师
学号 姓名
年龄
班级
性别 成绩 课程号 课程名
学分 n
1
工号
工作量
姓名
年龄
职称
3.2.1 实体联系模型
10
3.2.1 实体联系模型
(1) 实体( entity ):客观存在并可相互区别的事物称为实体。实体可以是具体可触及到的对象,如一个大学生、一辆汽车等;也可以是抽象的事件,如一场足球赛,一次借书等。
(2) 属性( attribute ):实体所具有的某一特征称为实体的属性。一个实体可由若干属性来刻画。例如,学生实体有学号、姓名、性别、年龄、班级等属性。
11
3.2.1 实体联系模型
(3) 键( key ):也称关键字或码。唯一标识实体的最小的属性集称为实体的键。
例如,学生(学号 , 姓名 , 年龄 , 性别 , 班级) 键是“学号”;课程 ( 课号 , 课名 , 学分 , 学时 ) ,键是“课号”;选课 ( 学号,课号,分数,学年 ) , 键是(学号 , 课号)足球赛(场次,日期,地点)则是全键。
12
3.2.1 实体联系模型
(4) 联系( relationship ):现实世界的事物彼此是有联系的,反映在信息世界就是实体之间的联系。
• 实体之间的联系有两类:一是不同实体集之间的联系;另一种是同一实体集中不同个体之间的联系。
• 首先,考察两个实体集之间的联系,可以分为三类:
13
3.2.1 实体联系模型
①1:1 联系 : 已知实体集 A和 B,若其中每个实体集中任一实体至多与另一实体集中的一个实体有联系,则称 A和 B的联系为“ 1 对 1 联系”,简记为 1:1 联系。
学校 校长 管理
座位 学生 坐 座位 学生 坐
14
3.2.1 实体联系模型②1:n 联系 : 已知实体集 A和 B,若 A中每个实体
可与 B中任意个实体有联系,而 B中每个实体至多与 A中的一个实体有联系,则称 A和 B的联系为“ 1 对多联系”,简记为 1:n 联系。
学校 教师 工作
座位 学生 坐 班级 学生 学习
15
3.2.1 实体联系模型
③m:n 联系 : 已知实体集 A和 B,若其中每个实体集中任一实体可与另一实体集中的多个实体有联系,则称 A 和 B 的联系为“多对多联系”,简记为m:n 联系。
课程 学生 选修
座位 学生 坐 课程 教师 任课
16
3.2.1 实体联系模型•类似地,我们可以定义多个实体集(三个或三个以上)之间的各种联系,也可以定义同一实体集中不同个体之间的联系。如下所示。
例如:有三个实体型:供应商、项目和零件。有如下联系。
1
供应商 项目 供应
零件
17
3.2.1 实体联系模型例如:同一实体集内各实体间联系。如职工
实体集内部具有领导与被领导的联系。如下图所示。
职工 领导
18
3.2.2 子类的设计
• 子类:定义类型之间的一种子集关系。它抽象了类型之间的“ is a” 的语义联系。例如:
isa
学生
年龄 性别所属系
学号姓名
本科生
学号班级
班主任
isa
研究生
学号研究方向
指导老师
19
3.2.3 E-R 模型实例例 1 :教学管理系统 E-R 图如下所示。方法:1 )确定实体类型。 系、学生、教师、研究生、课程2 )确定实体间联系类型。3 )根据实体类型和联系类型画出 E-R 图。4)确定实体类型和联系类型的属性。
20
3.2.3 E-R 模型实例
班级 指导本科生
学号
班主任
课程
课号 课名 学分
系名称编号 办公地点
教师
工号 名字年龄职称
选课
成绩
工作进校日期
学习入学日期
isa isa
学生
年龄性别 专业
学号姓名
研究生
学号研究方向
1
n m
n
m
任课工作量
n
1
n
n
1
时间
21
3.3 逻辑模式设计
• E-R 模型向关系模型转换规则 规则 1 :每个实体型转换为一个关系模式,实
体的属性就是关系的属性,实体的键就是关系的键。键用下划线标出。
规则 2 :若实体之间联系是 1:n ( 包括 1:1) ,在“ n”端关系模式中加入“ 1”端实体的主键,作为其外键,“联系”本身的属性也进入“ n”端关系模式。
22
3.3 逻辑模式设计
学生 系 教师1n 1 n学习
入学时间
工作
到系时间
系名 工号学号
例如:
学生 ( 学号 , 姓名 , 性别 , 年龄 ,入学时间 , 系名 )
教师 (工号 , 名字 , 性别 , 年龄 , 到系时间 ,系名 )
系 ( 系名 ,负责人 , 联系电话 )
23
3.3 E-R 图向关系模型的转换规则 3 :若实体的联系是m:n ,则将联系转
换为一个关系模式。“联系” 两端实体的主键以及“联系”本身的属性转换为该关系的属性。该关系的主键为各实体键的组合。
选修学生 课程mn
成绩
课号学号
选修 ( 学号 , 课号 , 成绩 )
学生 ( 学号 , 姓名 , 性别 , 年龄 ,入学时间 , 系名 )
课程 ( 课号 , 课名 , 学分 )
24
3.3 E-R 图向关系模型的转换规则 4:两个以上实体之间的 m:n 联系转换
为一个关系模式。其属性为相连实体的主键加上联系自身的属性构成 , 其键由相连实体的键的组合 . 例:
零件号
供应零件 工程mn
供应量
供应商p
编号
工程号
供应 ( 编号 , 零件号 , 工程号 , 供应量 )
25
3.3 E-R 图向关系模型的转换规则 5:“ isa” 联系不用单独转换。具体
处理见下例。
isa
学生
年龄 性别所属系
学号姓名
本科生
学号班级
班主任
isa
研究生
学号研究方向
导师
26
3.3 E-R 图向关系模型的转换
学生 ( 学号 ,姓名 ,性别 ,年龄 , 入学时间 , 系名 )
本科生 ( 学号 , 班级,班主任 )研究生 ( 学号,研究方向,导师 )
27
3.3 E-R 图向关系模型的转换例:教学管理系统 E-R 模型转换为关系模型。
班级 指导本科生
学号
班主任
课程
课号 课名 学分
系名称编号 办公地点
教师
工号 名字年龄职称
选课
成绩
工作进校日期
学习入学日期
isa isa
学生
年龄性别 专业
学号姓名
研究生
学号研究方向
1
n m
n
m
任课工作量
n
1
n
n
1
时间
28
3.3 E-R 图向关系模型的转换转换为关系模型:学生 ( 学号 ,姓名 ,性别 ,年龄 , 专业,入学日期 , 编号 )
本科生 ( 学号 , 班级,班主任 )研究生 ( 学号,研究方向,导师工号 )选修 ( 学号 ,课号 ,成绩 )课程 ( 课号 ,课名 ,学分 )教师 (工号 , 名字 ,年龄 , 职称,进校日期 , 编号 )任课 (工号 ,课号 ,时间,工作量 )系 (编号 ,名称 , 办公地点 )
29
3.3.2 关系模式的规范化处理
• 关系模式的规范化处理主要研究关系模式内各属性之间的依赖关系(一种数据联系),保持属性间好的数据依赖关系,消除导致异常的依赖关系,使得关系模式由低一级的规范模式上升到高一级的规范模式的过程称为规范化处理。
30
3.3.2 关系模式的规范化处理
1. 问题的提出下面我们通过例子来考察数据库模式设计
的必要性。即为什么要设计关系数据库模式,为什么有些关系模式是不好的,存在哪些方面的问题。
31
3.3.2 关系模式的规范化处理
例:建立一个数据库来描述学生的一些情况, 假设需要了解这样一些信息: 学生( Snum)、姓名 (Sname) 、 系( Sdept )、 系负责人 (Mname) 、 课程 (Cname) 、 成绩( Grade )。
分析:为该数据库建一个关系模式来描述所要信息。 S(Snum,Sname,Sdept,Mname,Cname,Grade )
32
3.3.2 关系模式的规范化处理
这个关系模式存在的问题 :(1)插入异常:如果一个系刚成立,尚无学生或者虽然有了学生,但尚未安排课程,则我们无法把这个系及其负责人的信息存入数据库,从而,数据库用户也就无法从数据库中查找到该系及其负责人的信息。这种现象叫插入异常。
这是因为,该关系模式的主键为 (Snum,Cname) ,不能取空值,在学生未选课之前,相关信息无法插入。
33
3.3.2 关系模式的规范化处理
(2)删除异常:如果某系的学生全部毕业,我们在删除该系学生的选课信息时,也把该系及其负责人信息也丢失了,这种现象称为删除异常。
(3) 数据冗余大:每一个系负责人的信息要与该系每个学生的每一门课程的成绩出现次数一样多,造成大量数据冗余。不仅浪费存储,而且还会带来下面问题。
34
3.3.2 关系模式的规范化处理
(4) 更新异常 (潜在的数据不一致性 ) 。由于数据存储冗余,当更新某些元组,如某系负责人更换,就可能一部分涉及的元组被修改,而另一部分涉及的元组被忽略,造成存储数据的不一致。否则,必须逐一修改该系每个学生的每门选课元组。造成更新复杂化。
35
3.3.2 关系模式的规范化处理• 由于上述 4个毛病,我们知道它是一个不好的数
据库模式,一个好的模式应当不会发生插入异常、删除异常、数据冗余大、数据不一致。为什么会发生这些异常现象呢?这是因为这个关系模式中函数依赖存在不好的性质 .
将单一模式改造一下,分成三个模式: S ( Snum, Sname, Sdept ) SG(Snum , Cname , Grade)
Dept ( Sdept , Mname )这样的三个模式都不会发生上述三个毛病。
36
3.3.2 关系模式的规范化处理
2. 问题的根源 之所以出现上述的关系模式的异常状况,主要原
因之一就是数据冗余;另一点就是本节要讨论的各个属性之间的数据依赖关系。
在数据依赖中,函数依赖是最基本的一种数据依赖。它主要表达数据表内各个属性之间的依赖关系。
37
3.3.2 关系模式的规范化处理
函数依赖:设 R(U) 是属性 U上的关系模式, X,YU,若对 R(U) 的任一可能的关系 r,若 r中任何两个元组在 X上的属性值相等,则在 Y上的属性值也必相等,则称“ X函数确定了 Y” 或“ Y 函数依赖于 X” 。记作: XY。
38
3.3.2 关系模式的规范化处理例如: S ( Snum, Sdept , Mname ,…)
对 SdeptMname, 若对任意的元组 t1,t2有 t1[sdept]=t2[sdept], 则
t1[Mname]=t2[Mname]注意:(1)函数依赖是语义范畴的概念,我们只能根
据语义来确定一个函数依赖。不能杜撰。(2)另外,函数依赖是对关系模式 R 的一切关
系 r 均要成立。
39
3.3.2 关系模式的规范化处理
对于 S ( Snum,Sname, Sdept, Mname,Cname, Grade )现实世界的已知事实告诉我们:① 一个学生只有一个名字 ,有 SnumSname② 一个系有若干学生,但一个学生只能属于一个 系,有 SnumSdept③ 一个系只有一个负责人, Sdept Mname④ 一个学生学习每一门课程有一个成绩。有 (Snum,Cname)Grade
40
3.3.2 关系模式的规范化处理
对上例 S 表,有
f
p
p
(Snum,Cname) Grade
(Snum, Cname) Sname
(Snum, Cname) Sdept
部分函数依赖和完全函数依赖在 R(U) 中,如果XY,并且对于 X的任何真子集X(XX) , Y 都不函数依赖X ,则称 Y对 X是完全函数依赖,记作X Y。但若存在 X的真子集 X, 使 X Y,则称 Y对 X部分依赖。记作: XY.
f
p
41
3.3.2 关系模式的规范化处理
传递函数依赖 在 R(U) 中,如果 XY , YX , YZ, (ZY)则称 Z 对 X 是传递函数依赖。说明:条件 YX ,是因为 YX , XY ,等于 XZ 是直接函数依赖,而不是传递函数依赖了。
42
3.3.2 关系模式的规范化处理
3. 范式 (Normal Form) 范式是用来判断模式好坏的标准。 满足最低范式要求的称为第 1 范式,在第 1范式中满足进一步要求的为第 2 范式,其余类推。共 6 种范式 ,各种范式之间的关系为: 5NF4NFBCNF3NF2NF1NF
43
3.3.2 关系模式的规范化处理
(1) 1NF若关系 R 的每个分量都是不可再分的数据项,则称 R 属于第 1 范式的,简记为 R 1NF。
(2)2NF若 R1NF,且每一个非主属性都完全函数依赖于键,则 R2NF。
(3)3NF若 R1NF ,且不存在非主属性对于键的传递函数依赖,则称 R3NF。
44
3.3.2 关系模式的规范化处理
(3)BCNF若 R1NF, XY 且 YX时, X必含有键,则称 RBCNF。即每个决定因素中都包含键。
4. 模式分解规范化是指:一个低一级范式的关系模式,通过模式分解转换为若干高一级范式的关系模式的集合的过程。
45
3.3.2 关系模式的规范化处理 对于一个模式的分解是多种多样的,但是要求分解后产生的模式与原模式等价。 模式分解的基本原则: ① 分解的无损连接性( lossless join ) 设关系模式 R ( U , F ),这里 U 为 R 的属性全集, F 为 R 的函数依赖全集, R被分解为若干个关系模式 R1 , R2 ,…, Rn ,如果 R 与 R1 , R2 ,…, Rn自然连接的结果相等,则称关系模式 R 的分解具有无损连接性。
46
3.3.2 关系模式的规范化处理
自然连接的结果与原关系 R 不一致,元组多了三个,所以属于有损连接。
关系 R
A B C
1 2 3
6 7 8
9 7 8
R1
A B
1 2
6 7
9 7
R2
B C
2 3
7 8
R1 R2
A B C
1 2 3
6 7 8
9 7 8
R2
B C
7 3
7 8
R1 R2
A B C
1 7 3
1 7 8
6 7 3
6 7 8
9 7 3
9 7 8
关系 R
A B C
1 2 3
6 7 8
9 7 8
R1
A B
1 2
6 7
9 7
自然连接的结果与原关系 R 一致,所以属于无损连接。
47
3.3.2 关系模式的规范化处理
② 分解保持函数依赖设关系模式 R ( U , F )被分解为若干个关系模式R1 , R2 ,…, Rn ,如果 R 中的函数依赖集 F 与关系分解模式 R1 , R2 ,…, Rn 中所有的函数依赖是一致的,则称关系模式 R 的分解具有保持函数依赖性。
48
5. 规范化实例分析例:已知S(Snum,Sname,Sdept,Mname,Cname,Grade )分析其达到第几范式,并对它进行规范化,使其达到BCNF。
分析 :S 的函数依赖集为 :F={ SnumSname, SnumSdept, Sdept Mname, (Snum,Cname)Grade } ① S 中所有属性都是不可再分的数据项。因此 S1NF。
3.3.2 关系模式的规范化处理
49
②确定 S 是否 2NF S 的键是 (Snum,Cname),存在非主属性 Sdept 对键的部分依赖 , 即(Snum,Cname) Sdept, 因此 S 2NF
解决办法:模式分解,消除部分依赖 : S1 ( Snum , Sname, Sdept , Mname ) SC ( Snum , Cname , Grade)
不是 2NF的关系模式,存在的问题: 插入异常、删除异常、数据冗余大、更新异常。
3.3.2 关系模式的规范化处理
P
50
③ 确定是否 3NF对于 S1 关系,由于 Snum Sdept , Sdept Mname存在非主属性 Mname 对键 Snum的传递依赖,因此 S1 3NF。对于 SC 关系,不存在非主属性对于键的传递依赖,因此 SC 3NF。
不是 3NF的关系模式,存在的问题: 插入异常、删除异常、数据冗余大、更新异常。
3.3.2 关系模式的规范化处理
51
解决办法:模式分解,消除传递依赖。 S1 ( Snum , Sname,Sdept) SD(Sdept , Mname ) SC ( Snum , Cname , Grade)
④ 确定是否是 BCNF每个函数依赖的决定因素中都含有键,因此分解后的三个关系模式都达到了BCNF。分解后关系模式已经消除了各种异常。
3.3.2 关系模式的规范化处理
52
3.4 数据库实施与维护1.数据库实施数据库逻辑模式设计阶段结束,标志着数据库结构的设计已经完成。在数据库实施阶段就是选择一个 RDBMS软件平台,如 SQL Server ,将整个数据库结构设计付诸实施。数据库实施阶段的主要任务是:
⑴ 根据逻辑模式设计的结果,利用 RDBMS 的数据定义语言 DDL完成数据库存储模式的创建,其中包括很多数据库对象:数据库,数据表,属性,视图,索引,函数,存储过程,触发器等。
53
3.4 数据库实施与维护
⑵ 实施完整性控制,包括创建表时的属性值域的控制、实体完整性控制、参照完整性控制、表间的级联控制;用触发器和规则进行补充完整性控制和复杂完整性控制等。
⑶ 实施安全性控制,设置用户和用户组的访问权限,用触发器设置常规以外的安全性控制,为数据库服务器设置防火墙和防毒墙。
54
3.4 数据库实施与维护⑷ 实施需求分析中的数据库恢复机制,确保数据库的正常运行。
⑸ 组织数据入库;在创建数据库的基础上,编制与调试应用程序,并进行数据库的试运行。
55
3.4 数据库实施与维护2.数据库运行和维护阶段经过数据库实施阶段的试运行后,数据库系统就可以交付给用户,也就是说数据库应用系统即可投入正式运行。在数据库系统运行过程中必须根据系统运行状况和用户的合理意见,不断地对其进行评价、调整与修改。这个阶段的主要工作为:
( 1 )数据库的转储和恢复。比如常规的异地备份与恢复。
56
3.4 数据库实施与维护( 2 )数据库安全性、完整性控制。比如新的安全漏洞的弥补、新的约束控制的增补。
( 3 )数据库性能的监督、分析和改进。
( 4 )数据库的重组织和重构造。比如数据属性的扩容等。
数据库设计过程是一个严格规范的设计过程,有一套工程设计标准控制着整个设计过程,只有按照数据库设计的步骤、设计规范和设计理论严格地执行,才能设计出高质量、高性能的数据库模式。
57
作业
第 3 章 习题
58
END
联系我们: 同济大学计算机系计算机基础教研室 Http://jsjjc.tongji.edu.cn
谢谢!