如何让PowerDesigner支持自动生成含SQL Server 2000的表和列注释的角本

本文介绍如何在PowerDesigner中设置SQLServer2000的表和列注释自动生成功能,通过扩展数据库模型支持特定脚本,提高数据库设计效率。
PowerDesigner是Sybase公司著名的产品,我从16-bit的windows开始,就接触并使用这个工具,应该说是有很深的感情。PowerDesigner是DBA和软件架构师设计的利器,随着版本的不断升级,PowerDesigner提供了更多更强大的功能。仅以本篇为开始,向大家介绍一些PowerDesinger中的使用技巧,帮助大家更好地更有效率地使用这个CASE工具。
问题的提出
我曾经在很多网上看到有朋友问起,在 PowerDesigner Physical Model design 中,除了 Oracle 外,选择其他数据库模型,最后生成建数据库脚本的时候,不会自动生成记录表和列注释信息的数据库脚本代码。
请允许我先解释一下这个问题的概念,我们通过 PowerDesigner 设计 oracle 数据库,最后得到的脚本可以像下面这样,其中的 comment 语句就是我上面指出的在 oracle 中保存注释信息的脚本语句,在 oracle 中执行后,可以通过查询 oracle 的数据字典得到这些信息。这样做的好处是,以后查看表结构比较方便,不需要从数据库文档资料中去寻找了,对于团队开发来说,有应用的意义。

/*===============================================*/
/* Table: EMP                                                   */
/*==============================================*/
create table EMP (
   "EmpID"              NUMBER,
   "EmpName"            VARCHAR2(50),
   SEX                  CHAR(1)
)
/
comment on table EMP is '职员信息'
/
comment on column EMP."EmpID" is '职员编号'
/
comment on column EMP."EmpName" is '职员姓名'
/
comment on column EMP.SEX is '性别 F:女 M:男'
/

SQL Server 也有这样的语句,但是,大家往往发现选择了数据库模型是 SQL Server ,在自动生成建库脚本的时候,即使你选上了生成 comment 语句的选项, powerdesigner 也不会帮你自动生成,是 PowerDesigner 不支持 SQL Server 么,答案显然是否定的。
问题的解决
PowerDesigner 这个工具可以支持任何一种关系型数据库的模型设计,因为,在 PowerDesigner 中每一种数据库模型的特性定义都存储在一个 xdb 文件中,我们可以在 [PowerDesigner_Install_Home]/Resource Files/DBMS 下可以找到。当然,我们也可以自己创建一个新的 xdb ,定义好我们想支持的数据库模型的特性。明白了这一点,这个问题的答案就显而易见。
下面我就简单地说明一下,我使用的是 PowerDesinger9.5 企业版。 Sybase 有些简化版本 ( SQL Moduler) 就不能自定义 xdb ,请大家注意。
1 从菜单 TOOLS->RESOUCES->DBMS ,进入自定义数据模型,参见图 1 1
2 PowerDesigner 弹出一个对话框,列表 框中列出了当前 PowerDesigner 支持的
数据库模型(图 2 )。我们选择创建一个新的。输入名字 SQL SERVER 2000(EXTENDED) ,选择从现有的 SQL SERVER 2000 复制,这样 SQL SERVER 2000(EXTENDED) 就包含了原来 SQL SERVER2000 模型拥有的所有特征(图 3 )。             
3 接下来,我们就需要为 SQL Server 2000(Extended) 添加支持自动生成表和列注释代码的特性。 PowerDesinger 把定义的特性用树状结构组织了起来 ( 4) ,本篇要做的工作就是定义 Script 代码特征。我们需要修改 Script/Objects/Table/TableComment Script/Objects/Column/ColumnComment 中的脚本特征代码。
4 SQL Server 2000 在数据库中保存表和列注释是通过调用系统存储过程 sp_addextendedproperty 来做的。那么我们只需要,分别写上

表级的注释代码是:
EXECUTE sp_addextendedproperty N'MS_Description', N'%COMMENT%', N'user', N'%OWNER%', N'table', N'%TABLE%', NULL, NULL

列级的注释代码是
EXECUTE sp_addextendedproperty N'MS_Description', N'%COMMENT%', N'user', N'%OWNER%', N'table', N'%TABLE%', N'column', N'%COLUMN%'

大家看看这些代码,立刻就明白是怎么回事了 ( 5) %COMMENT% 之类的就是相当于替换变量, PowerDesigner 在生成脚本的时候自动替换设计模型中替换变量的值。
 
5 保存 SQL Server 2000(Extended) 成一个 xdb 文件。
6 现在,我们可以创建一个新的 Physical Data Model 了,数据库模型选 SQL Server 2000(Extended) 。建立一个表,需要提醒的是,一定要指定一个数据库使用者,一般用 dbo (图 6 )。我们可以为表和列都添加上注释。 7 生成建库脚本,菜单 Databases->Generate Database 。在图 7 所示的对话框中,注意要选中 comment 选项。点击确定,就得到最终的建库脚本。打开看看,我们看到了 PowerDesinger 根据我们告诉它的规则生成了对应的代码

EXECUTE sp_addextendedproperty N'MS_Description', N'雇员信息', N'user', N'dbo', N'table', N'Employee', NULL, NULL
go
EXECUTE sp_addextendedproperty N'MS_Description', N'主键ID,自动增加', N'user', N'dbo', N'table', N'Employee', N'column', N'EmployeeID'
go
….

8 我们在 SQL Server 2000 中执行这个角本,然后通过 Enterprise Manager 可以看到这些注释。 小结
通过这个实践,我们可以了解 PowerDesigner 是如何处理不同数据库的 SQL 语法差异的,这和我们开发应用中的参数文件的思路基本一致。同时,我们也应该认识到, PowerDesinger 的功能还是比较多和复杂的,只有熟悉这个工具的功能使用,才能真真提高生产效率。
 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值