当前位置:文档之家› 关系模式的分解-无损连接与保持函数依赖

关系模式的分解-无损连接与保持函数依赖

关系模式的分解-无损连接与保持函数依赖
关系模式的分解-无损连接与保持函数依赖

数据库练习题

一、选择题 1设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C 课程,P 教师, S 学生,G 成绩,T 时间,R 教室,根据语义有如下数据依赖集: D={C->P ,( S,C )->G , ( T , R)->C , (T , P)-> R,( T,S )->R} 关系模式W的一个关键字是( ) A (S ,C ) B ( T, R) C) (T ,P ) D) (T ,S ) 2 设有关系模式W(C,P,S,G,T,R),其中中各属性的 含义是:C课程,P教师,S学生。G成绩,T时间,R教室,根据主义有如下依据赖集:K={C→P,(S,C)→G,(T,R )→C,(T,P)→R,(T,S)→R} 关系模式W的规范化程序最高达到() A 1NF B 2NF C 3NF D BCNF 3规范化理论中分解()主要消除其中多余的数据相关性。A关系运算 B 内模式 C外模式 D 视图 4现有职工关系W(工号,姓名,工程,定额),其中每一个工号(职工可能有同名), 每个职工有一个工程,每个工程有一个定额,则关系W已达到() A 1NF B2NF C3NF D4NF 5现有职工关系W(工号,姓名,工程,定额),其中每一

个职工有一个工号(职工可能有同名),每个职工有一个工程,每个工程有一个定额,则关系W已达到() A1NF B2NF C3NF D4NF 6规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:其每一属性都是() A、互不相关的 B、不可分解的 C、长度可变的 D、互相关联的 7、在一个关系R中,若每个数据项都是不可再分割的,那 么关系R 一定属于() A、1NF B、2NF C、3NF D、BCNF 8、根所关系数据库规范化理论,关系数据库的关系要满足 1NF,下面“部门”关系中,因()属性而使它不满足1NF。 A、部门号 B、部门名 C、部门成员 D、 部门总经理 9、设有关系模式R(S,D,M)。其函数依赖集F={S->D, D->M},则关系R的规范化程序至多达到() A、1NF B、2NF C、3NF D、BCNF 10、下列关于函数依赖的叙述中,()是不正确的 A、由X->Y,X->Z,有X->YZ B\由XY->Z,有 X->Z,Y->Z C、由X->Y,WY->Z,有xw->z D、由X->Y,Y->Z,有

模式分解

2.保持FD (函数依赖)的分解 定义1:设F 是属性集U 上的FD 集,Z 是U 的子集,F 在Z 上的投影用πZ (F)表示,定义为 πZ (F)={X →Y|X →Y ∈F +,且XY ?Z} 定义2. 设},...{1K R R =ρ 是R 的一个分解,F 是R 上的FD 集,如果有)(1F R i k i π=Y ╞ F ,那么称分解ρ保持函数依赖集F 。 根据定义1,测试一个分解是否保持FD ,比较可行的方法是逐步验证F 中的每个FD 是否被)(1F R i k i π=Y 逻辑蕴涵。如果F 的投影不蕴涵F ,而我们又用},...{1K R R =ρ表达R ,很可能会找到一个数据库实例σ 满足投影后的依赖,但不满足F 。对σ的更新也有可能使r 违反FD 。 案例1: R (T#,TITLE ,SALARY )。如果规定每个教师只有一个职称,并且每个职称只有 一个工资数目,那么R 上的FD 有T#→TITLE 和TITLE →SALARY 。 如果R 分解成ρ={R 1,R 2},其中R 1={T#,TITLE},R 2={T#,SALARY }。则该分解具有无损连接性,但未保持函数依赖,丢失了依赖TITLE →SALARY 。 习题1: 设关系模式R (ABC ),ρ={AB ,AC}是R 的一个分解。试分析分别在F 1={A →B};F 2={A →C ,B →C},F 3={B →A},F 4={C

→B,B→A}情况下, 是否具有无损分解和保持FD的分解特性。 算法1:分解成2NF模式集的算法 设关系模式R(U),主码是W,R上还存在FD X→Z,并且Z是非主属性和X?W,那么W→Z就是非主属性对码的部分依赖。此时,应把R分解成两个关系模式: R1(XZ),主码是X; R2(Y),其中Y=U-Z,主码仍为W,外码是X(参照R1)利用外码和主码的连接可以从R1和R2重新得到R。 如果R1和R2还不是2NF,则重复上述过程,一直到数据库模式中的每个关系模式都是2NF为止。 案例2:设有一个反映球队及球队队员每场比赛进球数的关系模式:R(队员编号,队员名,比赛场次,进球数,球队名,教练名)如果规定每个队员只能属于一个球队,每个球队只有一个教练,队员名可能重复。 (1)试写出关系模式R的基本FD和关键码。 (2)说明R不是2NF模式的理由,并把R分解成2NF模式集。 算法2:分解成3NF模式集的算法 设关系模式R(U),主码是W,R上还存在FD X→Z,并且Z是非主属性,Z /?X,X不是候选码,那么W→Z就是非主属性对码的传递依赖。此时,应把R分解成两个关系模式:R1(XZ),主码是X;

数据库-部分函数依赖,传递函数依赖,完全函数依赖,三种范式的区别

数据库-部分函数依赖,传递函数依赖,完全函数依赖, 三种范式的区别 要讲清楚范式,就先讲讲几个名词的含义吧: 部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。 举个例子:学生基本信息表R中(学号,身份证号,姓名)当然学号属性取值是唯一的,在R关系中,(学号,身份证号)->(姓名),(学号)->(姓名),(身份证号)->(姓名);所以姓名部分函数依赖与(学号,身份证号); 完全函数依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。例子:学生基本信息表R(学号,班级,姓名)假设不同的班级学号有相同的,班级内学号不能相同,在R关系中,(学号,班级)->(姓名),但是(学号)->(姓名)不成立,(班级)->(姓名)不成立,所以姓名完全函数依赖与(学号,班级); 传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。 例子:在关系R(学号 ,宿舍, 费用)中,(学号)->(宿舍),宿舍!=学号,(宿舍)->(费用),费用!=宿舍,所以符合传递函数的要求;

在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。 所谓第一范式(1NF)是指数据库表的每一列(即每个属性)都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。简而言之,第一范式就是无重复的列。 2、第二范式(2NF) 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是唯一的,因此每个员工可以被唯一区分。这个唯一属性列被称为主关键字或主键、主码。 第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是非主属性依赖于主关键字。

教你如何判断无损连接和函数依赖

教你如何判断无损连接和函数依赖 无损分解和保持依赖的判断 大部分是对一个关系模式分解成两个模式的考察,分解为三个以上模式时无损分解和保持依赖的判断比较复杂,考的可能性不大,因此我们只对“一个关系模式分解成两个模式”这种类型的题的相关判断做一个总结。 以下的论述都基于这样一个前提: R是具有函数依赖集F的关系模式,(R1 ,R2)是R的一个分解。 首先我们给出一个看似无关却非常重要的概念:属性集的闭包。 令α为一属性集。我们称在函数依赖集F下由α函数确定的所有属性的集合为F下α的闭包,记为α+ 。 下面给出一个计算α+的算法,该算法的输入是函数依赖集F和属性集α,输出存储在变量result 中。 算法一: result:=α; while(result发生变化)do for each 函数依赖β→γ in F do begin if β∈result then result:=result∪γ; end 属性集闭包的计算有以下两个常用用途: ·判断α是否为超码,通过计算α+(α在F下的闭包),看α+ 是否包含了R中的所有属性。若是,则α为R的超码。 ·通过检验是否β∈α+,来验证函数依赖是否成立。也就是说,用属性闭包计算α+,看它是否包含β。 (请原谅我用∈符号来表示两个集合之间的包含关系,那个表示包含的符号我找不到,大家知道是什么意思就行了。) 看一个例子吧,2005年11月系分上午37题: ● 给定关系R(A1,A2,A3,A4)上的函数依赖集F={A1→A2,A3→A2,A2→A3,A2→A4},R的候选关键字为________。 (37)A. A1 B. A1A3 C. A1A3A4 D. A1A2A3 首先我们按照上面的算法计算A1+ 。 result=A1, 由于A1→A2,A1∈result,所以result=result∪A2=A1A2 由于A2→A3,A2∈result,所以result=result∪A3=A1A2A3 由于A2→A4,A2∈result,所以result=result∪A3=A1A2A3A4 由于A3→A2,A3∈result,所以result=result∪A2=A1A2A3A4 通过计算我们看到,A1+ =result={A1A2A3A4},所以A1是R的超码,理所当然是R的候选关键字。此题选A 。

函数依赖习题

1.设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C课程,P教师,S学生,G成绩,T时间,R 教室,根据定义有如下数据依赖集 D={C→G,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R}关系模式W的一个关键字是__,W的规范化程度最高达到__()。 A、(S,C),1NF B、(T,R),3NF C、(T,P),4NF D、(T,S),2NF 2.对于关系R,第三范式是R中的每个非主属性应满足() A、与主关键字存在单值依赖关系 B、与主关键字存在多值依赖关系 C、函数传递依赖主关键字 D、非函数传递依赖主关键字 3.在一个关系R中,若每个数据项都是不可分割的,那么关系R一定属于() A、BCNF B、1NF C、2NF D、3NF 4.根据关系数据库规范化理论,关系数据库中的关系要满足第一范式,下面“部门”关系中,因哪个属性而使它不满足第一范式() 部门(部门号,部门名,部门成员,部门总经理) A、部门总经理 B、部门成员 C、部门名 D、部门号 5.下列关于规范化理论各项中正确的是() A、对于一个关系模式来说,规范化越深越好 B、满足二级范式的关系模式一定满足一级范式 C、一级范式要求一非主码属性完全函数依赖关键字 D、规范化一般是通过分解各个关系模式实现的,但有时也有合并 6.规范化理论是关系数据库进行逻辑设计的理论依据。根据这个理论,关系数据库中的关系必须满足其每一属性都是() A、互不相关的 B、不可分解的 C、长度可变的 D、互相关联的 7.在关系模式R(U,F)中,如果F是最小函数依赖集,则() A、R∈2NF B、R∈3NF C、R∈BCNF D、R的规范化程度与F是否最小函数依赖集无关 8.在关系模式R(U,F)中,R中任何非主属性对键完全函数依赖是R∈3NF的() A、充分必要条件 B、必要条件 C、充分条件 D、既不充分也不必要条件 9在二元关系模式R(U,F)中,X,Y都是单一属性,如果X→Y,则R最高可以达到()A、2NF B、3NF C、BCNF D、4NF

关系模式的无损分解

1、已知关系模式R(ABC),F={A→C,B→C},求F+。 可以直接通过自反律、增广律、传递律加以推广: F+={φ→φ,A→φ,B→φ,C→φ,A→C,B→C,AB→φ,AB→A,AB→B,AB→C,AB→BC,AB→AB,AB→ABC,BC→φ,BC→C,BC→B,BC→BC,AC→φ,AC→C,AC→A,AC→AC,ABC→φ,ABC→A,ABC→B,ABC→C,ABC→BC,ABC→AB,ABC→ABC} 4.6 试分析下列分解是否具有无损联接和保持函数依赖的特点: (1)设R(ABC),F1={A→B} 在R上成立,ρ1={AB,AC}。 首先,检查是否具有无损联接特点: 第1种解法--算法4.2: (1) 构造表(2)根据A→B进行处理 结果第二行全是a行,因此分解是无损联接分解。 第2种解法:(定理4.8) 设 R1=AB,R2=AC R1∩R2=A R2- R1=B ∵A→B,∴该分解是无损联接分解。 然后,检查分解是否保持函数依赖 πR1(F1)={A→B,以及按自反率推出的一些函数依赖} πR2(F1)={按自反率推出的一些函数依赖} F1被πR1(F1)所蕴涵,∴所以该分解保持函数依赖。

2、设R(ABC),F2={A→C,B→C}在R上成立,ρ2={AB,AC} 首先,检查是否具有无损联接特点: 第1种解法(略) 第2种解法:(定理4.8) 设 R1=AB,R2=AC R1∩R2=A R2- R1=C ∵A→C,∴该分解是无损联接分解。 然后,检查分解是否保持函数依赖 πR1(F2)={按自反率推出的一些函数依赖} πR2(F2)={A→C,以及按自反率推出的一些函数依赖} ∵F1中的B→C没有被蕴涵,所以该分解没有保持函数依赖。 3、设R(ABC),F3={A→B},在R上成立,ρ3={AB,BC}. 首先,检查是否具有无损联接特点: 第1种解法: (1) 构造表(2)根据A→B进行处理没有一行全是a行。因此这个分解不具有无损联接特性。 第2种解法:(定理4.8) 设 R1=AB,R2=BC R1∩R2=B

第六章 函数依赖

朱彦荣 20132184 软件工程2 第六章作业 一. 简答题 1.数据依赖的分类? 函数依赖,多值依赖,连接依赖 2.关系模式可能存在的4个问题? 插入异常、删除异常、冗余、更新异常 3.函数依赖的分类? 平凡函数依赖、非平凡函数依赖、完全函数依赖、部分函数依赖、传递函数依赖 4.函数依赖范畴内的4个范式? 第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BCNF范式 5.3NF关系模式存在异常的可能原因? 仍可能出现插入异常、删除异常、冗余和更新异常。原因是:还可能存在主属性部分函数依赖于键。 6.关系模式规范化的方法? 首先要保证属性的原子性,即至少为1NF,然后由1NF到2NF是消除非主属性对键的部分函数依赖,2NF到3NF是消除非主属性对键的传递函数依赖。3NF到BCNF是消除主属性对键的部分函数依赖和传递函数依赖,一般来说到这里就可以了。然后,有BCNF范式到4NF范式消除非平凡且非函数依赖的多值依赖,最后由4NF到5NF是消除不是候选键所蕴含的连接依赖。 7.如果X和Y之间是1:n的联系,则X和Y之间的函数关系是谁决定谁?如果是1:1和 m:n呢? 若X:Y=1:N,则N方决定1方,即Y->X 若X:Y=1:1,则X->Y且Y->X,即X<->Y,X和Y等价 若X:Y=M:N,则不能相互决定 二.设有关系模式:R(Sid,Sname,Cid,Cname,Score,Tid),其中:Sid、Sname、Cid、Cname、Score、Tid分别表示学号、学生姓名、课程编号、课程名、成绩、教师编号,并有如下语义要求: ●课程与教师间的联系为1:1; ●学生与课程间的联系为m:n; ●一名学生只能有一个学号,且学号唯一; ●一门课程只能有一个课程号,且课程号唯一。 请完成:

函数依赖

函数依赖 2.1、属性间的联系 实体间的联系有两类:一类是实体与实体之间的联系;另一类是实体内部各属性间的联系。 属性间的联系可分为以下三类: (1)一对一联系(1∶1) 以职工模式为例:职工(职工号,姓名,职称,部门)。如果该企业(或单位)中职工无重名,则属性职工号与姓名之间是1∶1联系。一个职工号唯一地决定一个姓名,一个姓名也可决定唯一的职工号。 设X、Y是关系R的两个属性(集)。如果对于X中的任一具体值,Y中至多有一个值与之对应,且反之亦然,则称X、Y两属性间是一对一联系。 (2)一对多联系(1∶ m) 在职工模式中,职工号和职称间是一对多联系。一个职工号只对应一种职称(如胡一民只能对应工程师),但一种职称却可对应多个职工号(如工程师可对应多名职工)。 设X、Y是关系R的两个属性(集)。如果对于X中的任一具体值,Y中至多有一个值与之对应,而Y中的一个值却可以和X中的n个值相对应,则称Y对X是一对多联系。 (3)多对多联系(m∶ m) 在职工模式中,职称和部门之间是多对多联系。一种职称可分布在多个部门中(如每一个部门中均可有工程师),而一个部门中也可有多个职称。 设X、Y是关系R的两个属性(集)。如果对于X中的任一具体值,Y中有m个值与之对应,而Y中的一个值也可以和X中的n个值相对应,则称Y对X是多对多联系。 上述属性间的三种联系实际上是属性值之间相互依赖又相互制约的反映,称为属性间的数据依赖。 数据依赖共有三种:函数依赖(FunctionalDependency,简称FD)、多值依赖 (Multiva-luedDependency,简称MVD)和连接依赖(JoinDependency,简称JD),其中最重要的是函数依赖和多值依赖。 2.2、函数依赖 函数依赖是属性之间的一种联系。假设给定一个属性的值,就可以唯一确定(查到)另一个属性的值。 定义:所谓函数依赖是指在关系R中,X、Y为R的两个属性或属性组,如果对于R的任一关系r都存在:对于X的每一个具体值,Y 都只有一个具体值与之对应,则称属性Y函数依赖于属性X。或者说,属性X函数决定属性Y,记作X->Y。其中X叫决定因素,Y叫被决定因素。当Y是X的子集时,称为平凡函数依赖。由于平凡函数依赖总是成立的,因此,若不作特殊声明,本书后面提到的函数依赖,都不包含平凡函数依赖。 此定义可简单表述为:如果属性X的值决定属性Y的值,那么属性Y函数依赖于属性X。 前面讨论的属性间的三种联系,并不是每一种联系中都存在函数依赖。

无损联接分解

无损联接分解 定义:无损联接分解是将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式,则称这种分解为无损联接分解。 可还原 例1:关系模式:成绩(学号,姓名,课程号,课程名,分数) 函数依赖:学号->姓名,课程号->课程名,(学号,课程号)->分数 若将其分解为下面三个关系模式: 成绩(学号,课程号,分数) 学生(学号,姓名) 课程(课程号,课程名) 问,这样的分解是无损分解么? ---- 由于:学号->姓名,所以: 成绩(学号,课程号,分数,姓名) 由于:课程号->课程名,所以: 成绩(学号,课程号,分数,姓名,课程名) 所以这个例子是无损分解 例2:设R=ABCDE, R1=AD,R2=BC,R3=BE,R4=CDE, R5=AE, 设函数依赖: A->C, B->C, C->D, DE->C, CE->A. 判断R分解成 ρ={R1, R2, R3, R4, R5}是否无损联接分解? 解: 这样的题要通过画表的方法来解,首先,原始表: 表1 (A B C D E是关系R的属性, AD, BC, BE, CDE, AE 是分解之后每一个关系对应的属性集) 填表的过程:

当横竖相交的时候,如果在分解关系中存在对应列的单个的属性(譬如第一列第一行AD与A相交的单元格,AD含有A,就填写a1),则填写a下标,下标就是单元格对应所在的列号。否则填写b下标,下标是单元格对应所在的行列号。 填写之后的初始表就是表1所示 2.根据依赖关系修改原始表: 对于依赖关系A->C,看A列中有两行a 1 是相等的(第一行和第五行),所以在 C列中对应的两行也应该相等,但是看到这两行都是b(b 13,b 53 ),所以将这个 b都换成b 13 (上面的较小的标) 2 这一列同样的操作,但是看到C这一列中第二行是a 3,那么就将第三行改成a 3 , 对依赖C→D,C列的1,5行相等,D的1,5行也应该相等,D的第1行有a, 所以b 54换成a 4 ;另外C列的2,3,4行也相等,D的2,3,4行也应该相等,D 对于DE→C, DE公共的相等的行是3,4,5行,对应C的3,4,5行也应该相等,

数据库课程设计之无损连接性

课程设计说明书 设计题目:数据库课程设计 专业:计算机科学与技术班级:2010级5班设计人:王露 山东科技大学 2012年04月07 日

摘要: 本次课程设计,研究了如何判断输入的模式分解是否保持无损连接性,提示用户输入关系模式的属性集,函数依赖集以及模式分解,利用算法6.的表格法,运行程序,输出是否具有无损连接性。用java语言实现,在eclipse上运行,且只考虑了分解的无损连接性而没有考虑函数依赖的保持性。 目录: 任务书-------------------------------------------------------------------------------------2 教师评语---------------------------------------------------------------------------------3 摘要---------------------------------------------------------------------------------------4 题目要求--------------------------------------------------------------------------------4 需求分析--------------------------------------------------------------------------------4 程序设计--------------------------------------------------------------------------------6 结果分析--------------------------------------------------------------------------------15 实验总结--------------------------------------------------------------------------------20 附录(使用说明)-------------------------------------------------------------------21

数据库函数依赖

数据库函数依赖 一、函数依赖(Functional Dependency)的概念 数据依赖的一种,它反映属性或属性组之间相依存,互相制约的关系,即反映现实世界的约束关系。 二、定义 设R(U)是属性U上的一个关系模式,X和Y均为U={A1,A2,…,An}的子集,r为R的任一关系,如果对于r中的任意两个元组u,v,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X,记为X→Y。 例: (sno-学生ID,tno-教师ID,cno-课程ID,sname-学生姓名,tname-教师姓名,cname-课程名称,grade-成绩) 1、sno→sname, cno→cname,(sno,cno)→grade √ 2、sname→sno, tno→cno, sno→tname × 三、函数依赖是语义范畴 1、语义:数据所反映的现实世界事物本质联系 2、根据语义来确定函数依赖性的存在与否 3、函数依赖反映属性之间的一般规律,必须在关系模式下的任一个关系r中都满足约束条件。 四、属性间的联系决定函数依赖关系 设X、Y均是U的子集 1、X和Y间联系是1:1,则X→Y,Y→X。(相互依赖,可记作X←→Y) 2、X和Y间联系是M:1(M),则X→Y。 3、X和Y间联系是M:N(M,N),则X、Y间不存在函数依赖。 五、完全函数依赖和部分函数依赖 1、函数依赖分为完全函数依赖和部分函数依赖 2、定义: 在R(U)中,如果X→Y,并且对于X的任何真子集X'都有X'Y',则称Y完全依赖于X,记作X→Y;否则,如果X→Y,且X中存在一个真子集X',使得X'→Y成立,则称Y部分依赖于X。 例: 学生ID,学生姓名,所修课程ID,课程名称,成绩 (学生ID,所修课程ID)→成绩 成绩既不能单独依赖于学生ID,也不能单独依赖于所修课程ID,因此成绩完全函数依赖于关键字。 (学生ID,所修课程ID)→学生姓名 学生ID→学生姓名 学生姓名可以依赖于关键字的一个主属性——学生ID,因此学生姓名部分函数依赖于(学生ID,所修课程ID)。 六、平凡函数依赖和非平凡函数依赖 设X,Y均为某关系上的属性集,且X→Y 1)若Y包含于X,则称X→Y为:平凡函数依赖;(Sno, Cno) →Sno (Sno, Cno) →Cno 2)若Y不包含于X,则称X→Y为:非平凡函数依赖。(Sno, Cno) →Grade Y包含于X内,W于X相交,与Y无直接交集。 则:X→Y为平凡函数依赖

关于无损分解和保持依赖的判断

关于无损分解和保持依赖的判断,是系分和数工考试中每年基本上都会考的题,而且绝大部分是对一个关系模式分解成两个模式的考察,分解为三个以上模式时无损分解和保持依赖的判断比较复杂,考的可能性不大,因此我们只对“一个关系模式分解成两个模式”这种类型的题的相关判断做一个总结。 以下的论述都基于这样一个前提: R是具有函数依赖集F的关系模式,(R1 ,R2)是R的一个分解。 首先我们给出一个看似无关却非常重要的概念:属性集的闭包。 令α为一属性集。我们称在函数依赖集F下由α函数确定的所有属性的集合为F下α的闭包,记为α+ 。 下面给出一个计算α+的算法,该算法的输入是函数依赖集F和属性集α,输出存储在变量result中。 算法一: result:=α; while(result发生变化)do for each 函数依赖β→γ in F do begin if β∈result then result:=result∪γ; end 属性集闭包的计算有以下两个常用用途: ·判断α是否为超码,通过计算α+(α在F下的闭包),看α+ 是否包含了R中的所有属性。若是,则α为R的超码。 ·通过检验是否β∈α+,来验证函数依赖是否成立。也就是说,用属性闭包计算α+,看它是否包含β。 (请原谅我用∈符号来表示两个集合之间的包含关系,那个表示包含的符号我找不到,大家知道是什么意思就行了。) 看一个例子吧,2005年11月系分上午37题: ● 给定关系R(A1,A2,A3,A4)上的函数依赖集F={A1→A2,A3→A2,A2→A3,A2→A4},R的候选关键字为________。 (37)A. A1 B. A1A3 C. A1A3A4 D. A1A2A3 首先我们按照上面的算法计算A1+ 。 result=A1, 由于A1→A2,A1∈result,所以result=result∪A2=A1A2 由于A2→A3,A2∈result,所以result=result∪A3=A1A2A3 由于A2→A4,A2∈result,所以result=result∪A3=A1A2A3A4 由于A3→A2,A3∈result,所以result=result∪A2=A1A2A3A4 通过计算我们看到,A1+ =result={A1A2A3A4},所以A1是R的超码,理所当然是R的候

数据库复习题5,6,7,8章(附答案)

第5章数据库完整性 一、选择题: 1、在数据库系统中,保证数据及语义正确和有效的功能是( D )A.并发控制 B.存取控制 C.安全控制 D.完整性控制 2、关于主键约束以下说法错误的是(C) A. 一个表中只能设置一个主键约束 B.允许空值的字段上不能定义主键约束 C.允许空值的字段上可以定义主键约束 D.、可以将包含多个字段的字段组合设置为主键 3、在表或视图上执行除了(D)以外的语句都可以激活触发器。 A.Insert B. Delete C. Update D.Create 4、数据库的__B_ _是指数据的正确性和相容性。 A.安全性B.完整性C.并发控制D.恢复 5、在数据库的表定义中,限制成绩属性列的取值在0到100的范围内,属于数据的_____C___约束。 A、实体完整性 B、参照完整性 C、用户自定义 D、用户操作 二、填空题 1.数据库的完整性是指数据的①实体完整性 . ②参照完整性__和③用户定义完整性。 2、实体完整性是指在基本表中,。答案:主属性不能取空值 3、参照完整性是指在基本表中,。答案:外码可以是空值或者另一个关系主码的有效值 4、为了保护数据库的实体完整性,当用户程序对主码进行更新使主码值不惟一时,DBMS 就。答案:拒绝此操作

第6章关系数据理论 一、选择题 1、关系规范化中的删除操作异常是指①A ,插入操作异常是指② D 。A.不该删除的数据被删除 B.不该插入的数据被插入 C.应该删除的数据未被删 除 D.应该插入的数据未被插入 2、设计性能较优的关系模式称为规范化,规范化主要的理论依据是 A 。 A.关系规范化理论 B.关系运算理论 C.关系代数理论 D.数理逻辑 3、规范化过程主要为克服数据库逻辑结构中的插入异常,删除;异常以及 C 的 缺陷。 A.数据的不一致性 B.结构不合理 C.冗余度大 D.数据丢失 4、当关系模式R(A,B)已属于3NF,下列说法中 B 是正确的。 A.它一定消除了插入和删除异常 B.仍存在一定的插入和删除异常 C.一定 属于BCNF D.A和C都是 5、关系模型中的关系模式至少是 A A.1NF B.2NF C.3NF D.BCNF 6、在关系DB中,任何二元关系模式的最高范式必定是 D A.1NF B.2NF C.3NF D.BCNF 7、候选关键字中的属性称为 B 。 A.非主属性 B.主属性 C.复合属性D.关键属性 8、消除了部分函数依赖的1NF的关系模式,必定是 B 。A.1NF B.2NF C.3NF D.4NF 9、关系模式的候选关键字可以有 C ,主关键字有 B 。 A.0个 B.1个 C.1个或多个 D.多个 10、根据关系数据库规范化理论,关系数据库中的关系要满足第一范式。下面“部门” 关系中,因哪个属性而使它不满足第一范式? B 。部门(部门号,部门名, 部门成员,部门总经理) A.部门总经理 B.部门成员 C.部门名 D.部门号 二、填空题 1、在关系A(S,SN,D)和B(D,CN,NM)中,A的主键是S,B的主键是D,则D在S中称 为外键。 2、对于非规范化的模式,经过①转变为1NF,将1NF经过②转变为 2NF,将2NF经过③转变为3NF。 答案:①使属性域变为简单域②消除非主属性对主关键字的部分依赖③消除非主 属性对主关键字的传递依赖 3、在关系数据库的规范化理论中,在执行“分解”时,必须遵守规范化原则:保持原有 的依赖关系和。答案:无损连接性 三、综合练习 1、已知学生关系模式 S(Sno,Sname,SD,Sdname,Course,Grade) 其中:Sno学号、Sname姓名、SD系名、Sdname系主任名、Course课程、Grade成绩。 (1)写出关系模式S的基本函数依赖和主码。

函数依赖(理论及举例)

函数依赖(理论及举例) 教你如何理解函数依赖 一、函数依赖的概念 函数依赖:函数依赖就是讨论一个数据表(关系)中属性值之间所存在的函数关系。函数是一种数学中的概念,被引入到数据库中对数据的联系进行分析。 在一个关系中,属性相当于数学上的变量,属性的域相当于变量的取值范围,属性在一个元组上的取值相当于属性变量的当前值。 例如:在下面的这个职工关系中,职工号、姓名、性别、年龄、职务等属性都相当于变量;职工号属性的域,即四位十进制数字,就是取值范围,性别属性的域:{男、女},就是性别属性的取值范围。此关系中包含有6个元组,如第2个元组为{3051、刘平、男、48、副处},其中的每个属性值都是对应属性在该元组上的当前值。 单值函数和多值函数:元组中一个属性或一些属性值对另一个属性值的影响相当于自变量值对函数值的影响。当给定一个自变量值能求出唯一的一个函数值时,称此为单值函数或单映射函数,否则为多值函数。在单值函数中由自变量的一个值确定函数的一个值,但不同的自变量值允许具有相同的函数值。如f(x)=2x, f(n)=(-1)^n, f(x)=x^3+1等都是单值函数,由自变量x或n的值能够唯一确定f(x)或f(n)的值。

属性的单值函数决定(依赖):在一个关系中,若一个或一组属性的值对另一个或一组属性值起到决定性的作用,则称为单值函数决定(依赖)。如上表中职工号的值就能够函数决定其余每个属性的值,也就是说,当职工号给定后,其他每个属性的值就跟着唯一地确定了。如假定职工号为3074,则他的姓名必定是王海,性别必定为男,年龄必定为32岁,职务必定为正科。这就叫做职工号能够分别单值函数决定姓名、性别和年龄属性,反过来,可以说姓名、性别和年龄等属性单值函数依赖于职工号属性。 二、函数依赖的定义 定义:设一个关系为R(U),X和Y为属性集U上的子集,若对于X上的每个值都有Y上的一个唯一值与之对应,则称X和Y具有函数依赖关系,并称X 函数决定Y,或称Y函数依赖于X,记作X→Y,称X为决定因素。 例如:设一个职工关系为(职工号,姓名,性别,年龄,职务),职工号用来标识每个职工,选作为该关系的主码。对于该关系中每个职工的职工号,都对应着姓名属性中的唯一值,即该职工的姓名,或者说一个职工的姓名由其职工号唯一确定,所以称职工号函数决定姓名,或称姓名函数依赖于职工号,记作“职工号→姓名”,职工号为该函数依赖的决定因素。同理,当一名职工的职工号被确定之后,它所对应的性别、年龄、职务等属性值就被唯一确定下来了,所以职工号函数决定性别、年龄、职务等描述职工特征的每个属性,可以分别记作为“职工号→性别”、“职工号→年龄”、“职工号→职务”。 在该关系中除职工号外,其他属性都不能成为决定因素形成函数依赖,因为对于它们的每个属性值,都可能对应另一属性的多个不同的取值。如对于性别属性的一个取值“男”就会对应多个而不是一个职工号,此不是单值函数依赖,而是多值函数依赖,所以不能由性别来决定职工号。 相互函数依赖:在这个职工关系中,若规定不允许职工有重名,则姓名也能够唯一标识一个元组,这样姓名也能够函数确定其他每个属性,此时职工号和姓名在取值上一一对应,相互成为决定因素,即构成相互函数依赖,记作为“职工号←→姓名”。但通常是允许职工重名的,因为不应该让已经重名的职工重新起名,这样姓名就不能成为关系的候选码,就不能函数决定其他任何属性。 若一个关系中的属性子集X不能函数决定另一个属性子集Y,则记作X Y,读作X不能函数决定Y,或Y不能函数依赖于X。

数据库重难点(无损连接和范式)

模式分解的几个重要事实: 若只要求分解具有“无损连接性”,一定可以达到4NF; 若要求分解要“保持函数依赖”,可以达到3NF,但不一定能达到BCNF; 若要求分解既要“保持函数依赖”,又要具有“无损连接性”,可以达到3NF,但不一定能达到BCNF; 试分析下列分解是否具有无损联接和保持函数依赖的特点: 设R(ABC),F1={A→B} 在R上成立,ρ1={AB,AC}。 首先,检查是否具有无损联接特点: 第1种解法--算法4.2: A B C AB a1 a2 b13 AC a1 b22 a3 A B C a1 a2 b13 a1 a2 a3 (1) 构造表(2)根据A→B进行处理 结果第二行全是a行,因此分解是无损联接分解。 第2种解法:(定理4.8) R1(AB)∩R2(AC)=A R2- R1=B ∵A→B,∴该分解是无损联接分解。 然后,检查分解是否保持函数依赖 πR1(F1)={A→B,以及按自反率推出的一些函数依赖} πR2(F1)={按自反率推出的一些函数依赖} F1被πR1(F1)所蕴涵,∴所以该分解保持函数依赖。 范式 当查询涉及到针对“否定”特征含义的查询要求,如“不”、“没有”等字眼,一般要用差运算表示。 针对“全部”特征含义的查询要求,如“全部”、“至少”、“包含”等字眼,一般要用除法运算。?

1NF :R(A,B,C,D)依赖集(ab>c a->d) 因为d部分依赖于ab 所以属于1NF 不属于2NF 2NF :R(A,B,C,D)依赖集(ab>c c—>d) 因为d传递依赖与AB 但是不存在部分依赖所以属于2N 不属3NF 3NF : R(A,B,C,D)依赖集(ab>c ab—>d,d->a) 因为即不存在部分依赖也不存在传递依赖所以属于3NF 但是因为d->a因为d是非主属性所以不属于BCNF 1、第一范式(1NF):一个关系模式R的所有属性都是不可分的基本数据项。 2、第二范式(2NF):关系模式R属于第一范式,且每个非主属性都完全函数依赖于键码。 3、第三范式(3NF):关系模式R属于第一范式,且每个非主属性都不传递递依赖于键码。 4、BC范式(BCNF):关系模式R属于第一范式,且每个属性都不传递依赖于键码。 **码的快速求解: 1、【L类、N类至少有一种】 根据定理,L、N类必为侯选码之一,如果L+包含全部R,则L为唯一侯选。R类不在任何侯选码中。L+N类且(L+N)+包含所有R,则L+N为唯一侯选。 2、【只有LR类】 将F右部单一化后,取左边出现频率最多的属性X,求X+,若包含R中所有属 性,则X为侯选码。找能决定X的属性Y,求Y+。单个完后找两两结合,依次类推。(侯选码不参与结合)? eg: 如设有关系模式R(A,B,C,D,E),其上的函数依赖集F={A→BC,CD→E,B→D,E→A},求出R的所有候选码。?根据上述方法,具体求解步骤如下:把F右部单一化后F={?A→B,A→C,CD→E,B→D,E→A?};根据判断,A作为确定因素在左部出现的频率最高,求A+=ABCDE,又有E→A,求E+=ABCDE而CD→E,求(CD)+=ABCDE,可以得出属性A,E,CD为候选码;除去A,E,CD 外,根据一般求解法求两个属性组合的闭包,可以得到(BC)+=ABCDE,最后可以算出R的候选码为:A,E,CD,BC。

数据库函数依赖和范式总结

数据库函数依赖和范式总结 1 函数依赖 1.1 定义: 一个集合R(U,F),U为属性全集,F为函数依赖集合。F中存在着{Xi->Yi...};对于每个X都存在着一个Y与之唯一对应。 意思就是相当于X为主键,Y由主键决定。比如一个学生他的学号相当于X,而他的姓名与年龄这些其他信息相当于Y。但是X有时候并不是一个值,比如一个学生他的成绩需要有两个属性才能知道他的成绩,学号+课程号->成绩 1.2 平凡函数依赖与非平凡函数依赖 平时我们主要讨论的是非平凡函数依赖。 平凡函数依赖概念:Y集合属性属于X集合属性的子集 非平凡函数则相反 1.3 逻辑蕴涵(为后面求闭包做好基础) X,Y为属性集合U的子集,且X->Y不存在于F中。即我们需要通过F 中的函数依赖推出X->Y称为函数依赖。而所有函数依赖的集合则称为闭包 1.4 函数依赖的推理规则(就是求函数依赖的逻辑蕴涵) 1.4.1 几个公理 1.4.1.1 公理一(自反律):Y属于X的子集,则X->Y 数学公式描述 Y?X?U 1.4.1.2 公理二(增广律):X->Y成立,Z?U也成立,则 XZ?YZ 1.4.1.3 公理三(传递律):X->Y成立,Y->Z成立,则 X->Z 1.4.2 公理的推广 1.4. 2.1 推广一(合并律):X->Y,X->Z,则X->YZ 1.4. 2.2 推广二(伪传递律):X->Y,YW->Z,则XW->Z(证明只需要在XY两边*W) 1.4. 2.3 推广三(分解律):X->Y成立,Z?Y,则 X->Z

1.4. 2.4 推广四(复合律):X->Y,W->Z,则XW->YZ 1.5 完全函数依赖与部分函数依赖(范式中基础知识) X->Y的集合中,若X的任一真子集x都能 x->Y则为部分函数依赖,若不能则的完全函数依赖,如果X没有真子集则也称为完全函数依赖。例如学号可以决定姓名,年龄等,因为学号集合没有真子集,则此为完全函数依赖。而当姓名没有重名的情况下,学号和姓名都可以作为X集合子集,而此时姓名也可以决定年龄,所以此函数为部分函数依赖 1.6 传递函数依赖(范式中基础知识) X->Y,且Y!->X,Y->Z, 则X->Z称为传递函数依赖 简单理解就是X通过Y再Y通过Z,最后X可以决定Z,但是如果Y->X的话,那么X<->Y直接相等就相当于没意义经过传递而只是简单的替换了而已,所以并不能叫做传递函数依赖 1.7 (重要)属性集的闭包和算法 1.7.1 定义:从F集合中所有的函数依赖 F->A 1.7.2 X->Y的充分必要条件Y?X* 1.7.3 计算闭包算法 设属性集U,F是R上的依赖函数集,X是U的子集,求属性X相当于函数依赖集F的闭包X* result = x; do{ if(F中有某个函数依赖集合Y->Z满足Y?result){ result = result ∪ Z ; } }while(result 有所改变); 例题:属性集合U={X,Y,Z,W}, 函数依赖集合F={X->Y,Y->Z,W->Y},求闭包 X* = XYZ ,(XW)* = XYZW ,(YW)*=YZW 1.8 (重要)候选键的求解和算法 1.8.1 定义:X是U的一个子集,若X->U(即X->U在F中)那么称X为超键,但是如果X->U成立,但是X的真子集x->U不成立(即x->U不在F中)则称为候选键 1.8.2 快速求解候选键的充分条件 (1) L类:仅仅出现在F中的函数依赖左部的属性

基本函数依赖(练习)

1、要建立关于系、学生、班级、研究会等信息的一个关系数据库。规定:一个系有若干专业、每个专业每年只招一个班,每个班有若干学生,一个系的学生住在同一个宿舍区,一个系只有一个系名,一个系名也只给一个系用。每个学生可参加若干研究会,每个研究会有若干学生。 描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区。 描述班级的属性有:班号、专业名、系名、人数、入校年份。 描述系的属性有:系号、系名、系办公室地点、人数。 描述研究会的属性有:研究会名、成立年份、地点、人数。 学生参加某研究会,有一个入会年份。 试给出上述数据库的关系模式;写出每个关系的最小依赖集(即基本的函数依赖集,不是导出的函数依赖);指出是否存在传递函数依赖;对于函数依赖左部是多属性的情况,讨论其函数依赖是完全函数依赖还是部分函数依赖,指出各关系的候选键、外部关系键。(课本P176) 参考答案: 关系模式: 学生(学号,姓名,出生年月,系名,班号,宿舍区) 班级(班号,专业名,系名,人数,入校年份) 系(系号,系名,系办公室地点,人数) 研究会(研究会名,成立年份,地点,人数) 入会(学号,研究会名,入会年份) 关系的最小函数依赖集: 学生:{学号→姓名,学号→出生年月,学号→班号,班号→系名,系名→宿舍区}

候选键:学号;外键:班号,系名 不存在部分函数依赖,但存在传递函数依赖:学号→系名,所以该关系最高属于2NF。 班级:{班号→专业名,专业名→系名,班号→人数,班号→入校年份,{专业名,入校年份}→班号}候选键:班号,{专业名,入校年份};外键:系名 存在部分函数依赖:班号→系名,所以该关系最高属于1NF。 系:{系号→系名,系号→系办公室地点,系号→人数} 候选键:系号;外键:无 不存在部分函数依赖,也不存在传递函数依赖,所以该关系最高属于 3NF。 研究会:{研究会名→成立年份,研究会名→地点,研究会名→人数} 候选键:研究会名;外键:无 不存在部分函数依赖,也不存在传递函数依赖,所以该关系最高属于 3NF。 入会:{{学号,研究会名}→入会年份} 候选键:{学号,研究会名};外键:学号 不存在部分函数依赖,也不存在传递函数依赖,所以该关系最高属于 3NF。 (注:对于本数据库可以设计更为合理的关系模式,如下所示) 学生(学号,姓名,出生年月,班号) 班级(班号,专业名,系名,人数,入校年份) 系(系号,系名,系办公室地点,人数,宿舍区)

相关主题
文本预览
相关文档 最新文档