[转]:如何让PowerDesigner支持自动生成含SQL Server 2000的表和列注释

2023-11-02

如何让PowerDesigner支持自动生成含SQL Server 2000的表和列注释的角本
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的功能还是比较多和复杂的,只有熟悉这个工具的功能使用,才能真真提高生产效率。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[转]:如何让PowerDesigner支持自动生成含SQL Server 2000的表和列注释 的相关文章

  • 电话号码升位(拷贝构造函数)

    题目描述 定义一个电话号码类CTelNumber 包含1个字符指针数据成员 以及构造 析构 打印及拷贝构造函数 字符指针是用于动态创建一个字符数组 然后保存外来输入的电话号码 构造函数的功能是为对象设置键盘输入的7位电话号码 拷贝构造函数的
  • python编程实战(三):暴力破解WIFI密码!亲测运行有效!

    本文非原创 参考 Python破解WIFI密码详细介绍 对于代码有细微修改 增加注意事项介绍 声明 本文只是从技术的角度来阐述学习Pywifi库 并不建议大家做任何破坏性的操作和任何不当的行为 并不建议大家做任何破坏性的操作和任何不当的行为
  • js分治法入门级教程,二分搜索的解法

    一 分治法定义 在计算机科学中 分治法是一种很重要的算法 字面上的解释是 分而治之 分治法就是把一个复杂的问题分成两个或更多的相同或相似的子问题 再把子问题分成更小的子问题 直到最后子问题可以简单的直接求解 原问题的解即子问题的解的合并 分

随机推荐

  • 将Hugging Face模型转换成LibTorch模型

    Hugging Face的模型 以waifu diffusion模型为例 给出的实现一般是基于diffuser库 示例代码如下 import torch from torch import autocast from diffusers i
  • R手册(Visualise)--geomnet(ggplot2 extensions)

    文章目录 geomnet 返回ggplot2扩展主目录 geomnet Geom 网格图 关系图 geom net aes from id to id fontsize data stat net position identity na
  • 原始NeRF代码学习记录

    本文记录学习 ECCV 2020 的论文 NeRF Representing Scenes as Neural Radiance Fields for View Synthesis 对应的开源 tensorflow 代码 对NeRF的原始论
  • 微信小程序开发——日历实现

    1 new Date toLocaleDateString 获取当前的时间 年月日 2 new Date getFullYear 获取年 new Date getMonth 1 获取月份 new Date getDate 获取日期 3 th
  • centos7为deepstream-docker 配置好环境

    实战 1 all server 时间同步 sudo yum y install ntp ntpdate pool ntp org systemctl start ntpd systemctl enable ntpd service serv
  • mysql 存在就插入_Mysql插入数据:不存在则插入,存在则跳过或更新

    导读 很多时候我们在做数据插入的时候需要判断一下当前我插入的数据是否已经存在于数据库中 一般情况下我们会写两条sql去操作 select 查询当前插入的数据是否已经存在如果不存在就插入新的记录 如果存在就提示用户该记录已经存在在mysql里
  • 获取Windows系统盘符信息

    前言 获取Windows系统盘符 一 使用Python中的psutil库来获取Windows系统的系统盘符信息 import psutil 获取所有磁盘分区信息 partitions psutil disk partitions 遍历所有磁
  • 金蝶国产化中间件和人大金仓数据库

    金蝶Apusic分布式消息队列 不需要配置用户名密码 rabbitmq enable true host 192 168 1 233 port 5672
  • [论文阅读] (03) 清华张超老师 - GreyOne: Discover Vulnerabilities with Data Flow Sensitive Fuzzing

    数据流敏感的漏洞挖掘方法 Discover Vulnerabilities with Flow Sensitive Fuzzing Chao Zhang 清华大学 2nd International Workshop on Cyber Se
  • Kubernetes v1.25 搭建单节点集群用于Debug K8S源码

    参考说明 参考自 v1 25 0 CentOS binary install IPv6 IPv4 Three Masters Two Slaves md 按照自己的理解修改了下 搭建好的单节点v1 25 4版本集群 1 集群环境准备 1 1
  • 自制网站服务器,网站服务器制作

    网站服务器制作 内容精选 换一换 当您想在Internet上通过域名访问您的网站时 可以通过华为云的云解析服务为域名添加解析记录 例如 搭建一个网站服务器 采用IPv4格式的弹性IP地址 如果想要实现通过域名 example com 及其子
  • LeetCode(力扣)738. 单调递增的数字Python

    LeetCode738 单调递增的数字 题目链接 代码 题目链接 https leetcode cn problems monotone increasing digits description 代码 class Solution def
  • 级数求和

    include using namespace std int main double k int n 0 double sn 0 使用double精度 cin gt gt k while sn lt k 知道不满足跳出 n sn 1 0
  • 【AutoHotkey】windows和mac统一映射方案

    起因 在公司用Mac 在家用Windows 需要 统一快捷键体验 网上搜索之后 发现了一个开源的软件AutoHotkey 简单使用之后 又发现这个东西可以针对不同软件进行特别的按键映射 真的好厉害 AutoHotkey官网 建议安装1 1
  • 深聊测开领域之:一文搞懂什么是敏捷测试,如何做敏捷测试,建议先收藏再学习。

    敏捷测试 1 引言 2 解析敏捷测试 2 1 含义 2 2 特点 2 3 为什么要进行敏捷测试 2 4 敏捷测试与传统测试对比 2 5 如何迁移敏捷测试 2 6 敏捷测试成功因素 3 总结 1 引言 小屌丝 鱼哥 在忙呢 小鱼 昂 不忙 再
  • python环境配置什么意思_Python 环境配置

    Python 环境配置 在你开始学习 Python 之前最重要的是 对 你要安装 Python 环境 许多初学者会纠结应该选择 2 x 版本还是 3 x 版本的问题 在我看来 世界变化的速度在变得更快 语言的更新速度速度亦然 没有什么理由让
  • RocketMQ系列之入门

    前言 之前我们把RMQ的多Master集群搭建起来了 我们今天就来看看如何向这个集群生产消息以及消费消息 集群搭建回顾 回顾上节的内容 我总结下以下几步 第一 最新版RMQ4 2 0要求最低JDK8版本 第二 修改虚拟机的host 配置na
  • Nginx高可用主备模式

    我这里用的是VMware上的两台虚拟机 那个ip地址 就按照自己的配就行了哈 跟我一样也行的 也可以直接这么设置 我这里有两台机子 ip分别都是设置的静态ip 两台机子上分别都装上nginx和keepalived 这是安装keepalive
  • STM32 CAN通讯实验程序

    目录 STM32 CAN通讯实验 CAN硬件原理图 CAN外设原理图 TJA1050T硬件描述 实验线路图 回环实验 CAN头文件配置 CAN GPIO Config初始化 CAN初始化结构体 CAN筛选器结构体 接收中断优先级配置 接收中
  • [转]:如何让PowerDesigner支持自动生成含SQL Server 2000的表和列注释

    如何让PowerDesigner支持自动生成含SQL Server 2000的表和列注释的角本 PowerDesigner是Sybase公司著名的产品 我从16 bit的windows开始 就接触并使用这个工具 应该说是有很深的感情 Pow