ERWIN 创建和使用数据库

ozs*_*gal 6 database-design sql-server ddl erwin

我正在尝试使用 ERWIN 7 从我的逻辑模型生成物理数据库。

在自动生成的脚本中一切都很好,唯一的问题是模型是在默认 SQL Server 的数据库“master”中创建的,而不是在我与模型一起插入的数据库中创建的。

我找不到将我的 MODEL 与我与模型一起创建的数据库相关联的方法。

这是 ERWIN 自动生成的脚本:

CREATE DATABASE Movies go
ALTER DATABASE Movies SET  RECOVERY FULL go
CREATE SCHEMA fbd AUTHORIZATION dbo go
CREATE DEFAULT Default_Value_movies_gen   AS 1 go
CREATE DEFAULT Default_Value_titulo_movies    AS 'No title' go
Run Code Online (Sandbox Code Playgroud)

但它应该自动生成:

CREATE DATABASE Movies go 
--Here should be "USE Movies",to use database that ERWIN have just created
ALTER DATABASE Movies SET RECOVERY FULL go
CREATE SCHEMA fbd AUTHORIZATION dbo go
CREATE DEFAULT Default_Value_movies_gen AS 1 go
CREATE DEFAULT Default_Value_titulo_movies AS 'No title' go
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

小智 1

您必须编辑正向工程模板(FE 模板)。

说起来简单,做起来难。

由于每一类实体(表、视图、SP 等)都有自己的生成代码块,因此必须对每个主要入口点进行生成代码块。

至于 SQL Server 2005 Erwin 7.3 版本的模板,在“创建实体”模板开头注入的以下代码将用于表 DML。

/*

  We will save a global flag '_SQL_USE_DATABASE' is used to flag a variable of the same name initialization */
/

@ifnot( IsGlobalFlagSet("_SQL_USE_DATABASE") )
{
    Set( "_SQL_USE_DATABASE", "")
    SetGlobalFlag( "_SQL_USE_DATABASE" )
}

@if( IsPropertyNotNull("SQLServer_File_Group_Ref") )
{
    PushReference( "SQLServer_File_Group_Ref" )
    PushOwner

    @ifnot( Equal(Value("_SQL_USE_DATABASE"), Property("Name")) )
    {
        FE::Bucket( "90" )
        "USE " Property("Name")
        FE::EndOfStatement

        Set( "_SQL_USE_DATABASE", Property("Name") )
    }

    Pop
    Pop 
}
@else
{
    Set( "_SQL_USE_DATABASE", "" )
}
Run Code Online (Sandbox Code Playgroud)