powerdesigner使用 - 叶节点 -- IT博客-中国最具人气的IT博客-赛迪网...

来源:百度文库 编辑:神马文学网 时间:2024/04/27 22:09:33
PowerDesigner杂记



  PowerDesign:PowerDesign是Sybase推出的主打数据库设计工具。PowerDesign致力于采用基于Entiry-Relation的数据模型,分别从概念数据模型(Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库进行设计。概念数据模型描述的是独立于数据库管理系统(DBMS)的实体定义和实体关系定义。物理数据模型是在概念数据模型的基础上针对目标数据库管理系统的具体化。
如何一次性将表结构的脚本导出来?
  Database --->Generate Database ---> Genarate Script 就可实现。Name用中文英文以便查询、写程序的时候方便, Code才是最终产生的Table Name

PowerDesign的使用主要是DBMS的配置。
1、修改建表脚本生成规则。如果每个表格都有相同的字段,可以如下修改:
Database -> Edit Current DBMS 展开 Script -> Object -> Table -> Create 见右下的Value值,可以直接修改如下:
/* tablename: %TNAME% */
create table [%QUALIFIER%]%TABLE% (
  %TABLDEFN%
  ts             char(19)         null default convert(char(19),getdate(),20),
  dr             smallint         null default 0
)
[%OPTIONS%]
其中的 ts、dr 两列会在生成SQL脚本的时候自动的插入每个表格中,其中的%TNAME% 变量是给每个表格的SQL添加一个该表的Name值注释。
2、修改字段生成规则。要给每个字段都添加一个注释的话,同一窗口中展开 Script -> Object -> Column -> Add 的 Value修改为:

%20:COLUMN% [%COMPUTE%?AS (%COMPUTE%):%20:DATATYPE% [%IDENTITY%?%IDENTITY%:[%NULL%][%NOTNULL%]][ default %DEFAULT%]
  [[constraint %CONSTNAME%] check (%CONSTRAINT%)]]/*%COLNNAME%*/

其中的%COLNNAME%就是列的Name值(可以是中文)
3、修改外键命名规则。选择Database—>Edit Current DBMS
选择Scripts-》Objects-》Reference-》ConstName
可以发现右侧的Value为:

FK_%.U8:CHILD%_%.U9:REFR%_%.U8:PARENT%

可见,该命名方法是:'FK_'+8位子表名+9位Reference名+8位父表名,你可以根据这中模式自定义为:

FK_%.U7:CHILD%_RELATIONS_%.U7:PARENT%,

可以使FK名称变为FK_TABLE_2_RELATIONS_TABLE_1
掌握这种方法后就可以按照自己的想法修改了
生成建库脚本SQL文件中的表头注释很讨厌,可以在 Databse -> Generate Database (Ctrl+G)窗口中,选择Options卡片,去掉Usage的Title钩选项即可。
4、添加外键
Model -> References新建一条外键后,双击进入外键属性,在“Joins”卡片中可以选择子表的外键字段
要生成建库脚本即Databse -> Generate Database (Ctrl+G)窗口中确定即可。
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数据源来实现。
powerdesigner使用 - 叶节点 -- IT博客-中国最具人气的IT博客-赛迪网... powerdesigner使用 - 叶节点 -- IT博客-中国最具人气的IT博客-赛迪网... IPV6技术白皮书(一) - 新新 -- IT博客-中国最具人气的IT博客-赛迪网IT人家... 升级openssl手记 - humint -- IT博客-中国最具人气的IT博客-赛迪网IT人家园 云计算竞争,中国缺少什么 - 乾坤化物 -- IT博客-中国最具人气的IT博客-赛迪网IT... Microsoft BizTalk的介绍和安装过程 - 蓝色理想 -- IT博客-中国最具人气的IT博客-赛迪网IT人家园 其实你喝的是水 - 惶者生存--董衍善 -- IT博客-中国最具人气的IT博客-赛迪网IT... 在linux下,如何在C语言中使用正则表达式 - 利纳克斯 -- IT博客-中国最具人气的... ASP+模版技术生成静态HTML网页实例 - 恬悟 -- IT博客-中国最具人气的IT博客-赛迪网IT人家园 创业者们的十大迷思 - 张新杰的blog -- IT博客-中国最具人气的IT博客-赛迪网I... 中国能成为云计算时代的领跑者吗? - 乾坤化物 -- IT博客-中国最具人气的IT博客-赛... 液晶面板投资背后的千亿价值 - 磐石之心看business -- IT博客-中国最具人气的... 磐石之心解读马化腾的8条论纲 - 磐石之心看business -- IT博客-中国最具人气... 永久免费的金山毒霸如何赚钱? - 磐石之心看business -- IT博客-中国最具人气... 刘志军能带领夏新手机突围么? - 磐石之心看business -- IT博客-中国最具人气... 交行信用卡世博活动的启示 - 磐石之心看business -- IT博客-中国最具人气的I... SNS持续升温,校内网流量有望超过百度 - 柳华芳的评论播客 -- IT博客-中国最具人气... 手机芯片企业带头才能根治恶意吸费 - 磐石之心看business -- IT博客-中国最具... 科技频道-IT业界-博客中国 全世界最全牛人的博客 - IT 最强烈推荐-我的java收藏夹[中国IT实验室IT社区] 四十个最有用的搜索引擎和英文IT博客 四十个最有用的搜索引擎和英文IT博客 最值得阅读的美国十大IT博客