快速业务通道

细说数据库范式

作者 佚名技术 来源 数据库编程 浏览 发布时间 2012-03-22
ame}


Non-prime attribute:

Address



浅白版:“2NF针对的是复合候选键(即键包含的字段个数>1)的情况,非主属性不能只依赖于复合候选键中的一部分字段。”显然,如果是非复合候选键,如果它符合1NF,那么它一定符合2NF。



假设有这样一张涉及艺人与唱片公司的关系表:

Artist

艺人
Company

唱片公司
DurationYears

签约总年数
CompAddr

公司住址

Babyface
Solar
4
Indiana

Babyface
Laface
2
Indiana


  
  
  



显然,{Artist,Company}为可以作为一个候选键,DurationYears在这没有问题,但CompAddr是违反2NF的,它只依赖于候选键的一部分(依赖于Company),这是违反2NF的,为了消除这种情况,我们可以:

Artist

艺人
CompID

唱片公司
DurationYears

签约总年数

Babyface
1
4

Babyface
2
2





ID
Company

唱片公司
CompAddr

公司住址

1
Solar
Indiana

2
Laface
Indiana





总结:

对于2NF,如果关系中的候选键只包含一个属性,可以直接略过。



在考虑2NF的过程中,不要把几个无关的实体的属性杂揉放在一个关系中,比如Artist是一个实体、Company是一个实体,它们可以有一系列的关联表(也是实体),但在关联表中尽量不要引入前两个实体的无关属性。






3NF(Third normal form)

Every non-prime attribute is non-transitively dependent on every key of the table.

不存在非主属性对任一键(候选键)的传递依赖。



传递依赖,你可以顾名思义,这里就不再引入定义了,举个例子,有下面一张表:

Tournament

赛事
Year

年份
Winner

冠军
Winner Date of Birth

冠军生日

Indiana Invitational
1998
Al Fredrickson
21 July 1975

Cleveland Open
1999
Bob Albertson
28 September 1968

Des Moines Masters
1999
Al Fredrickson
21 July 1975

Indiana Invitational
1999
Chip Masterson
14 March 1977





这里的候选键为{Tournament,Year},显然有这样的决定关系:

{Tournament,Year}→Winner

{Tournament,Year}→Winner→Winner Date of Birth

其中第二条就属于违反3NF的情况,因为Winner Date of Birth依赖于Winner而不是直接依赖于候选键。这种情况下,可以将Winner,Winner Date of Birth单独作为一张表,这里不赘述。



总结:

我觉得大多数人凭借直观感觉,就可使设计的关系符合3NF,所以这些理论,你只需要姑且读之。






BCNF(Boyce-Codd normal form)(Boyce与Codd是该范式的两名作者。)

Every non-trivial functional dependency in the table is a dependency on a superkey.

表中的任何非平凡函数依赖,都必须是对superkey的依赖。



non-trivial functional dependency:非平凡函数依赖,如果存在一个决定关系x→y,且y并非x的子集,则叫着y非平凡函数依赖于x。



BCNF与3NF的最大区别是它并不仅针对非主属性(non-prime attribute)来说,它发生的时候常常是表中根本不存在非主属性,以至于它不可能违反2NF或3NF。而BCNF的出现就是为了扩大“打击面”。



于是BCNF的主旨是:补充对发生在主属性(prime attribute)身上的函数依赖的约束,因为对于非主属性的约束已经在3NF中完成了。



例子,使用关系表描述学生、课程、教师的关系(假定一名教师只负责一门课程,一门课程则可以由多位教师负责):

Student

学生
Course

课程
Teacher

教师

S1
C1
T1

S1
C2
T2

S2
C1
T1

S2
C2
T3

S2
C3
T2



候选键:

{Student,Course}

{Student,Teacher}

因此这里不存在非主属性,而在主属性的函数依赖中,存在Teache

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号