PowerDesigner中转换物理模型时的命名转换

本文分享了使用PowerDesigner进行数据库建模的经验,包括如何调整日期和时间类型映射、自定义外键名称及设置主键为聚集索引的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在使用PowerDesigner建模数据库,在使用中积累了一些遇到的问题和解决办法,记录下来,希望对遇到同样问题的朋友有所帮助。

早期在PowerDesigner中,只有概念模型和物理模型,一般是先建立概念默认,然后根据具体的数据库生成物理模型。但是概念模型太抽象,物理模型太具体,于是在PowerDesigner15版本之后出现了“逻辑模型”,能够从概念模型和物理模型各自的角度上都容易理解。所以现在的数据库建模方式就变成了先建立概念模型然后生成逻辑模型,修改了逻辑模型后,最后生成物理模型,由物理模型生成数据库脚本。

在生成物理模型时,遇到了以下几个问题:

一.在选择生成SQL Server 2005或者SQL Server 2008时,没有将Date类型和Time类型转化为Date类型和Time类型,而是转化为了DateTime类型。这点非常受不了,本来在概念设计时就分了Date ,Time,DateTime,结果转化到SQL Server后就全部变成了DateTime了。

SQL Server 从2005开始就支持单独的Date类型和Time类型了,而不像SQL Server2000那样,只有DateTime和SmallDateTime。解决办法如下:

1.打开该物理模型或者随便新建一个空白的SQL Server 2008的物理模型。

2.选择菜单“Database”下的“Edit Current DBMS”选项,打开了DBMS Properties对话框。

3.在General选项卡中,展开Script、DataType,选中AmcdDataType,可以看到内部数据类型和物理数据类型的映射表,将D和T对应的数据类型改为date和time,然后点击“确定”保存该更改。

image

4.回到逻辑模型,重新生成物理模型,即可。

二、生成的物理模型默认情况下模型验证不通过,“Constraint name uniqueness”,生成的外键名时单词简略的有点奇怪。

这种情况下的解决办法和上一个问题的解决办法类似,还是在DBMS Properties中进行修改。

1.打开DBMS Properties窗口。

2.在General选项卡中,展开Script、Object、Reference,选中ConstName,可以看到Value值为FK_%.U8:CHILD%_%.U9:REFR%_%.U8:PARENT%,这个规则我个人不是很喜欢,容易造成重名,所以我打算使用FK_加上Reference的Code来生成外键名,所以改为:FK_%REFRCODE%

3.保存,重新生成。

三、默认生成的主键是非聚集索引,应该默认是聚集索引。

这个问题比较麻烦,不知道为什么生成的主键索引是非聚集索引,但是简单的改法也是与上面操作类似。

找到Script、Object、PKey的Create选项,其Value值如下:

alter table [%QUALIFIER%]%TABLE%[%R%?[ with nocheck][ with check]]
   add [constraint %CONSTNAME% ]primary key [%CLUSTER%?[%R%?[clustered ]]:nonclustered ](%PKEYCOLUMNS%)
      [%OPTIONS%]

这里有一个控制是否聚集索引的开关%CLUSTER%和%R%,不知道这两个变量是在哪里设置的,不过可以简单粗暴的将该脚本改为:

alter table [%QUALIFIER%]%TABLE%[%R%?[ with nocheck][ with check]]
   add [constraint %CONSTNAME% ]primary key clustered (%PKEYCOLUMNS%)
      [%OPTIONS%]

这样生成的脚本就是Cluster的了。

<think>好的,我现在需要帮助用户解决如何在PowerDesigner中将物理数据模型(PDM)生成SQL脚本的问题。首先,我要回忆一下PowerDesigner的相关操作步骤,确保自己对这个过程有正确的理解。根据用户提供的引用内容,特别是引用[3]提到了正向工程生成数据库脚本,这应该是关键步骤。 接下来,我需要考虑用户可能的操作环境,比如PowerDesigner的版本,但用户提到的是15.1版本的问题,不过生成SQL应该步骤类似。可能需要注意是否有版本差异导致的不同操作路径。然后,按照常规流程,生成SQL脚本通常是通过菜单中的“Database”选项,选择生成数据库脚本。 然后,我需要详细列出每一步骤,确保用户能够跟随操作。比如,检查模型是否正确,特别是表和字段的定义是否完整,是否有错误。如果有错误,生成过程可能会失败,所以这个检查步骤很重要。 然后,进入生成脚本的具体步骤,包括选择数据库类型,因为不同的数据库(如MySQL、Oracle)会有不同的语法,用户需要确认目标数据库。接下来是配置生成选项,比如脚本文件的路径、字符编码、是否生成删除语句等。这些选项可能会影响最终生成的脚本,需要提醒用户根据实际需求选择。 生成过程中可能需要处理警告或错误,这候需要指导用户检查模型中的问题,例如主外键约束是否正确,字段类型是否支持等。最后,保存或执行脚本,用户可以选择保存为文件或在数据库中直接运行。 另外,用户可能遇到问题,比如引用[2]中提到PowerDesigner被锁无法编辑,这可能影响生成SQL的操作。如果用户在生成过程中遇到类似问题,可能需要先解决锁定问题,比如检查许可证或重置配置。但当前用户的问题主要是生成SQL,所以可能不需要深入讨论这点,但可以提及常见问题。 最后,生成相关问题需要考虑用户可能的后续需求,比如逆向工程、模型优化或常见错误处理,这些都能帮助用户进一步使用PowerDesigner。</think>以下是PowerDesigner中将物理数据模型(PDM)生成SQL脚本的步骤详解: ### 一、操作步骤说明 1. **模型检查** 在生成SQL前需确保: - 所有表已定义主键和外键约束 - 字段数据类型与目标数据库匹配(如MySQL的`VARCHAR`与Oracle的`VARCHAR2`) - 检查`Tools > Check Model`无致命错误[^3] 2. **生成SQL脚本** 通过菜单路径`Database > Generate Database`打开配置窗口: - 在**General**选项卡选择数据库类型(如MySQL 8.0) - 在**Format**选项卡设置文件保存路径和字符集(推荐UTF-8) - 在**Options**选项卡勾选`Auto-add primary key`和`Drop if exist` 3. **脚本生成与输出** 点击确定后: - 生成的SQL文件默认保存在`.\Generated Files`目录 - 可通过`Preview`按钮查看完整DDL语句 - 支持生成存储过程脚本(需在模型中对存储过程进行定义) ### 二、关键配置图示 ```text 生成配置重点参数说明: 1. 脚本类型选择:Create/Update/Drop 2. 索引生成策略:Non-unique indexes需单独配置 3. 外键约束生成:可选择延迟约束检查 ``` ### 三、注意事项 - 若出现`DBMS type is locked`错误,需检查`Database > Change Database`中是否选择了正确的数据库类型 - 字段注释需在`Column > Comment`中填写才会生成`COMMENT ON`语句 - 自增字段需显式设置`Identity`属性(不同数据库标识方法不同)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值