PowerDesiGner数据库设计

原文地址:http://hi.baidu.com/shunkunl/blog/item/871c75ef8596faeace1b3e00.html
PowerDesign:PowerDesign是 Sybase推出的主打数据库设计工具。PowerDesign致力于采用基于Entiry-Relation的数据模型,分别从概念数据模型 (Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库进行设计。概念数据模型描述的是独立于数据库管理系统(DBMS)的实体定义和实体关系定义。物理数据模型是在概念数据模型的基础上针对目标数据库管理系统的具体化。

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数据源来实现。

-----------------------------------------------------------------------------------------------------------------------------------

蛙蛙推荐:用PD进行数据库建模经验总结

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写成如下:

/* tablename: %TNAME% */
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mipony linux客户端,Mipony网盘下载工具

Mipony是一个特别设计的下载管理器下载的免费网盘如Rapidshare,Megaupload,Hotfiles,Gigasize,Filefactory,Mediafire,Netload。简介:支援“HJSplit”档案合并功能,还可以自动侦测网…

2018全球100个最有价值的科技品牌 18个中国品牌上榜

来源:全球企业动态英国品牌评估机构Brand Finance发布“2018全球100个最有价值的科技品牌榜”(Top 100 most valuable tech brands 2018),前五位都是美国品牌。美国上榜品牌总价值9590亿美元,占百强品牌总价值14673亿美元的65%。亚马逊跃升至…

Effective Java~2.Builder代替多参数Constructor

Builder模式 // Builder Pattern public class NutritionFacts {private final int servingSize;private final int servings;private final int calories;private final int fat;private final int sodium;private final int carbohydrate;public static class Builder {// R…

Alpine Linux 使用简介

From:https://www.aliyun.com/jiaocheng/137717.html Alpine Linux、CoreOS、RancherOS、Red Hat 原子项目、 VMware光子操作系统比较https://blog.csdn.net/hxpjava1/article/details/78482987 Alpine Linux配置使用技巧:https://www.aliyun.com/jiao…

实例学习SSIS(五)--理论介绍SSIS

导读: 实例学习SSIS(一)--制作一个简单的ETL包 实例学习SSIS(二)--使用迭代 实例学习SSIS(三)--使用包配置 实例学习SSIS(四)--使用日志记录和错误流重定向 实例学习SSIS…

MIT教授Tomaso Poggio演讲与专访:智能背后的科学与工程 | 腾讯AI Lab学术论坛

来源:腾讯AI实验室腾讯AI Lab第二届学术论坛在深圳举行,聚焦人工智能在医疗、游戏、多媒体内容、人机交互等四大领域的跨界研究与应用。全球30位顶级AI专家出席,对多项前沿研究成果进行了深入探讨与交流。腾讯AI Lab还宣布了2018三大核心战略…

linux捕捉信号sigint失败,为shell布置陷阱:trap捕捉信号方法论

本文目录:1.1 信号说明1.2 trap布置陷阱1.3 布置完美陷阱必备知识家里有老鼠,快消灭它!哎,又给跑了。老鼠这小东西跑那么快,想直接直接消灭它还真不那么容易。于是,老鼠药、老鼠夹子或老鼠笼就派上用场了&a…

Effective Java~3. 私有Constructor 或Enum 强化单例

1、私有化构造器 // Singleton with static factory public class Elvis {private static final Elvis INSTANCE new Elvis();private Elvis() { ... }public static Elvis getInstance() { return INSTANCE; }public void leaveTheBuilding() { ... } } 可序列化对象单例&a…

VMware虚拟机软件

http://www.xuniji.com/vmware/ 虚拟机之家 http://www.ccw.com.cn/ 如何配置VMware虚拟机网络环境全程图解 nyytwngmail.com 8 转载于:https://www.cnblogs.com/hnytwn/archive/2009/10/28/1591044.html

linux 内置ssh,Linux ssh内置sftp配置说明

centos7 环境下已验证首先建立两个用户,用于sftp访问使用。eg:useradd -d /opt/sftp -s /bin/nologin sftp说明 -s /bin/nologin 禁止ssh登录服务器,其实如果将用户设置为用于sftp的话,不做此设置也是无法登录的会提示:This service allows sftp connections onl…

Trade Stages - The Trade Path

Gieno Trade Stages - The Trade Path STARTS OFF “greed orientated.”Loses because:1 Market problemsNot a zero sum game, a “very negative” sum gameMarket psychology – doing the wrong thing at the wrong timeThe majority is always wrongMarket exists on ch…

win10、oneplus7pro 使用 Kali

1、Windows 10 使用 Kali Linux子系统 微软为 Windows Subsystem for Linux (WSL) 带来了著名的 Kali Linux ,无虚拟机,无Docker实现Windows 和 Kali Linux 交互。 window 开启 wsl 功能: 1.打开控制面板( winR,输入…

Effective Java~9. try-with-resource 优先于 try-catch

try-finally 语句是保证资源正确关闭的最佳方式,但是当添加多个资源时,情况会变糟 // try-finally is ugly when used with more than one resource! static void copy(String src, String dst) throws IOException {InputStream in new FileInputStre…

linux安装汉语输入法,在linux中安装google拼音输入法

载自: 并修改了一些内容installhow to build and install scim-googlepinyin* Introduction* grab the source* build depends* runtime depends* build and installIntroductionThis document is intended to help you to build and install scim-googlepinyin fro…

干货|十大产业方向深度解析!《2020科技产业趋势报告》

来源:机器人大讲堂报告下载:https://pan.baidu.com/s/1BKf2rINXx0CVLhgokfYrgQ未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括:建立AI智能系统智商评…

交互式数据包处理程序 Scapy 用法

From:https://www.cnblogs.com/hongxueyong/p/5641475.html Scapy 用法官方文档:http://scapy.readthedocs.io/en/latest/#starting-scapyAbout ScapyScapy is a Python program that enables the user to send, sniff and dissect and forge network pa…

top、postop、scrolltop、scrollHeight、offsetHeight

网页可见区域宽:document.body.clientWidth; 网页可见区域高:document.body.clientHeight; 网页可见区域高:document.body.offsetWeight: 网页可见区域高:document.body.offsetHeight; 网页正文全文宽:documen…

Effective Java~34. 用enum 代替 int 常量

在将枚举类型添加到该语言之前,表示枚举类型的常见模式是声明一组名为 int 的常量,每个类型的成员都有一个常量: // The int enum pattern - severely deficient! public static final int APPLE_FUJI 0; public static final int APPLE_…

linux 计算集群搭建,使用centos构建服务器计算集群

yum源的搭建排除列表#新建文件[rootcentos-test ~]# vim /usr/local/local_mirror/exclude.list#填入内容SRPMSaarch64ppc64ppc64ledebugrepodataEFILiveOSimagesisolinuxCentOS_BuildTagEULAGPLRPM-GPG-KEY-CentOS-7RPM-GPG-KEY-CentOS-Testing-7drpmsshell同步脚本#建立文件[…

展望2021年:智能机器人可监督工业机器人干活,效率提升30%

来源:极客网会帮我们吸地板、在公共场所担任导引员或是拆除炸弹的机器人呢可能感觉比较有趣,但那些负责组装汽车以及在工厂生产在线帮忙拾取物品的机器人,在整体价值上要高得多,而且也有越来越多的工/商业或消费性应用产品是由这种…