normalization:正规化
在创建数据库方面,正规化(normalization)是用这样一种方法把它组织进表格中的过程:使用数据库的结果是明确的和并想要的一样。正规化可能有在数据库里面复制数据的效果并且时常造成额外表格的创造。(虽然正规化容易增加数据的副本,但它不引入冗余–不必要的副本)。正规化典型地是在识别应该进入数据库数据对象、识别他们的关系并且需要的表格和每个表格中的列初始操作后的一个精致过程。 数据正规化的简单例子可能由显示如下内容的表格组成: 客户 购买项目 购买价格 汤姆斯 衬衫 $40 玛丽亚 网球鞋 $35 伊夫林 衬衫 $40 Pajaro 裤子 $25
如果这个表格的目的是用来明了项目的价格而且你想划除一个客户,你也将会划除一个价格。使数据正规化意味着立着这个道理并且解决这个问题,你可以把表格分成两个表格,一个包含关于每个客户和他们买的产品的信息,第二个表格包含每种产品和它的价格的信息。对任一个表格的增加或划除不影响另一个表格。
关系数据库表格的正规化(normalization)程度已经被定义并且包括:
第一正规形式(1 NF)。这是正规化的 “基本” 水平并且通常符合任何数据库的定义,即:
- 它包含二为表格,有行和列。
- 每一列对应一个字对象或征个表格表示的对象的属性。
- 每行代表那一个子对象或属性的一个独特的实例,必须在某些方面和其他行不同(也就是说,不可能有副本列)。
- 任何的列的所有条目必须有相同的类型。举例来说,在“客户”列中,只允许有客户名字或编号。
第二正规形式(2NF)。在正规化的这一个水平,表格中不是另外的列的内容的限定词的每一列必须它本身是表格中其他列的函数。举例来说,在包含客户ID、卖出产品和产品的卖出价格的表格中,价格将会是客户ID(有优惠权力)和特定产品的函数。
第三正规形式(3NF)。因为对一张表格中的一列的变化可能影响另外一张表格中引用这一列的数据,所以在第二正规形式中修正仍然是可能的。举例来说,使用刚刚引证的客户表格,删除描述客户购买的列(也许因为退货)将也会删除那个产品有某个价格的事实。在第三正规形式中,这些表格会被分为二个表格以便产品的价格被单独追踪。
域关键字正规形式(DKNF)。一个关键字唯一的识别表格中的每一列。域是一个属性的允许值组合。通过加强关键字和域限制,数据库就用不着修正不规则的东西。DKNF 是大多数的设计者希望达到的正规化水平。
最近更新时间:2008-06-17 EN
相关推荐
-
通过进行正规化的表格设计提升应用性能(二)
无你使用论的是MySQL或者Oracle数据库,通过进行正规化的表格设计,可以令你的PHP代码更具可读性,更容易扩展,从而也会提升应用的性能。