Ref: 《数​据​库​设​计​理​论​及​应​用​(​3​)​—​—​需​求​分​析​及​数​据》http://wenku.baidu.com/link?url=hbhJFytMKT8A1D_rKkQ-ABor7zqSJkpQkIsjcX5oxmeZN5cA_5vU8Iq1IWuNORrvLV7haoKCHVe-4YwxEp0C2EyHLwPvV8mihG25FeWuR2O

对于与用户的交流来说,需求分析阶段比较直观的工具是UML中的用例图。其优点非常明显,就是用图形方式表示功能和角色,需求分析人员和用户都能非常容易的读懂并以此交流(当然我说的是草图设计,不是蓝图设计或基于程序的设计)。

那么我们看一下UML是否能很好的支持数据库设计——这点要从UML设计过程分析。有了用例图,我们得到的是系统的功能需求,而且仔细的话,我们可以做的很好。那么下一步,一般是通过时序图(也有翻译成顺序图或序列图的)发现系统中的对象。这种图向用户简单说明也很容易理解和交流。发现了系统中的对象后,就可以进行类图的设计了。类图是系统中对象的抽象,一般可以与编码实现的类和对象对应起来。

这是一个完美的设计过程,方便交流,还容易转换为编码。但是,我们从这个过程也可以看到,UML没有涉及数据库的设计过程。那么是不是可以把在时序图中发现的对象转换为数据库实体(表)呢?我们分析一下这些对象的特点,会发现这些对象对应的是我们设计的应用程序内存中保存的对象,而内存中的对象,有些可以简单的和数据库表对应,但大部分却是几个表的组合——对应的是数据库中的视图。

对用户来说,表和视图是不必区分的,用户只关心看到的数据,这也是UML与用户容易交流的一个原因。但对于数据库设计人员来说,要使数据冗余尽量少,使编码时更新数据尽可能局限在局部范围内,就必须重新设计对象的存储方式,把表和视图区分开来。这一步的工作还包括视图如何分解为基本表的过程。这项工作没有什么方法值得信赖,只能依靠设计人员的经验和技巧了。这样得到的结果也很难让人信赖。

通过以上分析,我们可以了解,UML支持系统设计是非常好的工具,但在数据库设计中,其支持明显不足。

  UML为什么难以支持数据库设计呢?主要原因在于UML是以功能为中心的,而不是以数据为中心的。这样我们需要找个以数据为中心的工具,这就是数据流图法

数据流图表达了数据和处理的过程,其绘制总是围绕数据如何加工以及如何流转的,因此,它可以非常好的支持数据库的设计。 

补充一点:有些教科书中把数据流图的绘制放到概念结构设计中,另一些则放到需求分析中。个人意见,数据库中存储的对象不是设计出来的,而是从用户那里获得的,所以我倾向于把数据流图归到需求分析过程中。不管哪种分法,在做需求时就需要做数据流图,以便把实体中的属性(字段)搞清楚。

UML与数据流图的更多相关文章

  1. UML 之 数据流图(DFD)

          数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能.数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工 ...

  2. 关于UML图形/图示数量总结

    http://www.uml.org/ 第一种说法: UML - Unified Modeling Language UML 共定义了9种图,包括4种结构图和5种形为图: //4种结构图: 类图 对象 ...

  3. [转]UML八大误解

    潘加宇 本文删节版发表于<程序员>2013年11期 UML(统一建模语言)是软件建模的表示法标准.我从2002年开始专门从事研究和推广UML的工作,在为软件组织提供UML相关需求和设计技能 ...

  4. 【转】【UML】使用Visual Studio 2010 Team System中的架构师工具(设计与建模)

    Lab 1: 应用程序建模 实验目标 这个实验的目的是展示如何在Visual Studio 2010旗舰版中进行应用程序建模.团队中的架构师会通过建模确定应用程序是否满足客户的需求. 你可以创建不同级 ...

  5. UML 学习

    推荐书籍:<面向对象分析与设计(第3版)>.<UML精粹:标准对象建模语言简明指南(第3版)> 推荐一: http://amateras.sourceforge.jp/cgi- ...

  6. 统一建模语言(UML) 版本 2.0

    原文: http://www.ibm.com/developerworks/cn/rational/321_uml/ 简介 参考 UML 基础系列的其他文章和教程 UML基础: 统一建模语言简介 UM ...

  7. 软考下午题详解---uml图

    在上篇博客中,小编主要简单的对软考下午题当中的数据流图设计进行了一系列总结,今天我们继续来看软考下午题当中大题部分,uml图的相关知识,在我们学习的过程中,我们也已经接触过,西安交大刘惠老师讲解过um ...

  8. 五种UML工具

    ProcessOn是一款在线流程图软件(https://www.processon.com/),能够高效的完成在线流程图.UI原型图.UML以及组织图,网络拓扑图的构建.该软件最大的特点是,无需安装, ...

  9. 【UML】NO.70.EBook.9.UML.4.001-【PowerDesigner 16 从入门到精通】- 基础概念

    1.0.0 Summary Tittle:[UML]NO.70.EBook.9.UML.4.001-[PowerDesigner 16 从入门到精通]-  基础概念 Style:DesignPatte ...

随机推荐

  1. Linux之mount命令详解

    linux下挂载(mount)光盘映像文档.移动硬盘.U盘.Windows和NFS网络共享linux是个优秀的开放源码的操作系统,能够运行在大到巨型小到掌上型各类电脑系统上,随着linux系统的日渐成 ...

  2. 【F#】 入门代码

    找下感觉: 语法和go 如出一辙, 都是erlang派的语言 在 vs 中我没有找到自动缩进的快捷键 github上的F#代码也相对较少 // 在 http://fsharp.org 上了解有关 F# ...

  3. php必看六本书

    php和mysql web开发 PHP高级程序设计_模式.框架与测试.pdf  PHP专业项目实例开发.pdf PHP5高级应用开发实践.pdf [深入PHP面向对象.模式与实践(第2版)].(美)赞 ...

  4. cocos2.2.3中创建精灵对象的三大类方法

    1.众生相,皆精灵 2.精灵的类继承关系 class CCSprite : public CCNode, public CCNodeRGBA, public CCTextureProtocol 3.创 ...

  5. 关于表 datatable的条件查询

    关于表 datatable的条件查询 从数据库中获得一个datatable dt .里面有很多的死的数据.然后,我就是要在这个表中来按条件查询,例如 dt中有个列叫"palte", ...

  6. 小王子浅读Effective javascript(一)了解javascript版本

    哈哈,各位园友新年快乐!愚安好久没在园子里写东西了,这次决定针对javascript做一个系列,叫做<小王子浅读Effective javascript>,主要是按照David Herma ...

  7. linux消息队列的使用

    消息队列 *消息队列是内核地址空间中的内部链表,通过内核在各个进程之间传递的内容.消息顺序发送到消息队列中,每个消息队列都有IPC标识符唯一地进行标识. msgbuf结构 struct msgbuf{ ...

  8. Winform控件学习-TreeView - ContextMenuStrip

    首先,要向窗体添加一个TreeView控件: 然后再添加一个ContextMenuStrip控件: 接下就要给TreeView添加一个MouseDown事件,代码如下: Example 1 priva ...

  9. 1562: [NOI2009]变换序列 - BZOJ

    Description Input Output Sample Input 5 1 1 2 2 1 Sample Output 1 2 4 0 3 HINT 30%的数据中N≤50:60%的数据中N≤ ...

  10. Codeforces Beta Round #10 D. LCIS

    题目链接: http://www.codeforces.com/contest/10/problem/D D. LCIS time limit per test:1 secondmemory limi ...