设计一个性能良好的数据库系统,明确应用环境对系统的要求是首要的和基本的。因此,应该把对用户需求的收集和分析作为数据库设计的第一步。

需求分析的主要任务是通过详细调查要处理的对象,包括某个组织、某个部门、某个企业的业务管理等,充分了解原手工或原计算机系统的工作概况及工作流程,明确用户的各种需求,产生数据流图和数据字典,然后在此基础上确定新系统的功能,并产生需求说明书。值得注意的是,新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。

如图1.2所示,需求分析具体可按以下几步进行:

(1)   用户需求的收集。

(2)   用户需求的分析。

(3)   撰写需求说明书。

图1.2  需求分析的过程

需求分析的重点是调查、收集和分析用户数据管理中的信息需求、处理需求、安全性与完整性要求。信息需求是指用户需要从数据库中获得的信息的内容和性质。由用户的信息需求可以导出数据需求,即在数据库中应该存储哪些数据。处理需求是指用户要求完成什么处理功能,对某种处理要求的响应时间,处理方式指是联机处理还是批处理等。明确用户的处理需求,将有利于后期应用程序模块的设计。

调查、收集用户要求的具体做法是:

(1)   了解组织机构的情况,调查这个组织由哪些部门组成,各部门的职责是什么,为分析信息流程做准备。

(2)   了解各部门的业务活动情况,调查各部门输入和使用什么数据,如何加工处理这些数据。输出什么信息,输出到什么部门,输出的格式等。在调查活动的同时,要注意对各种资料的收集,如票证、单据、报表、档案、计划、合同等,要特别注意了解这些报表之间的关系,各数据项的含义等。

(3)   确定新系统的边界。确定哪些功能由计算机完成或将来准备让计算机完成,哪些活动由人工完成。由计算机完成的功能就是新系统应该实现的功能。

在调查过程中,根据不同的问题和条件,可采用的调查方法很多,如跟班作业、咨询业务权威、设计调查问卷、查阅历史记录等。但无论采用哪种方法,都必须有用户的积极参与和配合。强调用户的参与是数据库设计的一大特点。

收集用户需求的过程实质上是数据库设计者对各类管理活动进行调查研究的过程。设计人员与各类管理人员通过相互交流,逐步取得对系统功能的一致的认识。但是,由于用户还缺少软件设计方面的专业知识,而设计人员往往又不熟悉业务知识,要准确地确定需求很困难,特别是某些很难表达和描述的具体处理过程。针对这种情况,设计人员在自身熟悉业务知识的同时,应该帮助用户了解数据库设计的基本概念。对于那些因缺少现成的模式、很难设想新的系统、不知应有哪些需求的用户,还可应用原型化方法来帮助用户确定他们的需求。就是说,先给用户一个比较简单的、易调整的真实系统,让用户在熟悉使用它的过程中不断发现自己的需求,而设计人员则根据用户的反馈调整原型,反复验证最终协助用户发现和确定他们的真实需求。

调查了解用户的需求后,还需要进一步分析和抽象用户的需求,使之转换为后续各设计阶段可用的形式。在众多分析和表达用户需求的方法中,结构化分析(Structured Analysis,SA)是一个简单实用的方法。SA方法采用自顶向下,逐层分解的方式分析系统,用数据流图(Data Flow Diagram,DFD)、数据字典(Data Dictionary,DD)描述系统。

1. 使用数据流图分析信息处理过程

数据流图是软件工程中专门描绘信息在系统中流动和处理过程的图形化工具。因为数据流图是逻辑系统的图形表示,即使不是专业的计算机技术人员也容易理解,所以是极好的交流工具。图1.3 给出了数据流图中所使用的符号及其含义。

图1.3  数据流图的符号

数据流图是有层次之分的,越高层次的数据流图表现的业务逻辑越抽象,越低层次的数据流图表现的业务逻辑则越具体。在SA方法中,我们可以把任何一个系统都抽象为    图1.4所示的形式。它是最高层次抽象的系统概貌,要反映更详细的内容,可将处理功能分解为若干子功能,每个子功能还可继续分解,直到把系统工作过程表示清楚为止。在处理功能逐步分解的同时,它们所用的数据也逐级分解,形成若干层次的数据流图,如图1.5所示。

图1.4  系统高层抽象图

图1.5  数据流图的建立

为了更好地说明SA方法,下面举一个简单的设计实例。假定某工厂要设计一个数据库查询系统。其中,主管生产的部门要掌握产品的性能、各种零件的用料和每种产品的零件组成情况,并据此编制工厂的生产计划。主管供应的部门需要了解产品的价格、各种零件的用料情况以及这些材料的价格与库存量,并根据这些资料提出材料的采购计划。

在调查、分析用户的业务活动并确定系统边界后,得到了如图1.6和图1.7所示的业务流程图。

根据实际应用环境对系统在功能上进行分解,如图1.8所示。

图1.6  生产部门业务流程图

数据库设计:需求分析相关推荐

  1. mysql数据库需求分析工具_一份全面的“数据库设计需求分析”是怎样的?

    原标题:一份全面的"数据库设计需求分析"是怎样的? 本文笔者将与大家分析数据库外部设计需求.结构设计需求.运用设计需求以及安全保密设计需求. 数据库设计需求 1. 需求概述 建立完 ...

  2. 项目开发周期与数据库设计对比

    项目开发周期与数据库设计对比 项目开发周期 数据库设计 需求分析 分析客户的业务和数据处理需求. 1.         收集信息(不怕多,但怕漏): 2.         标识对象: 3.       ...

  3. 点餐系统mysql设计,外卖点餐系统数据库设计.doc

    外卖点餐系统数据库设计.doc 外卖点餐系统数据库设计 需求分析: 现要开发外卖点餐系统.经过可行性分析和初步的需求调查,确定了系统的功能边界,该系统应能完成下面的功能: 订餐管理. (2)菜单管理. ...

  4. MYSQL数据库设计和数据库设计实例(二)

    数据库设计---需求分析 1>需求分析的主要任务或者说主要的作用是:通过详细的调查现实世界要处理的对象,了解计算机系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能, 还需要考虑 ...

  5. 西电数据库实验-学生学籍管理系统 数据库设计

    西电数据库实验-学生学籍管理系统 数据库设计 文章目录 西电数据库实验-学生学籍管理系统 数据库设计 需求分析 实体集 联系集 概念结构设计 逻辑结构设计 实体集 department(id‾,nam ...

  6. 基于.NET平台的分层架构实战(二)——需求分析与数据库设计

    基于.NET平台的分层架构实战(五)--接口的设计与实现 · 基于.NET平台的分层架构实战(四)--实体类的设计与实现 · 基于.NET平台的分层架构实战(三)--架构概要设计 · 基于.NET平台 ...

  7. (数据库系统概论|王珊)第七章数据库设计-第二节:需求分析

    文章目录 一:需求分析的任务 二:需求分析的步骤和方法 (1)步骤 (2)方法 三:数据字典 (1)定义 (2)组成 ①:数据项 ②:数据结构 ③:数据流 ④:数据存储 ⑤:处理过程 注意 更多可参照 ...

  8. 互联网应用开发实践:需求分析与数据库设计

    在本文中将分析一个用于新生开学分配寝室的"宿舍秒杀"系统.从用户故事开始探索需求,进而分析得到系统的主要功能和非功能性需求.最后,根据需求分析设计数据库,数据库的设计原则是尽可能的 ...

  9. 数据库设计(一) 需求分析

    目前,大多数的应用系统都属于数据库应用程序,都离不开数据库的支持.数据库设计方案的优劣对于应用程序的运行至关重要.数据库设计过程就是针对具体的应用环境,设计优化的逻辑模式,并根据所采用的数据库系统设计 ...

最新文章

  1. 监控系统 Prometheus 和 Zabbix 对比
  2. 网易游戏2016实习生招聘笔试题目--井字棋
  3. Kafka如何对Topic元数据进行细粒度的懒加载、同步等待?
  4. centos7加固手册
  5. qtcreator摄像头显示时间_屏下摄像头手机量产了,然后呢?
  6. while(1); 作用
  7. document.elementFromPoint
  8. Error: Cannot find module 'webpack-cli'--解决方案
  9. Pytorch DataLoader一次性封装多种数据集(pytorch Data学习六)
  10. mysql将俩个SQL查询出来的不一样的结果横向拼接成一行数据
  11. 阿里正在研发无人卡车;《王者荣耀》皮肤个性动作涉嫌抄袭致歉;​苹果泄露女生私密照赔偿数百万美元|极客头条...
  12. python的高级特性3:神奇的__call__与返回函数
  13. 吴恩达神经网络和深度学习-学习笔记-5-参数和超参数
  14. win10任务栏怎么还原到下面_如何让你的Win10桌面变得更好看?
  15. vue中打印表格功能(重点是表格制作)
  16. VS2003安装步骤及其错误
  17. android webview浏览器下载文件,Android 浏览器 —— 使用 WebView 实现文件下载
  18. h5获取视频的第一帧
  19. GA算法(遗传算法) ——以求解achley,rastrigin函数为例
  20. leach协议c++代码_leach和leach-c协议仿真

热门文章

  1. 模块化:ES Module与commonJS
  2. 深度丨银行零售客群策略与标签体系搭建指南
  3. 【SQL注入17】绕过手法与防御
  4. Java使用GZIP进行压缩和解压缩(GZIPOutputStream,GZIPInputStream)
  5. flex:1 是什么意思
  6. Linux LCD 驱动
  7. Life Long Learning论文阅读记录之LwF
  8. 【APP渗透测试】 Android APP渗透测试技术实施以及工具使用(客户端服务端)
  9. 【JavaMap接口】特点实现类HashMap常用方法
  10. Mixed Reality Martial Arts Training using Real-time 3D Human Pose Forecasting with a RGB Camera(翻译二)