第 2章 关系数据库设计
2.1 关系数据库及其基本特征
2.2 E-R模型及其到关系模型的转化
2.4 数据库的完整性与安全性
2.3 关系模式的 规范化
2.5 数据库设计的一般过程
2.1 关系数据库及其基本特征
? 2.1.1 基本概念
? 1,实体及其联系
? 实体 —— 存在于人们意识之外的客观对象,如读
者、图书等
? 联系 —— 三种不同类型的联系,1-1,1-n,n-n
? 关系 —— 二维表,由行和列组成。关系方法用表
中的行描述一个实体,用表中列描述实体的属性,
用外键描述实体间的联系
?
2,元组、属性、主键与外键
? 元组 — 表中的每行,元组不容许重复,表中任意
两行不能完全相同
? 属性 — 表中的每列,分为属性名与属性值,属性
名不容许重复
? 主属性 — 在一个表中能起区分作用的属性,主属
性可能由两个或多个属性组成,主属性也称为主

? 外键 — 其他表的主属性,外键是描述两个表之间
关系的基本手段
3,数据结构、操作与约束
? 数据结构 —— 用怎样的数据形式描述应用中所涉
及的各种实体及实体间的联系,关系方法使用二
维表描述实体及其联系
? 数据操作 —— 提供哪些数据操作手段,以让用户
方便迅速地对数据进行各种处理,关系方法提供
的数据操作有选择、投影、连接 三种。
? 数据约束 —— 避免产生不相容数据的一种控制机
制,有属性约束、字段间约束和表间约束三种。
2.1.2 关系数据库的基本特征
? 1,有坚实的理论基础
? 2,数据结构简单、易于理解
? 3,对用户提供了较全面的操作支持
? 4,得到了众多开发商的支持
? 5.视图机制
?
E-R模型及其到关系模型的转化
? 1,对实体的进一步讨论
( 1)实体是能被相互区分的客观对象。这种客观对
象可能是人、物等实际的对象,也可能是一个事
件。如一个学生、一本书、一个学校、一辆车、
一张发票等都是一个实体。
( 2)要注意实体集和实体的差别。某某学生是一个
实体,而一个班、一个系、一个学校的学生组成
一个实体集。在有些讨论中,并未在字面上对其
严格区分,但根据上下文应能从概念上对其进行
区分。
( 3)实体有独立实体和弱实体之分。
2,属性
? ( 1)简单属性和复合属性
? —— 不可进一步分割的属性称为简单属性,与此对应,由
简单属性组合成的属性称为复合属性。
? ( 2)单值属性和多值属性
? —— 如果实体集中的每一个实体在某个属性上都只有惟一
值,称这样的属性为单值属性(相反,如某个实体在一个
属性上有多个值,称这样的属性为多值属性 。
? ( 3)基本属性和导出属性
? —— 完全独立的属性称为基本属性,依赖于其他属性的
属性称为导出属性
? ( 4)码
? —— 能完全区分该实体集中的每个实体的属性(或属性
组合)称为, 码,
3,联系
? 联系是实体间的一种关联关系,即不同实
体间的对应关系。从参与联系的两个实体
集的数量关系来说,联系可分为 1∶ 1,
1∶ n,m∶ n等三种。
? 对于 m∶n 的联系一般设置专门的关系表来
表征这种联系
? 在 1∶1, 1∶m 中,用一个外键来表征这种
联系
4,E-R图举例
销 售
存 放
供销商 产 品
仓 库
员 工
零部件
使 用
供 应
生 产
属 于
部 门 地 址


建立 E-R模型的一个原则
? 建立的 E-R模型应该反映所模拟对象的本质(针对某一研
究过程),原研究对象中与研究过程有关的一些特征、过
程都应该从所建立的模型中得到反映并很容易地得到解答。
如对于一个制造型企业,下述问题是重要的,
? ① ?企业有那些产品、每种产品由那些零部件组成;
? ② ?每种零部件的当前库存数量;
? ③ ?零部件供应商及地址;
? 在图 2-1所建立的模型中,对这些问题都能很容易获得解
答,如:实体类产品回答企业有哪些产品,产品类与零部
件的联系回答了每种产品由哪些零部件组成。
2.2.2 E-R模型到关系模型的转化
? 1,独立实体到关系模式的转化
? —— 一个独立实体转化为一个关系模式(即一张关系表),
实体码转化为关系表的关键属性、其他属性转化为关系表
的属性
? 2,弱实体到关系模式的转化
? —— 弱实体依赖于独立实体,在进行转化时,弱实体也转
化为一个关系表,弱实体与独立实体间依赖关系通过定义
约束关系来表示
? 3,1∶ 1联系到关系模式的转化
? —— 在两个实体关系表中各自增加一个外键即可
? 4,1∶ n联系到关系模式的转化
? —— 在 n方(即 1对多关系的多方)实体类型表中增加一个
属性,将对方的关键字作为外来码处理
? 5,m∶ n联系到关系模式的转化
? —— 单独建立一个关系表,分别用两个实体的码作为外键
? 6,多元联系到关系模式的转化
? —— 所谓多元联系,即是说该联系涉及两个以上的实体。
如一个课程表,涉及了班级、课程、教室、教师等四个实
体。转化时,应建立一个单独的关系表,将该联系所涉及
的全部实体的码作为该关系表的外键,再加上适当的其他
属性,
? 课表 (班号,课程号,教师号,教室号,周次 )
? 7,自联系到关系模式的转化
? —— 分清两部分实体在联系中的身份,按普通二元关系
处理
2.3 关系模式的规范化
? 2.3.1 函数依赖概述
? 定义 1 设 R= R(A1,A2,…,An)是一个关系模式
( A1,A2,…,An是 R的属性),X∈ (A1,A2,…, An),
Y∈( A1,A2,…,An),T1,T2是 R的两个任意元组,
即 T1= T1(A1,A2,…,An),T2= T2(A1,A2,…,An),如
果,当,
? T1(X)= T2(X)成立时,总有,
? T1(Y)= T2(Y)
? 称 X决定 Y,或称 Y函数依赖于 X。记为,X→ Y。
? 定义 2 R,X,Y如定义 1所设,如果 X→ Y
成立,但对 X的任意真子集 X1,都有 X1→ Y
不成立,称 Y完全函数依赖于 X,否则,称
Y部分函数依赖于 X。
? 所谓完全依赖是说明在依赖关系的决定项
(即依赖关系的左项)中没有多余属性,
有多余属性就是部分依赖。
? 定义 3 设 X,Y,Z是关系模式 R的不同属性
集,若,
? X→ Y(并且 Y→ X不成立),Y→ Z,
? 称 X传递决定 Z,或称 Z传递函数依赖于 X。
? 定义 1—— 定义 3是判断一个关系是否一个
,好关系, 的基础
2.3.2 关系模式的规范化
? 1,主属性与非主属性
? 定义 4 设关系模式 R(A1,A2,…, An),A1,A2…,A n
是 R的属性,X是 R的一个属性集,如果,
? ① ?X→(A 1,A2…,A n)
? ② ?对于 X的任意真子集 X1,X1— >(A1,A2,…,A n)都
不成立
? 称属性集 X是关系模式 R的一个候选关键属性。
? 习惯上把候选关键属性称为候选关键字,关键属
性称为关键字
? ( 2)主属性和非主属性
? 一个关系模式 R可能有多个候选关键属性,
而一个候选关键属性又可能有多个属性,
这样,R的所有属性 Ai(i= 1,2,…,N) 按是否
属于一个候选关键属性被划分为两类:主
属性和非主属性。
? 定义 5 设 Ai是关系模式 R的一个属性,若 Ai
属于 R的某个候选关键属性,称 Ai是 R的主
属性,否则,称 Ai为非主属性。
? 应该注意的是,一般说来,单个主属性并
不能作为候选关键属性。
2,第一范式
? 对关系模式的规范化要求分成从低到高不
同的层次,分别称为第一范式,第二范式、
第三范式,Boyce-Codd范式、第四范式和
第五范式。
? 定义 6 当关系模式 R的所有属性都不能分解
为更基本的数据单位时,称 R是满足第一范
式的,简记为 1NF。
? 3,第二范式
? 定义 7 如果关系模式 R满足第一范式,并且
R的所有非主属性都完全依赖于 R的每一个
候选关键属性,称 R满足第二范式,简记为
2NF。
? 设 R= R(读者编号,工作单位,图书编号,借阅
日期,归还日期) —— 满足第一范式,属性
集 (读者编号,图书编号 )是 R的一个候选关键
字,但非主属性“工作单位”非完全依赖于
,(读者编号,图书编号 )”
? R不满足 2NF
4,第三范式
? 定义 8 设 R是一个满足第一范式条件的关系模式,
X是 R的任意属性集,如果 X非传递依赖于 R的任
一个候选关键字,称 R满足第三范式,简记为 3NF。
? 由候选关键字的定义,R的任何属性 X肯定是函数
依赖于 R的每一个候选关键字的,这里假设的条
件只是这种依赖关系应该是“非传递”的,换句
话说,在 R中没有哪个属性充当了这种函数依赖
关系的传递角色,因而,在 3NF中,关系模式 R的
任何非主属性对候选关键字的依赖都是直接的,
从而非主属性间不存在函数依赖关系,非主属性
和候选关键字的部分属性间也没有函数依赖关系
(这后面的一点限制也保证了符合第三范式的关
系模式一定符合第二范式)。
? 关于 3NF,有一个重要结论,我们对这个结
论只叙述而不进行形式证明。
? 定理 若关系模式 R符合 3NF条件,则 R一定
符合 2NF条件
5,BCNF
? 定义 9 设 R是一个关系模式,若 R的每一个函数依
赖关系的左部都是 R的一个候选关键字,称 R满足
Boyce-Codd规范,简记为 BCNF。
? 可以证明,BCNF是比 3NF更强的规范(证明略),
即符合 BCNF条件的关系模式一定符合 3NF条件,
但反过来却不成立。尽管在很多情况下,3NF也
就是 BCNF,但是,二者是不等价的,可以设计出
符合 3NF而不符合 BCNF的关系实例。
2.3.3 关系模式的分解
? 1,关系模式分解的一般问题
? 符合了 3NF(或 BCNF)规范标准的关系模式,就
会有比较好的性质,不会出现数据冗余、不一致
或插入、删除异常等情况,但是,在实际应用过
程中,所建立的许多关系并不符合 3NF,这就出
现将一个不满足 3NF条件的关系模式改造为符合
3NF模式的要求,这种改造的方法就是对原有关
系模式进行分解
? 所谓关系模式的分解,就是对原有关系在不同的
属性上进行投影,从而将原有关系分解为两个或
两个以上的含有较少属性的多个关系
? 引例,
? 设 R=( 员工号,姓名,部门,月份,月度奖)
? 关键属性 (员工号,月份 ),R中的非主属性“姓
名”和“部门”都只部分依赖于关键属性
中的“员工号属性,因此 R不符合 2NF,将 R分
解为两个关系,
? R1= ( 员工号,姓名,部门)
? R2= ( 员工号,月份,月度奖)
? R1,R2符合 3NF,并且 R1,R2经过连接运
算可得到 R
? 无损分解
Heath定理
? 设关系模式 R(A,B,C),A,B,C是 R的属性
集。如果,
? A→B 并且 A→C
? 则,R和投影 (A,B),(A,C)的连接等价。
? Heath定理告诉我们,只要将关系 R的某个
候选关键字分解到每个子关系中,就会同
时保持称为连接不失真和依赖不失真。
2,3NF分解
? 任何关系都可以无损地分解为多个 3NF关系,
? ( 1)如果 R不满足 1NF标准,先对其属性进行分解,
使其满足 1NF
? ( 2) R符合 1NF标准但不符和 2NF标准时,分解 R使
其满足 2NF,分解步骤如下,
? R= (S1,S2,X1,X2)
? Primary Key(S1,S2) /* (S1,S2)作为关键字
? S1→ X1 /* X1部分函数依赖于 R的候选关键字
(S1,S2)
? 对 R分解成 R1和 R2,
? R1= (S1,S2,X2)
? Primary Key(S1,S2) /* R1以 (S1,S2)作为关键字
? R2= (S1,X1)
? Primary Key(S1) /* R2以 S1作为关键字
? 这样的分解是无损的,如果 R1,R2还不满足
2NF标准,可以继续上述分解过程,直到每
个分解后的关系模式都满足要求为止
2.4 数据库的完整性与安全性
? 数据库的完整性是指存储在数据库中的数据应该
正确、彼此相容、安全,因而数据库系统应该对
每一组操作过程进行审查,防止破坏相容性的数
据被写入数据库系统;而安全性是指防止人们对
数据有意无意的破坏,因而系统应该提供一种访
问控制机制,防止无权者进入系统和有权者超权
限访问数据库。
? 数据是否完整与正确,系统是根据一组规则来进
行判断的。符合这一组规则的数据就是相容的,
否则就是不相容的。
? 相容性规则称为数据的约束,一组操作所引起的
数据更新如果破坏了数据约束,系统就会拒绝。
2.4.1 关系模式的约束
1、属性约束
单个属性的取值范围
2、元组(数据表)约束
属性间的逻辑关系约束
3、数据库(表间)约束
数据表间的逻辑关系约束
2.4.2 数据恢复与并发控制
1、事务及其特征:事务,就是一组不可分割的操作
原子性 —— 组成事务的全部操作要么全做,要么全不做
一致性 —— 数据库系统由上一个一致性状态经一个事务转
化为下一个一致性状态
隔离性 —— 事务间是相互隔离的。当有 T1和 T2两个事务同
时作用于一个数据库时,要么 T1先进行完,要么 T2先
进行完,对数据库的访问在事务级上该是串行的,两
者隔离,相互不干扰。
持久性 —— 事务对数据库的作用效果是持久的,一旦完成,
其操作结果将永久有效
2,事务恢复
事务恢复指撤消一个已经开始但因某种原因尚未完成的事
务,使数据库恢复到事务开始前的状态,事务恢复并不是
撤消一个已经完成的事务 。 从数据库的设计者角度,事务
并非原子的,一个事务所包括的许多操作步只能一一分步
进行,当执行到中间过程时倘因某种原因而不能完成后续
操作,就应该撤消业已进行了的工作,以保证事务的原子
特性。
现代数据库系统对数据的修改一般是分两步进行的:首先
将修改的所有操作都放在了一个临时表中,第二步将这种
修改提交( COMMIT)到正式的数据库中,一个事务提交
一次,发布提交命令的地方称为提交点。所以,事务是两
个提交点之间的操作序列
3,介质恢复
介质恢复的基本思想是进行系统备份,比
如每天备份一次,当数据库系统遇上什么
不能恢复的故障时,用备份系统恢复当前
系统。当然,采用介质备份是有代价的,
一般说来,介质备份不能恢复到最新状态
4,并发控制
当两个以上的事务同时存储一个数据库时,可
能会发生三种问题。
( 1)丢失更新
( 2)未提交依赖问题
( 3)不一致分析
解决上述问题的基本策略是进行数据封锁,即
在进行数据更新(或数据统计分析)时封锁记
录(或整个数据表),使其他事务在记录封锁
期间无法访问该记录
2.4.3 安全性
数据库系统的安全性是靠访问控制来实现的
访问权限分配表
B1数据表 B2数据表 B3数据表
A1用户 浏览 更新 更新
A2用户 更新 浏览
A1用户可以浏览 B1数据表、并可以对 B2、
B3数据表实施更新操作; A2用户可以更
新 B1数据表、并浏览 B2数据表,但对 B3
数据表无访问权限
2.4.4 数据字典
现代的数据库应用系统一般都非常庞大,管理的数据
对象众多,这些数据又成为了管理对象,数据字典就
是以管理数据库对象为目的的一种辅助工具,它可以
帮助开发者井井有条的管理自己的各种数据表、视图、
数据库等数据对象,并帮助形成各种交流文档。数据
字典是应用开发的一种有力工具。
数据字典的数据是由系统自动建立和维护的,也就是
说:当用户建立了一个新的数据对象时,数据字典中
将自动插入有关该对象的数据,当用户修改了或删除
了该对象时,系统也会自动地将这种修改与删除及时
反映到数据字典中
1,数据库对象及数据字典的基本内容
( 1)数据表
① ?字段 字段名、字段约束、字段访问权限分配。
② ?元组 元组约束,插入规则、删除规则、更新规则。
③ ?索引 关于表的索引字段和索引方式说明。
④ ?表 数据表的说明,表的访问权限分配
( 2)数据视图
① ?字段 字段来源;
② ?元组 元组的筛选和连接规则;
③ ?视图 视图的说明。
( 3)数据库
① ?表间约束;
② ?表的存储空间说明;
③ ?用户关于数据库的用户情况说明。
2,数据字典的作用
( 1)方便开发人员编写调试系统
( 2)便于开发交流,方便开发过程管

( 3)方便系统移交
2.5 数据库设计的一般过程
2.5.1 需求分析
1,调研分析、确认设计边界
2,整理资料,初步确定目标系统的功能和数据结构
3,编写需求分析报告
2.5.2 关系数据库的概念设计
1,确定设计任务
2,选定设计工具
3,确定面向用户的数据子模式
4,确定面向全局的概念模式
2.5.3 关系数据库的逻辑设计
1、表的结构定义
2,定义表的约束
3,定义数据的各种操作
2.5.4 实施
1、选择一种数据库系统产品
2、在选择的数据库产品上建立数
据表并定义表的约束
3、实现对数据的操作
4、调试、试运行、系统维护