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

转载 2006年05月30日 10:53:00
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)。
                        图2
 
 
                       图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在生成脚本的时候自动替换设计模型中替换变量的值。
 
图4
 
图5
5 保存SQL Server 2000(Extended)成一个xdb文件。
6 现在,我们可以创建一个新的Physical Data Model了,数据库模型选SQL Server 2000(Extended)。建立一个表,需要提醒的是,一定要指定一个数据库使用者,一般用dbo(图6)。我们可以为表和列都添加上注释。
 
图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可以看到这些注释。
 
 
图7
 
 
图8
小结
通过这个实践,我们可以了解PowerDesigner是如何处理不同数据库的SQL语法差异的,这和我们开发应用中的参数文件的思路基本一致。同时,我们也应该认识到,PowerDesinger的功能还是比较多和复杂的,只有熟悉这个工具的功能使用,才能真真提高生产效率。


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=714182

相关文章推荐

PowerDesigner导出SQL时自动生成注释

选自:http://www.cnblogs.com/xiangpiaopiao2011/archive/2011/05/24/2055110.html 在powerB...
  • xgyng
  • xgyng
  • 2014-07-07 16:38
  • 352

PowerDesigner导出SQL时自动生成注释

在powerBuilder中新建一个Physical Data Model,在其中新建一个用户表,信息如下图所示: 此时的SQL语句可从其中的Preview视图中得到,如下图所示: ...

PowerDesigner中生成SQL SERVER2005字段注释的解决方法

目录(?)[-] enhydraboy的专栏 中的如何让PowerDesigner支持自动生成含SQL Server 2000的表和列注释的角本 在经过了N久的痛苦折磨后,终于找到了这...

Sql Server 2008获取表的注释,字段名,字段类型,字段描述等,代码自动生成必备

SELECT     表名 = case when a.colorder=1 then d.name else '' end,   表说明 = case when a.colorder=1 the...

SQL Server自动生成拼音首字母!!!

建立一个查询,执行下面的语句生成函数fn_GetPy --生成拼音首码 CREATE FUNCTION fn_GetPy (@str nvarchar(4000)) returns nvarchar...

maven+mybatis+mybatis-generator+sql server 2005自动生成代码,加上自定义分页插件和批量插入更新插件

首先准备需要的jar包。由于maven只要配置pom.xml就可以从仓库下载jar包。因此我们首先看看pom.xml的配置。注意 ...... org.mybatis my...

PowerDesigner中如何生成主键和自增列--SQL SERVER版本

第一步,首先要建立与数据库的连接,方法较多,这里举个例子: http://www.cnblogs.com/netsql/archive/2010/05/17/1737548.html   第二个...

PowerDesigner中如何生成主键和自增列--SQL SERVER版本

第一步,首先要建立与数据库的连接,方法较多,这里举个例子: http://www.cnblogs.com/netsql/archive/2010/05/17/1737548.html   第二个...

SQL Server 2000中的列级约束与表级约束

SQL Server 2000中的列级约束与表级约束 (2010-11-09 11:15:09) 转载▼ 标签: 数据库 表级约束 外部键 列级约束 sql se...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)