通常情况下,可以从两个方面来判断数据库是否设计的比较规
一是看看是否拥有大量的窄表,二是宽表的数量是否足够的少
若符合这两个条件,则可以说明这个数据库的规化水平还是比较高的
当然这是两个泛泛而谈的指标
为了达到数据库设计规化的要求,一般来说,需要符合以下五个要求
要求一:表中应该避免可为空的列虽然表中允许空列,但是,空字段是一种比较特殊的数据类型
数据库在处理的时候,需要进行特殊的处理
如此的话,就会增加数据库处理记录的复杂性
当表中有比较多的空字段时,在同等条件下,数据库处理的性能会降低许多
所以,虽然在数据库表设计的时候,允许表中具有空字段,但是,我们应该尽量避免
若确实需要的话,我们可以通过一些折中的方式,来处理这些空字段,让其对数据库性能的影响降低到最少
一是通过设置默认值的形式,来避免空字段的产生
如在一个人事管理系统中,有时候字段可能允许为空
因为不是每个人都可以记住自己的
而在员工报到的时候,可能没有带在身边
所以,字段往往不能及时提供
为此,字段可以允许为空,以满足这些特殊情况的需要
但是,在数据库设计的时候,则可以做一些处理
如当用户没有输入容的时候,则把这个字段的默认值设置为0或者为N/A
以避免空字段的产生
二是若一表中,允许为空的列比较多,接近表全部列数的三分之一
而且,这些列在大部分情况下,都是可有可无的
若数据库管理员遇到这种情况,笔者建议另外建立一副表,以保存这些列
然后通过关键字把主表跟这副表关联起来
将数据存储在两个独立的表中使得主表的设计更为简单,同时也能够满足存储空值信息的需要
要求二:表不应该有重复的值或者列如现在有一个进销存管理系统,这个系统中有一产品基本信息表中
这个产品开发有时候可以是一个人完成,而有时候又需要多个人合作才能够完成
所以,在产品基本信息表产品开发者这个字段中,有时候可能需要填入多个开发者的名字
如进销存管理中,还