在进行数据库规范化的时候,我们有一系列的步骤需要遵循。我们把这些步骤称作范式,即Normalisation Form(NF),其中包括第一范式、第二范式、第三范式、第四范式以及第五范式(1NF、2NF、3NF、4NF、5NF)。通常情况下,我们通过第三范式就能够满足大部分的数据库表的规范化,但也有些时候,我们需要更高的NF。
以下就是进行数据库规范化时的步骤:
第一步:首先我们将数据源转化成未规范化范式(UNF)
第二步:将未规范化的数据转化为第一范式(1NF)
第三步:将1NF转化为2NF
第四步:将2NF转化为3NF在完成3NF之后,如果数据源仍然处于未规范化状态,那么我们还需要进行以下几步:
第五步:将3NF转化为BC范式(Boyce-Code Normal Form,BCNF)
第六步:将BCNF转化为4NF
第七步:将4NF转化为5NF
数据库规范化是一个自下而上的数据库设计技术,它通常使用于现有系统当中。
通常情况下,有两个方面的标准来判断数据库是否设计的比较规范:一是看看是否拥有大量的窄表,二是宽表的数量是否足够的少。若符合这两个基本条件,则说明这个数据库的规范化水平还是比较高的。当然这两个指标只是最基础的判定条件。为了让数据库更加的规范,需要符合以下五点要求。
要求一:表中应该避免可为空的列。
虽然表中允许空列,但是,空字段是一种比较特殊的数据类型。数据库处理时需要进行特殊的处理。如此的话,就会增加数据库处理记录的复杂性。当表中有比较多的空字段时,在同等条件下,数据库处理的性能会降低许多。
所以,虽然在数据库表设计的时候,允许表中具有空字段,但是,我们应该尽量避免。若确实需要的话,我们可以通过一些折中的方式,来处理这些空字段,让其对数据库性能的影响降低到最少。
一是通过设置默认值的形式,来避免空字段的产生。如在一个人事管理系统中,有时候身份z号码字段可能允许为空。因为不是每个人都可以记住自己的身份z号码。为此,身份z号码字段可以允许为空,以满足这些特殊情况的需要。但是,在数据库设计的时候,则可以做一些处理。如当用户没有输入内容的时候,则把这个字段的默认值设置为0或者为N/A。以避免空字段的产生。
二是若一张表中,允许为空的列比较多,接近表全部列数的三分之一。而且,这些列在大部分情况下,都是可有可无的。若数据库管理员遇到这种情况,笔者建议另外建立一张副表,以保存这些列。然后通过关键字把主表跟这张副表关联起来。将数据存储在两个独立的表中使得主表的设计更为简单,同时也能够满足存储空值信息的需要。
要求二:表不应该有重复的值或者列。
如现在有一个进销存管理系统,这个系统中有一张产品基本信息表中。这个产品开发有时候可以是一个人完成,而有时候又需要多个人合作才能够完成。所以,在产品基本信息表产品开发者这个字段中,有时候可能需要填入多个开发者的名字。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)