要求一:表中应该避免可为空的列虽然表中允许空列,但是,空字段是一种比较特殊的数据类型。数据库在处理的时候,需要进行特殊的处理。如此的话, 就会增加数据库处理记录的复杂性。当表中有比较多的空字段时,在同等条件下,数据库处理的性能会降低许多。所以,虽然在数据库表设计的时候,允许表中具有空字段,但是,我们应该尽量避免。若确实需要的话, 我们可以通过一些折中的方式,来处理这些空字段,让其对数据库性能的影响降低到最少。一是通过设置默认值的形式,来避免空字段的产生。如在一个人事管理系统中,有时候身份证号码字段可能允许为空。因为不是每个人都可以记住自己的身份证号码。而在员工报到的时候,可能身份证没有带在身边。所以,身份证号码字段往往不能及时提供。为此,身份证号码字段可以允许为空,以满足这些特殊情况的需要。但是,在数据库设计的时候,则可以做一些处理。如当用户没有输入内容的时候,则把这个字段的默认值设置为0 或者为N/A。以避免空字段的产生。二是若一张表中,允许为空的列比较多,接近表全部列数的三分之一。而且, 这些列在大部分情况下, 都是可有可无的。 若数据库管理员遇到这种情况,笔者建议另外建立一张副表,以保存这些列。 然后通过关键字把主表跟这张副表关联起来。将数据存储在两个独立的表中使得主表的设计更为简单,同时也能够满足存储空值信息的需要。要求二:表不应该有重复的值或者列如现在有一个进销存管理系统,这个系统中有一张产品基本信息表中。这个产品开发有时候可以是一个人完成,而有时候又需要多个人合作才能够完成。所以, 在产品基本信息表产品开发者这个字段中,有时候可能需要填入多个开发者的名字。如进销存管理中,还需要对客户的联系人进行管理。有时候, 企业可能只知道客户一个采购员的姓名。 但是在必要的情况下,企业需要对客户的采购代表、仓库人员、财务人员共同进行管理。因为在订单上,可能需要填入采购代表的名字; 可是在出货单上,则需要填入仓库管理人员的名字等等。为了解决这个问题,有多种实现方式。但是,若设计不合理的话在,则会导致重复的值或者列。如我们也可以这么设计,把客户信息、联系人都放入同一张表中。为了解决多个联系人的问题,可以设置第一联系人、第一联系人电话、第二联系人、第二联系人电话等等。若还有第三联系人、第四联系人等等,则往往还需要加入更多的字段。可是这么设计的话,会产生一系列的问题。如客户的采...