`

关于PowerDesigner15不能从PDM图生成MS SQL2005/2008外键约束的问题

阅读更多

最近用PowerDesigner15做数据库设计的时候发现如果先做好了CDM图,然后生成PDM,再生成SQL 2005SQL 2008脚本,发现始终无法生成外键约束。

我估计很多人都遇到了类似的问题。    经过查找和摸索终于解决了这个问题,现在将过程叙述如下,希望对大家有帮助。

实验过程如下:

1、生成在CDM中建立两个实体Entity_1Entity_2,并建立关系Relationship

image

 

2、自动生成MS SQL Server 2008的PDM。

image

 

3、选择DBMS类型为SQL 2008然后生成Database脚本

/*==============================================================*/

/* DBMS name: Microsoft SQL Server 2008 */

/* Created on: 2010/4/5 19:36:09 */

/*==============================================================*/

 

 

if exists (select 1

from sysobjects

where id = object_id('Entity_1')

and type = 'U')

drop table Entity_1

go

 

if exists (select 1

from sysindexes

where id = object_id('Entity_2')

and name = 'Relationship_1_FK'

and indid > 0

and indid < 255)

drop index Entity_2.Relationship_1_FK

go

 

if exists (select 1

from sysobjects

where id = object_id('Entity_2')

and type = 'U')

drop table Entity_2

go

 

/*==============================================================*/

/* Table: Entity_1 */

/*==============================================================*/

create table Entity_1 (

Attribute_1 int not null,

Attribute_2 int null,

constraint PK_ENTITY_1 primary key nonclustered (Attribute_1)

)

go

 

/*==============================================================*/

/* Table: Entity_2 */

/*==============================================================*/

create table Entity_2 (

Attribute_3 int not null,

Attribute_1 int null,

Attribute_4 int null,

constraint PK_ENTITY_2 primary key nonclustered (Attribute_3)

)

go

 

/*==============================================================*/

/* Index: Relationship_1_FK */

/*==============================================================*/

create index Relationship_1_FK on Entity_2 (

Attribute_1 ASC

)

go

 

从上面脚本可以看出没有生成需要的外键约束,只是生成了相关索引。

解决方法如下:

  1. 打开生成的PDM
  2. 将DBMS类型换为MS SQL 2000
  3. 在Model菜单中选择References命令,可以看到最后的Implementation被设置为Trigger

image

 

  1. 将Implementation被设置为Declarative(如果没有第二步就不能完成本步)
  2. 将DBMS类型换为MS SQL 2008
  3. 生成MS SQL 2008数据库生成脚本,能够正常生成需要的外键

     

    /*==============================================================*/

    /* DBMS name: Microsoft SQL Server 2008 */

    /* Created on: 2010/4/5 19:49:25 */

    /*==============================================================*/

     

     

    if exists (select 1

    from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')

    where r.fkeyid = object_id('Entity_2') and o.name = 'FK_ENTITY_2_RELATIONS_ENTITY_1')

    alter table Entity_2

    drop constraint FK_ENTITY_2_RELATIONS_ENTITY_1

    go

     

    if exists (select 1

    from sysobjects

    where id = object_id('Entity_1')

    and type = 'U')

    drop table Entity_1

    go

     

    if exists (select 1

    from sysindexes

    where id = object_id('Entity_2')

    and name = 'Relationship_1_FK'

    and indid > 0

    and indid < 255)

    drop index Entity_2.Relationship_1_FK

    go

     

    if exists (select 1

    from sysobjects

    where id = object_id('Entity_2')

    and type = 'U')

    drop table Entity_2

    go

     

    /*==============================================================*/

    /* Table: Entity_1 */

    /*==============================================================*/

    create table Entity_1 (

    Attribute_1 int not null,

    Attribute_2 int null,

    constraint PK_ENTITY_1 primary key nonclustered (Attribute_1)

    )

    go

     

    /*==============================================================*/

    /* Table: Entity_2 */

    /*==============================================================*/

    create table Entity_2 (

    Attribute_3 int not null,

    Attribute_1 int null,

    Attribute_4 int null,

    constraint PK_ENTITY_2 primary key nonclustered (Attribute_3)

    )

    go

     

    /*==============================================================*/

    /* Index: Relationship_1_FK */

    /*==============================================================*/

    create index Relationship_1_FK on Entity_2 (

    Attribute_1 ASC

    )

    go

     

    alter table Entity_2

    add constraint FK_ENTITY_2_RELATIONS_ENTITY_1 foreign key (Attribute_1)

    references Entity_1 (Attribute_1)

    go

     

    (完)

分享到:
评论

相关推荐

    PowerDesigner(CDM—PDM—SQL脚本的转换流程

    ### PowerDesigner(CDM—PDM—SQL脚本的转换流程) #### 1. 概念数据模型(CDM) 概念数据模型(Conceptual Data Model, CDM)是一种高级别的数据建模方式,它从用户的角度出发,对现实世界的实体及其之间的联系进行...

    PowerDesigner批量生成SQL脚本时将name生成数据库中字段的comment

    在本篇中,我们将探讨如何使用PowerDesigner批量生成SQL脚本来将name属性转换为数据库中字段的comment。 首先,我们需要了解PowerDesigner中的PDM(Physical Data Model),这是一个物理数据模型,它包含了数据库的...

    POWERDESIGNER逆向工程从现有数据库生成PDM

    然而,逆向工程的缺点在于,生成的模型可能缺乏中文注释,外键关系也可能不完整,特别是当数据库中未明确定义外键约束时。因此,生成的模型可能需要手动调整和完善。 另一种方法是通过SQL脚本逆向工程生成PDM,这...

    Powerdesigner逆向工程生成PDM 中文列名表名

    ### PowerDesigner逆向工程生成PDM(物理数据模型)及中文列名表名转换为注释 #### 一、PowerDesigner及其逆向工程概述 PowerDesigner是一款强大的CASE工具,广泛应用于数据库设计、业务流程建模等领域。通过...

    Powerdesigner逆向工程从现有数据库生成PDM

    ### PowerDesigner逆向工程从现有数据库生成PDM详解 #### 一、背景介绍 在数据建模领域,PowerDesigner是一款非常强大的工具,它能够帮助数据架构师和开发人员设计、构建以及维护高质量的数据模型。传统的数据建模...

    PowerDesigner生成PDM模型

    PowerDesigner 生成 PDM 模型 PowerDesigner 是一款功能强大的数据建模和设计工具,能够生成高质量的数据模型,特别是在企业信息系统中扮演着重要角色。在本文中,我们将详细讲解如何使用 PowerDesigner 生成 PDM ...

    powerdesigner生成含注释的sql

    标题中的"powerdesigner生成含注释的sql"指的是使用PowerDesigner这款强大的数据库设计工具来创建包含注释的SQL脚本。PowerDesigner是一款流行的数据建模工具,它可以帮助IT专业人员进行概念数据模型(CDM)、物理...

    使用Powerdesigner生成sql脚本

    PowerDesigner是一款强大的数据建模工具,它能够帮助用户进行数据建模,包括概念数据模型(CDM)、物理数据模型(PDM)等,并能自动生成SQL脚本来创建数据库。以下步骤详细介绍了如何在PowerDesigner中生成SQL脚本。 **...

    PowerDesigner将PDM导出生成WORD文档的方法

    ### PowerDesigner将PDM导出生成WORD文档的方法详解 #### 一、PowerDesigner简介与应用场景 PowerDesigner是一款功能强大的数据库设计工具,它可以帮助用户轻松地进行数据建模、概念设计和物理设计等任务。...

    PowerDesigner通过excel生成sql脚本.rar

    PowerDesigner是一款强大的数据库设计工具,它能够帮助数据库管理员和开发者进行数据建模、数据库设计以及生成SQL脚本等工作。在数据库开发过程中,PowerDesigner扮演着重要角色,它提供了概念数据模型(CDM)、物理...

    PowerDesigner根据SQL语句自动生成ER图.zip

    PowerDesigner根据SQL语句自动生成ER图

    powerdesigner 建表生成sql语句导入Oracle

    在IT行业中,数据库设计是至关重要的一步,PowerDesigner是一款强大的数据库设计工具,它可以帮助开发者进行概念数据模型(CDM)、物理数据模型(PDM)的设计,并能生成相应的SQL脚本,便于在各种数据库系统中创建...

    PowerDesigner15注册码

    综上所述,PowerDesigner 15是一个功能强大的数据库建模工具,通过注册码激活后,用户可以充分利用其进行物理数据模型的设计、数据库脚本生成、逆向工程以及业务流程建模等一系列任务。在实际使用中,结合readme文件...

    用PowerDesigner创建物理数据模型并生成数据库到SQL Server 2005

    在使用PowerDesigner创建物理数据模型并生成至SQL Server 2005的过程中,可能遇到的常见问题包括但不限于: - 数据类型不匹配:需检查PowerDesigner中的数据类型是否与SQL Server 2005兼容。 - 外键约束冲突:确认...

    PowerDesigner通过物理数据模型正向生成sql脚本并通过dbms创建表

    PowerDesigner是一款强大的数据库设计工具,它提供了从概念数据模型(CDM)、逻辑数据模型(LDM)到物理数据模型(PDM)的转换,并能够正向工程生成SQL脚本,帮助开发者快速创建数据库结构。在数据库开发过程中,...

    PowerDesigner(PDM)文件自动转换为Excel文件格式

    1. **PowerDesigner的PDM文件**:PDM文件是PowerDesigner保存物理数据模型的文件格式,其中包含了表、字段、键、索引、约束和数据库特定的信息。这些信息以XML的形式存储,对于人类阅读来说不够直观。 2. **自动...

    PowerDesigner里把Excel转成pdm

    在PowerDesigner里执行脚本命令,从Excel里读取表结构生成pdm文件。

    powerdesigner 生成的sql语句

    powerdesigner的使用 sql语句 sql语句的使用

    powerdesigner中去掉生成sql中的引号

    然而,在使用PowerDesigner生成SQL脚本的过程中,有时会遇到生成的SQL语句中包含不必要的引号问题,这可能会导致在某些数据库系统中执行SQL时出现错误或警告。本文将深入探讨如何在PowerDesigner中去除生成SQL中的...

Global site tag (gtag.js) - Google Analytics