目前已有的数据库设计方法可分为四类,即直观设计法、规范设计法、计算机辅助设计法和自动化设计法。直观设计法又称单步逻辑设计法,它依赖于设计者的知识、经验和技巧,缺乏工程规范的支持和科学根据,设计质量也不稳定,因此越来越不适应信息管理系统发展的需要。为了改变这种状况,1978年10月来自30多个欧美国家的主要数据库专家在美国新奥尔良市专门讨论了数据库设计问题,提出了数据库设计规范,把数据库设计分为需求分析、概念结构设计、逻辑结构设计和物理结构设计4个阶段。目前,常用的规范设计方法大多起源于新奥尔良方法,如基于3NF的设计方法、LRA方法、面向对象的数据库设计方法及基于视图概念的数据库设计方法等。下面对常见的几种设计方法做一些简单介绍。
这是由S.Atre提出的数据库设计的结构化设计方法,其基本思想是在需求分析的基础上,识别并确认数据库模式中的全部属性和属性间的依赖,将它们组织成一个单一的关系模型,然后再分析模式中不符合3NF的约束条件,用投影和连接的办法将其分解,使其达到3NF条件。其具体设计步骤分为5个阶段,如图2-2所示。
(1)设计企业模式。利用上述得到的3NF关系模型画出企业模式。具体包括:
图2-2 基于3NF的数据库设计方法
(2)设计数据库逻辑模式。根据上一步得到的企业模式选定数据模型,从而得出适用于某个DBMS的逻辑模式。根据逻辑模式导出各种报表与事务处理所使用的外模式。
(3)设计数据库物理模式(存储模式)。根据数据库的逻辑模式和给定的计算机系统设计物理模式。
(4)评价物理模式。对物理模式估算空间利用情况,并推算输入输出的概率。必要时根据物理模式调整各种报表与事务处理的外模式。对外模式进行存取时间的估算。
(5)数据库实现。具体实现数据库。
面向对象的数据库设计(即数据库模式)思想与面向对象数据库管理系统(Object-Oriented DBMS,OODBMS)理论不能混为一谈。前者是数据库用户定义数据库模式的思路,而后者是数据库管理程序的思路。用户使用面向对象方法学可以定义任何一种DBMS数据库,即网络型、层次型、关系型、面向对象型均可。对象的数据库设计从对象模型出发,属于实体主导型设计。
数据库设计(模式)是否支持应用系统的对象模型,是判断是否为面向对象数据库系统的基本出发点。应用系统对象模型向数据库模式的映射是面向对象数据库设计的核心和关键,其实质就是向数据库表的变换过程。有关的变换规则简单归纳如下:
(1)一个对象类可以映射为一个以上的库表,当类间有一对多的关系时,一个表也可以对应多个类。
(2)关系(一对一、一对多、多对多及三项关系)的映射可能有多种情况,但一般映射为一个表,也可以在对象类表间定义相应的外键。对于条件关系的映射,一个表至少应有三个属性。
(3)单一继承的泛化关系可以对超类、子类分别映射表,也可以不定义父类表而让子类表拥有父类属性,反之,也可以不定义子类表而让父类表拥有全部子类属性。
(4)对多重继承的超类和子类分别映射表,对多次多重继承的泛化关系也映射一个表。
(5)对映射后的库表进行冗余控制调整,使其达到合理的关系范式。
面向对象关系数据库设计效果可归纳为:
(1)数据库结构清晰,便于实现面向对象的程序设计。
(2)数据库对象具有独立性,便于维护。
(3)需求变更时程序与数据库重用率高,修改少。