PowerDesiGner数据库设计
ERWin:这个是CA公司的拳头产品,它有一个兄弟是BPWin,这个是CASE工具的一个里程碑似的产品。ERWin界面相当简洁漂亮,也是采用ER模型,如果你是开发中小型数据库,极力推荐ERWin,它的Diagram给人的感觉十分清晰。在一个实体中,不同的属性类型采用可定制的图标显示,实体与实体的关系也一目了然。ERWin不适合非常大的数据库的设计,因为它对 Diagram欠缺更多层次的组织。
如何一次性将表结构的脚本导出来?
Database --->Generate Database ---> Genarate Script 就可实现。
Name用中文英文以便查询、写程序的时候方便, Code才是最终产生的Table Name
PowerDesigner中建了模型,如何把它作为文档导出?
利用REPORT。选择一个模板,然后就生成了RTF或是HTM格式的文档
如何将已经存在的数据库所有表,导入到PowerDesign中?
用PD里的反向工程file--->reverse engineering ===> and go on
概念数据模型(CDM)
CDM表现数据库的全部逻辑的结构,与任何的软件或数据储藏结构无关。一个概念模型经常包括在物理数据库中仍然不实现的数据对象。它给运行计划或业务活动的数据一个正式表现方式。不考虑物理实现细节,只考虑实体之间的关系。
物理数据模型 (PDM)
PDM叙述数据库的物理实现。主要目的是把CDM中建立的现实世界模型生成特定的DBMS脚本,产生数据库中保存信息的储存结构,保证数据在数据库中的完整性和一致性。
面向对象模型 (OOM)
一个OOM包含一系列包,类,接口和他们的关系。这些对象一起形成所有的(或部份)一个软件系统的逻辑的设计视图的类结构。一个OOM本质上是软件系统的一个静态的概念模型。
业务程序模型(BPM)
BPM描述业务的各种不同内在任务和内在流程,而且客户如何以这些任务和流程互相影响。BPM是从业务合伙人的观点来看业务逻辑和规则的概念模型,使用一个图表描述程序,流程,信息和合作协议之间的交互作用。
正向工程
你能直接地从PDM产生一个数据库, 或产生一个能在你的数据库管理系统环境中运行的数据库脚本。可以生成数据库脚本,如果选择ODBC方式,则可以直接连接到数据库,从而直接产生数据库表以及其他数据库对象。
逆向工程
将已存在的数据库产生进新的PDM 之内。数据来源可能是从脚本文件或一个开放数据库连接数据来源。
并不是每个设计都需要用到Power Designer。 例如:小的系统,或Table数比较少的情况下就没有必要采用Power Designer了。
PowerDesigner仅仅是实现的工具
不要以为Power能帮你把关系什么的全部建立好,很多数据库理论只是还是需要的,设计数据库的时候,那些范式什么的,一定要掌握。
设计一个好的数据库,最好的工具不是必须的,但是基础理论是一定要的。
PowerDesigner用途不局限于数据建模
还可以用PowerDweigner设计web service
并不是每个设计都需要用到PD
用Powerdesigner对付比较大型的项目,是很好的,对于短平快类型的项目,如果时间要求你1个星期完成一个程序,那么完全没有必要用 PowerDesigner,直接维护数据库就可以了,当表的数量超过10个(一个小系统的表在10个左右)的时候,建议还是用用 Powerdesigner 。
我的看法:如果想做成一个比较规范的数据库,小项目也可以用。毕竟生成报表和正反向工程很有用。
零碎
PD中的CDM设计时,可以将所有需要的字段都定义好。然后在设计实体是直接取出来。PD提供了这样的统一管理的工具。在PD菜单栏-Model-Data Item下。
为了使自己设计的CDM看起来象样一点,可以从工具栏中,拖动一个Title。其显示的信息,是当前CDM的属性值。
为了使实体等Symbol看起来显眼和舒服。可以根据个人喜好进行外观上的调整。当前设计界面中,右键-Display Perferences中进行设置。还可以增加shadow效果。选中Symbol后,Ctrl+W。或者右键菜单。
为了使布局整齐。选中需要调整的Symbol后,菜单-Symbol-Align进行设置。快捷键:ctrl+UP,ctrl+Down,ctrl+Left,ctrl+Right即为上下左右对齐。
设计实体属性时注意的细节:M:表示强制非空;P:是否为主键;D:是否在模型中显示。gerenate:表示是否作为表生成。
默认情况下,CDM的实体会显示Identifier一栏。如果不想其显示出来,在右键-Display Perferences中ObjectView-Entity中设置。
关系的命名方法是:实体名1 实体名2。
关系中的角色(Role)表示联系线上一个方向上的含义。用一个动词来描述。Role只是起一个描述作用。
依赖(Dependency):表示在联系中一个实体的存在是否依赖于另一个实体。寄生实体(Dependent Entity)是一种部分地被另一实体确定的实体。在依赖联系中,一个实体与另一实体通过标识符相联系,当一个实体的存在没有另一个实体的存在作为参考就不能唯一确定时,两个实体间就存在依赖联系。
主从表就是典型的依赖关系。
中间实体(Associative Entity):是为了解决多对多联系而产生的一个人工实体,能够为中间实体定义属性。用鼠标右键单击多对多联系线,在弹出的菜单中选择“Change to entity”,能够把这个联系转换成连接两个实体的中间实体。
善于利用自动生成的中间实体,可以简化设计工作,提高数据库设计的正确性。
中间实体一般不用再加入新的字段。
牢记:外键是通过关系Relationship自动来建立的,不需要手动建立。不然会产生多余的键。所以设计时,关注实体本身的字段,以及实体间的关系,特别是多对多和依赖关系。
从CDM到PDM的转换需要注意:
不能改变Diagram的名称
在树状图中,如果钩选红色标出的Symbol表示覆盖修改,不钩选表示保护修改。
数据库为了保证数据完整性和一致性,提出了约束。即表约束,列约束以及参照完整性约束。通常数据库设计和程序开发不是绝对的分离的。所以前两者在实际开发过程中逐渐的完善。需要注意的还是参照完整性约束。
在PD中前两者的设定是对字段,后者是对关系。
参照完整性约束
限制(Restrict)。不允许进行修改或删除操作。若修改或删除主表的主键时,如果子表中存在子记录,系统将产生一个错误提示。这是缺省的参照完整性设置。
置空(Set Null)。如果外键列允许为空,若修改或删除主表的主键时,把子表中参照的外键列设置为空值(NULL)。
置为缺省(Set Default)。如果指定了缺省值,若修改或删除主表的主键时,把子表中参照的外键设置为缺省值(Default)。
级联(Cascade)。把主表中主键修改为一个新的值时,相应修改子表中外键的值;或者删除主表中主键的记录时,要相应删除子表中外键的记录。
注意理解以上的约束时,抓住操作的都是主表。子表的操作都是相对主表来说的。操作方式就是Update和Delete。
引用基础数据表的数据时,可以建立对应的视图。选中需要作为视图的表,菜单栏-Tools-Create View
PD支持对已有数据的表更新表结构。不过需要谨慎操作,检查生成的SQL脚本。
PD也可以生成随机的测试数据。
触发器就是DBMS中提供的事件驱动机制。发生在表的Insert,Update和Delete。执行SQL语句或存储过程。
在PD中可以完成存储过程的编写,也便于管理。
逆向工程可以通过数据库脚本或者通过ODBC数据源来实现。
-----------------------------------------------------------------------------------------------------------------------------------
1、建立pdm的时候选择sqlserver2000
2、建立PDM后,先建立一个dbo的用户,新建表后要制定表的所属用户为dbo。
3、建表的时候Name和Code可以分开,name写成中文,用来看;code写成英文,用来当表名;最后就是把comment写上,这个要生成注释的。写注释的时候可以写长一些,但是千万不要回车换行,要不生成sqlserver数据库的时候你点击表设计视图,列的注释分好几行不好查看。给表添加列的时候也是一样,分别写name、code、comment。
4、打开database-edit current DBMS后把script/objects/table/create的value写成如下:
create table [%QUALIFIER%]%TABLE% (
%TABLDEFN%
)
[%OPTIONS%]
script/objects/table/tablecomment如下:
EXECUTE sp_addextendedproperty N'MS_Description', N'%COMMENT%', N'user', N'%OWNER%', N'table', N'%TABLE%', NULL, NULL
script/objects/column/add如下:
%20:COLUMN% [%COMPUTE%?AS (%COMPUTE%):%20:DATATYPE% [%IDENTITY%?%IDENTITY%:[%NULL%][%NOTNULL%]][ default %DEFAULT%]
[[constraint %CONSTNAME%] check (%CONSTRAINT%)]] /*%COLNNAME%*/
script/objects/column/columncomment如下:
/*%COLUMN%:%COMMENT%*/
EXECUTE sp_addextendedproperty N'MS_Description', N'%COMMENT%', N'user', N'%OWNER%', N'table', N'%TABLE%', N'column', N'%COLUMN%'
5、下面该生成代码了。点击database-genrate database菜单,把table & view选项卡的table和column组合框里的comment复选框打上钩。点击确定就可以生成数据库脚本了。
6、设计数据库的时候,最好把相关的表放在一起,并用一个矩形框括住,矩形框用不同的背景颜色来填充一下,这样方便查看。可以选择一个矩形框里的所有元件,点击symbol菜单的group symbol把表和矩形框组合在一起,要解除组合点击ungroup symbol菜单。
7、如果要生成数据库报表,右键单击物理模型,选择new-report菜单,然后选择语言和模版,由于PD自带的模版太烦琐,所以一般选择空模版,自己设计要显示的报表元素,比如说table list和column list 以及一些表和列描述等。
8、要想查看每个表生成的代码,可以在表的属性的preview选项卡里查看。
9、如果你右键点击某个图形,选择了protect symbol,这个图形就被保护住了,不能拖动也不能修改了,怎么办?点击symbol菜单,点击unprotect symbol菜单就可以了。
转载于:https://www.cnblogs.com/myssh/archive/2009/10/20/1586924.html
PowerDesiGner数据库设计相关推荐
- PowerDesigner数据库设计与建模。数据库中设计一对一、一对多、多对多、依赖关系、继承关系。
我们平时开发一个互联网项目的流程是:需求设计.数据库设计.功能设计.项目架构.技术选型.项目开发.数据库设计是我们项目的基石,一个中大型项目,要有一个良好的数据库设计,才能走得更远.一个项目如果数据库 ...
- 《数据库实验》实验四:数据库设计
前言 摘要:微信搜索[三桥君] 数据库课程是需要做些相关知识点的数据库实验报告的,三桥君根据自己所学所做的数据库实验,特地重新整理成教程.这些教程一共有6份,收录到<数据库实验>专栏了. ...
- 《数据库系统概论》之数据库设计六步骤(需求、概念、逻辑、物理、实施、运行维护)
文章目录 0.一图总览 1.数据库设计概述及六步骤简介 2.需求分析---步骤一 2.1 收集资料 2.2 分析整理 2.3 数据流图 2.4 数据字典 2.5 用户确认 3.概念结构设计---步骤二 ...
- Bootstrap4+MySQL前后端综合实训-Day04-AM【新闻管理手机端页面+数据库操作(PowerDesigner 图形化数据库设计软件、SQLyog软件)】
[Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目 录 W3C标准盒子模型和IE盒子模型的区别 Bootstrap4--新闻管理手机端页面 菜 ...
- 使用PowerDesigner做数据库设计(二)
使用PowerDesigner做数据库设计(二) CDM设计后续 在上一篇文章中,有一点给忘记了,在CDM设计窗口中,如果在设计中,实体entity越来越多,实体entity间的关系也会越来越复杂,像 ...
- 使用PowerDesigner做数据库设计(一)
使用PowerDesigner做数据库设计(一) 使用PowerDesigner进行数据库设计,去年是第一次使用,使用它完成了一次小型的数据库设计.今年是第二次使用,中间间隔了几个月,再次打开Po ...
- 按Sybase的PowerDesigner工具设计的数据库模型 --- 解析生成能兼容多种数据库的相应的C#底层代码...
先有设计,后有代码,改设计总比改代码更容易一些,改设计的成本更低廉,软件也要按图纸施工,没有图纸的建筑物,将来也不好维护,没有数据库设计的软件更怎么可能好维护呢? 1:总希望自己的程序能兼容多种数据库 ...
- PowerDesigner一键导出数据库设计表结构
1.背景 帮朋友弄下数据库设计,又用到PowerDesigner,因为还要数据库设计文档(word),还想着怎么把数据库结构导出呢,发现以前弄过,一键导出,很方便,分享下,祝好运! 2.解决方案 2. ...
- 数据库设计---PowerDesigner(物理模型和概念模型)
前言 上一篇介绍了个工具建数据库: PowerDesigner V16.5 安装教程以及汉化(数据库建模) ,现在我就说一下怎么用这个建数据库吧. 内容 第一种方法:概念模型转物理模型 1.首先新建 ...
最新文章
- python字频统计软件_python结巴分词以及词频统计实例
- php修改mysql数据找不到_php 如何修改mysql数据
- CIO常犯的五个错误
- moco在接口自动化中的应用
- 力扣—剑指 Offer 45. 把数组排成最小的数
- C++函数内部实现的规则
- asp.net设置元素css的属性
- http和https的区别,不懂的一起研究【转】
- paip.python错误解决21
- python管道怎么使用_如何在多个流程中正确使用管道(2)
- 优锘|ThingJS-X零代码平台:七大智慧场景全新Demo
- maven系列:生命周期
- 计算物体自由下落距离
- cad捕捉不到标注线上的点_CAD为什么捕捉不到正在绘制的多段线上的点?
- 1.1、云计算HCIP服务器基础知识
- linux chroot命令使用
- 深度理解抽象类和接口
- Java温故而知新-程序逻辑结构
- pyspark:导入第三方包
- QNX----第3章 进程间通信(1部分)
热门文章
- LeetCode MySQL 1747. 应该被禁止的Leetflex账户
- LeetCode MySQL 614. 二级关注者
- LeetCode 1481. 不同整数的最少数目(计数+排序+贪心)
- LeetCode 560. 和为K的子数组(前缀和差分)
- iphone屏幕上的圆圈怎么设置_iPhone手机屏幕突然变暗或者黑屏怎么办?看这里你就知道该怎么办...
- mysql 字符串搜_mysql – 在表中搜索字符串的SQL查询?
- 【Python基础知识-pycharm版】第一节-基础
- Git中非常重要的一个文件——.gitignore详解
- Linux无法连接远程仓库,ssh无法连接到远端Ubuntu的解决方法
- python随机生成六位数密码_python生成6位包含数字和字母的密码