- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
例1:有关系R A B C D a1 b1 c1 d1 a1 b1 c1 d1 a2 b2 c3 d3 a3 b1 c4 d4 U = {A,B,C,D} XY {A}——{B} {C}——{A,B} {D}——{A} {D}——{A,B} {C}——{D} {D}——{C} …… 例2: 有一个关于学生选课、教师任课的关系模式: R(S#,SNAME,C#,CNAME, GRADE,TNAME,TAGE)那么可写成下列FD形式: S#→SNAMEC#→CNAME(S#,C#)→GRADEC#→(CNAME,TNAME,TAGE)TNAME→TAGE ?平凡函数依赖----若Y?X,则称X?Y是一个平凡函数依赖; ?完全函数依赖-----若X?Y是一个函数依赖,并且对于任何X’?X,X’ ?Y都不成立,则你X?Y是一个完全函数依赖。 ?传递函数依赖-----如果X,Y,Z?U,若X?Y(又Y?X,Y?X),Y?Z成立,则称Z传递函数依赖于X 。 3. 关系模式的范式(P59) 范式---关系模式所要满足的一些规范(Normal Forms,简记为NF)。范式按等级又分为1NF、2NF、3NF、BCNF等。 关系模式满足1NF是基本条件;满足2NF依然还存在许多缺点;所以一般实际使用的数据库应该在满足3NF以上。 1NF--- 如果关系模式R的每个实例关系r的属性值都是不可分的原子值,那么称R是第一范式(first normal form,简记为1NF)的模式。例:关系R(NAME,ADDRESS,PHONE)如果一个人有两个电话号码(PHONE),那么在关系中至少要出现两个元组,以便存储这两个号码。 (1NF是关系模式应具备的最起码的条件。) 1) 第一范式(1NF) 完全函数依赖 --- 对于FD: W→A,如果存在X是W的真子集,有X→A成立,那么称W→A是局部依赖(A局部依赖于W);否则称W→A是完全函数依赖。 2NF--- 如果关系模式R是1NF,且每个非主属性都完全函数依赖于主码。 2) 第二范式(2NF) 例:设关系R(S#,C#,GRADE,TNAME,TADDR)可见(S#,C#)是R的主码 因为R上有两个FD:(S#,C#)→(TNAME,TADDR)和 C# →(TNAME,TADDR)所以R不是2NF。非主属性 如果把R分解成R1(C#,TNAME,TADDR)R2(S#,C#,GRADE)则,局部依赖(S#,C#)→(TNAME,TADDR)就消失了。R1和R2都满足2NF模式。 算法:分解非2NF模式为2NF模式集算法。 设关系模式R(U),主键是W, Z是非主属性,R上有FD: W→Z ,有X?W, 且X→Z,那么W→Z就是一个局部依赖。此时应把R分解成模式 R1(XZ)和 R2(Y),其中Y=U-Z 。 例:R(S#,C#,GRADE,TNAME,TADDR)因有:(S#,C#)→(TNAME,TADDR)C# →(TNAME,TADDR) 则分解为: R1(C#,TNAME,TADDR)R2(S#,C#,GRADE) 3) 第三范式(3NF) 传递依赖--- 如果X→Y,Y→A,且Y→X和 A∈Y,那么称X→A是传递依赖(A传递依赖于X)。 3NF---R是2NF,且每个非主属性都不传递依赖于R的主码,则R是3NF。 例:R(C#,TNAME,TADDR)是2NF模式, 但存在FD:C#→TNAME,TNAME→TADDR,那么C#→TADDR就是一个传递依赖,即R不是3NF模式。 如果把R2分解成R1(TNAME,TADDR)R2(C#,TNAME)后,R1和R2就都是3NF模式。 算法: 分解成3NF模式集的算法 设关系模式R(U),主键是W, Z是非主属性,R上存在FD: W → X,X→Z,并且Z?X,X不是候选键,这样W→Z就是一个传递依赖。此时应把R分解成两个模式: R1(XZ),R2(Y),其中Y=U-Z 。 例:R(C#,TNAME,TADDR)因有C#→TNAME,TNAME→TADDR 则:R1(TNAME,TADDR)R2(C#,TNAME) 4) BCNF(Boyce–Codd NF) BCNF--- 如果关系模式R是1NF,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式。 低级范式-?更高级范式 应是无信息丢失的 无损分解 保持函数依赖分解 小结: 进入实战哦 * S表的(1)数据冗余:当一个学生选修多门课程,则name\sex\cname会多次重复存储; (2)不一致性:由于数据的冗余,当更新数据时就可能导致数据不一致; (3)插入异常:若某学生没有选课,则CNO为空,但
文档评论(0)