环境
PowerDesigner 12.5
Windows XP 中文版
一、概念模型的重要性
PowerDeigner是最强大、最优秀的数据建模工具,是Sybase公司最伟大的产品。目前最新版本是12.5,从9一直用到现在,对PD的认识也是在逐步加深。
常常在工作中,看到大家用PD,都是用来建几个表,实际上是做PDM,上来就干这个,实际上,这么用PD,是对强悍的PD一种侮辱。PD仅仅是这么玩的吗?
数据库设计的步骤是什么,难道上来稍稍想一下就搞个pdm出来?
下面简单回顾下大学课本里讲述的数据库设计的基本步骤:        
1、需求分析
从系统需求中寻找一些概念性名词,并甄选,并对这些名词相关属性做了解,这部分是人工的,PD做不了什么。
2、概念结构设计
针对甄选的名词进行分心,找出其中的关系(独立的、一对一、一对多、多对多、继承五种关系),并用E-R图描述出来,这是大学课本的做法。在PD中,这个过程可以用CDM(概念模型)来描述,PDM中实体概念模型表示方式比E-R更清晰,更好。
3、逻辑结构设计
实际上就是设计表的结构和表之间的主外关系等。这部分在PD中对应的是PDM(物理模型),而PD中的物理模型一般都是直接从概念模型生成的。也就是说,只要你做好概念模型,物理模型就可以自动生成。
当然,这种生成结果一般都需要做一些调整和优化。
4、物理结构设计
有了PDM,数据库的物理设计将不费吹灰之力,直接可以从PDM导出各种数据库系统的建库脚本。
5、数据库的建立和测试
这个过程也很简单,看看建库脚本的执行就知道了。不合理了重新修改PDM,然后生成sql再来。
6、数据库运行和维护。
这个一般是DBA的事情了,比如时间长了,数据量大了,在某些列上加上索引,调优等等。
从中可以看到,一上来就建PDM,是不合理的。实际上要求对概念模型有个透彻理解了才去做PDM,这种理解可以不画图,但至少是心中有图。
做CDM概念模型的好处是交流容易,全世界通用,谁看了都明白。你难道能用PDM的外键关系去看数据关系吗,如果一个表上有多个外键,外键关联像蜘蛛网一样,就晕菜了,谁也看不明白!
二、 使用PD建立数据库概念模型
1、一对一CDM
下图描述了 一个系统用户对应一个扩展信息,也可以没有扩展信息。扩展信息依赖用户信息的存在。并且一个扩展信息只能有一个用户信息。
关系的设置:
将其生成PDM
2、一对多CDM
下图CDM描述了一个公司有多个经理的模型,当然一个公司也可以没有经理(老板是光杆司令)。但一个经理必须属于一个公司。
关系的设置:
生成的PDM
3、多对多CDM
下面描述的是一个演员和角色的关系,一个演员可以演多个角色,一个角色可以由不同的演员来演,比如《红楼梦》的林妹妹,小时候找个演员A来演,长大后的形象由演员B来演。
关系设置,多对多关系最简单了,一般不需要设置:
生成的PDM如下:
4、继承关系CDM
下图描述的是一个继承关系,比如有一个教务系统,用户分学生老师,注册时候,老师和学生填写的信息由差异,但有公共信息。
关系配置,不需要,就集成关系,没啥好设置的。
生成的PDM如下:
也许你会发现,五个呢,怎么才四个,呵呵,单表就独立着和谁都没关系,还用画吗?
三、总结
1、数据库建模是系统设计中最重要一步,概念模型能很好的描述数据间的关系,还可以从概念模型精确生成符合一定标准范式的物理模型。
2、CDM能描述出更细微的数据关系,比如是0-n还1-n,这直接影响到数据业务上的约束,但是用PDM无法描述。CDM为业务交流节约了沟通成本。
3、CDM也为后来了解底层业务数据关系提供了依据,尤其是表很多很多时候,如果没有CDM,那只有设计数据库的人知道底层的关系了。
4、如果表很多,分模块的情况,还可以讲CDM分包来管理,这样可以避免将所有的实体关系画到一张图中所带来阅读上烦恼。
5、PD还有其他很多很强悍的功能,比如数据库反响到PDM,PDM导出脚本,PDM导出Java模型对象、XML模型。还可以生成DAO层的持久化代码,甚至hbm文件,还可以做业务流程建模、生成数据字典报表等等。但PD最擅长的就是CDM-->PDM-->SQL,数据库反向工程,报表功能,用好这些就不错了。
本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/187158,如需转载请自行联系原作者

PowerDesigner概念模型详解相关推荐

  1. 转换cdm为mysql_详解PowerDesigner之CDM、PDM、SQL之间转换

    详解PowerDesigner之CDM.PDM.SQL之间转换 前段时间用了下PowerDesigner做了一些辅助工作.在此特地小结一下: 有关CDM.PDM.SQL之间转换以及不同数据库之间库表S ...

  2. UML应用开发详解--视频

    UML应用开发详解 地址:http://v.51work6.com/courseInfoRedirect.do?action=courseInfo&courseId=240574 通过本教程, ...

  3. OS- -进程详详解

    OS- -进程详详解 文章目录 OS- -进程详详解 一.进程 进程模型 进程的创建 进程的终止 进程的层次结构 进程状态 进程的实现 一.进程 操作系统中最核心的概念就是进程,进程是对正在运行中的程 ...

  4. 2010年系统架构师考试题详解

    原文地址为: 2010年系统架构师考试题详解 考试科目一:综合知识 采用微内核结构的操作系统提高了系统的灵活性和可扩展性,(1) (1)A.并增强了系统的可靠性和可移植性,可运行于分布式系统中 B.并 ...

  5. P2P技术详解(一):NAT详解——详细原理、P2P简介(转)

    这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层开发人员而言有很高的参考价值. <P2P技术详解>系列文章 ➊ 本 ...

  6. 015. P2P技术详解(一):NAT详解——详细原理、P2P简介

    http://www.52im.net/thread-50-1-1.html 这是一篇介绍NAT技术要点的精华文章,来自华3通信官方资料库,文中对NAT技术原理的介绍很全面也很权威,对网络应用的应用层 ...

  7. Code First开发系列之管理数据库创建,填充种子数据以及LINQ操作详解

    本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LINQ to Entities 使用LINQ to Entities操作实体 L ...

  8. 8天掌握EF的Code First开发系列之3 管理数据库创建,填充种子数据以及LINQ操作详解...

    本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LI ...

  9. 阿里云大数据型实例规格族d1配置性能详解

    阿里云大数据型实例规格族d1配置性能CPU.内存.适用场景.d1实例规格族,InstanceTypes分享大数据型实例规格族d1实例详解: 大数据型实例规格族d1配置特性 I/O优化实例 仅支持SSD ...

最新文章

  1. MySQL的主从服务器配置
  2. 史上最全开源中文 NLP 数据集:包括10大类、142条数据源,总有你钟意的那一款!...
  3. 关于Nginx的使用
  4. C# 判断两张图片是否一致,极快速
  5. SQL 2008升级SQL 2008 R2完全教程或者10.00.1600升级10.50.1600
  6. HTML CSS JS之间的关系
  7. rabbitmq的启动命令和springboot整合使用rabbitmq
  8. Mac中使用LaTeX的中文字体出现Package fontspec Error: The font “宋体“ cannot be found.解决方案
  9. 【mac】Mac 安装Brew命令
  10. js中innerHTML与innerText的用法与区别【转自http://blog.sina.com.cn/johnpu】
  11. Vue指令之v-html
  12. linux下的函数dirname()和basename()使用
  13. 【Android RTMP】RTMP 数据格式 ( FLV 视频格式分析 | AVC 序列头格式解析 )
  14. 禁用惠普服务器自动开机,惠普商用台式机如何在BIOS中设置通电自动开机
  15. Quartz 定时任务 cron 表达式详解
  16. JAVA SpringBoot接科大讯飞TTS语音合成保姆式教程附源代码
  17. 武昌职业学院与湖北美和易思教育科技有限公司校企签约揭牌仪式隆重举行
  18. 一人顶一个团队的华为天才少年稚晖君,又带来一项硬核黑科技,引起极客圈地震!...
  19. 华为扩大内存代码_如何将华为手机带代码加大内存5s?
  20. 漏洞payload 靶机_【HTB系列】靶机Bitlab的渗透测试

热门文章

  1. 自定义曲线_完美动力小课堂:AnimationCurve(动画曲线编辑) 如何使用?
  2. 毕业论文摘要的书写方法和技巧
  3. 前端(五)——CSS之美化页面
  4. Android studio | From Zero To One ——安装教程及前期学习总结
  5. 什么是latex科技排版系统,有对比word有何不同?
  6. php配置mysql集群_mysql的集群配置
  7. background 旋转_基于HTML5 Canvas 实现矢量工控风机叶轮旋转
  8. 计算机辅助相关论文,关于计算机辅助教学的论文
  9. html 执行外部js的函数,javascript – Chrome扩展程序:加载并执行外部脚本
  10. 儿童节,今天我们不做大人