数据库设计的很多阶段都可以和软件工程的各阶段对应起来,软件工程的某些方法和工具同样也适合于数据库工程,但数据库设计还有很多自己的特点:
(1)从数据结构即数据模型开始,并以数据模型为核心展开。这是数据库设计的一个主要特点。
(2)静态结构设计与动态行为设计分离:静态结构设计是指数据库的模式结构设计,包括概念结构、逻辑结构和物理结构的设计。动态行为设计是指应用程序设计,包括功能组织、流程控制等方面的设计。传统的软件工程往往注重处理过程的设计,不太注重数据结构的设计,在结构程序设计中只要可能就尽量推迟数据结构的设计,而数据库设计正好与之相反,需要把主要精力放在数据结构的设计上,如数据库的表结构、视图等。
(3)试探性:数据库设计比较复杂,又缺少完善的设计模型和统一的过程,设计的过程往往是试探性的过程,因此设计的结果往往不是唯一的。有时多种方案并存,供设计者选择,而且这种选择并不是完全客观的,有时多少取决于用户的偏爱和观点。
(4)反复性:由于数据库设计是一种试探性的过程,这就决定了数据库的设计是一个反复推敲和修改的过程,而不可能“一气呵成”。
(5)多步性:传统的数据库设计采用直观设计法或单步设计法,它由设计者通过对用户的调查访问,确认需求,熟悉用户应用问题的语义,结合结构限制与DBMS功能,凭设计人员的经验进行分析、选择、综合与抽象之后,建立数据模型,并用DDL写出模式。这种设计方法要求设计人员有比较丰富的经验和熟练的技巧,不易为一般人所掌握,且因缺乏工程规范支持和科学根据,现已弃用。新的数据库设计是分步(阶段)进行的。前一阶段的设计结果可作为后一阶段设计的依据,后一阶段也可向前一阶段反馈其要求,反复修改,逐步完善。