使用PD建立物理数据模型

        这里介绍使用powerdesigner15.2建立物理数据模型的例子,以建立用户和角色之间的物理模型为例。

        首先在当前的工作空间下建立物理数据模型。

       

        下一步,选择DBMS类型为oracle10g继续。

        在打开的编辑界面中,可以在“调色板”工具箱中选择需要的小工具了。这里我们先拖拽了3个Table。

       

         如果不小心把“调色板”窗口关了,可以在Tools→Customize Toolbars中弹出的窗口中勾选上就可以了。

 

         接下来,开始建表,双击Table_1,在如下的窗口中,编辑表明,注意这里的所有Code命名都规定为大写的英文字母。

       

         再切换到Columns选项卡下,编辑数据列了。发现可定义的数据列属性不够的话可以,点击
来定制列属性,这里我又加上了默认值和描述的属性。列的定义如下:

       
使用PD建立物理数据模型_第1张图片
         按照上面的方法,再把角色表建好。

 

        要看主键定义,双击用户表,点击Keys,双击主键那条记录,就可以编辑了。

 

        给主键列建立相应的sequence。

        直接在物理模型上右击建立sequence,建完之后会在模型节点下出现一个sequence节点。再右键新建其他的sequence,建完之后:

       
使用PD建立物理数据模型_第2张图片
         在每个表的主键列里引用各个sequence:双击表的主键列,在sequence的编辑位置,直接选择定义好的sequence即可。

 

        建立index,双击Table,点击Indexes选项卡,在里面新建index名称,然后双击,在Columns选项卡中选择Expression为表中指定要建索引的列即可。

 

        接下来,需要建立用户表和角色表之间的关联表了。建法同上。这里主要注意建立外键关联。
         选中“调色板”中的Preference,在从关联表的外键指向主表的主键即可。接下来就是双击编辑外键关联的事了。

 

        最后,我们可以预览生成的sql脚本。右键物理模型编辑网格界面的空白处,选择属性,点击预览选项卡,会看到生成了多余的sql。点击窗口上的工具栏中的“显示生成选项”,在弹出的窗口中勾选不需要生成的选项即可。

 

        最终生成的pdm模型对应的sql脚本如下:

       

alter table FC_USER_ROLE
   drop constraint FK_ROLE_USER_ROLE;

alter table FC_USER_ROLE
   drop constraint FK_USER_USER_ROLE;

drop index IDX_ROLE;

drop table FC_ROLE cascade constraints;

drop index IDX_USER;

drop table FC_USER cascade constraints;

drop table FC_USER_ROLE cascade constraints;

drop sequence SEQ_ROLE_SID;

drop sequence SEQ_USER_ROLE_SID;

drop sequence SEQ_USER_SID;

create sequence SEQ_ROLE_SID
increment by 1
start with 1;

create sequence SEQ_USER_ROLE_SID
increment by 1
start with 1;

create sequence SEQ_USER_SID
increment by 1
start with 1;

/*==============================================================*/
/* Table: FC_ROLE                                               */
/*==============================================================*/
create table FC_ROLE  (
   SID                  NUMBER(10)                      not null,
   ROLE_NAME            VARCHAR2(20)                    not null,
   ROLE_TYPE            VARCHAR2(2)                     not null,
   VALID_FLAG           VARCHAR2(2)                    default 'Y' not null,
   CREATED_BY           VARCHAR@(20)                   default 'admin' not null,
   CREATED_DATE         date                           default sysdate not null,
   UPDATED_BY           VARCHAR2(20)                   default 'admin' not null,
   UPDATED_DATE         date                           default sysdate not null,
   constraint PK_ROLE primary key (SID)
);

comment on table FC_ROLE is
'这是角色表';

/*==============================================================*/
/* Index: IDX_ROLE                                              */
/*==============================================================*/
create index IDX_ROLE on FC_ROLE (
   ROLE_NAME ASC,
   ROLE_TYPE ASC
);

/*==============================================================*/
/* Table: FC_USER                                               */
/*==============================================================*/
create table FC_USER  (
   SID                  NUMBER(10)                      not null,
   USER_NAME            VARCHAR2(20)                    not null,
   PASSWORD             VARCHAR2(20)                    not null,
   EMAIL                VARCHAR2(20)                    not null,
   PROFESSION           VARCHAR2(4),
   VALID_FLAG           VARCHAR2(2)                    default 'Y' not null,
   CREATED_BY           VARCHAR@(20)                   default 'admin' not null,
   CREATED_DATE         date                           default sysdate not null,
   UPDATED_BY           VARCHAR2(20)                   default 'admin' not null,
   UPDATED_DATE         date                           default sysdate not null,
   constraint PK_USER primary key (SID)
);

comment on table FC_USER is
'这个是用户信息表';

/*==============================================================*/
/* Index: IDX_USER                                              */
/*==============================================================*/
create index IDX_USER on FC_USER (
   USER_NAME ASC,
   EMAIL ASC
);

/*==============================================================*/
/* Table: FC_USER_ROLE                                          */
/*==============================================================*/
create table FC_USER_ROLE  (
   SID                  NUMBER(10)                      not null,
   USER_ID              NUMBER(10)                      not null,
   ROLE_ID              NUMBER(10)                      not null,
   VALID_FLAG           VARCHAR2(2)                    default 'Y' not null,
   CREATED_BY           VARCHAR@(20)                   default 'admin' not null,
   CREATED_DATE         date                           default sysdate not null,
   UPDATED_BY           VARCHAR2(20)                   default 'admin' not null,
   UPDATED_DATE         date                           default sysdate not null,
   constraint PK_USER_ROLE primary key (SID)
);

alter table FC_USER_ROLE
   add constraint FK_ROLE_USER_ROLE foreign key (ROLE_ID)
      references FC_ROLE (SID);

alter table FC_USER_ROLE
   add constraint FK_USER_USER_ROLE foreign key (USER_ID)
      references FC_USER (SID);

 

你可能感兴趣的:(数据)