使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本

时间:2022-03-31 09:45:14

打开PD软件:

1.新建概念模型(conceptual Data Model)

File-->New Model-->Conceptual Data Mode
或者点击工作区,右键-->New Model-->Conceptual Data Mode

2.打开模型时,会有方格线,去除方格线

Tools-->Dis

使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本

3.创建表并建立关系:

各个含义如下:

使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本

但是我在创建的过程中,报错如下:

使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本

在创建的过程中,人员表里有主键Code,性别表里也有主键Code,但是在创建的过程是报错,说是Code已经被占用了,

去除属性名重复的方法如下:

使用PD中,CDM默认实体属性不能重名,在CDM中唯一。可以通过设置,取消该限制。

选择 Tools->Model Options,取消 Data Item 组的Unique code 和 Allow reuse复选框。

    Unique:设置实体属性是否唯一

    Allow reuse:设置实体属性是否允许重用

注:默认使用唯一代码的好处是,改变属性,其他引用该属性的实体,都一起修改。该功能可以通过domain实现,设置属性在同一domain中,当需要修改字段类型的时候,修改domain一处即可。

使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本

4.将概念模型转换成物理模型

方法一:

操作:Tools-->GeneratePhysical Data Model

快捷键:ctrl+shift+p

注意:如果你的数据库是SQL server,请一定要选择要选择SQL Server 2008,

进入下图界面:(根据自己的需求切换相应的DBMS(数据库)点击【确定】就会将概念模型转换成物理模型).

使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本

??但是在生成的过程中报了一个实体属性重复的错误(如下图):

使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本

Checking data item ...
- Data Item name uniqueness
- Data Item code uniqueness
Error The following data item does not have unique code:
-> Data Item '编码' (<Model>)
-> Data Item '编码' (<Model>)
- Data Item not used
- Data Item used multiple times

解释:从上面的错误可以看出,PD给我们说,我在检查所有实体属性的过程中,发现了重复的属性,有两个相同的属性(Code和Name):编码

这是因为虽然我们在概念模型中:创建实体的过程中允许实体使用相同的编码和名称,但是我们并没有同时修改:在概念模型转换为物理模型的检查规则,我们这里,可以去修改检查实体的报错规则就可以了。

解决办法:

使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本

方法二:

General不变,Detail中将Check model去掉,就在转换为物理模型时不再检查实体错误了(当然这些错误是PD定义的默认规则)

使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本

5.物理模型如下:

使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本

6.生成带注释的sql

a.操作:Database-->Generate DataBase。。。,进入下图页面,

使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本

b、勾上以上复选框,否则当你备注为空的时候注释出不来;反之,如果你备注不为空那么名称(Name)才能作为注释出现!!

在Options可以选择要生存脚本的内容,可以选择是否创建数据库的脚本,选择要生成脚本的表

使用PD(PowerDesigner)图如何快速生成创建数据库表的SQL脚本
c、在selection中选择你需要生成sql的模块,指定输出目录。

7.PD图转换为脚本至此结束。

备注:有了脚本,找个数据库执行吧! 

如果自己懒得修改脚本,最好新建个数据库去执行;  你勤快些的话可以把其他没用的脚本干掉,只保留主要脚本就OK了。