数据库设计规范
葛志春
1.数据库设计规范化的必要性
数据库的逻辑设计(包括各种表和表间关系)是优化关系数据库的核心。设计好逻辑数据库,可以为优化数据库和应用程序性能打下基础。逻辑数据库设计不好,会损害整个系统的性能。
2.数据库规范设计的特征
规范化逻辑数据库设计包括使用正规的方法来将数据分为多个相关的表。拥有大量窄表(列较少的表)是规范化数据库的特征。而拥有少量宽表(列较多的表)是非规范化数据库的特征。
3.规范化的一些益处
包括:
· 排序和索引创建更快。
· 聚集索引的数目更大。
· 索引更窄、更精简。
· 每个表的索引更少,这样将提高 INSERT、UPDATE 和 DELETE 语句的性能。
· 空值更少,出现不一致性的机会更少,从而提高数据库紧凑性。
4.规范设计的基本规则
4.1 每一个表必须有PK.
4.2 表应只能存储单一类型实体的数据。
试图在表中存储过多的信息会妨碍对表的数据进行有效、可靠的管理。
4.3 表应避免可为空的列。
表中的列可定义为允许空值。空值表示没有值。尽管在个别情况下,允许空值有用,但是最好少用空值,因为空值需要进行特殊的处理,这样会增加数据操作的复杂性。如果某一表中有几个可为空的列,并且列中的几行有空值,则应考虑将这些列置于链接到主表的其它表中。将数据存储在两个独立的表中使主表的设计更为简单,但能够满足存储空值信息的偶尔需要。
4.4 表不应有重复的值或列
如果发现需要在单个列中存储值的列表,或者如果单个数据需要多列,
则应考虑将重复的数据置于与主表有链接的另一个表中.
比如:书与书的著者。一般情况下书的著者只有一个作为书的属性是很好的,但当书的著者有多个时 ,即书与书的著者是1:M 多的关系时,书的著者作为书的属性就不合适了。应把书的著者作为实体。构成书与书的著者1:M的关系。