内容发布更新时间 : 2024/11/13 7:05:02星期一 下面是文章的全部内容请认真阅读。
修改表
Aj Ri ACD BC A a1 a1 B b12 a2 C a3 a3 D a4 a4 因为表中出现a1,a2,a3 ,a4的行,所以该分解具有无损连接性。 C) F1 =?(F)= (C→A,C→D)
U1F2 =?U2(F)=?
G = F1∪F2 = { C→A,C→D } F={ B→C, D→A}
++
显然,G必定包含于F。而F不包含于G。
++
因此,有G≠F,即 ∴ρ不具有函数依赖保持性。 D) 模式ad(ACD) ?BCNF,模式bc(BC) ?BCNF
3分解⑶ F={A→BC,C→AD}○,ρ={ABC,AD}
A) 候选码为:A,C 选主码为:A B) 具有无损连接性。 C) 具有函数依赖保持性 D) 均为BCNF
4分解⑷ F={A→B,B→C,C→D}○,ρ={AB,ACD}
A) 候选码为:A,主码为:A B) 具有无损连接性。 C) 不具有函数依赖保持性
D) 模式ad(AB) ?BCNF,模式bc(ACD) ?2NF
5分解⑸ F={A→B,B→C,C→D}○,ρ={AB,AD,CD}
A) 候选码为:A 选主码为:A B) 不具有无损连接性。 C) 不具有函数依赖保持性 D) 均为BCNF
4.10 设有关系模式R(A,B,C,D,E),R的函数依赖集F={AB→C,C→D,D→E}。判
断分解ρ={R1(ABC),R2(CD),R3(DE)}是否为无损连接分解。并且: ⑴ 求R的所有候选码 ⑵ 求F的最小覆盖
⑶ 将R分解为3NF并具有无损连接性和函数依赖保持性 【参考答案】 初始表
Aj A B C D E Ri ABC a1 a2 a3 b14 b15 26
CD DE b21 b31 b22 b32 a3 b33 a4 a4 b25 a5 修改表 逐一考察F中的函数依赖:
a) AB→C表的结构不变; b) C→D,将b14改为a4 Aj A B Ri ABC CD DE a1 b21 b31 a2 b22 b32 C a3 a3 b33 D a4 a4 a4 E b15 b25 a5 c) D→E,将b15改为a5,将b25改为a5 Aj A B Ri ABC CD DE a1 b21 b31 a2 b22 b32 C a3 a3 b33 D a4 a4 a4 E a5 a5 a5 是无损连接分解 ⑴ 求R的所有候选码
L类属性AB,LR类属性为CD
(AB)+ = {ABCDE},所以候选码为AB ⑵ 求F的最小覆盖
第一步:将F的所有函数依赖的右部都分解成单一属性: 由于均为单一属性,所以F1=F={AB→C,C→D,D→E} 第二步:去掉冗余的函数依赖:
没有冗余函数依赖,所以F2=F1={AB→C,C→D,D→E} 第三步:去掉冗余的属性:
没有冗余的属性,所以Fm=F2={AB→C,C→D,D→E} ⑶ 将R分解为3NF并具有无损连接性和函数依赖保持性 ρ={R1(ABC),R2(CD),R3(DE)}
4.11设有关系模式R (职工名,项目名,工资,部门名,部门经理)
如果规定每个职工可参加多个项目,各领一份工资;每个项目只属于一个部门管理;每个部门只有一个经理。
⑴ 试写出关系R的基本FD和候选码,确定主码。
⑵ 说明R不是2NF的理由,并把R分解成2NF的模式集。 ⑶ 把R分解成3NF模式集,说明理由。
【参考答案】
(1)由题意得函数依赖集F
F={[职工名,项目名] →工资,项目名→部门名,部门名→部门经理} 候选码:职工名+项目名
由于只有一个候选码,故主码即为职工名+项目名
(2)由于项目名→部门名,所以存在非主属性(部门名)对码(职工名+项目名)的部分依赖,故R没有达到2NF。
27
可以分解为如下两个关系模式: R1= (职工名,项目名, 工资)
R2= (项目名, 部门名, 部门经理)
(3)由于R2中存在函数依赖:项目名→部门名,部门名→部门经理,即存在非主属性(部门经理)对码(项目名)的传递依赖,故R2没有达到3NF。可以在(2)的基础上把R2进一步分解为如下两个关系模式: R1= (项目名,部门名) R2= (部门名, 部门经理)
综上,R分解成3NF模式集为: R1= (职工名,项目名, 工资) R2= (项目名,部门名) R3= (部门名, 部门经理)
第五章
5.1 名词解释
数据库设计 基于3NF的数据库设计方法 基于E-R模型的数据库设计方法
28
数据库设计是指对于一个给定的应用环境,根据用户的需求,在某一具体的数据库管理系统上,构造一个性能良好的数据模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的信息要求和处理要求。
基于E-R模型的数据库设计方法是由P.P.S.chen于1976年提出的数据库设计方法,其基本思想是在需求分析的基础上,用E-R图构造一个反映现实世界实体之间联系的企业模式,然后再将此企业模式转换成基于某一特定的DBMS的概念模式。
基于3NF的数据库设计方法 是由S·Atre提出的结构化设计方法,其基本思想是在需求分析的基础上,确定数据库模式中的全部属性和属性间的依赖关系,将它们组织在一个单一的关系模式中,然后再分析模式中不符合3NF的约束条件,将其进行投影分解,规范成若干个3NF关系模式的集合。
5.2 什么是数据库设计?试述数据库设计的过程
数据库设计 基于3NF的数据库设计方法 基于E-R模型的数据库设计方法 数据库设计是指对于一个给定的应用环境,根据用户的需求,在某一具体的数据库管理系统上,构造一个性能良好的数据模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的信息要求和处理要求。
按照规范设计方法、考虑数据库及其应用系统开发全过程,并仿照软件生存周期,将数据库设计分为需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和运行维护六个阶段。数据库设计过程可以用图5-1表示。
图5-1 数据库设计步骤
(1)需求分析
需求分析是对具体应用环境的业务流程和用户提出的各种要求加以调查研究和分析,并和用户共同对各种原始数据加以综合、整理的过程,是形成最终设计目标的首要阶段,也是整个数据库设计过程中最困难的阶段。该阶段任务的完成,将为以后各阶段任务打下坚实的基础。因此,对用户的各种需求及数据,能否做出准确无误、充分完备的分析,并在此基础上形成最终目标,是整个数据库设计成败的关键。
(2)概念结构设计
概念结构设计是对用户信息需求所进行的进一步抽象和归纳,结果为数据库概念结构,通常用E-R模型来表示。
数据库的概念结构与DBMS和相关软硬件无关。它是对现实世界中具体数据的抽象,实现了从现实世界到信息世界的转化过程。概念结构设计是数据库设计的一个重要环节,是数据库的逻辑结构设计和物理结构设计的基础。
29
(3)逻辑结构设计
概念结构设计的结果是得到一个与DBMS无关的概念模式,而逻辑结构设计就是将概念模式转化为选用的具体DBMS所支持的数据模型相符合的逻辑结构。所以,在逻辑结构设计阶段选择什么样的数据模型和哪一个具体DBMS尤为重要,它是能否满足用户各种要求的关键。
在逻辑结构设计阶段还有一个很重要的工作就是模式优化,该工作主要以用规范化理论为指导,目的是能够合理存放数据集合。逻辑结构设计阶段的模式优化,已成为影响数据库设计质量的一项重要工作。
(4)物理结构设计
数据库物理设计是将逻辑结构设计阶段所产生的逻辑数据模型,转换为某一计算机系统所支持的数据库物理结构的实现过程。
数据库的物理结构主要指数据库的存储记录格式、存储记录安排和存储方法,完全依赖于给定的硬件环境、具体的DBMS和操作系统,。
存储记录格式的设计包括记录的组成、数据项的类型、长度,以及逻辑记录到存储记录的映射。存储记录的安排是指可以把经常同时被访问的数据组合在一起。存取方法的设计主要是指存取路径,存取路径分为主存取路径与辅存取路径,前者用于主键检索,后者用于辅助键检索。
除此之外,物理结构设计还要进行完整性和安全性考虑,设计者应在完整性、安全性、有效性和效率方面进行分析,做出权衡。
完成物理结构设计后,对该物理结构做出相应的性能评价,若评价结果符合原设计要求,则进一步实现该物理结构。否则,对该物理结构做出相应的修改,若属于最初设计问题所导致的物理结构的缺陷,必须返回到概念设计阶段修改其概念数据模型或重新建立概念数据模型,如此反复,直至评价结果最终满足原设计要求为止。
(5)数据库实施
数据库实施阶段,即数据库调试、试运行阶段。一旦数据库物理结构形成,就可以用已选定的DBMS定义、描述相应的数据库结构,装入数据库数据,以生成完整的数据库,编制有关应用程序,进行联机调试并转入试运行,同时进行时间、空间等性能分析,若不符合要求,则需调整物理结构、修改应用程序,直至高效、稳定、正确地运行该数据库系统为止。
(6)数据库运行和维护
数据库实施阶段结束,标志着数据库系统投入正常运行的开始。严格地说,数据库运行和维护不属于数据库设计的范畴,早期的新奥尔良法明确规定数据库设计的四个阶段,不包括运行和维护内容。随着人们对数据库设计的深刻了解和设计水平的不断提高,已经充分认识到数据库运行和维护工作与数据库设计的紧密联系。数据库设计是一种动态和不断完善的运行过程,运行和维护阶段开始,并不意味着设计过程的结束,任何哪怕只有细微的结构改变,也许就会引起对物理结构的调整、修改,甚至物理结构的完全改变,因此数据库运行和维护阶段是保证数据库日常活动的一个重要阶段。 5.3 试述数据库设计的需求分析阶段的目标和方法
需求分析的任务是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。
需求分析常用的方法有:
(1)跟班作业。通过亲身参加业务工作来了解业务活动的情况。这种方法可以比较准确地理解用户的需求,但比较耗费时间。
30