数据库设计:需求分析
设计一个性能良好的数据库系统,明确应用环境对系统的要求是首要的和基本的。因此,应该把对用户需求的收集和分析作为数据库设计的第一步。
需求分析的主要任务是通过详细调查要处理的对象,包括某个组织、某个部门、某个企业的业务管理等,充分了解原手工或原计算机系统的工作概况及工作流程,明确用户的各种需求,产生数据流图和数据字典,然后在此基础上确定新系统的功能,并产生需求说明书。值得注意的是,新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。需求分析具体可按以下几步进行:(1)用户需求的收集。(2)用户需求的分析。(3)撰写需求说明书。
需求分析的重点是调查、收集和分析用户数据管理中的信息需求、处理需求、安全性与完整性要求。信息需求是指用户需要从数据库中获得的信息的内容和性质。由用户的信息需求可以导出数据需求,即在数据库中应该存储哪些数据。处理需求是指用户要求完成什么处理功能,对某种处理要求的响应时间,处理方式指是联机处理还是批处理等。明确用户的处理需求,将有利于后期应用程序模块的设计。
调查、收集用户要求的具体做法是:
(1) 了解组织机构的情况,调查这个组织由哪些部门组成,各部门的职责是什么,为分析信息流程做准备。
(2) 了解各部门的业务活动情况,调查各部门输入和使用什么数据,如何加工处理这些数据。输出什么信息,输出到什么部门,输出的格式等。在调查活动的同时,要注意对各种资料的收集,如票证、单据、报表、档案、计划、合同等,要特别注意了解这些报表之间的关系,各数据项的含义等。
(3) 确定新系统的边界。确定哪些功能由计算机完成或将来准备让计算机完成,哪些活动由人工完成。由计算机完成的功能就是新系统应该实现的功能。
在调查过程中,根据不同的问题和条件,可采用的调查方法很多,如跟班作业、咨询业务权威、设计调查问卷、查阅历史记录等。但无论采用哪种方法,都必须有用户的积极参与和配合。强调用户的参与是数据库设计的一大特点。
收集用户需求的过程实质上是数据库设计者对各类管理活动进行调查研究的过程。设计人员与各类管理人员通过相互交流,逐步取得对系统功能的一致的认识。但是,由于用户还缺少软件设计方面的专业知识,而设计人员往往又不熟悉业务知识,要准确地确定需求很困难,特别是某些很难表达和描述的具体处理过程。针对这种情况,设计人员在自身熟悉业务知识的同时,应该帮助用户了解数据库设计的基本概念。对于那些因缺少现成的模式、很难设想新的系统、不知应有哪些需求的用户,还可应用原型化方法来帮助用户确定他们的需求。就是说,先给用户一个比较简单的、易调整的真实系统,让用户在熟悉使用它的过程中不断发现自己的需求,而设计人员则根据用户的反馈调整原型,反复验证最终协助用户发现和确定他们的真实需求。
调查了解用户的需求后,还需要进一步分析和抽象用户的需求,使之转换为后续各设计阶段可用的形式。在众多分析和表达用户需求的方法中,结构化分析(Structured Analysis,SA)是一个简单实用的方法。SA方法采用自顶向下,逐层分解的方式分析系统,用数据流图(Data Flow Diagram,DFD)、数据字典(Data Dictionary,DD)描述系统。
1. 使用数据流图分析信息处理过程
数据流图是软件工程中专门描绘信息在系统中流动和处理过程的图形化工具。因为数据流图是逻辑系统的图形表示,即使不是专业的计算机技术人员也容易理解,所以是极好的交流工具。
数据流图是有层次之分的,越高层次的数据流图表现的业务逻辑越抽象,越低层次的数据流图表现的业务逻辑则越具体。在SA方法中,我们可以把任何一个系统都抽象为 图1.4所示的形式。它是最高层次抽象的系统概貌,要反映更详细的内容,可将处理功能分解为若干子功能,每个子功能还可继续分解,直到把系统工作过程表示清楚为止。在处理功能逐步分解的同时,它们所用的数据也逐级分解,形成若干层次的数据流图,为了更好地说明SA方法,下面举一个简单的设计实例。假定某工厂要设计一个数据库查询系统。其中,主管生产的部门要掌握产品的性能、各种零件的用料和每种产品的零件组成情况,并据此编制工厂的生产计划。主管供应的部门需要了解产品的价格、各种零件的用料情况以及这些材料的价格与库存量,并根据这些资料提出材料的采购计划。
在调查、分析用户的业务活动并确定系统边界后,得到了如图1.6和图1.7所示的业务流程图。根据实际应用环境对系统在功能上进行分解