做程序员的或多或少都设计过一些数据库。我想,在没有很好的理论基础下,设计数据库时,最多遇到的问题恐怕是:是这样好呢,还是那样好。原因是数据库设计本身是一件灵活多变的事,虽说各种不同的设计条条大路通罗马。但数据库设计又不仅仅如此,我相信,同一需求前提下,两个优秀的设计师设计出来的数据库应该是非常相似,甚至几乎一样的。那么,今天先总体上来谈谈数据库的一般设计过程。
需求分析除外,数据库的实现分为以下几个主要过程:
- 概念结构设计,该阶段的主要产物是实体联系图,简称为E-R图;
- 关系模型的设计跟优化,该阶段的主要目的是把概念模型转化为关系模型,并主要从理论上来优化数据库;这部分将是体现一个数据库设计师能力的主要依据之一。
- 物理模型设计,该阶段主要内容是把关系模型真正用到具体的DBMS系统上去,如:Mysql、Oracle,再跟据需求的特点,及DBMS本身的特点,调整设计。
- 访问接口设计,包括:用户子模式设计,主要内容为设计视图,存储过程设计(理论上,这部份内容其实不用单独组成一个阶段;但这部分内容也有相当的重要性,所以这里,把它也单独提取出来)。