您好,欢迎访问三七文档
数据库原理与应用教程第6章关系数据库理论•6.1函数依赖•6.2关系规范化•6.3关系模式的分解准则6.1函数依赖•定义:如果有一个关系模式R(A1,A2,…,An),X和Y为{A1,A2,…,An}的子集,那么对于关系R中的任意一个X值,都只有一个Y值与之对应,则称X函数决定Y,或Y函数依赖于X。例:Student(Sno,SName,Sdept,Sage)Sno→SName,Sno→Sdept,Sno→Sage例:SC(Sno,Cno,Grade)(Sno,Cno)→Grade一些术语和符号•1.如果X→Y,但Y不包含于X,则称X→Y是非平凡的函数依赖。如不作特别说明,我们总是讨论非平凡函数依赖。•2.如果Y不函数依赖于X,则记作X—/→Y。•3.如果X→Y,则称X为决定因子。•4.如果X→Y,并且Y→X,则记作X←→Y。一些术语和符号(续)•5.如果X→Y,并且对于X的一个任意真子集X’都有X’—/→Y,则称Y完全函数依赖于X,记作:YXf•6.如果X→Y(非平凡函数依赖,并且Y—/→X)、Y→Z,则称Z传递函数依赖于X。如果X’→Y成立,则称Y部分函数依赖于X,记作:YXp示例•例1:有关系模式:SC(Sno,Sname,Cno,Credit,Grade)•则函数依赖关系有:–Sno→Sname–(Sno,Cno)→Sname–(Sno,Cno)→Grade示例•例2:有关系模式:S(Sno,Sname,Dept,Dept_master)•函数依赖关系有:Snoff由于:SnoDept,DeptDept_master所以有:SnoDept_masterSname传递f传递f为什么要讨论函数依赖SnoSdeptSLOCCnoGrade9812101计算机2公寓DB809812101计算机2公寓OS859821101信息1公寓C909821101信息1公寓DS849821102信息1公寓OS78存在问题•数据冗余问题•数据更新问题•数据插入问题•数据删除问题6.2关系规范化•6.2.1关系模式中的码•6.2.2范式6.2.1关系模式中的码1.候选码:设K为R(U,F)中的属性或属性组,若Kf→U,则K为R候选码。(K为决定R全部属性值的最小属性组)。主码:关系R(U,F)中可能有多个候选码,则选其中一个作为主码。全码:候选码为整个属性组。主属性与非主属性:在R(U,F)中,包含在任一候选码中的属性称为主属性,不包含在任一候选码中的属性称为非主属性示例例:SC(SNO,CNO,Grade)候选码:(SNO,CNO),也为主码主属性:SNO,CNO,非主属性:Grade例:教师_课程(教师号,课程号,授课学年)语义:一个教师在一个学年可以讲授多门课程,而且一门课程在一个学年也可以由多个教师讲授,同一个学年可开始多门课程。候选码:(教师号,课程号,授课学年)称这样的表为全码表6.2.1关系模式中的码(续)外码:用于关系表之间建立关联的属性(组)。定义:若R(U,F)的属性(组)X(X属于U)是另一个关系S的主码,则称X为R的外码。6.2.2范式•关系数据库中的关系要满足一定的要求,满足不同程度要求的为不不同的范式。第一范式第一范式:不包含重复组的关系。第二范式•2.第二范式:如果R(U,F)∈1NF,并且R中的每个非主属性都完全函数依赖于主码,则R(U,F)∈2NF•例:S-L-C(Sno,Sdept,SLOC,Cno,Grade)•有:SnoP→SLOC,不是2NF。分解办法•首先,对于组成主码的属性集合的每一个子集,用它作为主码构成一个表。•然后,将依赖于这些主码的属性放置到相应的表中。•最后,去掉只由主码的子集构成的表。分解示例•对于S-L-C表,首先分解为如下形式的三张表:S-L(Sno,…)C(Cno,…)S-C(Sno,Cno,…)•然后,将依赖于这些主码的属性放置到相应的表中S-L(Sno,Sdept,Sloc)C(Cno)S-C(Sno,Cno,Grade)•最后,去掉只由主码的子集构成的表,最终分解为:S-L(Sno,Sdept,Sloc)S-C(Sno,Cno,Grade)S-L(Sno,Sdept,Sloc)存在问题•数据冗余:有多少个学生就有多少个重复的Sdept和SLOC;•插入异常:当新建一个系时,若还没有招收学生,则无法插入;第三范式•定义:如果R(U,F)∈2NF,并且所有非主属性都不传递依赖于主码,则R(U,F)∈3NF。•对S-L(Sno,Sdept,SLOC)∵Sno传递→SLOC,∴不是3NF分解过程•对于不是候选码的每个决定因子,从表中删去依赖于它的所有属性;•新建一个表,新表中包含在原表中所有依赖于该决定因子的属性;•将决定因子作为新表的主码。•S-L分解后的关系模式为:–S-D(Sno,Sdept)–S-L(Sdept,Sloc)总结•3NF消除了很大一部分数据冗余和更新异常,在通常的数据库设计中,一般要求达到3NF即可。•规范化的过程是通过把范式程度低的关系模式分解为若干个范式程度高的关系模式来实现的。•分解的最终目的是使每个规范化的关系只描述一个主题。•规范化的方法是进行模式分解,但要注意的是分解后产生的模式应与原模式等价,即模式分解不能破坏原来的语义,同时还要保证不丢失原来的函数依赖关系。
本文标题:1 关系数据库理论
链接地址:https://www.777doc.com/doc-3362594 .html