澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:怎么将SQLServer二零零五中

2019-10-21 作者:www.8455.com   |   浏览(200)

软件官网:

有时由于项目开发的需要,必须将SQLServer2005中的某些表同步到Oracle数据库中,由其他其他系统来读取这些数据。不同数据库类型之间的数据同步我们可以使用链接服务器和SQLAgent来实现。假设我们这边(SQLServer2005)有一个合同管理系统,其中有表contract 和contract_project是需要同步到一个MIS系统中的(Oracle9i)那么,我们可以按照以下几步实现数据库的同步。
1.在Oracle中建立对应的contract 和 contract_project表,需要同步哪些字段我们就建那些字段到Oracle表中。
这里需要注意的是Oracle的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系拉?我们可以在SQLServer下运行:

总结:PowerDesign 可以使用两种方式进行逆向工程

PowerDesigner是一款功能非常强大的建模工具软件,足以与Rose比肩,同样是当今最著名的建模软件之一。Rose是专攻UML对象模型的建模工具,之后才向数据库建模发展,而PowerDesigner则与其正好相反,它是以数据库建模起家,后来才发展为一款综合全面的Case工具。

     DataUML 1.2版本在软件架构上有了很大的变化,目前DataUML支持Access、SQLite、MY SQL 、ORACLE、MS SERVER2000、MS SERVER2005、MS SERVER2008数据库。  下载

作者邮箱:huzzz@163.com

澳门新萄京官方网站 1SELECT *
澳门新萄京官方网站 2FROM msdb.dbo.MSdatatype_mappings
澳门新萄京官方网站 3
澳门新萄京官方网站 4SELECT *
澳门新萄京官方网站 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的类型对应,而第二个表则更详细得显示了各个数据库系统的类型对应。根据第一个表和我们的SQLServer中的字段类型我们就可以建立好Oracle表了。

转载文章:如何用Powerdesigner的PDM(物理数据模型)生成数据库及逆向工程(将现有的数据库生成PDM)
pdm做好后,最终是要将其转化为数据库实体的。
1.确认当前Powerdesigner设置的dbms是否正确,即是否是我们要生成的数据库类型,我在这里使用的是sqlserver2000:
Powerdesigner->数据库->更改当前dbms,选择您的数据库类型。

1.  概念数据模型 (CDM)

 澳门新萄京官方网站 6

 EZDML

 

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

可快速的进行数据库表结构设计,建立数据模型。

类似大家常用的数据库建模工具如 PowerDesigner、ERWIN、ER-Studio 和 Rational-Rose 等的超级精简版。

该软件是从 2006 年 4 月开发至今仍然在维护,最近在 2017 年 8 月 5 日 更新了 V2.15 版本。

作者的精神值得我们学习。

 

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

2.配置Powerdesigner与数据源的连接
Powerdesigner->数据库->配置连接->用户dsn(或系统dsn)->选择、添加您的数据源
3.连接
Powerdesigner->数据库->连接->设置好您刚才建立的dsn确定。
OK,设置好连接后我们就可以将pdm生成sql语句了。
4.数据库生成
Powerdesigner->数据库->生成数据库->配置好(默认就可以)后选择确定就好了。
拿到sql脚本语句,大家都知道应当如何做了吧,放到sql查询分析器里执行吧。

对数据和信息进行建模,利用实体-关系图(E-R图)的形式组织数据,检验数据设计的有效性和合理性。

软件主界面

包含功能:

 

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

2. 表描述:可直接编辑文字描述快速生成表结构,爱用键盘的人会喜欢这个功能;

3. 模型图:自动生成模型图;可设计和显示物理/逻辑视图,支持自动布局、平移、缩小放大等操作;

4. 导入数据库:导入数据库中的已有对象,即所谓的逆向工程(支持ORACLE、MYSQL、SQLSERVER和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版本主要更新的内容。 

使用说明:

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

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

导入生成功能可支持ORACLE、MYSQL、SQLSERVER和ODBC数据库; 

生成功能在未连接数据库时,生成的是创建数据库的初始化SQL;只有连接了数据库,才会与数据库进行比对生成升级SQL;

为避免数据丢失,同步数据库时不会删除字段,但仍然会生成注释形式的相应SQL;

 

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

[DefaultFieldTypes] ——修改缺省数据类型对应的物理类型
1=String:VARSTR(2000) ——修改逻辑类型名为String的物理类型名为VARSTR,默认长度为2000
2=Integer:DECIMAL ——修改逻辑类型名为Integer的物理类型名为DECIMAL,无默认长度
[CustFieldTypes]澳门新萄京官方网站:怎么将SQLServer二零零五中的数据同步到Oracle中,EZDML表结构划设想计器。 ——添加额外的数据类型到类型下拉列表
1=BigInt
2=Decimal
3=TestUnk
[CustDataTypeReplaces] ——指定替换字段类型
1=VARCHAR2:NVARCHAR2 ——将VARCHAR2替换为NVARCHAR2(全字匹配)
2=NUMBER(10):DECIMAL ——将NUMBER(10)替换为DECIMAL(全字匹配)
3=%TEXT%:NCLOB ——将TEXT替换为NCLOB(模糊匹配,类似SQL中的like操作)
4=%RAW:BLOB ——将RAW替换为BLOB(左边模糊匹配,右边精确匹配,类似SQL中的like操作)
[Options]
AutoSaveMinutes=5  ——定时每5分钟自动保存,保存为同目录.tmp文件(打开时自动加载tmp,想恢复加载原始文件的话要先删除tmp),为0则不保存
FieldNameMaxDrawSize=64  ——在模型图上允许显示的最大字段名长度
FieldTypeMaxDrawSize=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.

 

澳门新萄京官方网站 120DELETE FROM MIS..MIS.CONTRACT_PROJECT
澳门新萄京官方网站 121--清空Oracle表中的数据
澳门新萄京官方网站 122INSERT into MIS..MIS.CONTRACT_PROJECT--将SQLServer中的数据写到Oracle中
澳门新萄京官方网站 123SELECT contract_id,project_code,actual_money
澳门新萄京官方网站 124FROM contract_project
澳门新萄京官方网站 125

在数据建模过程中,我们建立概念数据模型,通过正向工程生成物理数据模型,生成数据库建库脚本,最后将物理数据模型生成关系数据库,现在反过来,通过逆向工程将关系数据库,生成物理数据模型。
优点:

PowerDesigner 15 新增的模型。逻辑模型是概念模型的延伸,表示概念之间的逻辑次序,是一个属于方法层次的模型。具体来说,逻辑模型中一方面显示了实体、实体的属性和实体之间的关系,另一方面又将继承、实体关系中的引用等在实体的属性中进行展示。逻辑模型介于概念模型和物理模型之间,具有物理模型方面的特性,在概念模型中的多对多关系,在逻辑模型中将会以增加中间实体的一对多关系的方式来实现。

一、支持SQLite数据库

如果报告成功,那么我们的数据就已经写入到Oracle中了。用

         在丢失数据模型或者数据库模型同现有的数据库不一致,可以通过该方法生成使用中数据库的模型

逻辑模型主要是使得整个概念模型更易于理解,同时又不依赖于具体的数据库实现,使用逻辑模型可以生成针对具体数据库管理系统的物理模型。逻辑模型并不是在整个步骤中必须的,可以直接通过概念模型来生成物理模型。

  1、点击工具栏上的澳门新萄京官方网站 126 按钮,出现下拉菜单如下图:

澳门新萄京官方网站 127SELECT *
澳门新萄京官方网站 128FROM MIS..MIS.CONTRACT_PROJECT

缺点:

3.  物理数据模型 (PDM)

澳门新萄京官方网站 129  点击“SQLite”,出现连接SQLite数据库的界面,如下图:

查看Oracle数据库中是否已经有数据了。
4.建立SQLAgent,将以上同步SQL语句作为执行语句,每天定时同步两次。
这样我们的同步就完成了。
这里需要注意的是MIS..MIS.CONTRACT_PROJECT 这里必须要大写,如果是小写的话会造成同步失败。

         还原回的模型中,可能会没有中文注释,没有表外键对应关系(字段还有,索引关系没了)

基于特定DBMS,在概念数据模型、逻辑数据模型的基础上进行设计。由物理数据模型生成数据库,或对数据库进行逆向工程得到物理数据模型。

澳门新萄京官方网站 130     

前提:

4.  面向对象模型 (OOM)

点击“确定”,这样我们就可以成功连接SQLite数据库了。

        1,确认要生成模型的数据库是最新的,并且可以使用

包含UML常见的所有的图形:类图、对象图、包图、用例图、时序图、协作图、交互图、活动图、状态图、组件图、复合结构图、部署图(配置图)。OOM 本质上是软件系统的一个静态的概念模型。

  成功连接数据库之后,选择数据库节点,右键“生成数据模型”,这里我们选择C#模型,如下图成功生成了SQLite数据库模型

        2,安装Powerdesigner软件

5.  业务程序模型 (BPM)

澳门新萄京官方网站 131

具体操作步骤:

BPM 描述业务的各种不同内在任务和内在流程,而且客户如何以这些任务和流程互相影响。 BPM 是从业务合伙人的观点来看业务逻辑和规则的概念模型,使用一个图表描述程序,流程,信息和合作协议之间的交互作用。

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

一,建立ODBC数据源

6.  信息流模型(ILM)

二、支持生成SQLite数据库代码

        1, 打开系统ODBC数据源,位置“控制面板--管理工具--数据源(ODBC)

ILM是一个高层的信息流模型,主要用于分布式数据库之间的数据复制。

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

        2,选择系统DSN,点击添加按钮,会弹出如下界面,选择与数据库相匹配的驱动程序

7.  企业架构模型(EAM):

澳门新萄京官方网站 132

3,点击完成,弹出数据源名称(自定),和选择你要连接的数据库,如下图所示

从业务层、应用层以及技术层的对企业的体系架构进行全方面的描述。包括:组织结构图、业务通信图、进程图、城市规划图、应用架构图、面向服务图、技术基础框架图。

 

4,选择确定后,该数据源建立成功,可以双击该数据源名称进行连接测试,如下图所示

正所谓“工欲善其事必先利其器”,PowerDesigner就是一把强大的“神器”,若能运用自如,再身怀“绝世武功”,那你基本就遇神杀神遇佛杀佛了!

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

5,至此数据源建立完成,当然这些也可以不用在这里建立,在powerdesigner里也可以建立,建立方法为

关于PowerDesigner物理数据模型的基本使用,我这里就不废话了,给出个连接,地球人看完都知道:

澳门新萄京官方网站 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

澳门新萄京官方网站 134

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

选择要输出的文件路径,即文件存储路径,并根据需要修改文件名,单击确定后便会生成sql脚本。

    生成代码的时候可以得到字段的自定义属性值。如下图

3,点击确定后,显示此数据库中所有表、视图、用户(这个选择一下该数据库的用户)。根据需要选择后,转换成pdm。图示如下

澳门新萄京官方网站 135

澳门新萄京官方网站 136

4,选择好后,点击OK,则生成模型。

在Options选项卡里,可以个性化选择和配置sql脚本,如取消外键,去除drop语句等。

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

三,利用脚本生成模型

澳门新萄京官方网站 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 */
/*==============================================================*/
/*==============================================================*/
/* 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.  将所有名词转化为大写

澳门新萄京官方网站 138

2、 还是创建一个pdm,选择Database--->Reverse Engineer Database,选择Using script files。

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

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

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

澳门新萄京官方网站 139

澳门新萄京官方网站 140

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

3.  表字段设计窗口显示comment来编写注释

  3、MS SERVER数据库的主键属性,如下图

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

双击表打开表的属性窗口→Columns选项卡→单击上排倒数第二个图标(Customize Columns and Filter)→勾选comment

澳门新萄京官方网站 141

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

澳门新萄京官方网站 142

  4、MS SERVER数据库的外键属性,如下图

在用户的none中选择数据库用户,同时可选要导出的表,最后点击确定,如果不能正常生成脚本提示模型错误,则在上图中的options中将check modle 的选项去掉,点击确定,生成sql脚本,

4.  修改表的字段Name的时候,Code不自动跟着变

澳门新萄京官方网站 143

这时生成的脚本不要着急去用,因为可能是有问题,用记事本或其它工具打开这个脚本,你会发现在所属名上也就是s2ms上都会加上""号,用Ctrl H,将所有"替换为空,就大功告成了!

tools→General Options...→Dialog→取消勾选Name to Code mirroring

  5、MS SERVER数据库的索引属性,如下图

澳门新萄京官方网站 144

澳门新萄京官方网站 145

5.  不同数据库之间的转化

 

Database→Change Current DBMS→选择要转换成的目标数据库

五、支持用户自定义类型

澳门新萄京官方网站 146

  用户可以自己定义数据类型,如有时候我们需要以GUID来作为表的主键,这时我们可以定义一个GUID类型的字段类型。具体操作流程:选择数据模型节点,右键,在弹出的菜单中选择“设置”,如下图

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

澳门新萄京官方网站 147

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

  这里我们定义GUID的类型为nvarchar,长度为38,我们就可以使用这个数据类型了,如下图

澳门新萄京官方网站 148

澳门新萄京官方网站 149

Using script files→点击下方图标(Add Files)来添加sql脚本文件→确定

 

澳门新萄京官方网站 150

六、支持表索引;

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

  增加对数据表索引的支持,主要表现在以下几个方面:

tools→Generate Object-Oriented Model...→选择语言→修改Name和Code→(Selection选项卡→选择要生成对象模型的表)→确定

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

澳门新萄京官方网站 151

    2)、支持索引属性信息;

双击生成的某张表的类图打开属性窗口→选中全部字段→将字段Visibility全部改为private→单击下方Add...按钮→选择Get/Set Operations→确定

    3)、支持索引信息和数据库表索引同步;

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

    4)、支持生成索引的SQL语句;

澳门新萄京官方网站 152

七、支持生成和批量导出SQL语句;

【注意:不同语言Add...按钮下的内容有区别,如C#是Property】

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

6.  生成数据库文档

澳门新萄京官方网站 153

Report→Generate Report...→选择Generate RTF→修改Repor namet→语言选择Chinese→选择文件存放位置→确定

  选择“生成SQL...”可以生成完整的数据库SQL语句,如下图

澳门新萄京官方网站 154

澳门新萄京官方网站 155

PowerDesigner还提供了文档编辑功能:Report→Reports...→点击New Report图标→修改Repor namet→语言选择Chinese→Report template选择Full Physical Report

  选择“导出SQL...”可以把SQL语句保存到文本文件中。

之后即可打开文档编辑窗口,不过限于篇幅这里就不再详细说明如何编辑了,大家自己看看吧。

  SQL预览功能如下图:

8.  如何建立自增主键

澳门新萄京官方网站 156

双击表打开属性窗口→勾选P主键复选框→双击设置为主键的字段(在行的头部双击)或者单击上方的属性图标按钮→在打开的窗口下方(注意不同数据库不一样,sql server是identity复选框)选择sequence,如果没有则单击旁边的新建按钮创建一个sequence。

  

澳门新萄京官方网站 157

9.  如何建立视图

工具栏中单击视图(view)按钮→创建视图→双击视图打开属性窗口,其中Usage是表示视图是只读的还是可更新的。如果我们只创建一般的视图,那么选择query only选项即可。

澳门新萄京官方网站 158

切换到SQL Query选项卡,在文本框中可以设置定义视图的sql查询语句,在定义视图时最好不要使用*,而应该使用各个需要的列名,这样在视图属性的Columns中才能看到每个列。单击右下角Edit with SQL Editor按钮,即可弹出SQL Editor编辑器,编写SQL语句。也可采用其他sql语句生成器生成sql语句。

澳门新萄京官方网站 159

10.  如何建立索引

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

澳门新萄京官方网站 160

选择Columns选项卡→单击Add Columns图标按钮→选择要建立索引的字段→确定

这里Column definition就不要选了,会与主键冲突。

澳门新萄京官方网站 161

11.  如何建立存储过程

工具栏中单击Procedure按钮→创建存储过程→双击存储过程打开属性窗口→选择Definition选项卡,其中在下拉列表框中,有Default Procedure、Default Function这两个选项,前者是定义过程,后者是定语函数,系统会根据选择的类型创建SQL语句的模板→编辑存储过程脚本。

澳门新萄京官方网站 162

以上就是PowerDesigner物理模型的最主要内容了,其实这只是沧海一粟罢了,仅仅刚刚涉及到了一个模型,还有其他好多模型值得我们学习,这里要想真的讲全面的话,那一篇博文肯定容不下,需要连载了。

PowerDesigner真的非常强大,用它设计UML同样很牛叉,大家有时间真应该好好学学这个工具怎么使,如果可能,我可能会在今后的博文中介绍下如何用PowerDesigner设计对象模型UML,或者搞不好真的要连载了,呵呵。那么小小期待下吧!

基础部分:

 

首先我们需要创建一个测试数据库,为了简单,我们在这个数据库中只创建一个Student表和一个Major表.其表结构和关系如下所示.

澳门新萄京官方网站 163

看看怎样用PowerDesigner快速的创建出这个数据库吧.

1.现在开始使用PowerDesigner创建数据库,首先运行程序,进入主界面:

澳门新萄京官方网站 164

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

澳门新萄京官方网站 165

3.首先用表格工具创建一个表格模板:

澳门新萄京官方网站 166

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

澳门新萄京官方网站 167

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

澳门新萄京官方网站 168

6.因为MajorID字段我们要设置为自动增长,所以要设置它的高级属性,选择MajorID字段,点击属性按钮,在General面板中勾选上Identity复选框:

澳门新萄京官方网站 169

7.确定后我们再创建一个Student表,字段设置如图所示:

澳门新萄京官方网站 170

8.接着是为Student创建一个MajorID外键,使用PowerDesigner可以很轻松的完成这个工作,选择关系设置工具,在Student表上按住左键不放,拖拽至Major表,便可为Student表添加一个MajorID的外键:

澳门新萄京官方网站 171

9.哈哈,现在测试表已经设置好了,接着设置一下我们要生成的数据库吧,这些表都将被创建到该数据库中,我们在设计面板空白处右键—Properties,在弹出的属性设置对话框设置如下:

 澳门新萄京官方网站 172

10好了,在此我们对新数据库的设置已经完成,但是在SQL中还是空空如也啊,我们要怎么把这边设计好的结构移植到SQLServer 2005中呢?执行操作:Database—Generate Database,设置好存储过程导出目录和文件名,点击确定即可:

澳门新萄京官方网站 173

11.到你的导出目录,就可以看见导出的数据库创建存储过程了,打开SQL,执行一下,你就会看到数据库被神奇的创建好了:

澳门新萄京官方网站 174

澳门新萄京官方网站 175

12.好了,数据库的准备工作做好了,下一篇我们就将使用该数据库结合CodeSmith自动批量生成代码啦~

上述实践中生成的源代码:

澳门新萄京官方网站 176

澳门新萄京官方网站 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

澳门新萄京官方网站 178

本文由澳门新萄京官方网站发布于www.8455.com,转载请注明出处:澳门新萄京官方网站:怎么将SQLServer二零零五中

关键词: