crebas.sql mysql_如何将SQL转为PDM

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

优点:

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

缺点:

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

前提:

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

2,安装Powerdesigner软件(我的是12.0版本)

具体操作步骤:

一,建立ODBC数据源

1, 打开系统ODBC数据源,位置“控制面板--管理工具--数据源(ODBC),要是这一步不会的话,就不用往下看了,看了也是浪费时间。。。。

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

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

4,选择确定后,该数据源建立成功,可以双击该数据源名称进行连接测试,只要看到弹出:connection successful 就可以了。

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

选择repositroy->connect,,点击setup ..按钮,添加一行。显 示如下:在 repositroy Name 输入“new”;在 repositroy user 输入“heyxnew”,在 database user  输入 "数据库用户" ,第三个:data source name 配置点最右边的(注意找哦),会弹出:select  an  ODBC    data   source      框,有Machine data source:和file data source,而我们在上面早以配好了odbc,则直接选:Machine data source,在下拉框中选 择早以配好的,若是没有配好odbc,则点击add同样可以配只要配好就行了,进行连接测试,只要看到弹出:connection successful 就可以了。

二,在Powerdesigner中逆向生成

1,打开Powerdesigner工具,创建一个PDM文件,选择与之匹配的数据库类型“Oracle version 9i(这个是我的,我用的是oracle)”。创建方法为:右键点击左侧面板中的WorkSpace---->new------>physical data nodel  ,在DBMS中选择你要的数据类型,选择好后点击确定,则新建立了一个工作空间。

2,选择Database菜单下的Reverse Engineer Database,弹出Database Reverse Engineering对话框,选Using an ODBC data source选ODBC数据源“new”。

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

4,选择好后,点击OK,则生成模型(这个要花点时间生成的)。

三,利用脚本生成模型

如果你不光有个正在使有的数据库,你还有一下建立库的脚本,那你发财了!因为用.sql的脚本生成的模型,就不存在用数据库生成的缺点了,具体操作如下:

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

1、 数据库SQL脚本文件crebas.sql。下为脚本实例:

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

/* DBMS name:      ORACLE Version 9i                            */

/* Created on:     2008-12-19 12:42:21                          */

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

alter table SYSTEM.HELP

drop primary key cascade;

drop table SYSTEM.HELP cascade constraints;

drop user SYSTEM;

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

/* User: SYSTEM                                                 */

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

create user SYSTEM identified by '';

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

/* Table: HELP                                                  */

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

create table SYSTEM.HELP  (

TOPIC                VARCHAR2(50)                    not null,

SEQ                  NUMBER                          not null,

INFO                 VARCHAR2(80)

)

pctused 40

initrans 1

maxtrans 255

storage

(

initial 48K

minextents 1

maxextents unlimited

freelists 1

freelist groups 1

)

tablespace SYSTEM

logging

noparallel;

alter table SYSTEM.HELP

add constraint HELP_TOPIC_SEQ primary key (TOPIC, SEQ)

using index

pctfree 10

initrans 2

maxtrans 255

storage

(

initial 16K

minextents 1

maxextents unlimited

freelists 1

freelist groups 1

)

tablespace SYSTEM

logging;

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

3、 过一会你会看到由脚本自动生成相关的PDM。

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

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

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

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

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

/* DBMS name:      ORACLE Version 9i                            */

/* Created on:     2008-12-19 13:26:22                          */

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

alter table STUDENT

drop constraint FK_STUDENT_REFERENCE_CLASS;

alter table CLASS

drop primary key cascade;

alter table STUDENT

drop primary key cascade;

drop table CLASS cascade constraints;

drop table STUDENT cascade constraints;

drop user SYSTEM;

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

/* User: SYSTEM                                                 */

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

create user SYSTEM identified by '';

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

/* Table: CLASS                                                 */

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

create table CLASS  (

CLASSID              NUMBER(2)                       not null,

CLASSNAME            VARCHAR2(24)

);

alter table CLASS

add constraint PK_CLASS primary key (CLASSID);

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

/* Table: STUDENT                                               */

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

create table STUDENT  (

STUDENTID            NUMBER(10)                      not null,

STUDENTNAME          VARCHAR2(4),

CLASSID              NUMBER(2)

);

alter table STUDENT

add constraint PK_STUDENT primary key (STUDENTID);

alter table STUDENT

add constraint FK_STUDENT_REFERENCE_CLASS foreign key (CLASSID)

references CLASS (CLASSID);

不行的话可以多试几次的哦!!!反正我的是一次就OK了。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值