第4章 数据库设计(逻辑结构设计)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
某工厂物资、劳动人事管理的 关系模型
供应商(供应商号,姓名,……) 此为供应商实体对应的关系模式。 零件(零件号,零件名,……) 此为零件实体对应的关系模式。
某工厂物资、劳动人事管理的 关系模型
此为联系“参加”所对应的关系模式。 供应(产品号,供应商号,零件号,供应量)
此为联系“供应”所对应的关系模式。
1. 将E-R图 转化为关系模型
关系模型的逻辑结构是一组关系模式 的集合 将E-R图转换为关系模型:将实体、 实体的属性和实体之间的联系转化为 关系模式
1. 将E-R图 转化为关系模型 转换原则
一个实体型转换为一个关系模式。 关系的属性:实体型的属性 关系的码:实体型的码
1:1联系
Grade
98
90 78 90 85 96
SL表
学号 S#
系别 Sdept
住处 Sloc
6# 7# 10#
000101 信息系 010101 数学系 020101 物理系
(2)对2NF关系进行分解,消除原关系中 非主属性对码的传递函数依赖,从而产 生一组3NF关系。
方法
(1)对1NF关系进行分解,消除原关系中 非主属性对码的部分函数依赖,将lNF关 系转换为若干个2NF关系。
例如
关系模式S-L-C(S#,Sdept,Sloc,C#,Grade) 中,每个系的学生住在同一个地方,S-L-C 的码为(S#,C#),函数依赖有:
(S#,C#)
S#
f
f
Grade, Sloc。
说明:任何一个关系模式都是1NF,不满足
第一范式的数据库模式不能称为关系数据 库。
2.2NF
定义:若关系模式R∈lNF,并且每一个
非主属性都完全函数依赖于R的码,则 R∈2NF。
说明:
(1)2NF就是不允许关系模式的属性之 间有这样的函数依赖X→Y,其中X是 码的真子集,Y是非主属性。 (2)显然,码只包含一个属性的关系 模式如果属于1NF,那么它一定属于 2NF。
并且对于X的任何一个真子集X',都 有X'→Y,则称Y完全函数依赖于X, f 记作X→Y。若X→Y,但Y不完全函数 依赖于X,称Y部分函数依赖于X,记 p 作X→Y。
例如
在关系SC(S#,C#,G)中,(S#,C#)→G,
f 但S#→G,C#→G,所以(S#,C#)→G。
在关系SC(S#,SN,SS,SA,SD)中,
部门(部门号,部门名,经理的职工号,……) 此为部门实体对应的关系模式。该关系模式 已包含了联系“领导”所对应的关系模式。经 理的职工号是关系的候选码。
某工厂物资、劳动人事管理的 关系模型
职工(职工号,部门号,职工名,职务,……)
此为职工实体对应的关系模式。该关系模式已 包含了联系“属于”所对应的关系模式。 产品(产品号,产品名,产品组长的职工 号,……) 此为产品实体对应的关系模式。
3.3NF
定义:如果关系模式R<U,F>中不存在候选
码X、属性组Y以及非主属性Z(ZY), 使得X→Y,Y→Z,Y→X成立,则R∈3NF。
显然,若R∈3NF,则R的每一个 非主属性既不部分函数依赖于候选 码,也不传递函数依赖于候选码。 如果R∈3NF,则R也是2NF。
规范化
一个关系只要其分量都是不可分的数据 项,它就是规范化的关系,但规范化程度过 低的关系不一定能够很好地描述现实世界, 可能会存在插入异常、删除异常、修改复杂、 数据冗余等问题,解决方法就是对其进行规 范化,转换成高级范式。一个低一级范式的 关系模式,通过模式分解可以转换为若干个 高一级范式的关系模式集合,这种过程就叫 关系模式的规范化。
说明
函数依赖不是指关系模式R的某个
或某些关系实例满足的约束条件, 而是指R的所有关系实例均要满足 的约束条件。
函数依赖是语义范畴的概念,我们只能
根据数据的语义来确定函数依赖。 例如,“姓名→所在系”这个函数依赖 只有在没有同名人的条件下成立。如果 有相同名字的人,则“所在系”就不再 函数依赖于“姓名”了。
系;一个系只有一名主任;一个学生可以选 修多门课程, 每门课程有若干学生选修; 每个学生所学的每门课程都有一个成绩。
相关数据
学生的学号(Sno)、所在系(Sdept)、 系主任姓名(Mname)、课程号(Cno)、 成绩(Grade)。 单一的关系模式:Student <U、F>
U ={ Sno, Sdept, Mname, Cno,
(S#,SN)→SD,但S#→SD,SN→SD,所 p 以(S#,SN)→SD。
3.传递函数依赖
定义:在关系模式R(U)中,如果X→Y,
(Y X), Y→X,Y→Z,则称Z传递 函数依赖于X。
例如:在关系SD(S#,SDEPT,MNAME)中,
S#→SDEPT,SDEPT→MNAME,则S#
传递
S#
p
f
Sdept,
SLoc, (S#,C#)
p
Sdept,
(S#,C#)
学号
S#
系别
Sdept
住处 课程号 成绩
Sloc
6#
6# 6# 7# 7#
C#
1
2 3 1 3
Grade
98
90 78 90 85
000101 信息系
000101 信息系 000101 信息系 010101 数学系 010101 数学系
合并方法:将其中一个关系模式的全 部属性加入到另一个关系模式中,然 后去掉其中的同义属性(可能同名也 可能不同名),并适当调整属性的次 序。
Biblioteka Baidu
某工厂物资、劳动人事管理的 分E-R图
1
部门
1 天数 属于
供应商
m 供应量
领导
1
参加 n 1 负责 1 m n
属于
p
n
职工
产品
零件
某工厂物资、劳动人事管理的 关系模型
例:如果一个系刚成立,尚无学生,我
们就无法把这个系及其系主任的信息存 入数据库。
⒋ 删除异常(Deletion Anomalies)
不该删除的数据不得不删
例:如果某个系的学生全部毕业了, 我
们在删除该系学生信息的同时,把这个
系及其系主任的信息也丢掉了。
结论:
Student关系模式不是一个好 的模式;“好”的模式不会发生 插入异常、删除异常、更新异常, 数据冗余应尽可能少。
职工工作(职工号,产品号,工作天数,……)
2.将转化来的数据模型向特定 DBMS支持下的数据模型转换
由于目前大部分DBMS都是关系型的,所 以不必转换。
3.数据模型的优化
关系模式的五元组表示形式R(U,D,DOM,F)
其中: R: 关系名
U: 组成该关系的属性名集合
D: 属性组U中属性所来自的域
X→Y,但Y
X,则称X→Y是非平凡函
数依赖。若不特别声明,我们总是讨论 非平凡函数依赖。
若X→Y,则X称为这个函数依赖的决定
属性集。
若X→Y,并且Y→X,则记为X←→Y。 若Y不函数依赖于X,则记为X→Y。
2.完全函数依赖与部分函数依赖
定义:在关系模式R(U)中,如果X→Y,
数据库设计
——逻辑结构设计
任务
将概念结构设计好的E-R图进一 步转化为与选用的DBMS产品支持的 数据模型相符合的逻辑结构。
步骤
1. 将概念结构转化为一般的关系、网状、 层次模型 2. 将转化来的关系、网状、层次模型向 特定DBMS支持下的数据模型转换 3. 对数据模型进行优化 4. 设计用户子模式
MNAME。
4.码
定义: 设K为关系模式R<U, F>中的属性或属
性组合。若K→U,则称K为R的一个候选码。 若关系模式只有多个候选码,则选定其中的 一个做为主码(primary key)。
主码的属性称为主属性,不包含在 任何候选码中的属性称为非主属性 在最简单的情况下,候选码只包含 一个属性。在最极端的情况下,关系 模式的所有属性组是这个关系模式的 候选码,称为全码。
原因:
属性组U上存在着的函数依赖F:
F ={Sno→Sdept, Sdept→Mname,
(Sno, Cno)→Grade }
Sno
Cno
Grade
Sdept
Mname
改进
分解成以下3个关系模式:
S(Sno,Sdept,Sno→Sdept) SC(Sno,Cno,Grade,(Sno,Cno)→Grade)
三个或三个以上实体间的一个多元 联系转换为一个关系模式。
关系的属性:与该多元联系相连的各 关系的码:各实体码的组合
实体的码以及联系本身的属性
同一实体集的实体间的联系,即自 联系,也可按上述1:1、1:n和m:n三 种情况分别处理。
具有相同码的关系模式可合并。
目的:减少系统中的关系个数。
020101 物理系
10#
2
96
函数依赖示意图
S#
Grade C#
Sdept
Sloc
模式分解示意图
SC SL Sdept
S#
Grade C#
S#
Sloc
相应数据表
SC表
学号 课程号 成绩
S#
000101
000101 000101 010101 010101 020101
C#
1
2 3 1 3 2
可以转换为一个独立的关系模式,也 可以与任意一端对应的关系模式合并。
转换为一个独立的关系模式
关系的属性:与该联系相连的各实 关系的候选码:每个实体的码均是
体的码以及联系本身的属性
该关系的候选码
与某一端对应的关系模式合并
合并后关系的属性:加入对应关系
合并后关系的码:不变
的码和联系本身的属性
范式
范式是符合某一种级别的关系模式的集合。
关系数据库中的关系必须满足一定的要求。
满足不同程度要求的为不同范式。满足最低
要求的叫第一范式,简称为1NF。在第一范 式基础上进一步满足一些要求的为第二范式, 简称为2NF。其余以此类推。
1.1NF
定义:如果一个关系模式的所有属性都是不
可分的基本数据项,则R∈1NF。
DOM:属性向域的映象集合
F: 属性间数据的依赖关系集合
关系模式的二元组表示形式
R(U)或R(A1,A2,A3,…An)
关系模式的三元组表示形式
R(U,F)
当且仅当U上的一个关系r 满足F时,r称为
关系模式 R(U, F)的一个关系
案例 描述学校的数据库:
一个系有若干学生,
一个学生只属于一个
DEPT(Sdept,Mname,Sdept→Mname)
新知识的引入
规范化理论正是用来改造关系模式,
通过分解关系模式来消除其中不合适的 数据依赖,以解决插入异常、删除异常、 更新异常和数据冗余问题。
什么是数据依赖
是通过一个关系中属性间值的相等与否体
现出来的数据间的相互关系。
是现实世界属性间相互联系的抽象。
Grade }
对应实例
Sno
S1 S2 S3 S4 S5 …
Sdept
计算机系 计算机系 计算机系 计算机系 计算机系 …
Mname
张明 张明 张明 张明 张明 …
Cno
C1 C1 C1 C1 C1 …
Grade
95 90 88 70 78 …
案例分析
关系模式Student<U, F>中存在的问题
1:n联系
可以转换为一个独立的关系模式,也可 以与n一端对应的关系模式合并。
与n端对应的关系模式合并
合并后关系的属性:在n端关系中加 合并后关系的码:不变
入1端关系的码和联系本身的属性
可以减少系统中的关系个数,一般情况 下更倾向于采用这种方法
m:n联系
转换为一个独立的关系模式 关系的属性:与该联系相连的各实体 的码以及联系本身的属性 关系的码:各实体码的组合
是数据内在的性质。 是语义的体现。
数据依赖的类型
函数依赖(Functional Dependency, 简记为FD)
多值依赖(Multivalued Dependency, 简记为MVD)
1.函数依赖
定义:设R(U)是一个关系模式,U是R的 属性集合,X和Y是U的子集。对于R(U)的 任意一个可能的关系r,如果r中不存在 两个元组,它们在X上的属性值相同,而 在Y上的属性值不同,则称“X函数确定Y” 或“Y函数依赖于X”,记作X→Y。
1. 数据冗余太大
浪费大量的存储空间。
例:每一个系主任的姓名重复出现。
⒉ 更新异常(Update Anomalies)
数据冗余 ,更新数据时,维护数据完
整性代价大。
例:某系更换系主任后,系统必须修改
与该系学生有关的每一个元组。
⒊ 插入异常(Insertion Anomalies)
该插的数据插不进去
概 念 结 构 设 计
逻辑结构设计 转化为 一般数 据模型
转化为特定 DBMS支持下 的据模型 优 化 模型
数 据 库 物 理 设 计 逻辑 模型
基 本 E-R图
转换 规则
特定 DBMS的 特点与 限制
优化方 法如规 范化理 论
1. 将E-R图 转化为关系模型
转换内容
E-R图由实体、实体的属性和实体之间的 联系三个要素组成