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. 使用IE浏览器下载时候窗口一闪而过

    使用IE浏览器下载东西时,窗口一闪而过,那么这个问题怎么处理呢? 解决办法: 1.按住ctrl键进行下载 2.浏览器>工具>internet选项>安全自定义级别>下载文件自动提 ...

  2. PHP正则表达式的逆向引用与子模式 php preg_replace应用

    mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit]) 功能 在 subject 中搜索 ...

  3. 中国IT人,你们是否从没想过开发一款伟大的产品?

    我也是今年刚毕业的,一毕业就做了猎头,从开始实习到正式工作,迄今为止接触的IT技术人不下上千人了.这里面有腾讯.阿里巴巴.百度.360.金山.金蝶.用友.华为.惠普等从事自主研发的大牛,也有很多软通. ...

  4. 常用sqlserver语句

    1.查看表上的索引 sp_helpIndex [表名]  --查询表上拥有的索引 2.更新其它表 update 申请信息set 研发部门='123',版本信息='321'where 单号=(selec ...

  5. 【BZOJ】【2940】【POI2000】条纹

    博弈论 一开始想成S-Nim了……后来发现不一样= =石子是一定得取的,但是这个铺条纹就像Crosses and Crosses一样,是可以铺到中间,左右留下空隙但是对手无处可放的…… 所以就是两道题 ...

  6. 母函数入门笔记(施工中…

    定义:对于一个数列,它的母函数(即生成函数)为   为了对这个准确求值,我们设    举一个简单的例子 例1 对于数列 他的生成函数为 ,那么应用一下等比数列求和公式 这里由于 所以当时 那么   例 ...

  7. 【面试题021】包含min函数的栈

    [面试题021]包含min函数的栈  MinStack.cpp: 1234567891011121314151617181920212223242526272829303132333435363738 ...

  8. Lua 的数据结构

    1. Arrays: 注意 #(data), # 加上 table名字 == size of data = {}; , do --行 , do --列 data[(y-)*+x] = (y-)*+x; ...

  9. C# 计算一段代码执行的时间函数

    使用 Stopwatch 类 eg:  计算一个for循环需要的时间 Stopwatch watch = new Stopwatch(); watch.Start(); ; i < ; i++) ...

  10. Thread的第一天学习

    1.实现线程的方法: 1)extend Thread 2)implements Runnable 2.下面代码执行哪个run方法: new Thread( new Runnable(){ public ...