数据库规范化是用形式更为简洁、结构更加规范的关系模式取代原有关系的过程。规范化是关系数据库理论的本质。它可以影响数据库中数据复制的效率。对数据库规范化时,往往需要创建额外的表来支持范式。
数据库规范化的概念源于IBM研究员E.F. Codd于1970年发表的一篇描述关系数据库模型论文。该模型被Codd称之为“数据库关系范式”,这是关系数据库的理论基础。这些数据规范化理论在1970年代和1980年代广受欢迎,因为在那时,磁盘驱动器非常昂贵,高效的数据存储方法在人们看来是非常必要的。从那个时候开始,其他一些技术,包括数据库非规范化,也陆续获得了一些人的支持。
虽然数据规范化往往会增加重复的数据,但……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属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存储类型。现在,和以前大不一样,数据架构师和开发人员在设计自己的系统时,会在数据规范化和反规范化进行权衡。
翻译
TechTarget特邀编辑。北京邮电大学计算机科学与技术专业硕士。熟悉软件开发流程,对系统管理,网络配置,数据库应用等方面有深入的理解和实践经验。现就职于IBM(中国)投资有限公司,从事IBM服务器相关软件的开发工作。业余时间喜欢游泳登山,爱健身,喜欢结交朋友。
相关推荐
-
理解什么是数据库规范化(Normalisation)
规范化(Normalization)是数据库系统设计中非常重要的一个技术。数据库规范化能够让数据库设计者更好地了解组织内部当前的数据结构。
-
6月数据库关键字:海量数据、商业智能、规范化
2011年已经过半,我们也进入了炎炎夏日,在此为您总结过去一个月中数据库领域关注的焦点,帮助DBA理清一下思路,也希望能在酷热中为您带来一丝清凉。
-
四步实现MySQL数据库规范化
通过数据库规范化,我们使各表都遵守了比较先进的范式。这样,每个表都代表一个实体,我们也获得了降低冗余,减少异常以及提升效率的好处。
-
理解数据库规范化的意义
数据库规范化是一个过程,这个过程中需要对现存表结构进行修改,把表转化使遵循一系列先进的范式。