关于关系数据库模式分解与范式的总结

关于关系数据库模式分解与范式的总结
关于关系数据库模式分解与范式的总结

1.关系模式设计不规范会带来一系列的问题

数据冗余

更新异常

插入异常

删除异常

因此需要一个标准的模式来解决这些问题,引入模式分解来解决存在问题。

2.无损连接的概念比较好懂,就是要保证模式分解后仍然可以根据分解后的关系回退回分解前。这可以保证分解过程没有丢失信息,不会破坏和更改已经存在的。

而检验无损连接的方法分为两种:

①当R分解为两个关系模式R1和R2时,有一种简便的方法可以测试无损连接性

p={R1,R2}

p是无损连接的分解当且仅当下面之一满足

(R1 ∩R2)→(R1-R2)

(R1 ∩R2)→(R2-R1)

其中R1 ∩R2指模式的交,返回公共属性

R2-R1表示模式的差集,返回属于R2但不属于R1的属性集

也可以理解为R1∩R2的结果是R的超码,即该结果可以推出全部R属性。

②当R分解为多个关系模式时,可以使用chase算法:

举个栗子

R(A,B,C,D,E)

R1(A,D), R2(A,B), R3(B,E), R4(C,D,E), R5(A,E)

F={A→C, B→C, C→D, DE→C, CE→A}

判断R分解为p={R1,R2,R3,R4,R5}是否是无损连接的分解?第一步,构造初始表。

第二步,处理表

A→C:将b23,b53改为b13

B→C:将b33改为b13

C→D:将b24,b34,b54改为a4

DE→C:将第3行和第5行的C改为a3

CE→A:将第3行和第4行的A改为a1

处理后BE行将全变为a,证明为无损连接。

3.函数依赖(FD)的表现形式是x→y,可以根据函数的概念理解,当x属性的值相同时,可以断定y也一定相同。在实际关系模式中,x与y会存在逻辑上的相关性,如一个学号会对应一个姓名。要理解函数依赖是关系模式的内涵,保持函数依赖才能保持关系模式中存在的关系。

举个栗子:

R(city, street, zip), F={(city,street)→zip, zip→city}

分解为p={R1(street,zip),R2(city,zip)}

在R1中插入(’a’,’100081’)和(’a’,’100082’)

R2中插入(’Beijing’,’100081’)和(’Beijing’,’100082’)

R1∞R2:得到

违反了(city,street)→zip,因为它被丢失了,语义完整性被破坏。

4.范式是满足特定要求的模式,也就是我们追求的标准。使关系模式符合某种范式可以容易验证其合理性并解决或规避最开始提及的那些问题。

1NF:对于关系模式R的任一实例,其元组的每一个属性值都只含有一个值,则R符合1NF。1NF是关系的基本要求。R不满足1NF会带来更新时的二义性。

2NF:(假定R只有一个候选码,且该候选码为主码)当且仅当R属于1NF,且R的每一个非主属性都完全函数依赖于主码时,R 符合2NF。(完全函数依赖:对于函数依赖W→A,若不存在X∈W,并且X→A成立,则称W→A为完全函数依赖,否则为局部函数依赖。即非主属性只能由全部主码推出,不能由部分主码推出。)

3NF:(假定R只有一个候选码,且该候选码为主码)当且仅当R属于2NF,且R的每一个非主属性都不传递依赖于主码时,R 符合3NF。(传递依赖:若Y→X,X→A,并且X →Y,A不是X的子集,则称A传递依赖于Y)

BCNF:如果关系模式R的所有不平凡的、完全的函数依赖的决定因素(左边的属性集)都是候选码,则R符合BCNF。(用于解决存在多组候选码的情况)

介绍几个模式分解的算法。

保持函数依赖分解到3NF的算法:

求出R的最小函数依赖集(仍记为F)

把所有不在F中出现的属性组成一个关系模式R’,并在U中去掉这些属性(剩余属性仍记为U)

若F中存在X →A,且XA=U, 则输出R(U)和R’,算法结束,否则

对F按相同的左部分组,将所有X →A1, X →A2,…, X →Ak形式的FD分为一组,并将每组涉及的所有属性作为一个关系模式输出。若某个关系模式Ri的属性集是另一个关系模式的属性集的子集,则在结果中去掉Ri。设最后得到关系模式R1,R2,…,Rk,则

p={R1,R2,…,Rk,R’}一个保持函数依赖的分解,并且满足3NF。

举个栗子:

R(ABCDEF), F={A→B,AC→E}

求最小FD集F={A→B,AC→E}

R’(DF)

按左部分组: R1(AB), R2(ACE)

p={R’(DF), R1(AB), R2(ACE)}

保持函数依赖和无损连接分解到3NF的算法:

首先用算法1求出R的保持函数依赖的3NF分解,设为q={R1,R2,…,Rk}

设X是R的主码,求出p=q {R(X)}

若X是q中某个Ri的子集,则在p中去掉R(X)

得到的p就是最终结果

举个例子:

R(S#,SN,P,C,S,Z),

F={S#→SN,S#→P,S#→C,S#→S ,S#→Z,{P,C,S}→Z, Z→P,Z→C}?

求出最小FD集:F={S# →SN, S# →P,S# →C, S#→S, {P,C,S} →Z, Z →P,Z →C} // S# →Z冗余

q={R1(S#,SN,P,C,S), R2(P,C,S,Z), R3(Z,P,C)}

R3是R2的子集,所以去掉R3

q={R1(S#,SN,P,C,S), R2(P,C,S,Z)}

R的主码为S#,于是

p=q U {R(X)}={R1(S#,SN,P,C,S), R2(P,C,S,Z), R(S#)}

因为{S#}是R1的子集,所以从p中去掉R(S#)

p ={R1(S#,SN,P,C,S), R2(P,C,S,Z)}即最终结果 .

无损连接分解为BCNF算法:

输入:R; 输出:p

p:={R};

检查p中各关系模式是否都属于BCNF,若是,则算法终止

设p中S(Us)非BCNF关系模式,则必存在X→A,其中X不是S的超码;

将S分解为S1(XA)和S2(Us-A),此分解是无损联接的;//({XA} {Us-A}=X)→(A={XA}-{Us-A})

p:={p-S} {S1, S2};//用S1和S2替换p中的S

转到第2步;

由于U的属性有限,因此有限次循环后算法终止。

举个例子:

R(S#,C#,G,TN,D),

F={{S#,C#} →G, C#→TN, TN→D}

p:={R};

TN→D不满足BCNF定义,分解R

p:={R1(S#,C#,G,TN), R2(TN,D)}

R1中C#→TN不满足BCNF,分解R1为R3和R4

p:={R3(S#,C#,G), R4(C#,TN), R2(TN,D)}

p中各模式均满足BCNF,结束

5.总结所学范式要知道,范式存在是用来解决数据冗余,更新异常,插入异常,删除异常这些实际问题的。在具体的情况中,有些时候我们并不介意数据冗余的问题,范式自然也就不是越严苛越好。关于多值依赖和4NF范式没有继续总结。在具体关系数据库设计时需要灵活运用。

关系数据库理论

第4部分关系数据库理论 复习习题与讲解资料 【主讲教师:钱哨】 一.考试大纲考点要求 1 了解关系模式设计中可能出现的问题及其产生原因以及解决的途径。 2 掌握函数依赖、完全函数依赖、部分函数依赖、传递函数依赖的定义,能计算属性的封闭集,并由此得到关系的候选键。 3 掌握第一范式( 1NF )、第二范式( 2NF )和第三范式( 3NF )的定义,能判别关系模式的范式等级。 4 掌握关系模式的分解(规范到 3NF )的步骤、分解的原则和分解的方法。 二.单项选择题 1. 为了设计出性能较优的关系模式,必须进行规范化,规范化主要的理论依据是()。 A. 关系规范化理论 B. 关系代数理论 C.数理逻辑 D. 关系运算理论 2. 规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每一个属性都是()。 A. 长度不变的 B. 不可分解的 C.互相关联的 D. 互不相关的 3. 已知关系模式R(A,B,C,D,E)及其上的函数相关性集合F={A→D,B→C ,E→ A },该关系模式的候选关键字是()。 A.AB B. BE C.CD D. DE

4. 设学生关系S(SNO,SNAME,SSEX,SAGE,SDPART)的主键为SNO,学生选课关系SC(SNO,CNO,SCORE)的主键为SNO和CNO,则关系R(SNO,CNO,SSEX,SAGE,SDPART,SCORE)的主键为SNO和CNO,其满足()。 A. 1NF B.2NF C. 3NF D. BCNF 5. 设有关系模式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) 6. 关系模式中,满足2NF的模式()。 A. 可能是1NF B. 必定是1NF C. 必定是3NF D. 必定是BCNF 7. 关系模式R中的属性全是主属性,则R的最高范式必定是()。 A. 1NF B. 2NF C. 3NF D. BCNF 8. 消除了部分函数依赖的1NF的关系模式,必定是()。 A. 1NF B. 2NF C. 3NF D. BCNF 9. 如果A->B ,那么属性A和属性B的联系是()。 A. 一对多 B. 多对一 C.多对多 D. 以上都不是 10. 关系模式的候选关键字可以有1个或多个,而主关键字有()。 A. 多个 B. 0个 C. 1个 D. 1个或多个 11. 候选关键字的属性可以有()。 A. 多个 B. 0个 C. 1个 D. 1个或多个 12. 关系模式的任何属性()。 A. 不可再分 B. 可以再分 C. 命名在关系模式上可以不唯一 D. 以上都不是 13. 设有关系模式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分解为三个关系模式W1(C,P),W2(S,C,G),W2(S,T,R,C),则W1的规范化程序最

数据库三大范式讲解

数据库三大范式说明 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。 实质上,设计范式用很形象、很简洁的话语就能说清楚,道明白。本节课将对范式进行通俗地说明,以一个简单论坛的数据库为例来讲解怎样将这些范式应用于实际项目中。 范式说明: 第一范式(1NF): 数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。 很显然,在当前的任何关系数据库管理系统(DBMS)中,傻瓜也不可能做出不符合第一范式的数据库,因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此,你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。 第二范式(2NF): 数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖

于任意一组候选关键字。 假定选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分),关键字为组合关键字(学号, 课程名称),因为存在如下决定关系: (学号, 课程名称) →(姓名, 年龄, 成绩, 学分) 这个数据库表不满足第二范式,因为存在如下决定关系: (课程名称) →(学分) (学号) →(姓名, 年龄) 即存在组合关键字中的字段决定非关键字的情况。 由于不符合2NF,这个选课关系表会存在如下问题: (1) 数据冗余: 同一门课程由n个学生选修,"学分"就重复n-1次;同一个学生选修了m门课程,姓名和年龄就重复了m-1次。 (2) 更新异常: 若调整了某门课程的学分,数据表中所有行的"学分"值都要更新,否则会出现同一门课程学分不同的情况。 (3) 插入异常: 假设要开设一门新的课程,暂时还没有人选修。这样,由于还没有"学号"关键字,课程名称和学分也无法记录入数据库。 (4) 删除异常: 假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是,与此同时,课程名称和学分信息也被删除了。很显然,这也会导致插入异常。 把选课关系表SelectCourse改为如下三个表: 学生:Student(学号, 姓名, 年龄); 课程:Course(课程名称, 学分); 选课关系:SelectCourse(学号, 课程名称, 成绩)。 这样的数据库表是符合第二范式的,消除了数据冗余、更新异常、插入异常和删除异常。 另外,所有单关键字的数据库表都符合第二范式,因为不可能存在组合关键字。

关系数据库设计

目录 一 Codd的RDBMS12法则——RDBMS的起源 二关系型数据库设计阶段 三设计原则 四命名规则 数据库设计,一个软件项目成功的基石。很多从业人员都认为,数据库设计其实不那么重要。现实中的情景也相当雷同,开发人员的数量是数据库设计人员的数倍。多数人使用数据库中的一部分,所以也会把数据库设计想的如此简单。其实不然,数据库设计也是门学问。 从笔者的经历看来,笔者更赞成在项目早期由开发者进行数据库设计(后期调优需要DBA)。根据笔者的项目经验,一个精通OOP和ORM的开发者,设计的数据库往往更为合理,更能适应需求的变化,如果追其原因,笔者个人猜测是因为数据库的规范化,与OO的部分思想雷同(如内聚)。而DBA,设计的数据库的优势是能将DBMS的能力发挥到极致,能够使用SQL和DBMS实现很多程序实现的逻辑,与开发者相比,DBA优化过的数据库更为高效和稳定。如标题所示,本文旨在分享一名开发者的数据库设计经验,并不涉及复杂的SQL语句或DBMS使用,因此也不会局限到某种DBMS产品上。真切地希望这篇文章对开发者能有所帮助,也希望读者能帮助笔者查漏补缺。 一?Codd的RDBMS12法则——RDBMS的起源 Edgar Frank Codd(埃德加·弗兰克·科德)被誉为“关系数据库之父”,并因为在数据库管理系统的理论和实践方面的杰出贡献于1981年获图灵奖。在1985年,Codd 博士发布了12条规则,这些规则简明的定义出一个关系型数据库的理念,它们被作为所有关系数据库系统的设计指导性方针。 1.信息法则?关系数据库中的所有信息都用唯一的一种方式表示——表中的值。 2.保证访问法则?依靠表名、主键值和列名的组合,保证能访问每个数据项。 3.空值的系统化处理?支持空值(NULL),以系统化的方式处理空值,空值不依赖于数据类型。 4.基于关系模型的动态联机目录?数据库的描述应该是自描述的,在逻辑级别上和普通数据采用同样 的表示方式,即数据库必须含有描述该数据库结构的系统表或者数据库描述信息应该包含在用 户可以访问的表中。 5.统一的数据子语言法则?一个关系数据库系统可以支持几种语言和多种终端使用方式,但必须至少 有一种语言,它的语句能够一某种定义良好的语法表示为字符串,并能全面地支持以下所有规 则:数据定义、视图定义、数据操作、约束、授权以及事务。(这种语言就是SQL) 6.视图更新法则?所有理论上可以更新的视图也可以由系统更新。 7.高级的插入、更新和删除操作?把一个基础关系或派生关系作为单个操作对象处理的能力不仅适应 于数据的检索,还适用于数据的插入、修改个删除,即在插入、修改和删除操作中数据行被视 作集合。 8.数据的物理独立性?不管数据库的数据在存储表示或访问方式上怎么变化,应用程序和终端活动都 保持着逻辑上的不变性。 9.数据的逻辑独立性?当对表做了理论上不会损害信息的改变时,应用程序和终端活动都会保持逻辑 上的不变性。 10.数据完整性的独立性?专用于某个关系型数据库的完整性约束必须可以用关系数据库子语言定 义,而且可以存储在数据目录中,而非程序中。

翻译 大型共享数据库的数据关系模型(精选.)

大型共享数据库的数据关系模型 E.F.Codd IBM Research Laboratory,SanJose,California 未来的数据库使用者一定是和数据在机器中的存储(即数据库的内部模式)相隔离的。而通过提示服务来提供信息是一个不太令人满意的解决方法。当数据的内部模式表示发生改变,甚至数据内部表示的多个方面发生改变时,终端用户和大多数应用程序的活动都不会受到影响。因此,查询、更新和报告存储信息类型的自然增长和变动都需要在数据表示中表现出来。 现存的不可推断的、格式化的数据系统给用户提供了树结构的文件或者更一般的网格模式的数据。本文在第一部分讨论这些模式的不足之处。并且会介绍一种基于n元组关系的模式,一种数据库关系的正式形式和通用数据子句的概念。第二部分将讨论一些关系的操作(不是逻辑层面的),并且把这些操作应用于用户模式上解决冗余和一致性问题。 1关系模式和一般模式 1.1简介 这篇文章是关于系统的基本关系原理的应用,这个原理提供了共享大型格式化数据库的方法。除了Childs[1]的文章有介绍外,用于数据库系统的关系的主要应用 还表现在演绎推理型的问-答系统中。Levein和Maron[2]提供了大量关于这个领域的参考资料。 相比之下,这里要解决的问题是一些数据独立性的问题——应用程序和终端活动之于数据类型增长和数据表示变动的独立性,而数据一致性问题即使在非演绎推 理型系统中也是很棘手的。 在目前流行的非推论性系统中,第一部分要介绍的数据的关系视图(或叫做模式)在一些方面似乎优于图模式和网格模式[3,4]。这种模式提供了一种根据数据的自然结构来描述描述数据的方式——也就是说,不用为了数据的机器表示而添加其 他的将结构。因此,这种模式为高水准的数据语言提供了基础,而这种数据语言机 制一方面可以达到最大化程序之间的独立性,另一方面也可以最大化数据的机器表 示和组织之间的独立性。 关系模式更高一级的优势在于它构成了关系处理可导性、冗余性和一致性的坚固基础——这些将在第二部分讨论。另一方面,网络模型产生了一些混淆,尤其是 把连接的源误作为关系的源(见第二部分“连接陷阱”) 最后,关系视图允许对目前格式化数据系统的范围和逻辑限制的更清晰的估算,并且有在单独的系统内竞争数据表示方式的优点(从逻辑的观点)。更清楚的这个观点的示例会在本文中的不同部分中被阐释。但是支持关系模式的系统实现不会讨论。 1.2目前系统的数据相关性 最近发展的信息系统中数据描述表的提供是向数据独立性目标[5,6,7]靠近的重要提高。这些表可以使改变数据库中数据表示的某些特征变得更容易些。但是,许 多数据表示特征可以在不逻辑地削弱一些应用程序的情况下被改变的功能仍受到相 当的限制。更进一步,与用户交互的数据模式仍然有一些散乱的代表性特征,特别

关系数据库设计理论

第6章关系数据库设计理论 本章主要讲解在关系数据库的设计过程中,如何减少数据冗余,避免出现异常,该如何对数据库模式进行中心设计。 1.深入理解函数依赖和键码的概念。学会计算属性的封闭集。 2.模式设计是本章的重点。了解数据冗余和更新异常产生的根源;理解关系模式规范化的途径;准确理解第一范式、第二范式、第三范式和BC范式的含义、联系与区别; 深入理解模式分解的原则;熟练掌握模式分解的方法,能正确而熟练的将一个关系模式分解成属于第三范式或BC范式的模式。 3.了解多值依赖和第四范式的概念,掌握把关系模式分解成属于第四范式的模式的方法。 本章主要的知识点包括: 知识点1 函数依赖 知识点2 模式设计 知识点3 多值依赖 学习要点1、函数依赖 1.1函数依赖的定义 如果关系R的两个元组在属性A1,A2,… An上一致(也就是,两个元组在这些属性所对应的各个分量具有相同的值),则它们在另一个属性B上也一致。那么,我们就说在关系R中属性B函数依赖于属性A1A2…An。记做A1A2…An ,也可以说“A1,A2,…,An函数决定B”。A1A2…An称为决定因素。 举例: 在这个关系中,学号确定后,学生的姓名及所在的系就都确定了。属性中的这种依赖关系就是函数依赖。在本例中存在下列函数依赖。 ?Sno SN ame ?Sno S dept ?S dept Mname ?Sno C name Grade 1.2 关系的键码如一个或多个属性的集合{A1,…,An}满足如下条件,称该集合为关系R的键码: 1. 这些属性函数决定该关系的所有其它属性。 2. {A1,…,An}的任何真子集都不能函数决定R的所有其它属性,键码必须是最小的。 1.3 超键码包含键码的属性集称为“超键码” 。

关系数据库理论

关系数据库理论

————————————————————————————————作者:————————————————————————————————日期:

第4部分关系数据库理论 复习习题与讲解资料 【主讲教师:钱哨】 一.考试大纲考点要求 1了解关系模式设计中可能出现的问题及其产生原因以及解决的途径。 2 掌握函数依赖、完全函数依赖、部分函数依赖、传递函数依赖的定义,能计算属性的封闭集,并由此得到关系的候选键。 3 掌握第一范式(1NF )、第二范式( 2NF )和第三范式(3NF )的定义,能判别关系模式的范式等级。 4 掌握关系模式的分解(规范到3NF )的步骤、分解的原则和分解的方法。 二.单项选择题 1.为了设计出性能较优的关系模式,必须进行规范化,规范化主要的理论依据是( ) 。A. 关系规范化理论 B. 关系代数理论 C.数理逻辑D. 关系运算理论 2. 规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每一个属性都是( ) 。 A. 长度不变的B. 不可分解的 C.互相关联的 D. 互不相关的 3.已知关系模式R(A,B,C,D,E)及其上的函数相关性集合F={A→D,B→C ,E→A },该关系模式的候选关键字是( ) 。 A.AB B. BE C.CDD.DE

4.设学生关系S(SNO,SNAME,SSEX,SAGE,SDPART)的主键为SNO,学生选课关系SC(SNO,CNO,SCORE)的主键为SNO和CNO,则关系R(SNO,CNO,SSEX,SA GE,SDPART,SCORE)的主键为SNO和CNO,其满足( )。 A.1NF B.2NF C.3NF D. BCNF 5. 设有关系模式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) 6.关系模式中,满足2NF的模式( ) 。 A. 可能是1NF B. 必定是1NF C. 必定是3NF D. 必定是BCNF 7.关系模式R中的属性全是主属性,则R的最高范式必定是()。 A. 1NF B. 2NF C. 3NF D. BCNF 8. 消除了部分函数依赖的1NF的关系模式,必定是()。 A.1NF B.2NF C.3NF D. BCNF 9.如果A->B ,那么属性A和属性B的联系是( ) 。 A.一对多B. 多对一 C.多对多D. 以上都不是 10. 关系模式的候选关键字可以有1个或多个,而主关键字有( )。 A.多个B.0个 C.1个D.1个或多个 11.候选关键字的属性可以有()。 A. 多个B. 0个 C.1个D. 1个或多个 12. 关系模式的任何属性()。 A.不可再分 B. 可以再分C. 命名在关系模式上可以不唯一D.以上都不是 13. 设有关系模式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分解为三个关系模式W1(C,P),W2(S,C,G),W2(S,T,R,C),则W1的规范化程序最高达到( )。 A.1NFB.2NF C.3NFD. BCNF

数据库范式理解例题

范式分解 主属性:包含在任一候选关键字中的属性称主属性。 非主属性:不包含在主码中的属性称为非主属性。 函数依赖: 是指关系中一个或一组属性的值可以决定其它属性的值。函数依赖正象一个函数y = f(x) 一样,x的值给定后,y的值也就唯一地确定了。 如果属性集合Y中每个属性的值构成的集合唯一地决定了属性集合X中每个属性的值构成的集合,则属性集合X函数依赖于属性集合Y,计为:Y→X。属性集合Y中的属性有时也称作函数依赖Y→X的决定因素(determinant)。例:身份证号→姓名。 部分函数依赖: 设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。 完全函数依赖: 在R(U)中,如果Y函数依赖于X,并且对于X的任何一个真子集

X',都有Y不函数依赖于X',则称Y对X完全函数依赖。否则称Y对X部分函数依赖。 【例】; 举个例子就明白了。假设一个学生有几个属性 SNO 学号SNAME 姓名SDEPT系 SAGE 年龄CNO 班级号G 成绩 对于(SNO,SNAME,SDEPT,SAGE,CNO,G)来说,G完全依赖于(SNO, CNO), 因为(SNO,CNO)可以决定G,而SNO和CNO都不能单独决定G。 而SAGE部分函数依赖于(SNO,CNO),因为(SNO,CNO)可以决定SAGE,而单独的SNO也可以决定SAGE。 传递函数依赖: 设R(U)是属性集U上的关系,x、y、z是U的子集,在R(U)中,若x→y,但y→x,若y→z,则x→z,称z传递函数依赖于x,记作X→TZ。 如果X->Y, Y->Z, 则称Z对X传递函数依赖。 计算X+ (属性的闭包)算法: a.初始化,令X+ = X; b.在F中依次查找每个没有被标记的函数依赖,若“左边属

第二章 关系数据库基本原理

第二章关系数据库基本原理 一、选择题 1.关系数据表的关键字可由()字段组成。 A、一个 B、两个 C、多个 D、一个或多个 2.下列关于关系数据库叙述错误的是()。 A、关系数据库的结构一般保持不变,但也可根据需要进行修改 B、一个数据表组成一个关系数据库,多种不同的数据则需要创建多个数据库 C、关系数据表中的所有记录的关键字字段的值互不相同 D、关系数据表中的外部关键字不能用于区别该表中的记录 3.参照完整性规则:表的()必须是另一个表的主键的有效值,或者是空值。 A、候选键 B、外键 C、主键 D、主属性 4.关系数据库规范化是为了解决关系数据库中的()问题而引入的。 A、插入、删除和数据冗余 B、提高查询速度 C、减少数据操作的复杂性 D、保证数据的安全性和完整性 5.关系数据库是若干()的集合。 A、表(关系) B、视图 C、列 D、行 6.在关系模式中,实现“关系中不允许出现相同的元组”的约束是()约束。 A、候选键 B、主键 C、键 D、超键 7.约束“年龄限制在18~30岁之间”属于DBMS的()功能。 A、安全性 B、完整性 C、并发控制 D、恢复 8.反映现实世界中实体及实体间联系的信息模型是()。 A、关系模型 B、层次模型 C、网状模型 D、E-R模型 9.关系数据模型的3个组成部分中,不包括()。 A、完整性规则 B、数据结构 C、数据操作 D、并发控制 10.如何构造出一个合适的数据逻辑结构是()主要解决的问题。 A、关系数据库优化 B、数据字典 C、关系数据库规范化理论 D、关系数据库查询 11.学生社团可以接纳多名学生参加,但每个学生只能参加一个社团,从社团到学生之间的 联系类型是()。 A、多对多 B、一对一 C、多对一 D、一对多 12.关系模式的任何属性()。 A、不可再分 B、可以再分 C、命名在关系模式上可以不唯一 D、以上都不是 13.一个m:n联系转换为一个关系模式。关系的关键字为()。 A、某个实体的关键字 B、各实体关键字的组合 C、n端实体的关键字 D、任意一个实体的关键字 14.候选关键字的属性可以有()。 A、多个 B、0个 C、1个 D、1个或多个 15.关系模型中有三类完整性约束:实体完整性、参照完整性和域完整性。定义外部关键字 实体的是哪一类完整性()? A、实体完整性 B、域完整性 C、参照完整性 D、实体完整性、参照完整性和域完整性 16.设已知F={C→A,CG→D,CG→B,CE→A,ACD→B},从中去掉哪些函数依赖关系后得到 的新的函数依赖集合F1与F是等价的()。

关于关系数据库模式分解与范式的总结

1.关系模式设计不规范会带来一系列的问题 数据冗余 更新异常 插入异常 删除异常 因此需要一个标准的模式来解决这些问题,引入模式分解来解决存在问题。 2.无损连接的概念比较好懂,就是要保证模式分解后仍然可以根据分解后的关系回退回分解前。这可以保证分解过程没有丢失信息,不会破坏和更改已经存在的。 而检验无损连接的方法分为两种: ①当R分解为两个关系模式R1和R2时,有一种简便的方法可以测试无损连接性 p={R1,R2} p是无损连接的分解当且仅当下面之一满足 (R1 ∩R2)→(R1-R2) (R1 ∩R2)→(R2-R1) 其中R1 ∩R2指模式的交,返回公共属性 R2-R1表示模式的差集,返回属于R2但不属于R1的属性集 也可以理解为R1∩R2的结果是R的超码,即该结果可以推出全部R属性。 ②当R分解为多个关系模式时,可以使用chase算法:

举个栗子 R(A,B,C,D,E) R1(A,D), R2(A,B), R3(B,E), R4(C,D,E), R5(A,E) F={A→C, B→C, C→D, DE→C, CE→A} 判断R分解为p={R1,R2,R3,R4,R5}是否是无损连接的分解?第一步,构造初始表。

第二步,处理表 A→C:将b23,b53改为b13 B→C:将b33改为b13 C→D:将b24,b34,b54改为a4 DE→C:将第3行和第5行的C改为a3 CE→A:将第3行和第4行的A改为a1 处理后BE行将全变为a,证明为无损连接。 3.函数依赖(FD)的表现形式是x→y,可以根据函数的概念理解,当x属性的值相同时,可以断定y也一定相同。在实际关系模式中,x与y会存在逻辑上的相关性,如一个学号会对应一个姓名。要理解函数依赖是关系模式的内涵,保持函数依赖才能保持关系模式中存在的关系。 举个栗子: R(city, street, zip), F={(city,street)→zip, zip→city} 分解为p={R1(street,zip),R2(city,zip)} 在R1中插入(’a’,’100081’)和(’a’,’100082’)

第二章--关系数据库习题

第二章关系数据库 一、选择题: 1、对于关系模型叙述错误的是。 A.建立在严格的数学理论、集合论和谓词演算公式基础之一 B.微机DBMS绝大部分采取关系数据模型 C.用二维表表示关系模型是其一大特点 D.不具有连接操作的DBMS也可以是关系数据库管理系统 2、关系模式的任何属性。 A.不可再分B.可再分 C.命名在该关系模式中可以不唯一D.以上都不是 3、在通常情况下,下面的表达中不可以作为关系数据库的关系的是。 A.R1(学号,姓名,性别) B.R2(学号,姓名,班级号) C.R3(学号,姓名,宿舍号) D.R4(学号,姓名,简历) 4、关系数据库中的码是指。 A.能唯一关系的字段B.不能改动的专用保留字 C.关键的很重要的字段D.能惟一表示元组的属性或属性集合 5、根据关系模式的完整性规则,一个关系中的“主码”。 A.不能有两个B.不能成为另外一个关系的外码 C.不允许为空D.可以取值 6、关系数据库中能唯一识别元组的那个属性称为。 A.唯一性的属性B.不能改动的保留字段 C.关系元组的唯一性D.关键字段 7、在关系R(R#,RN,S#)和S(S#,SN,SD)中,R的主码是R#,S的主码是S#,则S#在R中称为。A.外码B.候选码 C.主码D.超码 8、关系模型中,一个码是。 A.可由多个任意属性组成 B.至多由一个属性组成 C.可由一个或多个其值能唯一标识该关系模式中任意元组的属性组成 D.以上都不是 9、一个关系数据库文件中的各条记录。 A.前后顺序不能任意颠倒,一定要按照输入的顺序排列 B.前后顺序可以任意颠倒,不影响库中的数据关系 C.前后顺序可以任意颠倒,但排列顺序不同,统计处理的结果可能不同 D.前后顺序不能任意颠倒,一定要按照码段的顺序排列 10、关系数据库管理系统应能实现的专门关系运算包括。 A.排序、索引、统计B.选择、投影、连接 C.关联、更新、排序D.显示、打印、制表 11、同一个关系模型的任意两个元组值。 A.不能全同B.可全同 C.必须全同D.以上都不是 12、自然连接是构成新关系的有效方法。一般情况下,当对关系R和S使用自然连接时,要求R和S含有一个或多个共有的。 A.元组B.行 C.记录D.属性 13、设关系R(A,B,C)和S(B,C,D),下列各关系代数表达式不成立的是。 A. ) ( ) (S R D A π π>< B.R S ? C. ) ( ) (S R B B π π? D.R>

数据库中三个范式的理解

什么是范式 简单的说,范式是为了消除重复数据减少冗余数据,从而让数据库内的数据更好的组织,让磁盘空间得到更有效利用的一种标准化标准,满足高等级的范式的先决条件是满足低等级范式。(比如满足2nf一定满足1nf) DEMO 让我们先从一个未经范式化的表看起,表如下: 先对表做一个简单说明,employeeId是员工id,departmentName是部门名称,job代表岗位,jobDescription是岗位说明,skill是员工技能,departmentDescription是部门说明,address是员工住址 对表进行第一范式(1NF) 如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。 简单的说,第一范式就是每一个属性都不可再分。不符合第一范式则不能称为关系数据库。对于上表,不难看出Address是可以再分的,比如”北京市XX路XX小区XX号”,着显然不符合第一范式,对其应用第一范式则需要将此属性分解到另一个表,如下:

对表进行第二范式(2NF) 若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则R∈2NF 简单的说,是表中的属性必须完全依赖于全部主键,所以只有一个主键的表如果符合第一范式,那一定是第二范式,而不是部分主键。这样做的目的是进一步减少插入异常和更新异常。在上表中,departmentDescription是由DepartmentName所决定,但却不能由EmployeeID 决定,故要departmentDescription对主键是部分依赖,对其应用第二范式如下表: 对表进行第三范式(3NF)

关系模式R 中若不存在这样的码X、属性组Y及非主属性Z(Z Y), 使得X→Y,Y→Z,成立,则称R ∈ 3NF。 简单的说,第三范式是为了消除数据库中关键字之间的依赖关系,在上面经过第二范式化的表中,可以看出jobDescription(岗位职责)是由job(岗位)所决定,则jobDescription依赖于job,可以看出这不符合第三范式,对表进行第三范式后的关系图为: 上表中,已经不存在数据库属性互相依赖的问题,所以符合第三范式

数据库中多对多的关系设计

数据库中多对多的关系设计 数据库设计多对多关系的几种形态 前言:多对多关系至少需要3个表,我们把一个表叫做主表,一个叫做关系表,另外一个叫做字典表或者副表(字典表是纪录比较少,而且基本稳定的,例如:版块名称;副表是内容比较多,内容变化的,例如)。 按照数据库的增删查改操作,多对多关系的查找都可以用inner join或者select * from 主表where id in (select 主表id from 关系表) 1,角色任命型 特点:关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键,有一个表是字典类型的表。 界面特点:显示主表,用checkbox或多选select设置多选关系。 例如:任命版主(用户表-关系表-版块名称表),角色权限控制等,用户是5个版块版主,只要关系表5行纪录就可以确立,关系表的两个外键具有联合主键性质。 增加关系:如果没有组合纪录,insert之。 删除关系:如果有组合纪录,删除之。 2,集合分组型 特点:同角色任命型类似,关系表两外键组合无重复纪录,关系表一般不需要时间字段和主

键。区别是主副表都不是字典表,可能都很大不固定。 界面特点:显示主表,用搜索代替简单的checkbox或多选select,或者一条一条的添加。例如:歌曲专集(专集表-关系表-歌曲表)。手机分组(分组表-关系表-手机表)。用户圈子(圈子表-关系表-用户表)。文章标签(文章表-关系表-标签表) 增加关系:同版主任命型。 删除关系:同版主任命型。 3,明细帐型 特点:关系表可以有重复纪录,关系表一般有时间字段,有主键,可能还有文字型的字段用来说明每次发生关系的原因(消费)。 界面特点:显示关系表,用radio或下拉设置单选关系。 例如:现金消费明细帐或订单(用户表-订单表-消费原因表),用户可能多次在同一事情上重复消费。积分变化纪录也属于这类。 增加关系:不管有没有组合纪录,insert之,纪录时间。 删除关系:根据关系表PK删除。 4,评论回复型 特点:同明细帐型关系表一般有时间字段,有主键,区别是重点在文字型的字段用来说明每次发生关系的内容(评论回复)。 界面特点:回复文本框。

数据库中表之间的关系

数据库中表之间的关系 表关系(一对一,一对多,多对多) 收藏 可以在数据库图表中的表之间创建关系,以显示一个表中的列与另一个表中的列是如何相链接的。 在一个关系型数据库中,利用关系可以避免多余的数据。例如,如果设计一个可以跟踪图书信息的数据库,您需要创建一个名为 titles 的表,它用来存储有关每本书的信息,例如书名、出版日期和出版社。您也可能保存有关出版社的信息,诸如出版社的电话、地址和邮政编码。如果您打算在 titles 表中保存所有这些信息,那么对于某出版社出版的每本书都会重复该出版社的电话号码。 更好的方法是将有关出版社的信息在单独的表,publishers,中只保存一次。然后可以在 titles 表中放置一个引用出版社表中某项的指针。 为了确保您的数据同步,可以实施 titles 和 publishers 之间的参照完整性。参照完整性关系可以帮助确保一个表中的信息与另一个表中的信息相匹配。例如,titles 表中的每个书名必须与 publishers 表中的一个特定出版社相关。如果在数据库中没有一个出版社的信息,那么该出版社的书名也不能添加到这个数据库中。 为了更好地理解表关系,请参阅: 定义表关系 实施参照完整性 定义表关系 关系的确立需要通过匹配键列中的数据(通常是两表中同名的列)。在大多数情况下,该关系会将一个表中的主键(它为每行提供了唯一标识)与另一个表的外部键中的某项相匹配。例如,通过创建 titles 表中的 title_id(主键)与 sales 表中的 title_id 列(外部键)之间的关系,则销售额就与售出的特定书名相关联了。 表之间有三种关系。所创建关系的类型取决于相关列是如何定义的。 一对多关系 多对多关系

数据库范式与关系模式示例

第七章补充讲义一、式举例 例1:已知R,请问R为几式? BCNF。(25改成15还是BCNF.如:课程号与学号) 例2:已知R,请问R为几式? 2NF。有部分依赖。

例3:已知R,请问R为几式? BCNF。 例4:R(X,Y,Z),F={XY->Z},R为几式? BCNF。 例5:R(X,Y,Z),F={Y->Z,XZ->Y},R为几式? 3NF。R的候选码为{XZ,XY},(R中所有属性都是主属性,无传递依赖) 二、求闭包 数据库设计人员在对实际应用问题调查中,得到的结论往往是零散的、不规的(直观问题好办,复杂问题难办了),所以,这对分析数据模型,达到规化设计要求,还有差距,为此,从规数据依赖集合的角度入手,找到正确分析数据模型的方法,以确定关系模式的规化程度。 例1.已知关系模式R(U、F),其中,U={A,B,C,D,E}; F={AB→ C, B→ D, EC → B , AC→B} ,

求(AB)+F. 解:设X(0)=AB ○1计算X(1),在F中找出左边为AB子集的FD,其结果是:AB→C,B→D ∴X(1)=X(0)UB=ABUCD=ABCD 显然,X(1)≠X(0) ○2计算X(2),在F中找出左边为ABCD子集的FD,其结果是:C→E,AC→B ∴X(2)=X(1)UB=ABCDUBE=ABCDE 显然,X(2)=U 所以,(AB)+ F=ABCDE.(等于U,所以AB是唯一候选关键字) 例2.设有关系模式R(U、F),其中U={A,B,C,D,E,I};F={A→D,AB→E,B→E,CD→I,E→C},计算(AE)+ 解:令X={AE},X(0)=AE ○1在F中找出左边是AE子集的FD,其结果是:A→D,E→C ∴X(1)=X(0)UB=X(0)UDC=ACDE 显然,X(1)≠X(0) ○2在F中找出左边是ACDE子集的FD,其结果是:CD→I ∴X(2)=X(1)UI=ACDEI 显然,X(2)≠X(1),但F中未用过的函数依赖的左边属性已含有X(2)的子集,所以不必再计算下去,即(AE)+=ACDEI. 因为,X(3)=X(2),所以,算法结束。 三、求最小依赖集 最小依赖集是对函数依赖集合进行规的结果,这样才能对一般关系模式进行准确分析。 例1.设函数依赖集F={AB→CE,A→C,GP→B,EP→A,CDE→P,HB→P,D→HG,ABC→PG},求与F等价的最小函数依赖集。 解:○1将F中依赖右部属性单一化:

数据库范式(123BCNF范式)详解

数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。 范式说明 1.1 第一范式(1NF)无重复的列 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。 说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。 例如,如下的数据库表是符合第一范式的: 字段1 字段2 字段3 字段4 而这样的数据库表是不符合第一范式的: 字段1 字段2 字段3 字段4 字段3.1 字段3.2 数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。很显然,在当前的任何关系数据库管理系统(DBMS)中,傻瓜也不可能做出不符合第一范式的数据库,因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此,你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。

1.2 第二范式(2NF)属性完全依赖于主键[ 消除部分子函数依赖] 如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键,则称为第二范式模式。 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键、主码。 例如员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是惟一的,因此每个员工可以被惟一区分。 简而言之,第二范式(2NF)就是非主属性完全依赖于主关键字。 所谓完全依赖是指不能存在仅依赖主关键字一部分的属性(设有函数依赖W→A,若存在XW,有X→A成立,那么称W→A是局部依赖,否则就称W→A是完全函数依赖)。如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。 假定选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分),关键字为组合关键字(学号, 课程名称),因为存在如下决定关系: (学号, 课程名称) →(姓名, 年龄, 成绩, 学分) 这个数据库表不满足第二范式,因为存在如下决定关系: (课程名称) →(学分) (学号) →(姓名, 年龄) 即存在组合关键字中的字段决定非关键字的情况。 由于不符合2NF,这个选课关系表会存在如下问题: (1) 数据冗余: 同一门课程由n个学生选修,"学分"就重复n-1次;同一个学生选修了m门课程,姓名和年龄就重复了m-1次。 (2) 更新异常: 若调整了某门课程的学分,数据表中所有行的"学分"值都要更新,否则会出现同一门课程学分不同的情况。

数据库范式与关系模式规范标准示范

第七章补充讲义一、范式举例 例1:已知R,请问R为几范式? BCNF。(25改成15还是BCNF.如:课程号与学号) 例2:已知R,请问R为几范式? 2NF。有部分依赖。

例3:已知R,请问R为几范式? BCNF。 例4:R(X,Y,Z),F={XY->Z},R为几范式? BCNF。 例5:R(X,Y,Z),F={Y->Z,XZ->Y},R为几范式? 3NF。R的候选码为{XZ,XY},(R中所有属性都是主属性,无传递依赖) 二、求闭包 数据库设计人员在对实际应用问题调查中,得到的结论往往是零散的、不规范的(直观问题好办,复杂问题难办了),所以,这对分析数据模型,达到规范化设计要求,还有差距,为此,从规范数据依赖集合的角度入手,找到正确分析数据模型的方法,以确定关系模式的

规范化程度。 例1.已知关系模式R(U、F),其中,U={A,B,C,D,E}; F={AB→ C, B→ D, EC → B , AC→B} ,求(AB)+F. 解:设X(0)=AB ○1计算X(1),在F中找出左边为AB子集的FD,其结果是:AB→C,B→D ∴X(1)=X(0)UB=ABUCD=ABCD 显然,X(1)≠X(0) ○2计算X(2),在F中找出左边为ABCD子集的FD,其结果是:C→E,AC→B ∴X(2)=X(1)UB=ABCDUBE=ABCDE 显然,X(2)=U 所以,(AB)+ F=ABCDE.(等于U,所以AB是唯一候选关键字) 例2.设有关系模式R(U、F),其中U={A,B,C,D,E,I};F={A→D,AB→E,B→E,CD→I,E→C},计算(AE)+ 解:令X={AE},X(0)=AE ○1在F中找出左边是AE子集的FD,其结果是:A→D,E→C ∴X(1)=X(0)UB=X(0)UDC=ACDE 显然,X(1)≠X(0) ○2在F中找出左边是ACDE子集的FD,其结果是:CD→I ∴X(2)=X(1)UI=ACDEI 显然,X(2)≠X(1),但F中未用过的函数依赖的左边属性已含有X(2)的子集,所以不必再计算下去,即(AE)+=ACDEI. 因为,X(3)=X(2),所以,算法结束。

数据库三大范式详解

数据库三大范式详解 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。 第一范式(1NF)无重复的列 所谓第一范式(1NF)是指在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域。 说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的设计基本要求,一般设计中都必须满足第一范式(1NF)。不过有些关系模型中突破了1NF的限制,这种称为非1NF的关系模型。换句话说,是否必须满足1NF的最低要求,主要依赖于所使用的关系模型。 第二范式(2NF)属性 在1NF的基础上,非码属性必须完全依赖于主键[在1NF基础上消除非主属性对主码的部分函数依赖] 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属性组,作为实体的唯一标识。例如在员工表中的身份证号码即可实现每个一员工的区分,该身份证号码即为候选键,任何一个候选键都可以被选作主键。在找不到候选键时,可额外增加属性以实现区分,如果在员工关系中,没有对其身份证号进行存储,而姓名可能会在数据库运行的某个时间重复,无法区分出实体时,设计辟如ID等不重复的编号以实现区分,被添加的编号或ID选作主键。(该主键的添加时在ER设计时添加,不是建库是随意添加) 第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之

相关文档
最新文档