细说数据库范式
作者 佚名技术
来源 数据库编程
浏览
发布时间 2012-03-22
理论性的东西,往往容易把人人都看得懂的东西写成连鬼都看不懂,近似于主任医生开的药方。从前学范式的时候,把书中得概念翻来覆去看,看得痛心疾首深恶痛绝,再加上老师深切误导,最后一塌糊涂。借助网络资源,自己写了一篇,自己是看懂了,希望对大家也有所帮助,有错误帮忙指正。 数据库范式(Normal forms):是用于规范关系型数据库设计,以减少谬误发生的一种准则。 1NF(first normal form): Table faithfully rePResents a relation and has no repeating groups. 数据库表必须如实地展现“关系”,并且不允许有“重复组”出现。 这样的概念真是令人痛心疾首,我们只好再搬出1NF的的作者之一Chris Date的解释: 1. There''s no top-to-bottom ordering to the rows. (任意两行没有特定的顺序关系。不存在一个特定的理由要某一行必须在另一行之前。) 2. There''s no left-to-right ordering to the columns. (任意两列没有特定的顺序关系。) 3. There are no duplicate rows. (不允许存在重复的行。如果一张表没有Unique Key,事实上它是违反1NF的。) 4. Every row-and-column intersection contains exactly one value from the applicable domain (and nothing else). (不允许出现空值Null,这一点不同作者是有争议的。事实上我们常常违背这点。) 5. All columns are regular [i.e. rows have no hidden components such as row IDs, object IDs, or hidden timestamps]. (不允许存在隐藏字段。不知道Oracle的Rowid属不属于这个?) 有人从第四点的“one value”大肆挖掘,于是我们就见到了书上这样的定义:“如果一个关系模式R的所有属性都是原子的,即不可再分的基本数据项,则RÎ1NF”。 这一点被认为是1NF的核心,“关系模式R”↔“表”,“属性” ↔ “列”,下面是一种与1NF不一致的情况,通常这是一类很明显的设计缺陷: ID Artist FavoriteColor …… 1 Babyface Blue,Yellow …… 2 Sting Green …… 对上例我们不能把它拆分成FavoriteColor1、FavoriteColor2……因为首先我们不能确定该拆分成几列;其次FavoriteColor1与FavoriteColor2在结构、含意方面都是相同的,这实际上也是一类“repeating group”;同时这种设计会导致某些查询困难,比如“有哪些艺人喜欢黄色?” 解决方案是将表拆分成两个: ID Artist …… 1 Babyface …… 2 Sting …… ID FavoriteColor 1 Blue 1 Yellow 2 Green 总结: 对1NF最核心的 “原子性”,违反此规范的可能性:接近于0%。不过,网上很多帖子说在关系型数据库中根本不可能违背1NF,我认为这是不对的。 2NF(second normal form): No non-prime attribute in the table is functionally dependent on a part (proper subset) of a candidate key. 不存在非主属性对任一候选键的部分函数依赖。 如果解释完下面几个概念,这个定义就可以读懂了: Superkey:超级键(L),如果属性或属性组合能唯一标识一条记录,则它是一个Superkey。 Candidate key:候选键,当Superkey只包含一个属性时,则它是一个候选键;当Superkey包含一组属性时,仅当这一组属性不包含另一Superkey时,它是一个候选键。换句话说,候选键是“纯净的”、最小化的Superkey。 Non-prime attribute:非主属性,未在任何候选键中出现的属性,即为非主属性。 举例来说,对表{First_name,Last_name,Address},假定全名不重复,则: Superkey: {First_name,Last_name} {First_name,Last_name,Address} Candidate key: {First_name,Last_n |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于细说数据库范式的所有评论