模式分解

合集下载

模式的分解

模式的分解
1 1 1 2 2 2 k k k
}
2018/10/5
11
判断无损连接的算法
算法6.2 判断一个分解的无损连接性 {R1 U1, F1 , R2 U2 , F2 ,..., Rk Uk , Fk是 }R<U,F〉的一 个分解,U={A1,A2,…,An},F={FD1,FD2,…, FDm},这里我们设F是一个极小依赖集,记FDi为 Xi→Ali。 (1)建立一张n列k行的表。一列对应一个属 性,一行对应一个分解后的模式;在i行j列中的空白 处,若属性Aj属于Ui,则填上aj,否则填上bij。
2018/10/5
8
6.4.2.1 分解的“无损连接性”
我们先来定义几个符号: 分解: {R1 U1, F1 , R2 U2 , F2 ,..., Rk Uk , Fk } 其中r是R<U,F>的一个关系。 再定义: m = ( r ) Ri 也就是说 是r在各个模式分解上的投 m 影的连接。
2018/10/5 3
本小节要讨论的内容
• “无损连接性”和“保持函数依赖”的含 义; • 对于这三种角度的分解可以达到的分离程 度,即可以达到第几范式; • 对于这几种分离的分解算法;
下面用一个实际分解的例子来引出本小 节的内容。
2018/10/5 4
一个分解实例
例4:一个关系模式R<U,F>,其中U={Sno,Sdept, Mn},F={Sno→Sdept,Sdept →Mn}。 如果我们把它分解成:
我们从r1,r2和r3这三个关系中已经不能回 答“某个学生在哪个系学习”了,显然这样的分 解是失败的。这是由于失去了关原来的关系。 而我们把r1,r2和r3做自然连接(它们的笛卡 尔积)后,我们得到的是一个具有4*4*4=64行的 没有实际意义的关系表。不能恢复表5.3所示的 含义了。

关系模式分解例题

关系模式分解例题

关系模式分解例题例1:现有如下关系模式:R(教师号,姓名,部门号,部门名称,科研项⽬编号,项⽬名称,项⽬经费,担任⼯作,完成时间)每名教师可以参加多项科研项⽬,每个项⽬可以有多名教师参加,教师参加科研⼯作包括担任⼯作及他完成所担任部分的完成时间。

(1)根据上述条件,写出关系模式R的关键码。

(2)R最⾼属于第⼏范式,为什么? (3)将R规范到3NF。

由关系模式可以得出(⾁眼凭经验看出):候选码:(教师号,部门号,科研项⽬编号)(教师号)→(姓名)(部门号)→(部门名称)(科研项⽬编号)→项⽬名称(科研项⽬编号)→项⽬经费由题⽬描述可以得出:(教师号,科研项⽬编号)→(担任⼯作)(教师号,科研项⽬编号)→(完成时间)(1)⾁眼看出候选码就是(教师号,部门号,科研项⽬编号)(2)第⼀范式,存在姓名依赖于教师号,⽽担任⼯作依赖于教师号和科研项⽬编号,这是个⾮主属性对码的部分函数依赖(3)教师(教师号,姓名)部门(部门号,部门名称)科研项⽬(科研项⽬编号,项⽬名称,项⽬经费)教师科研情况(教师号,科研项⽬编号,担任⼯作,完成时间)例2:现有关系模式如下:借阅(图书编号,书名,作者名,出版社,读者编号,读者姓名,借阅⽇期,归还⽇期)(1)读者编号是候选码吗请说明理由。

(2)写出该关系模式的主码。

(3)该关系模式中是否存在部分函数依赖如果存在,请写出两个。

(4)该关系模式最⾼满⾜第⼏范式并说明理由。

(5)如何分解该关系模式,使得分解后的关系模式均满⾜第三范式(3NF)由关系模式可以得出:候选码:(图书编号,读者编号,借阅⽇期)(图书编号)→(书名)(图书编号)→(作者名)(图书编号)→(出版社)(读者编号)→(读者姓名)归还⽇期不能依赖于借阅⽇期(1)不是,读者编号只能决定书名、作者名、出版社,不能决定所有的属性,因此该关系模式不能完全依赖于读者编号。

(2)(图书编号,读者编号,借阅⽇期)(3)偶上边写了5个XDDD(4)第⼀范式,因为存在⾮主属性对码的部分函数依赖,⽐如(图书编号,读者编号,借阅⽇期)→(书名),⽽(图书编号)→(书名)。

模式分解

模式分解

最佳答案第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值都是不可再分的最小数据单位,则称R是第一范式的关系。

例:如职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话和一个家里电话号码)规范成为1NF有三种方法:一是重复存储职工号和姓名。

这样,关键字只能是电话号码。

二是职工号为关键字,电话号码分为单位电话和住宅电话两个属性三是职工号为关键字,但强制每条记录只能有一个电话号码。

以上三个方法,第一种方法最不可取,按实际情况选取后两种情况。

第二范式(2NF):如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R 是属于第二范式的。

例:选课关系SCI(SNO,CNO,GRADE,CREDIT)其中SNO为学号,CNO为课程号,GRADEGE 为成绩,CREDIT 为学分。

由以上条件,关键字为组合关键字(SNO,CNO)在应用中使用以上关系模式有以下问题:a.数据冗余,假设同一门课由40个学生选修,学分就重复40次。

b.更新异常,若调整了某课程的学分,相应的元组CREDIT值都要更新,有可能会出现同一门课学分不同。

c.插入异常,如计划开新课,由于没人选修,没有学号关键字,只能等有人选修才能把课程和学分存入。

d.删除异常,若学生已经结业,从当前数据库删除选修记录。

某些门课程新生尚未选修,则此门课程及学分记录无法保存。

原因:非关键字属性CREDIT仅函数依赖于CNO,也就是CREDIT部分依赖组合关键字(SNO,CNO)而不是完全依赖。

解决方法:分成两个关系模式SC1(SNO,CNO,GRADE),C2(CNO,CREDIT)。

新关系包括两个关系模式,它们之间通过SC1中的外关键字CNO相联系,需要时再进行自然联接,恢复了原来的关系第三范式(3NF):如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的。

关系模式分解

关系模式分解

举例:
例 5.8 设 有 关 系 模 式 R(A,B,C) , 函 数 依 赖 集
F={A→B , C→B} , 分 解 ρ ={R1,R2} , 其 中 R1=AB , R2=BC 。检验分解 ρ 是否具有无损联 接性。 分解ρ不具有无损联接性
三、保持函数依赖集
1、定义
设有关系模式 R(U,F) , F 是 R 的函数依赖集, ρ ={R1,R2,…,Rk}是R上的一个分解。如果所有函 数依赖集πRi(F)(i=1,2,…,k)的并集逻辑蕴 含 F 中的每一个函数依赖,则称分解 ρ 具有依赖 保持性,也即分解ρ 保持依赖集F。即
A R1 R2 R3 R4 R5 a1 a1 a1 a1 a1 B b12 a2 a2 b42 b52 C b13 b13 a3 a3 a3 D a4 a4 a4 a4 a4 E b15 b25 a5 a5 a5
例 5.7 设R(ABCDE),F={A→C,B→C,C→D,DE→C,
CE→A},ρ={R1(AD),R2(AB),R3(BE),R4(CDE), R5(AE)},检验分解ρ是否具有无损联接性。 第三步:判断
2、算法5.2 判断一个分解的无损联接性 输入:关系模式R(A1,…,An),
函数依赖集F,
R的一个分解ρ =(R1,…,Rk)。
输出:ρ 是否为无损联接的判断。 方法:
2、算法5.2 判断一个分解的无损联接性(续1)
(1)构造一个k行n列表S,其中:
A1 R1 … Ri … Rk … Aj … An
例 5.7 设R(ABCDE),F={A→C,B→C,C→D,DE→C,
CE→A},ρ={R1(AD),R2(AB),R3(BE),R4(CDE), R5(AE)},检验分解ρ是否具有无损联接性。 第二步:修正②B→C

第13讲模式分解

第13讲模式分解

第13讲模式分解第13讲的主题是模式分解。

在这一讲中,我将向你介绍什么是模式分解,以及如何使用模式分解来解决问题。

首先,让我们来了解一下什么是模式。

模式是一种可重复的结构或行为方式,可以在不同的问题或情境中重复使用。

模式可以是实际存在的实体或过程,也可以是思维模式或行为模式。

模式分解是一种分析问题的方法,通过将问题分解成更小的、更具体的子问题来解决问题。

这种方法可以使复杂的问题变得更加可管理,并帮助我们更好地理解问题的本质。

模式分解的过程通常包括以下几个步骤:1.确定大问题:首先,我们需要明确整个问题的大框架和目标。

这有助于我们保持对问题的整体认识,并指导我们进行模式分解的过程。

2.列举模式:接下来,我们需要在问题中识别出重复出现的模式。

这些模式可能是具体的步骤、观念、数字等等。

列举这些模式有助于我们识别问题中的重点,并为下一步的分解提供线索。

3.分解子问题:一旦我们明确了模式,我们就可以将整个问题切分成更小的、更具体的子问题。

这可以通过将具有共同模式的元素归为一组来实现。

每个子问题都可以独立地解决,并且通过组合子问题的解决方案,可以获得整个问题的解决方案。

4.解决子问题:然后,我们需要逐个解决子问题。

这可能需要使用之前学到的其中一种解决技术,例如算法、数学公式、模拟等。

在解决子问题的过程中,我们可以进一步细化问题,并将其分解成更小的更具体的部分。

5.合并子问题:最后,我们需要将解决子问题的结果合并起来,以获得整个问题的解决方案。

这可以通过将子问题的解决方案进行组合操作来实现。

在合并子问题时,我们还需要确保解决方案的一致性和有效性。

通过模式分解,我们可以将复杂的问题分解成更小的、更容易处理的子问题,从而简化问题的解决过程,并提高解决问题的效率。

此外,模式分解还可以帮助我们深入了解问题的本质,识别出隐藏的模式和规律。

总结来说,模式分解是一种分析和解决问题的方法,通过将问题分解成更小的、更具体的子问题,并逐个解决这些子问题,最终得到整个问题的解决方案。

关系模式分解的两种主要准则

关系模式分解的两种主要准则

关系模式分解的两种主要准则关系模式分解的两种主要准则在数据库设计过程中,关系模式分解是一个重要的步骤,它将一个复杂的关系模式分解为多个简单的关系模式。

这个过程有助于提高数据库的性能和可维护性。

在关系模式分解过程中,有两种主要的准则,即函数依赖和多值依赖。

函数依赖函数依赖是关系模式分解的重要准则之一。

函数依赖描述了一个关系模式中的属性之间的关系。

在一个关系模式中,如果一个属性的值可以通过其他属性的值来确定,那么我们说这个属性依赖于其他属性。

这种依赖关系可以用函数依赖来表示。

具体来说,如果在一个关系模式R中,属性集X的值决定着属性集Y的值,我们可以表示为X->Y。

其中,X称为函数依赖的左侧,Y称为函数依赖的右侧。

函数依赖的左侧属性集称为决定因素,右侧属性集称为被决定因素。

在关系模式分解过程中,我们需要将函数依赖的左侧属性集作为一个新的关系模式的主键,并将函数依赖的右侧属性集作为新的关系模式的属性。

函数依赖的准则包括:完全依赖:如果函数依赖X->Y满足以下条件,我们称之为完全依赖:Y不包含X中的任何一个属性。

如果从X中移除任何一个属性,函数依赖不再成立。

部分依赖:如果函数依赖X->Y满足以下条件,我们称之为部分依赖:Y包含X中的某些属性。

如果从X中移除任何一个属性,函数依赖仍然成立。

通过分解满足完全依赖和部分依赖的关系模式,我们可以得到一个更规范、更高效的数据库设计。

多值依赖多值依赖是关系模式分解的另一个重要准则。

它描述了一个关系模式中两个属性之间的关系,其中一个属性的值可以确定另一个属性的多个值。

具体来说,如果在一个关系模式R中,属性集X的值决定着属性集Y的多个值,我们可以表示为X->>Y。

其中,X称为多值依赖的左侧,Y称为多值依赖的右侧。

在关系模式分解过程中,我们需要将多值依赖的左侧属性集作为一个新的关系模式的主键,并将多值依赖的右侧属性集作为新的关系模式的属性。

多值依赖的准则包括:非平凡多值依赖:如果一个多值依赖X->>Y满足以下条件,我们称之为非平凡多值依赖:X与Y没有公共属性。

经验模式分解

经验模式分解

经验模式分解摘要近些年来,随着计算机技术的高速发展与信号处理技术的不断提高,人们对图像的分析结构的要求也越来越高。

目前图像处理已经发展出很多分支,包括图像分割、边缘检测、纹理分析、图像压缩等.经验模式分解(EMD)是希尔伯特—黄变换(Hilbert—HuangTransform)中的一部分,它是一种新的信号处理方法,并且在非线性、非平稳信号处理中取得了重大进步,表现出了强大的优势与独特的分析特点.该方法主要是将复杂的非平稳信号分解成若干不同尺度的单分量平稳信号与一个趋势残余项,所以具有自适应性、平稳化、局部性等优点。

鉴于EMD方法在各领域的成功应用以及进一步的发展,国内外很多学者开始将其扩展到了二维信号分析领域中,并且也取得的一定的进展.但是由于二维信号不同于一种信号,限于信号的复杂性和二维数据的一些处理方法的有限性,二维经验模式分解(BEMD)在信号分析和处理精度上还存在一些问题,这也是本文要研究和改善的重点.关键词:图像处理;信号分解;BEMDAbstractIn recent years,with the rapid development of computer technology and the continuous improvement of signal processing technology,the demand for the analysis structure of the image is becoming more and more high. At present, many branches have been developed in image processing, including image segmentation, edge detection,texture analysis, image compression and so on。

Empirical mode decomposition (EMD) is a part of Hilbert Huang transform (Hilbert—HuangTransform). It is a new signal processing method, and has made significant progress in nonlinear and non—stationary signal processing, showing strong advantages and unique analysis points。

模式分解算法

模式分解算法

函数依赖的公理系统:设有关系模式R(U),X,Y,Z,W均是U的子集,F是R上只涉及到U中属性的函数依赖集,推理规则如下:∙自反律:如果Y X U,则X→Y在R上成立。

∙增广律:如果X→Y为F所蕴涵,Z U,则XZ→YZ在R上成立。

(XZ表示X∪Z,下同)∙传递律:如果X→Y和Y→Z在R上成立,则X→Z在R上成立。

以上三条为Armstrong公理系统∙合并律:如果X→Y和X→Z成立,那么X→YZ成立。

∙伪传递律:如果X→Y和WY→Z成立,那么WX→Z成立。

∙分解律:如果X→Y和Z Y成立,那么X→Z成立。

这三条为引理注意:∙函数依赖推理规则系统(自反律、增广律和传递律)是完备的。

∙由自反律所得到的函数依赖均是平凡的函数依赖。

模式分解的几个重要事实:∙若只要求分解具有“无损连接性”,一定可以达到4NF;∙若要求分解要“保持函数依赖”,可以达到3NF,但不一定能达到BCNF;∙若要求分解既要“保持函数依赖”,又要具有“无损连接性”,可以达到3NF,但不一定能达到BCNF;试分析下列分解是否具有无损联接和保持函数依赖的特点:设R(ABC),F1={A→B} 在R上成立,ρ1={AB,AC}。

首先,检查是否具有无损联接特点:第1种解法--算法4.2:(1) 构造表(2)根据A→B进行处理结果第二行全是a行,因此分解是无损联接分解。

第2种解法:(定理4.8)R1(AB)∩R2(AC)=AR2- R1=B∵A→B,∴该分解是无损联接分解。

然后,检查分解是否保持函数依赖πR1(F1)={A→B,以及按自反率推出的一些函数依赖}πR2(F1)={按自反率推出的一些函数依赖}F1被πR1(F1)所蕴涵,∴所以该分解保持函数依赖。

保持函数依赖的模式分解一、转换成3NF的保持函数依赖的分解算法:ρ={R1<U1,F1>,R2<U2,F2>,...,R k<U k,F k>}是关系模式R<U,F>的一个分解,U={A1,A2,...,An},F={FD1,FD2,...,FDp},并设F是一个最小依赖集,记FDi为X i →Alj,其步骤如下:① 对R<U,F>的函数依赖集F进行极小化处理(处理后的结果仍记为F);② 找出不在F中出现的属性,将这样的属性构成一个关系模式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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 ki π=Y ╞ F ,那么称分解ρ保持函数依赖集F 。

根据定义1,测试一个分解是否保持FD ,比较可行的方法是逐步验证F 中的每个FD 是否被)(1F R i ki π=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;R2(Y),其中Y=U-Z,主码仍为W,外码是X(参照R1)利用外码和主码的连接可以从R1和R2重新得到R。

如果R1和R2还不是3NF,则重复上述过程,一直到数据库模式中的每个关系模式都是3NF为止。

案例3:进而把案例2的R分解成3NF模式集,并说明理由。

算法3. 分解成3NF模式集的合成算法无损分解,且保持依赖地分解成3NF模式集。

(1)对于关系模式R和R上成立的FD集F,先求出F 的最小依赖集,然后再把最小依赖集中那些左部相同的FD用合并性合并起来。

(2)对最小依赖集中,每个FD X→Y去构成一个模式XY。

(3)在构成的模式集中,如果每个模式都不包含R的侯选码,那么把侯选码作为一个模式放入模式集中。

这样得到的模式集是关系模式R的一个分解,并且这个分解即是无损分解,又保持了FD。

案例4:设关系模式R(ABCDE),R的最小依赖集为{A→B,C→D}。

从依赖集可知,R 的侯选码为ACE。

先根据最小依赖集,可知,ρ={ AB,CD},然后再加入由侯选码组成的模式ACE。

因此最后结果ρ={AB,CD,ACE}是一个即保持FD又具有无损分解性。

课后练习题:简述函数依赖集G是最小依赖集所需满足的几个条件。

解: (1)G中每个FD的右边都是单属性;(2)G中没有冗余的F,即G中不存在这样的函数依赖X→Y,使得G —| X→Y| 与G 等价;(3)G中每个FD的左边没有冗余的属性,即G中不存在这样的函数依赖X→Y,X有真子集W,使得G-|X→Y| U |W→Y| 与G等价。

关系模式R(ABCDE)上FD集为F,并且F={A→BC,CD→E,B→D,E→A},求R的候选健及B+。

解:函数依赖中的只在左边出现的属性:无;只在右边出现的属性:无;左右都没出现的属性:无左右都出现的属性:A,B,C,D,EA的闭包:A+为ABCDE=U, 即A是候选码;E的闭包:E +为ABCDE=U, E是候选码。

CD的闭包:CD+为ABCDE =U,CD是候选码。

B的闭包B+:令U0=B, 在依赖中,找到B→D,U1=U0 ∪ D = BD, 依赖中,左边为B,D,或BD的没有了,即B+ =BD案例:设有一个反应公司职工相关信息的关系模式:R(职工号,职工名,部门号,工资,部门名,部门主任,社团名,社团角色)如果规定:职工号、部门号惟一;每个部门有多名职工,每名职工在固定的部门;每个部门有一个部门主任;每个职工可以参加多个社团,并且在社团中承担一定的角色,每个社团有多名职工。

(1)根据上述规定,写出模式R的基本FD和关键码。

解:R基本FD: 职工号→职工名,职工号→部门号,部门号→部门名,部门号→部门主任,(职工号,社团号)→社团角色R关键码为:(职工号,社团号)(2)R最高达到第几范式,并说明理由。

解:最高达到1NF,因为在函数依赖中存在“职工号→职工名”,且候选码是(职工号,社团号),存在非主属性对码的部分函数依赖。

(3)将R规范到3NF。

解:按照左部相同原则将FD分组:(1): 职工号→职工名,职工号→部门号(2):部门号→部门名,部门号→部门主任(3):(职工号,社团号)→社团角色将上述每组中涉及的属性组成一个关系模式如下所示:R1(职工号,职工名,部门名)R2(部门号,部门名,部门主任)R3(职工号,社团号,社团角色)42.设有一个反映球队及球队队员每场比赛进球数的关系模式:R(队员编号,队员名,比赛场次,进球数,球队名,教练名)如果规定每个队员只能属于一个球队,每个球队只有一个教练,队员名可能重复。

(1)试写出关系模式R的基本FD和关键码。

解:FD:队员号→球队名,队员号→队员名,球队名→教练名,队员号→教练名,(队员号,比赛场次)→进球数关键码为:(队员号,比赛场次)(2)说明R不是2NF模式的理由,并把R分解成2NF模式集。

由依赖(队员号,比赛场次)→队员名;队员号→队员名,可知,存在非主属性对码的部分依赖。

分解成2NF 为:R1(队员号,队员名,球队名,教练名)和R2(队员号,比赛场次,进球数) (3)进而把R分解成3NF模式集,并说明理由。

按照分解3NF分解算法:R1(队员号,队员名,球队名,教练名)存在队员号→教练名是非主属性对码的传递依赖。

把R1进行分解,分为R11,R12。

R11(球队名,教练名),主码是球队名;R12(队员号,队员名,球队名),主码是队员号。

R11,R12与R2一起是把R分解3NF模式的一个分解。

把R分解3NF :合成算法:●最小依赖集F:队员号→球队名,队员号→队员名,球队名→教练名,(队员号,比赛场次)→进球数,再把F中那些左部相同的FD用合并性合并起来。

把队员号→球队名,队员号→队员名合并:队员号→球队名队员名;F变为:队员号→球队名队员名,球队名→教练名,(队员号,比赛场次)→进球数,由F可知,侯选码为“队员号,比赛场次”●对F中每个FD,X→Y去构成一个模式 XY。

R1(队员号,队员名,球队名);R2(球队名,教练名);R3(队员号,比赛场次,进球数)●R3中包含侯选码“队员号,比赛场次”,就不用单独把侯选码作为一个模式放入模式集中。

39.设有一个反映学生及其所选课程信息的关系模式:R(学生号,学生名,学生系别,系办公地点,课程号,课程名,授课教师,成绩)如果规定:学生号、课程号惟一;每门课程只有一位授课教师;每个系的办公地点固定。

学生名和课程名有可能重复。

每个学生可以选修多门课程,每门课程可以有多个学生选修;学生选修课程最终会有选修成绩。

问题(1)根据上述规定,写出模式R的基本FD和关键码。

解:R的基本函数依赖FD 有:学号→学生名,学号→学生系别,学生系别→系办公地点,课程号→课程名,课程号→授课教师,(学号,课程号)→成绩问题(2)R最高达到第几范式,并说明理由。

解:R最高达到第一范式,因为该关系模式中码是(学号,课程号),其中,学号→学生名,(学号,课程号)→学生名,可知存在非主属性学生名部分依赖于码(学号,课程号)。

问题(3)将R规范到3NF。

解:将关系R的函数依赖集FD进行极小化处理,得到的极小函数依赖集,即本题的基本函数依赖。

将这些函数依赖按具有相同左部的原则分组,可分为如下四组:Z1: 学号→学生名,学号→学生系别,涉及的属性集为(学号,学生名,学生系别)Z2: 学生系别→系办公地点,涉及的属性集为(学生系别,系办公地点)Z3: 课程号→课程名,课程号→授课教师,涉及的属性集为(课程号,课程名,授课教师)Z4:(学号,课程号)→成绩,涉及的属性集为(学号,课程号,成绩)因此,根据算法,以上各个属性集构成的关系模式即满足第3范式。

将R分解的关系模式如下所示:学生(学号,学生名,学生系别)系(学生系别,系办公地点)课程(课程号,课程名,授课教师)选修(学号,课程号,成绩)。

相关文档
最新文档