您的位置:新葡亰496net > 奥门新萄京娱乐场 > EZDML表结构设计器,NetUML开发框架

EZDML表结构设计器,NetUML开发框架

发布时间:2019-09-27 13:48编辑:奥门新萄京娱乐场浏览(158)

    软件官方网址:

    突发性是因为品种支付的必要,必须将SQLServer2007中的有些表同步到Oracle数据库中,由别的任何系统来读取那一个数据。不一致数据库类型之间的数额同步大家得以采取链接服务器和SQLAgent来促成。假如大家这里(SQLServer二零零五)有一个左券管理种类,在那之中有表contract 和contract_project是内需联合到二个MIS系统中的(Oracle9i)那么,我们得以遵守以下几步完毕数据库的联合签名。
    1.在Oracle中树立相应的contract 和 contract_project表,需求一齐哪些字段大家就建这多少个字段到Oracle表中。
    那边须求在意的是Oracle的数据类型和SQLServer的数据类型是不平等的,那么她们之间是什么的涉嫌拉?大家能够在SQLServer下运营:

    总结:PowerDesign 能够选拔三种情势进行逆向工程

    PowerDesigner是一款成效非常有力的建立模型工具软件,足以与罗丝正财,同样是明日最显赫的建立模型软件之一。罗丝是专攻UML对象模型的建立模型工具,之后才向数据库建立模型发展,而PowerDesigner则与其正好相反,它是以数据库建模起家,后来才发展为一款综合宏观的Case工具。

         DataUML 1.2版本在软件架构上有了异常的大的改造,方今DataUML接济Access、SQLite、MY SQL 、ORACLE、MS SEPAJEROVER三千、MS SE昂科威VE陆风X8二零零六、MS SEPRADOVE瑞鹰二零零六数据库。  下载

    小编邮箱:huzzz@163.com

    新葡亰496net 1SELECT *
    新葡亰496net 2FROM msdb.dbo.MSdatatype_mappings
    新葡亰496net 3
    新葡亰496net 4SELECT *
    新葡亰496net 5FROM msdb.dbo.sysdatatypemappings

    1、从数据库中随地pdm(须求创立odbc数据源)
       a、使用调节面板-管理工科具-odbc数据源 创立
       或
       b、在pd中国建筑工程总公司立数据源
      
    2、从sql 脚本导出 pdm

    PowerDesigner主要分为7种建立模型文件:

     主要更新内容如下:
      1、辅助SQLite数据库,扶助生成SQLite数据库模型;
      2、援救生成SQLite数据库代码;
      3、扶助数据表字段自定义属性;
      4、数据表属性、字段属性、键属性和索引属性;
      5、帮助客户自定义类型;
      6、匡助表索引;
      7、扶助生成、批量导出SQL语句以及SQL预览作用;

     

    来查看SQLServer和别的数据库系统的数据类型对应关系。第贰个SQL语句是看SQL转Oracle的品种对应,而第2个表则更详尽得显得了逐个数据库系统的档期的顺序对应。依据第三个表和大家的SQLServer中的字段类型大家就可以成立好Oracle表了。

    转发小说:怎么样用Powerdesigner的PDM(物理数据模型)生成数据库及逆向工程(将长存的数据库生成PDM)
    pdm做好后,末了是要将其转会为数据库实体的。
    1.肯定当前Powerdesigner设置的dbms是还是不是科学,正是或不是是我们要转移的数据库类型,作者在此处运用的是sqlserver两千:
    Powerdesigner->数据库->改换当前dbms,选用你的数据库类型。

    1.  概念数据模型 (CDM)

     新葡亰496net 6

     EZDML

     

    EZDML是二个数据库建表的软件。

    可神速的进展数据库表结构划设想计,建设构造数据模型。

    看似大家常用的数据库建立模型工具如 PowerDesigner、ERAV4WIN、EENCORE-Studio 和 Rational-罗丝 等的一级精简版。

    该软件是从 二〇〇七 年 4 月开销到现在还是在爱护,近来在 2017 年 8 月 5 日 更新了 V2.15 版本。

    笔者的旺盛值得大家上学。

     

    新葡亰496net 7新葡亰496net 8SQLServer和Oracle的对应
    新葡亰496net 9ORACLE    bigint    NUMBER    19    3    1
    新葡亰496net 10ORACLE    binary    BLOB    NULL    0    1
    新葡亰496net 11ORACLE    binary    RAW    -1    4    1
    新葡亰496net 12ORACLE    bit    NUMBER    1    3    1
    新葡亰496net 13ORACLE    char    CHAR    -1    4    1
    新葡亰496net 14ORACLE    char    CLOB    NULL    0    1
    新葡亰496net 15ORACLE    char    VARCHAR2    -1    4    1
    新葡亰496net 16ORACLE    datetime    DATE    NULL    0    1
    新葡亰496net 17ORACLE    decimal    NUMBER    -1    3    1
    新葡亰496net 18ORACLE    double precision    FLOAT    NULL    0    1
    新葡亰496net 19ORACLE    float    FLOAT    NULL    0    1
    新葡亰496net 20ORACLE    image    BLOB    NULL    0    1
    新葡亰496net 21ORACLE    int    NUMBER    10    3    1
    新葡亰496net 22ORACLE    money    NUMBER    19    3    1
    新葡亰496net 23ORACLE    nchar    NCHAR    -1    4    1
    新葡亰496net 24ORACLE    nchar    NCLOB    NULL    0    1
    新葡亰496net 25ORACLE    ntext    NCLOB    NULL    0    1
    新葡亰496net 26ORACLE    numeric    NUMBER    -1    3    1
    新葡亰496net 27ORACLE    nvarchar    NCLOB    NULL    0    1
    新葡亰496net 28ORACLE    nvarchar    NVARCHAR2    -1    4    1
    新葡亰496net 29ORACLE    nvarchar(max)    NCLOB    NULL    0    1
    新葡亰496net 30ORACLE    real    REAL    NULL    0    1
    新葡亰496net 31ORACLE    smalldatetime    DATE    NULL    0    1
    新葡亰496net 32ORACLE    smallint    NUMBER    5    3    1
    新葡亰496net 33ORACLE    smallmoney    NUMBER    10    3    1
    新葡亰496net 34ORACLE    sysname    NVARCHAR2    128    4    1
    新葡亰496net 35ORACLE    text    CLOB    NULL    0    1
    新葡亰496net 36ORACLE    timestamp    RAW    8    4    1
    新葡亰496net 37ORACLE    tinyint    NUMBER    3    3    1
    新葡亰496net 38ORACLE    uniqueidentifier    CHAR    38    4    1
    新葡亰496net 39ORACLE    varbinary    BLOB    NULL    0    1
    新葡亰496net 40ORACLE    varbinary    RAW    -1    4    1
    新葡亰496net 41ORACLE    varbinary(max)    BLOB    NULL    0    1
    新葡亰496net 42ORACLE    varchar    CLOB    NULL    0    1
    新葡亰496net 43ORACLE    varchar    VARCHAR2    -1    4    1
    新葡亰496net 44ORACLE    varchar(max)    CLOB    NULL    0    1
    新葡亰496net 45ORACLE    xml    NCLOB    NULL    0    1
    新葡亰496net 46ORACLE    bigint    NUMBER    19    3    1
    新葡亰496net 47ORACLE    binary    BLOB    NULL    0    1
    新葡亰496net 48ORACLE    binary    RAW    -1    4    1
    新葡亰496net 49ORACLE    bit    NUMBER    1    3    1
    新葡亰496net 50ORACLE    char    CHAR    -1    4    1
    新葡亰496net 51ORACLE    char    CLOB    NULL    0    1
    新葡亰496net 52ORACLE    char    VARCHAR2    -1    4    1
    新葡亰496net 53ORACLE    datetime    DATE    NULL    0    1
    新葡亰496net 54ORACLE    decimal    NUMBER    -1    3    1
    新葡亰496net 55ORACLE    double precision    FLOAT    NULL    0    1
    新葡亰496net 56ORACLE    float    FLOAT    NULL    0    1
    新葡亰496net 57ORACLE    image    BLOB    NULL    0    1
    新葡亰496net 58ORACLE    int    NUMBER    10    3    1
    新葡亰496net 59ORACLE    money    NUMBER    19    3    1
    新葡亰496net 60ORACLE    nchar    CHAR    -1    4    1
    新葡亰496net 61ORACLE    nchar    CLOB    NULL    0    1
    新葡亰496net 62ORACLE    ntext    CLOB    NULL    0    1
    新葡亰496net 63ORACLE    numeric    NUMBER    -1    3    1
    新葡亰496net 64ORACLE    nvarchar    CLOB    NULL    0    1
    新葡亰496net 65ORACLE    nvarchar    VARCHAR2    -1    4    1
    新葡亰496net 66ORACLE    nvarchar(max)    CLOB    NULL    0    1
    新葡亰496net 67ORACLE    real    REAL    NULL    0    1
    新葡亰496net 68ORACLE    smalldatetime    DATE    NULL    0    1
    新葡亰496net 69ORACLE    smallint    NUMBER    5    3    1
    新葡亰496net 70ORACLE    smallmoney    NUMBER    10    3    1
    新葡亰496net 71ORACLE    sysname    VARCHAR2    128    4    1
    新葡亰496net 72ORACLE    text    CLOB    NULL    0    1
    新葡亰496net 73ORACLE    timestamp    RAW    8    4    1
    新葡亰496net 74ORACLE    tinyint    NUMBER    3    3    1
    新葡亰496net 75ORACLE    uniqueidentifier    CHAR    38    4    1
    新葡亰496net 76ORACLE    varbinary    BLOB    NULL    0    1
    新葡亰496net 77ORACLE    varbinary    RAW    -1    4    1
    新葡亰496net 78ORACLE    varbinary(max)    BLOB    NULL    0    1
    新葡亰496net 79ORACLE    varchar    CLOB    NULL    0    1
    新葡亰496net 80ORACLE    varchar    VARCHAR2    -1    4    1
    新葡亰496net 81ORACLE    varchar(max)    CLOB    NULL    0    1
    新葡亰496net 82ORACLE    xml    CLOB    NULL    0    1
    新葡亰496net 83ORACLE    bigint    NUMBER    19    3    1
    新葡亰496net 84ORACLE    binary    BLOB    NULL    0    1
    新葡亰496net 85ORACLE    binary    RAW    -1    4    1
    新葡亰496net 86ORACLE    bit    NUMBER    1    3    1
    新葡亰496net 87ORACLE    char    CHAR    -1    4    1
    新葡亰496net 88ORACLE    char    CLOB    NULL    0    1
    新葡亰496net 89ORACLE    char    VARCHAR2    -1    4    1
    新葡亰496net 90ORACLE    datetime    DATE    NULL    0    1
    新葡亰496net 91ORACLE    decimal    NUMBER    -1    3    1
    新葡亰496net 92ORACLE    double precision    FLOAT    NULL    0    1
    新葡亰496net 93ORACLE    float    FLOAT    NULL    0    1
    新葡亰496net 94ORACLE    image    BLOB    NULL    0    1
    新葡亰496net 95ORACLE    int    NUMBER    10    3    1
    新葡亰496net 96ORACLE    money    NUMBER    19    3    1
    新葡亰496net 97ORACLE    nchar    NCHAR    -1    4    1
    新葡亰496net 98ORACLE    nchar    NCLOB    NULL    0    1
    新葡亰496net 99ORACLE    ntext    NCLOB    NULL    0    1
    新葡亰496net 100ORACLE    numeric    NUMBER    -1    3    1
    新葡亰496net 101ORACLE    nvarchar    NCLOB    NULL    0    1
    新葡亰496net 102ORACLE    nvarchar    NVARCHAR2    -1    4    1
    新葡亰496net 103ORACLE    nvarchar(max)    NCLOB    NULL    0    1
    新葡亰496net 104ORACLE    real    REAL    NULL    0    1
    新葡亰496net 105ORACLE    smalldatetime    DATE    NULL    0    1
    新葡亰496net 106ORACLE    smallint    NUMBER    5    3    1
    新葡亰496net 107ORACLE    smallmoney    NUMBER    10    3    1
    新葡亰496net 108ORACLE    sysname    NVARCHAR2    128    4    1
    新葡亰496net 109ORACLE    text    CLOB    NULL    0    1
    新葡亰496net 110ORACLE    timestamp    RAW    8    4    1
    新葡亰496net 111ORACLE    tinyint    NUMBER    3    3    1
    新葡亰496net 112ORACLE    uniqueidentifier    CHAR    38    4    1
    新葡亰496net 113ORACLE    varbinary    BLOB    NULL    0    1
    新葡亰496net 114ORACLE    varbinary    RAW    -1    4    1
    新葡亰496net 115ORACLE    varbinary(max)    BLOB    NULL    0    1
    新葡亰496net 116ORACLE    varchar    CLOB    NULL    0    1
    新葡亰496net 117ORACLE    varchar    VARCHAR2    -1    4    1
    新葡亰496net 118ORACLE    varchar(max)    CLOB    NULL    0    1
    新葡亰496net 119ORACLE    xml    NCLOB    NULL    0    1

    2.计划Powerdesigner与数据源的连年
    Powerdesigner->数据库->配置连接->客商dsn(或体系dsn)->选用、增加您的数据源
    3.连接
    Powerdesigner->数据库->连接->设置好您刚刚建立的dsn确定。
    OK,设置好连接后大家就足以将pdm生成sql语句了。
    4.数据库生成
    Powerdesigner->数据库->生成数据库->配置好(暗中同意就足以)后选取鲜明就好了。
    拿到sql脚本语句,我们都知道应该怎么样做了吧,放到sql查询剖判器里实践呢。

    对数码和音信进行建立模型,利用实体-关系图(E-途达图)的款型组织数量,查证数据安顿的实用和客观。

    软件主分界面

    包括功效:

     

    1. 表结构划虚构计:创设表、字段、主键、外键、索引和注释;

    2. 表描述:可一贯编辑文字描述快速生成表结构,爱用键盘的人会欣赏那个效果;

    3. 模子图:自动生成模型图;可统筹和出示物理/逻辑视图,协理活动布局、平移、收缩放大等操作;

    4. 导入数据库:导入数据库中的已有指标,即所谓的逆向工程(帮忙ORACLE、MYSQL、SQLSELX570VELX570和ODBC);

    5. 生成数据库:可生成直接创立数据库的SQL脚本;也可与现成数据库相比,然后生成同步脚本的职能,不至于错失现有数据;

    1. 转移代码:近些日子可生成C 、Pas、C#和Java的粗略类定义代码;

    2. 导出EXCEL。 

     

    2.确立链接服务器。大家将Oracle系统作为SQLServer的链接服务器投入到SQLServer中。
    具体做法参见作者原先的篇章
    3.行使SQL语句通过链接服务器将SQLServer数据写入Oracle中。
    诸如大家创立了链接服务器MIS,而Oracle中在MIS顾客上面营造了表contract_project,那么大家的SQL语句就是:

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

    2.  逻辑数据模型 (LDM)

    上边作者将介绍1.2本子首要更新的内容。 

    行使表达:

    模型图中可 按加减号放大减少,方向键平移,QX56复原,F居中;

    表的陈说字中,能够输入简写字母代表数据类型,S,I,F,D,Y,E,B分别表示文本,整数,浮点数,时间,真假,枚举,文件,如 
      
    测试表 
    -------- 
    ID PK 
    RID FK 
    标题 S(200) 
    数量 I 
    单价 F(10,2) 
    日期 D 
    注释 S 
      
    外键关系近年来得以在模型图上开创显示,或在字段的涉及表字段里设置;

    导入生成效率可支撑ORACLE、MYSQL、SQLSE昂科拉VEMurano和ODBC数据库; 

    变动作效果率在未连接数据库时,生成的是创立数据库的起先化SQL;独有连接了数据库,才会与数据库进行比对生成晋级SQL;

    为防止数据错失,同步数据库时不会去除字段,但照旧会转移注释格局的附和SQL;

     

    修改INI文件自定义配置(菜单:工具|修改INI配置):

    [DefaultFieldTypes] ——修改缺省数据类型对应的大意类型
    1=String:VA奥德赛ST中华V(三千) ——修改逻辑类型名叫String的情理类型名字为VAHavalST奥迪Q3,暗中同意长度为三千
    2=Integer:DECruzeL ——修改逻辑类型名称为Integer的大意类型名称为DEA4L,无暗中同意长度
    [CustFieldTypes] ——增多额外的数据类型到花色下拉列表
    1=BigInt
    2=Decimal
    3=TestUnk
    [CustDataTypeReplaces]EZDML表结构设计器,NetUML开发框架。 ——钦命替换字段类型
    1=VARCHA中华V2:NVARCHA凯雷德2 ——将VARCHAWrangler2替换为NVARCHAHighlander2(全字相配)
    2=NUMBE昂Cora(10):DECruzeL ——将NUMBEHaval(10)替换为DE亚洲龙L(全字相配)
    3=%TEXT%:NCLOB ——将TEXT替换为NCLOB(模糊相称,类似SQL中的like操作)
    4=%RAW:BLOB ——将RAW替换为BLOB(左侧模糊相称,侧面正确相配,类似SQL中的like操作)
    [Options]
    AutoSaveMinutes=5  ——定期每5分钟自动保存,保存为同目录.tmp文件(展开时自动加载tmp,想过来加载原始文件的话要先删除tmp),为0则不保留
    FieldName马克斯DrawSize=64  ——在模型图上同意展现的最大字段名长度
    FieldType马克斯DrawSize=48  ——在模型图上同意展现的最大字段类型长度
    CreateSeqForOracle=0  ——禁绝为ORACLE表生成体系号
    OCIDLL=D:oracleora112instantclientoci.dll  ——钦赐OCI.dll的门径(用于instant client或装了四个ORACLE client时)

     

    再有一点快速的小操作:

    / 键 缩放至特级大小

    在一个模型内,按表名的首先个假名的键,会直接张开该表的陈述分界面。

     

    接下去讲一下自作者感到能对我们不以为奇支付有比异常的大扶助的的效果,那便是他的脚本。

    脚本语言是 pascal 语言,一个已经凉了的言语。所以不提出我们在地方开支精力。

    同一时间该软件的语言就好像和经常的 pascal 语言准则不太一致,pascal是有两种版本的,这里本人也无意浓厚钻研了。

     

    下边这么些正是 C# 的实体类脚本,在软件的默许基础上修剪改动的。大家能够简简单单明了一下,语言的语法都以相通的。

    function DEF_CTMETAFIELD_DATATYPE_NAMES_CSHARP(idx: TCtFieldDataType): string;
    begin
      case Integer(idx) of
        0: Result := 'unknown';
        1: Result := 'string';
        2: Result := 'int';
        3: Result := 'decimal';//替换double
        4: Result := 'DateTime?';//可空类型
        5: Result := 'bool';
        6: Result := 'enum';
        7: Result := 'var';
        8: Result := 'object';
        9: Result := 'List';
        10: Result := 'function';
        11: Result := 'EventHnadler';
        12: Result := 'type';
      else
        Result := 'unknown';
      end;
    end;
    
    //获取属性名
    function getPublicName(N: string): string;
    begin
      Result := N;
      if (Result <> '') then
        if Result[1] >= 'a' then
          if Result[1] <= 'z' then
            Result[1] := Chr(Ord(Result[1]) - (Ord('a') - Ord('A')));
    end;
    
    function GetDesName(p, n: string): string;
    begin
      if p = '' then
        Result := n
      else
        Result := p;
    end;
    
    
    
    
    var
      I, L: Integer;
      clsName, S, T, V, FT: string;
      f: TCtMetaField;
    
    //获取字段名
    function GFieldName(Fld: TCtMetaField): string;
    begin
      Result := GetDesName(f.Name, f.DisplayName);
    end;
    
    //获取字段类型
    function GFieldType(Fld: TCtMetaField): string;
    begin
        Result := DEF_CTMETAFIELD_DATATYPE_NAMES_CSHARP(f.DataType);
    end;
    
    //程序开始
    procedure AddFieldInfo;
    begin
      S := GetDesName(f.Name, f.DisplayName);
      begin
          FT := DEF_CTMETAFIELD_DATATYPE_NAMES_CSHARP(f.DataType);
        S := 'public '   FT   ' '   getPublicName(S)
            '{'
            'get;'
            'set;'
            '}'   #13#10;
      end;
    
      T := F.GetFieldComments;
      if T <> '' then
      begin
          S :='/// <summary>'   #13#10
            '///'   T   #13#10
            '/// </summary>'   #13#10
            S;
      end;
    
      CurOut.Add('    '   StringReplace(S, #13#10, #13#10'    ', [rfReplaceAll]));
    end;
    
    
    begin
      with CurTable do
      begin
        S := GetTableComments;
    
        CurOut.Add('');
    
        CurOut.Add('using System;');
        CurOut.Add('using System.Text;');
        CurOut.Add('');
        CurOut.Add('namespace '   Name);
        CurOut.Add('{');
    
        S := GetTableComments;
        if S <> '' then
        begin
          S := StringReplace(S, '}', '}', [rfReplaceAll]);
          CurOut.Add('  //'   StringReplace(S, #13#10, #13#10'  ', [rfReplaceAll]));
        end;
    
        L := 0;
        for I := 0 to MetaFields.Count - 1 do
        begin
          f := MetaFields[I];
          S := GetDesName(f.Name, f.DisplayName);
          if L < Length(S) then
            L := Length(S);
        end;
    
        //表名
        clsName := Name;
        CurOut.Add('  [NPoco.TableName("'   clsName   '")]');
        CurOut.Add('  [NPoco.PrimaryKey("Id", AutoIncrement = true)]');
        CurOut.Add('  public class '   clsName);
        CurOut.Add('  {');
        CurOut.Add('');
    
        //构造函数
        CurOut.Add('    public '   clsName   '()');
        CurOut.Add('    {');
        CurOut.Add('    }');
    
        for I := 0 to MetaFields.Count - 1 do
        begin
          f := MetaFields[I];
          AddFieldInfo;
        end;
    
        CurOut.Add('  }');
        CurOut.Add('}');
      end;
    end.
    

     

    新葡亰496net 120DELETE FROM MIS..MIS.CONTRACT_PROJECT
    新葡亰496net 121--清空Oracle表中的数据
    新葡亰496net 122INSERT into MIS..MIS.CONTRACT_PROJECT--将SQLServer中的数据写到Oracle中
    新葡亰496net 123SELECT contract_id,project_code,actual_money
    新葡亰496net 124FROM contract_project
    新葡亰496net 125

    在多少建立模型进程中,大家创造概念数据模型,通过正向工程退换物理数据模型,生成数据库建库脚本,最后将概况数据模型生成关周详据库,以后反过来,通过逆向工程将关周密据库,生成物理数据模型。
    优点:

    PowerDesigner 15 新扩充的模子。逻辑模型是概念模型的延长,表示概念之间的逻辑次序,是叁个属于方法档案的次序的模子。具体来说,逻辑模型中一方面显示了实体、实体的特性和实业之间的涉嫌,另一方面又将持续、实体关系中的引用等在实体的品质中张开展现。逻辑模型介于概念模型和情理模型之间,具备大要模型方面包车型大巴特色,在概念模型中的多对多关系,在逻辑模型师长会以追加中间实体的一对多关系的秘诀来促成。

    一、支持SQLite数据库

    借使告诉成功,那么大家的数额就已经写入到Oracle中了。用

             在遗失数据模型可能数据库模型同现存的数据库分歧,能够因而该方法生成使用中数据库的模型

    逻辑模型重假使驱动整个概念模型更易于明白,同期又不借助于于实际的数据库达成,使用逻辑模型能够转移针对现实数据库处理类其余轮廓模型。逻辑模型并非在总体步骤中必得的,能够一直通过概念模型来生成物理模型。

      1、点击工具栏上的新葡亰496net 126 按键,出现下拉菜单如下图:

    新葡亰496net 127SELECT *
    新葡亰496net 128FROM MIS..MIS.CONTRACT_PROJECT

    缺点:

    3.  物理数据模型 (PDM)

    新葡亰496net 129  点击“SQLite”,出现一而再SQLite数据库的分界面,如下图:

    查阅Oracle数据库中是不是曾经有数量了。
    4.起家SQLAgent,将以上联合具名SQL语句作为施行语句,每一天定期同步三回。
    与此相类似我们的同步就到位了。
    这里需求专一的是MIS..MIS.CONTRACT_PROJECT 这里不可不要大写,假诺是小写的话会产生同步退步。

             还原回的模子中,恐怕会并未有中文注释,未有表外键对应涉及(字段还应该有,索引关系没了)

    依据特定DBMS,在概念数据模型、逻辑数据模型的根底上扩充规划。由物理数据模型生成数据库,或对数据库进行逆向工程得到物理数据模型。

    新葡亰496net 130     

    前提:

    4.  面向对象模型 (OOM)

    点击“明显”,那样大家就足以成功总是SQLite数据库了。

            1,确认要转变模型的数据库是时尚的,况兼能够利用

    包蕴UML常见的全部的图纸:类图、对象图、包图、用例图、时序图、同盟图、交互图、活动图、状态图、组件图、复合结构图、安顿图(配置图)。OOM 本质上是软件系统的一个静态的概念模型。

      成功总是数据库之后,选取数据库节点,右键“生成数据模型”,这里大家选拔C#模型,如下图成功生成了SQLite数据库模型

            2,安装Powerdesigner软件

    5.  业务程序模型 (BPM)

    新葡亰496net 131

    具体操作步骤:

    BPM 描述业务的种种分歧内在职责和内在流程,并且客商怎么以那几个职责和流程互相影响。 BPM 是从业务合伙人的见识来看业务逻辑和法则的概念模型,使用三个图纸描述程序,流程,消息和合营共谋时期的交互成效。

      这样数据模型和SQLite数据库绑定了,修改数据模型能够直接同步到SQLite数据库,具体操作这里不演示了。

    一,建立ODBC数据源

    6.  信息流模型(ILM)

    二、协理生成SQLite数据库代码

            1, 展开系统ODBC数据源,地方“调节面板--管理工科具--数据源(ODBC)

    ILM是二个高层的新闻流模型,首要用以遍及式数据库之间的数据复制。

      挑选侧边的SQLiteDAL.tt”模板文件,选中模型中的表,右键点击“查看代码”,如下图

            2,选拔系统DSN,点击增添按键,会弹出如下界面,采用与数据库相相称的驱动程序

    7.  铺面架构模型(EAM):

    新葡亰496net 132

    3,点击完结,弹出数据源名称(自定),和挑选你要延续的数据库,如下图所示

    从业务层、应用层以及本事层的对商家的系统架构实行全方面包车型地铁呈报。包蕴:组织结构图、业务通讯图、进度图、城市规划图、应用架构图、面向服务图、技艺基础框架图。

     

    4,选用明确后,该数据源创立成功,能够双击该数据源名称举办再而三测验,如下图所示

    正所谓“工欲善其事必先利其器”,PowerDesigner就是一把有力的“神器”,若能动用熟识,再身怀“绝世武术”,那你基本就遇神杀神遇佛杀佛了!

      就足以成功生成SQLite代码了。如下图

    5,至此数据源创建完成,当然那一个也能够不用在那边创建,在powerdesigner里也得以创设,建设构造章程为

    有关PowerDesigner物理数据模型的骨干使用,笔者这里就不赘述了,给出个一连,地球人看完都驾驭:

    新葡亰496net 133

    选用Database->configure connections,转到system dsn标签,点击Add按键,选数据库类型DB2,点击完成。呈现如下:输入DataSource Name“PDMTest”;输入ServerName“Database”, 配置完结。如下所示:

     上边就部分比较高等型的用法和技艺小编根本表明下。

    三、数据表字段自定义属性

    二,在Powerdesigner中逆向生成

    1.  生成sql脚本

      数据表的字段能够协和定义一些自定义属性,如下图

          1,张开Powerdesigner工具,创设一个PDM文件,选拔与之同盟的数据库类型“ibm db2 udb 8.x common server”。创制方法为:右键点击右侧面板中的WorkSpace---->new------>physical data nodel ,在DBMS中精选你要的数据类型,选取好后点击显明,则新创设了四个行事空间。

    Database→Generate Database

    新葡亰496net 134

          2,采取Database菜单下的Reverse Engineer Database,弹出Database Reverse Engineering对话框,选Using an ODBC data source选ODBC数据源“s2ms”,如下图所示:

    挑选要出口的文件路线,即文件存款和储蓄路径,并依赖必要修改文件名,单击鲜明后便会生成sql脚本。

        生成代码的时候能够收获字段的自定义属性值。如下图

    3,点击明确后,展现此数据库中存有表、视图、客商(这么些选项一下该数据库的客户)。依照需求选拔后,调换来pdm。图示如下

    新葡亰496net 135

    新葡亰496net 136

    4,选择好后,点击OK,则变化模型。

    在Options选项卡里,可以个性化选拔和布局sql脚本,如撤除外键,去除drop语句等。

      获得字段自定义属性的模版代码如下:

    三,利用脚本生成模型

    新葡亰496net 137

    命名空间:<#= host.ClassProperty.Namespace #>
    类名:<#= host.ClassProperty.ClassName #>
    类粤语名:<#= host.ClassProperty.ClassOtherName #>
    表名:<#= host.ClassProperty.TableName #>
    可访谈性:<#= host.ClassProperty.Accessibility==null?"":host.ClassProperty.Accessibility #>
    修饰符:<#= host.ClassProperty.Modifier==null?"":host.ClassProperty.Modifier #>
    用户:<#= host.ClassProperty.User==null?"":host.ClassProperty.User #> 
    备注:<#= host.ClassProperty.Remarks #>
    数据库类型:<#= host.ClassProperty.DataAccessType #>
    语言:<#= host.ClassProperty.ProjectLanage #>
    字段:
    <# foreach(var f in host.ClassProperty.Fields)
    {
        WriteLine("    属性名:" f.PropertyName);
        WriteLine("    属性外号:" f.PropertyOtherName);
        WriteLine("    属性类型:" f.DataType);
        WriteLine("    修饰符:" f.Modifier);
        WriteLine("    可访谈性:" f.Accessibility);
        WriteLine("    是或不是空类型:" f.IsNullType);
        WriteLine("    初始值:" f.InitialValue);
        WriteLine("    是不是只读:" f.IsReadable);
        WriteLine("    是不是可写:" f.IsWritable);
        WriteLine("    字段名:" f.FieldName);
        WriteLine("    字段类型:" f.FieldType);
        WriteLine("    长度:" f.FieldLength);
        WriteLine("    自增字段:" f.isIdentity);
        WriteLine("    是还是不是为空:" f.IsNull);
        WriteLine("    是不是主键:" f.IsPrimaryKey);
        if(f.IsPrimaryKey)
        {
          WriteLine("    主键类型:" f.PrimaryKeyType);
        }
        WriteLine("    是不是外键:" f.IsForeignKey);
        WriteLine("    默认值:" f.DefaultValue);
        WriteLine("    备注音讯:" f.Remarks);
        if(f.Attributes.Count>0)
        {
        WriteLine("    属性:");
        foreach(var p in f.Attributes)
        {
         WriteLine("        属性名:" p.Name);
         WriteLine("        属性值:" p.Value);
        }
        }
        if(f.CustomAttributes.Count>0)
        {
        WriteLine("    自定义属性:");
        foreach(var p in f.CustomAttributes)
        {
         WriteLine("        属性名:" p.Name);
         WriteLine("        属性值:" p.Value);
        }
        }
        WriteLine("    ----------------");
    }
    #>  

           假若你非但有个正在使一些数据库,你还恐怕有一下创设库的剧本,那你发财了!因为用.sql的台本生成的模子,就官样文章用数据库生成的劣点了,具体操作如下:

    Selection选项卡中能够选择什么表要生成sql脚本。

    四、数据表属性、字段属性、键属性和索引属性

    二、 通过SQL脚本逆向工程生成PDM

    在Preview选项卡能够预览将在变化的sql脚本。

      1、MY SQL数据库的数目表属性,如下图

    1、 数据库SQL脚本文件crebas.sql。下为脚本实例:
    /*==============================================================*/
    /* Database name: PhysicalDataModel_1 */
    /* DBMS name: ORACLE Version 9i */
    /* Created on: 2003-07-13 10:49:08 */
    /*==============================================================*/
    /*==============================================================*/
    EZDML表结构设计器,NetUML开发框架。/* Table: "class" */
    /*==============================================================*/
    create table "class" (
    "classID" NUMBER(2) not null,
    "className" VARCHAR2(24),
    constraint PK_CLASS primary key ("classID")
    )
    /
    /*==============================================================*/
    /* Table: "student" */
    /*==============================================================*/
    create table "student" (
    "studentID" NUMBER(10) not null,
    "studentName" VARCHAR2(4),
    "classID" NUMBER(2),
    constraint PK_STUDENT primary key ("studentID")
    )
    /
    alter table "student"
    add constraint FK_STUDENT_REFERENCE_CLASS foreign key ("classID")
    references "class" ("classID")
    /

    2.  将持有名词转化为题写

    新葡亰496net 138

    2、 依旧创设叁个pdm,选取Database--->Reverse Engineer Database,接纳Using script files。

    tools→Model Options...→Naming Convention→Code→Uppercase。

      2、MY SQL数据库的数据表字段属性,如下图

    3、 见到由脚本自动生成相关的PDM如下所示:

    新葡亰496net 139

    新葡亰496net 140

    四,生成模型后要导出数据库建库脚本

    3.  表字段设计窗口展示comment来编排注释

      3、MS SE奔驰M级VETiguan数据库的主键属性,如下图

        导好的模子,当然是用来修改和导出建库脚本的,操作方法如下

    双击表张开表的属性窗口→Columns选项卡→单击上排尾数第三个Logo(Customize Columns and Filter)→勾选comment

    新葡亰496net 141

          1,选拔database--->generate database弹出如下窗口

    新葡亰496net 142

      4、MS SE福睿斯VEENCORE数据库的外键属性,如下图

    在客户的none中选用数据库顾客,相同的时候可选要导出的表,最终点击分明,假使不能够日常生成脚本提示模型错误,则在上海教室中的options上校check modle 的选项去掉,点击显明,生成sql脚本,

    新葡亰496net,4.  修改表的字段Name的时候,Code不自动跟着变

    新葡亰496net 143

    那会儿生成的脚本不要发急去用,因为或许是有有失水准态,用记事本或其余工具张开那几个剧本,你会意识在所属名上也正是s2ms上都会助长""号,用Ctrl H,将享有"替换为空,就大功告成了!

    tools→General Options...→Dialog→撤除勾选Name to Code mirroring

      5、MS SEENVISIONVE大切诺基数据库的索引属性,如下图

    新葡亰496net 144

    新葡亰496net 145

    5.  不及数据库之间的倒车

     

    Database→Change Current DBMS→选取要转变来的对象数据库

    五、接济顾客自定义类型

    新葡亰496net 146

      客商能够自身定义数据类型,如一时候大家须要以GUID来作为表的主键,那时大家得以定义二个GUID类型的字段类型。具体操作流程:选用数据模型节点,右键,在弹出的菜单中选拔“设置”,如下图

    6.  导入sql脚本生成对应的数据库表模型图

    新葡亰496net 147

     File→Reverse Engineer→Database...→修改模块名称并选取DBMS

      这里我们定义GUID的门类为nvarchar,长度为38,大家就足以应用那个数据类型了,如下图

    新葡亰496net 148

    新葡亰496net 149

    Using script files→点击下方Logo(Add Files)来增多sql脚本文件→明确

     

    新葡亰496net 150

    六、帮忙表索引;

    7.  由物理模型生成对象模型,并生成对应的get、set方法

      增添对数据表索引的扶助,首要呈未来以下多少个地点:

    tools→Generate Object-Oriented Model...→采用语言→修改Name和Code→(Selection选项卡→选取要扭转对象模型的表)→鲜明

        1)、从数据库反射出模型时,把表索引音信也反射出来了;

    新葡亰496net 151

        2)、帮忙索引属性信息;

    双击生成的某张表的类图伸开属性窗口→选中全体字段→将字段Visibility全体制改革为private→单击下方Add...按键→选拔Get/Set Operations→鲜明

        3)、帮忙索引音讯和数据库表索引同步;

    之后生成代码就可以:Language→Generate Java Code...

        4)、援助生成索引的SQL语句;

    新葡亰496net 152

    七、辅助生成和批量导出SQL语句;

    【注意:差别语言Add...按键下的剧情有分别,如C#是Property】

      分选数据模型节点,右键,如下图:

    6.  生成数据库文书档案

    新葡亰496net 153

    Report→Generate Report...→选用Generate RTF→修改Repor namet→语言选取Chinese→采取文件贮存地点→鲜明

      采纳“生成SQL...”能够转换完整的数据库SQL语句,如下图

    新葡亰496net 154

    新葡亰496net 155

    PowerDesigner还提供了文书档案编辑功用:Report→Reports...→点击New ReportLogo→修改Repor namet→语言选拔Chinese→Report template选拔Full Physical Report

      采用“导出SQL...”能够把SQL语句保存到文本文件中。

    而后就能够展开文书档案编辑窗口,可是限于篇幅这里就不再详细表明什么编写了,我们温馨看看啊。

      SQL预览成效如下图:

    8.  如何建构自增主键

    新葡亰496net 156

    双击表打开属性窗口→勾选P主键复选框→双击设置为主键的字段(在行的底部双击)或然单击上方的性质Logo按键→在开拓的窗口下方(注意不一致数据库不雷同,sql server是identity复选框)采用sequence,若无则单击旁边的新建按键创设二个sequence。

      

    新葡亰496net 157

    9.  什么样创设视图

    工具栏中单击视图(view)按键→创立视图→双击视图展开属性窗口,在那之中Usage是表示视图是只读的依然可更新的。假若我们只开创平时的视图,那么选拔query only选项就能够。

    新葡亰496net 158

    切换来SQL Query选项卡,在文本框中得以设置定义视图的sql查询语句,在概念视图时不过不要采纳*,而相应选用种种必要的列名,那样在视图属性的Columns中才具观望各种列。单击右下角Edit with SQL Editor按键,就能够弹出SQL Editor编辑器,编写SQL语句。也可应用其他sql语句生成器生成sql语句。

    新葡亰496net 159

    10.  哪些树立目录

    双击表张开属性窗口→接纳Indexes选项卡→新建一索引→双击该索引打开属性窗口

    新葡亰496net 160

    选料Columns选项卡→单击Add ColumnsLogo按键→采用要成立目录的字段→鲜明

    此处Column definition就不要选了,会与主键争论。

    新葡亰496net 161

    11.  怎么样创设存储进程

    工具栏中单击Procedure按键→创设存款和储蓄进程→双击存款和储蓄进程打开属性窗口→采纳Definition选项卡,个中在下拉列表框中,有Default Procedure、Default Function那八个选取,前面四个是概念进度,前者是定语函数,系统会基于选用的连串创造SQL语句的模板→编辑存款和储蓄进度脚本。

    新葡亰496net 162

    以上就是PowerDesigner物理模型的最要害内容了,其实那只是海洋一粟罢了,仅仅刚刚提到到了三个模子,还会有别的好多模型值得我们上学,这里要想的确讲周全的话,那一篇博文料定容不下,需求连载了。

    PowerDesigner真的可怜庞大,用它设计UML同样很牛叉,咱们有时间真应该可以学习那个工具怎么使,借使或许,作者说不定会在此后的博文中介绍下什么用PowerDesigner设计目的模型UML,可能搞倒霉真的要连载了,呵呵。那么小小期望下啊!

    基本功部分:

     

    首先大家须求创建八个测量检验数据库,为了轻松,大家在那几个数据库中只开创二个Student表和一个Major表.其表结商谈事关如下所示.

    新葡亰496net 163

    看看哪些用PowerDesigner快速的创造出那些数据库吧.

    1.现行反革命开端使用PowerDesigner创造数据库,首先运行程序,进入主分界面:

    新葡亰496net 164

    2.File—New Model—Physical Data Model—Physical Diagram—Model name 设置为test,DBMS属性设置为Microsoft SQL Server 2005:

    新葡亰496net 165

    3.先是用表格工具创制一个表格模板:

    新葡亰496net 166

    4.双击表格模板,设置属性,我们先是设置Major表:

    新葡亰496net 167

    5.设置好表名,点击Columns标签,设置字段属性,设置如图所示:

    新葡亰496net 168

    6.因为MajorID字段大家要安装为自动增加,所以要安装它的高等属性,采取MajorID字段,点击属性按键,在General面板中勾选上Identity复选框:

    新葡亰496net 169

    7.鲜明后我们更创设二个Student表,字段设置如图所示:

    新葡亰496net 170

    8.随之是为Student创造贰个MajorID外键,使用PowerDesigner可以相当的轻便的做到那么些职业,选择事关设置工具,在Student表上按住左键不放,拖拽至Major表,便可为Student表增添贰个MajorID的外键:

    新葡亰496net 171

    9.哈哈,以往测量试验表已经设置好了,接着设置一下大家要转移的数据库吧,这几个表都将被制造到该数据库中,大家在安排面板空白处右键—Properties,在弹出的属性设置对话框设置如下:

     新葡亰496net 172

    10好了,在此我们对新数据库的安装已经实现,然而在SQL中如故家徒壁立啊,我们要怎么把那边策画好的结构移植到SQLServer 二〇〇六中吗?实施操作:Database—Generate Database,设置好存款和储蓄进度导出目录和文件名,点击鲜明就可以:

    新葡亰496net 173

    11.到你的导出目录,就足以瞥见导出的数据库创设存款和储蓄进程了,展开SQL,执行一下,你就能看出数据库被岂有此理的开创好了:

    新葡亰496net 174

    新葡亰496net 175

    12.好了,数据库的备选干活压实了,下一篇我们就将利用该数据库结合Code史密斯自动批量更换代码啦~

    上述施行中生成的源代码:

    新葡亰496net 176

    新葡亰496net 177

    /*==============================================================*/
    /* Database name: PD_test */
    /* DBMS name: Microsoft SQL Server 2005 */
    /* Created on: 2010/6/13 星期日 17:27:17 */
    /*==============================================================*/

    dropdatabase PD_test
    go

    /*==============================================================*/
    /* Database: PD_test */
    /*==============================================================*/
    createdatabase PD_test
    go

    use PD_test
    go

    /*==============================================================*/
    /* Table: Major */
    /*==============================================================*/
    createtable Major (
    MajorID intidentity,
    Name nvarchar(20) notnull,
    Remark nvarchar(Max) null,
    constraint PK_MAJOR primarykey (MajorID)
    )
    go

    /*==============================================================*/
    /* Table: Student */
    /*==============================================================*/
    createtable Student (
    StudentID nvarchar(20) notnull,
    MajorID intnull,
    Name nvarchar(20) notnull,
    Sex bitnotnull,
    Age intnull,
    Remark nvarchar(Max) null,
    constraint PK_STUDENT primarykey (StudentID)
    )
    go

    altertable Student
    addconstraint FK_STUDENT_REFERENCE_MAJOR foreignkey (MajorID)
    references Major (MajorID)
    go

    新葡亰496net 178

    本文由新葡亰496net发布于奥门新萄京娱乐场,转载请注明出处:EZDML表结构设计器,NetUML开发框架

    关键词: