数据库规范化已经过时了吗?

日期: 2016-11-03 作者:Margaret Rouse翻译:杨宏玉 来源:TechTarget中国 英文

数据库规范化是用形式更为简洁、结构更加规范的关系模式取代原有关系的过程。规范化是关系数据库理论的本质。它可以影响数据库中数据复制的效率。对数据库规范化时,往往需要创建额外的表来支持范式。

数据库规范化的概念源于IBM研究员E.F. Codd于1970年发表的一篇描述关系数据库模型论文。该模型被Codd称之为“数据库关系范式”,这是关系数据库的理论基础。这些数据规范化理论在1970年代和1980年代广受欢迎,因为在那时,磁盘驱动器非常昂贵,高效的数据存储方法在人们看来是非常必要的。从那个时候开始,其他一些技术,包括数据库非规范化,也陆续获得了一些人的支持。

虽然数据规范化往往会增加重复的数据,但……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

数据库规范化是用形式更为简洁、结构更加规范的关系模式取代原有关系的过程。规范化是关系数据库理论的本质。它可以影响数据库中数据复制的效率。对数据库规范化时,往往需要创建额外的表来支持范式。

数据库规范化的概念源于IBM研究员E.F. Codd于1970年发表的一篇描述关系数据库模型论文。该模型被Codd称之为“数据库关系范式”,这是关系数据库的理论基础。这些数据规范化理论在1970年代和1980年代广受欢迎,因为在那时,磁盘驱动器非常昂贵,高效的数据存储方法在人们看来是非常必要的。从那个时候开始,其他一些技术,包括数据库非规范化,也陆续获得了一些人的支持。

虽然数据规范化往往会增加重复的数据,但它并不会引入数据冗余,数据冗余是不必要的重复。数据库规范化是一个典型的细化过程,它发生在关系数据库数据进行初始定义之后,其作用是确定数据之间的关系,并定义所需的表和每个表中的列。

简单的数据规范化例子

数据库规范化已经过时了吗?

如果这个表的目的是用于跟踪物品的价格,而你想要删除其中的一个客户,那么你也会删除该用户对应的物品价格。数据库规范化可以解决这个问题,它将这个表分成两个表,一个是每个客户和其购买的产品信息,另一个表是每个产品及其价格信息。对任何一个表进行添加或删除操作,都不会影响另外一个。

数据库规范化的程度,可以用以下几个范式表示:

第一范式(1NF)。这是数据库规范化最基本的范式,它一般适用于任何数据库的定义,符合第一范式的要求如下:

  • 它包含一个二维表,具有行和列
  • 每一列对应整个表的一个属性或子对象
  • 每一行代表一个独特的子对象或实例属性,必须以某种方式不同于其他行(即不能出现重复的行)
  • 每一列的所有条目必须属于相同类别。例如,在标记为“客户”的列,只能是客户名称或数字

第二范式(2NF)。在这种级别的规范化下,要求数据表里的所有数据都要和该数据表的主键有完全依赖关系,即不能存在部分依赖,例如,在一个表有三个列。包含客户ID、产品和产品价格,价格必须依赖于客户ID(享有折扣)和产品,不能仅依赖于二者之一。

第三范式(3NF)。在第二范式中,改变表中的一行仍然可能影响到其他表中依赖该行的数据。例如,在客户表中,删除一行描述客户购买的信息(例如退货),也将删除该产品特定的价格信息。而使用第三范式,可以将这些表将拆分成两个表,产品定价信息依然可以被追踪。

基本范式的扩展还包括域/关键字范式,该范式中关键字唯一地标识表中的每一行,Boyce-Codd范式(BCNF)是对3NF在处理某些类型异常上的改进范式。

数据库规范化的作用是避免或减少数据异常,数据冗余和数据复制,同时提高数据完整性。多年以来,数据库规范化已经成为数据库开发人员的指导原则,它也是关系数据模型的特征之一。

关系模型引领了一个时代,在此之前,业务记录主要记录在纸上。关系模型使用的表,在某种程度上,是在复制纸上的统计表格,一开始记录最多的是会计数据。为了支持更多的数据类型,数码记录逐渐取代了纸质记录。

但也存在一些因素,对数据库规范化的主导地位存在一定的挑战。

随着时间的推移,磁盘存储的成本日益降低,以及新的分析架构的出现,正在威胁数据规范化的霸主地位。从20世纪90年代开始数据仓库的出现,导致了反规范化的崛起。最近,出现了面向文档的NoSQL数据库;以上这些和其他非关系系统通常使用nondisk-oriented存储类型。现在,和以前大不一样,数据架构师和开发人员在设计自己的系统时,会在数据规范化和反规范化进行权衡。

作者

Margaret Rouse
Margaret Rouse

TechTarget作者,负责Whatis.Com网站的内容建设。

翻译

杨宏玉
杨宏玉

TechTarget特邀编辑。北京邮电大学计算机科学与技术专业硕士。熟悉软件开发流程,对系统管理,网络配置,数据库应用等方面有深入的理解和实践经验。现就职于IBM(中国)投资有限公司,从事IBM服务器相关软件的开发工作。业余时间喜欢游泳登山,爱健身,喜欢结交朋友。

相关推荐