Powerdesigner自定义DBMS

Powerdesigner以下简称PD.
PD默认支持的DBMS不够用时,我们就需要自己定义了。
以apache derby数据库为例。
1、DBMS的定义文件
PD的DBMS定义文件放在install_dir/Resource Files/DBMS目录下。自定义DBMS的第一步是复制一个现成的DBMS文件,由于derby与Oracle相似之处比较多,所以可以选择复制Oracle的DBMS文件,并重命名为derby.xdb

2、修改描述
用记录本打开derby.xdb,将大概前16行的一些内容做修改。比如code、name等等。我的大体如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<?PowerDesigner AppLocale="UTF16" Code="DERBY" Family="DERBY" ID="{04DFD581-D1C0-43E8-B9AE-01951ECAB446}" LastModificationDate="1347972332" Name="Apache Derby" Objects="778" Symbols="0" Type="{4BA9F647-DAB1-11D1-9944-006097355D9B}" signature="XDB_XML" version="15.1.0.2850"?>
<!-- do not edit this file -->

<DBMS xmlns:a="attribute" xmlns:c="collection" xmlns:o="object">

<o:DBMS Id="o1">
<a:ObjectID>04DFD581-D1C0-43E8-B9AE-01951ECAB446</a:ObjectID>
<a:Name>Apache Derby</a:Name>
<a:Code>DERBY</a:Code>
<a:CreationDate>0</a:CreationDate>
<a:Creator/>
<a:ModificationDate>1243501756</a:ModificationDate>
<a:Modifier>test</a:Modifier>
<a:Comment> </a:Comment>
<a:Family>DERBY</a:Family>

这样修改之后,我们在PD的database菜单里,选择Change Current DBMS时,可以看到下拉选项中,有一项为Apache Derby。

3、修改数据类型转换
由于我们复制的oracle的dmbs文件,与derby中,有些数据类型不一致,所以需要修改。在database菜单里,选择Edit Current DBMS,弹出窗口如下:

左边是树型结构,点击后右边编辑内容。

修改数据类型时,选择左侧树:Script -> Data Type。
插两句话,讲一下PD数据库切换时字段处理的原理。PD本身定义了一套内部的数据类型,如A%n、N、N%s,%p等,其中:
%n is the length of the data type
%s is the size of the data type
%p is the precision of the data type
当我们由一个DBMS A 换成另一个DBMS B时,PD会首先将A的数据类型转换成PD内部自己定义的数据类型,这个转换的规则这里叫做 A-PD,然后再将内部的数据类型转换成B的数据类型,这里叫做PD-B,通过上面两步转换实现A到B的类型转换。

而A-PD的规则,定义在刚才打开的Data Type节点下的PhysDataType节点,PD-B规则定义在AmcdDataType节点下。
举几个简单的例子:
A、Oracle NUMBER -> Derby BIGINT
首先要查看Oracle的dbms文件,注意是Oracle的,展开到PhysDataType节点下,看到有如下映射
Physical Model | Internal
NUMBER | N
所以,经过A-PD规则后,Oracle的NUMBER类型会转换成PD的内部类型N。
接下来,查看Derby的dbms,打开AmcdDataType节点,找到如下映射:
Internal | Physical Model
N | NUMBER
把上面的NUMBER修改成BIGINT
这样的话,经过PD-B规则,Derby里的字段就会变成BIGINT类型了。

B、Derby BIGINT -> Oracle NUMBER
与上面类型,不过需要查看Derby的PhysDataType和Oracle的AmcdDataType节点。

从上面两个例子基本可以看出来PhysDataType节点用来将数据库类型转换成PD的类型,而AmcdDataType则将PD的内部类型转换成数据库的类型。
另外,可以使用%n,%s,%p实现更精细的转换,且这三个标识也可以完全由数字代替。

4、注释
修改列注释,表格注释在Script\Objects\Table和Script\Objects\Column节点下。其它修改也很类似,如索引、依赖等等。
实际上,我们最终通过PD生成的SQL,都是由Script\Objects标签下定义的模板拼起来的。
Script\Sql\Syntax节点下则是一些基本的SQL语法规定,比如注释以–开始,SQL结束符是;等等。

更多详细说明可参考手册:
1、derby:http://db.apache.org/derby/docs/10.9/ref/crefsqlj31068.html
2、PD:http://infocenter.sybase.com/help/topic/com.sybase.infocenter.dc38628.1510/doc/html/rad1232022090125.html
3、使用POWERDESIGNER设计数据库的20条技巧

再说两句其它的,关于PD生成数据库设计文档。
默认的模板生成的文档,有相当多无用的东西,没法儿看。所以我们可以自定义文档模板。在Report -> Report Templates菜单下,在弹出窗口中,点新建,输入名称,然后出现编辑模板的界面,分成左右两块儿,可以把左边一些需要的元素直接拖到右边就OK。报告模板默认放在安装目录\Resource Files\Report Templates\下,我们也可以把这个目录下的文件复制一份,改个名儿,然后在这个基础上修改。

总之一句话,PD很强大。

Powerdesigner自定义DBMS(以derby数据库为例)的更多相关文章

  1. [转]CodeSmith和PowerDesigner的使用安装和数据库创建

    最近要忙期考,但还是决定每天抽点空来写CodeSmith的系列文章了,在此实在不敢用教程这个词语,毕竟自己对CodeSmith了解的也不是很多,有很多牛人都在博客园发布了不少关于CodeSmith的文 ...

  2. derby数据库的了解及使用

    derby数据库 一.简介 Derby 易于管理.当嵌入到客户机应用程序中时, Derby 系统不需要任何管理干预. Derby 是可嵌入的.应用程序可以将数据库管理系统( Database Mana ...

  3. Derby数据库的使用

    一. Derby数据库平台的搭建 ●  JDK 1.6版本及之后的版本为Java平台提供了一个数据库管理系统,简称Derby数据库.   ●  连接Derby数据库需要有关的类,这些类以jar文件的形 ...

  4. 配合crond服务实现自定义周期备份MySQL数据库(使用innobackupex进行备份)

    备份 新建一个脚本/root/backup.py,内容如下: #!/usr/bin/env python# -*- coding: utf-8 -*- ''' 脚本作者:昨夜星辰 脚本作用:配合cro ...

  5. paip..禁用mmseg 的默认词库. . 仅仅使用自定义词库from数据库.

    paip..禁用mmseg 的默认词库. . 仅仅使用自定义词库from数据库. mmseg默认词库只能是文件格式...不好维护..要是不个词库放的个数据库里面走好维护兰.. 要实现2个目标..: 1 ...

  6. [转]powerDesigner生成excel版本的数据库文件

    powerDesigner生成excel版本的数据库文件 出处:http://ray-allen.iteye.com/blog/1893347 脚本 excel  今天收到一个需求,要把数据库设计给一 ...

  7. Java数据库连接池的几种配置方法(以MySQL数据库为例)

    Java数据库连接池的几种配置方法(以MySQL数据库为例) 一.Tomcat配置数据源: 前提:需要将连接MySQL数据库驱动jar包放进Tomcat安装目录中common文件夹下的lib目录中 1 ...

  8. PowerDesigner中在生成的数据库脚本中用name列替换comment列作为字段描述的方法

    1 PowerDesigner中在生成的数据库脚本中用name列替换comment列作为字段描述的方法如下, 依次打开Tools -- Execute Commands -- Run Script,运 ...

  9. Apache Derby数据库 安装、知识点

    Apache Derby数据库 安装: 下载路径:http://archive.apache.org/dist/db/derby/ 出处:http://www.yiibai.com/hive/hive ...

随机推荐

  1. Tomcat7.x 与 Tomcat6.x

    试用 Tomcat7.x 与 Tomcat6.x 的明显不同 + Context 填写方法 + 默认应用配置方法 标签: tomcat数据库驱动程序数据库虚拟机jdbcjavascript 2012- ...

  2. 20135328信息安全系统设计基础第一周学习总结(Linux应用)

    学习计时:共xxx小时 读书: 代码: 作业: 博客: 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用Linux中用户管理命令/ ...

  3. Openwrt 初探

    最近想研究一下Openwrt,于是开始搭建openwrt环境,虽然现在没有现成的板子,但是 可以先编译起来. openwrt的特点是基于下载 -> patch -> 编译 的一个工作模式, ...

  4. HoloLens开发手记 - Known issues 已知问题

    本文主要提及一份问题清单,这些问题都可能对我们开发HoloLens应用造成困扰. Visual Studio 在使用VS 2015 Update 1连接HoloLens时,可能会有些小问题.但是这些小 ...

  5. Android UI基础之五大布局

    Android  UI基础之五大布局 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Andro ...

  6. TCP的三次握手和四次挥手

    置顶文章:<纯CSS打造银色MacBook Air(完整版)> 上一篇:<两个简单的Loading> 作者主页:myvin 博主QQ:851399101(点击QQ和博主发起临时 ...

  7. [bzoj 1911][Apio 2010]特别行动队(斜率优化DP)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1911 分析: 首先可以的到裸的方程f[i]=max{f[j]+a*(Si-Sj)^2+b*(S ...

  8. [bzoj 1503][NOI 2004]郁闷的出纳员(平衡树)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1503 分析: 经典的平衡树题,我用Treap做的 下面有几点注意的: 1.可能出现新加入的人的 ...

  9. please tell me the error about java Graphics

    this is the code: public class paint extends JFrame{ public paint(){ setLayout(new FlowLayout()); se ...

  10. “耐撕”团队 2016.04.11 站立会议

    1. 时间 : 19:30--19:50. 共计20分钟. 2. 成员 : Z 郑蕊 * 组长 (博客:http://www.cnblogs.com/zhengrui0452/), P 濮成林(博客: ...