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. HTTP 错误405.0 - Method Not Allowed

    在使用IIS发布网页的时候,出现下图这个问题 那么出现这个问题的原因可能有很多种,但是我目前是这么解决的,下面说一下我个人解决这个问题的方案,仅供参考. 首先,以管理员的身份启动cmd 如果电脑是64 ...

  2. ios开发之NavBar和TarBar使用技巧

    1  改变NavBar颜色:选中Navigation Bar 的Tint属性.选中颜色. 2  隐藏“back”按钮: self.navigationItem.hidesBackButton = YE ...

  3. Win8 硬盘100%几个修复方法

    上连接 1.改注册表:http://jingyan.baidu.com/article/e3c78d647f79be3c4c85f5d0.html 2.待续

  4. NAND的一些相关概念

    chipsize:整个NAND FLASH 的大小,单位为MB pagesize:一页的大小,单位为字节Byte erasesize:最小擦除大小,单位为字节Byte   NAND写操作基本单位是页, ...

  5. .net 科学类型相关问题

    Q:如果我要把使用科学记数法表示的string转换为int又该如何呢? A:你可以通过把NumberStyles.AllowDecimalPoint | NumberStyles.AllowExpon ...

  6. md RAID

    md: mdadm: 将任何块设备做成RAID 模式化的命令:1.创建模式 -C 专用选项: -l: 级别 -n #: 设备个数 -a {yes|no}: 是否自动为其创建设备文件 -c: CHUNK ...

  7. Linux显示中文乱码解决方法

    vi /etc/sysconfig/i18n 将内容改为 LANG="zh_CN.GB18030" LANGUAGE="zh_CN.GB18030:zh_CN.GB231 ...

  8. Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题

    一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...

  9. leetcode Triangle及其思考

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...

  10. **PHP随机数算法

    <?php $tmp = range(1,30);print_r(array_rand($tmp,10));?> 输出: Array( [0] => 6 [1] => 8 [2 ...