数据库设计包括三个阶段:
1)概念设计
2)逻辑设计
3)物理设计
这三个阶段是什么意思?阶段任务是什么?
1、概念设计
也称为概念结构设计,任务是在需求分析阶段产生的需求规格说明书的基础上,将需求抽象为一个不依赖于任何DBMS的数据模型,即概念模型,表现形式为E-R模型。就是画E-R图吧。
2、逻辑设计
也称为逻辑结构设计,主要任务是将概念模型转化为某个特定DBMS上的逻辑模型。具体来说,就是设计库表。
3、物理设计
物理结构设计。为逻辑模型选取一个最适合应用环境的物理结构。就是创建物理数据库,建好相应的数据库文件、索引文件,做好各项系统配置等。
前不久,我学习到模型驱动这一概念。所谓模型驱动(MDA),就是先设计出平台无关模型,然后经过模型转换,建立平台相关模型,最后结合代码框架,自动生成源代码和文档,一个成品就出来了。模型驱动的好处之一,就是可移植性很高,从一个平台移植到另一平台,只需将平台无关模型转换一下就可以了。我感觉数据库的设计思想,跟模型驱动有类似之处。
那么这个数据库设计工作,在什么时候开展呢?众所周知,系统生命周期里面,系统开发部分分为总体规划、系统分析、系统设计、系统实施、系统验收几个环节。名为数据库设计,是系统设计阶段吗?其实,数据库设计应该分处于系统分析、系统设计、系统实施三个阶段。系统分析阶段,如果采用结构化分析方法(SA)的话,需要完成数据建模、功能建模、行为建模三项工作。其中数据建模,就是负责数据库的概念设计,绘制E-R模型。数据库的逻辑设计,在系统设计阶段;物理设计,在系统实施阶段。开发方法有多种,结构化方法、面向对象方法、面向服务方法,等等,通常混合使用,数据建模往往都是必须的。
说另外一个话题。
访问数据库,由外到内,有所谓三级模式-两层映射的机制。三级模式,外模式、逻辑模式、内模式;两层映射,外模式-逻辑模式映射,逻辑模式-内模式映射。
外模式是以一种对外的视角,称为用户视图,或者说,从外部的角度看到或理解的数据库样子。简单点吧,就是数据库里的视图。视图是虚拟表,它的行列数据均来自于一个或多个基本表。
逻辑模式,对应的就是基本表。
内模式,对应的是存放基本表的数据文件。
这是一种分层结构,类似网络的ISO7层模型,最上面,是面向用户和应用的外模式,屏蔽了大量细节;最下面,是底层的物理文件,内模式。内模式中的数据从这个数据文件转移到别的文件,对概念模式的基本表来说是透明的;同理,基本表的结构发生了改变,只要视图相应做适配,对外部的应用程序来说也是透明的,不必做任何修改。
大道不孤必有邻,活到老,学到老。