【SSH项目实战】国税协同平台-21.PowerDesigner概念、物理模型

我们之前做的都是先建实体类再去创建表(或者是hibernate自动生成表),有一个概念叫“逆向工程”,就是先创建表,再由表来生成相应的实体类和映射文件。

在讲“逆向工程”之前,我们先学一个数据库模型设计工具,做“PowerDesigner”,是设计实体以及实体之间的关系的,而且可以生成数据库建表语句的工具。

我们打开PowerDesigner,创建一个“概念模型”,实体集关系表:


然后介绍一下侧面的工具:

上面常用的就这几个

我们创建几个实体和关系:


双击某一个实体之后我们可以看到下面的对话框,然后可以修改实体的名字、数据库表的名字


然后我们在Attribute中设置我们的表单的数据,这个可以从我们的需求分析中获取相应的字段来设置到里面:



双击我们的实体集关系,我们可以设置他们的关系:



我们在Cardinalities可以设置他们的关系为“几对几”:



我们下面开设编写一个“人员组织架构”的概念模型,设置实体之间的关系,最后生成sql语句,以此来熟悉PowerDesigner的操作。

我们的人员组织架构详情:
机构(id,名称)
部门(id,名称):一个机构有多个部门
人员(id,名称):一个人员属于一个部门,一个部门下有多个人员
领导:领导也是人员
角色(id,名称):一个角色可以对应多个人员,一个人员有多个角色
权限(id,名称):一个角色可以有多个权限,一个权限对应多个角色
平常开发我们是从需求中分析出这些实体的。

下面我们打开PowerDesigner开始画这些实体:
我们创建了概念模型之后,画出那6个实体,然后逐个写他们的属性值:


我们实体写完之后要分析他们的关系,并设置关系:
首先是机构和部门,是一对多的关系:

结果:



然后是部门和人员的关系:



然后领导和人员的关系(属于继承关系):



然后人员与角色的关系是需要一张中间表的,我们来设置这个中间表:


之后连线并设置关系:


最后,我们设置权限和角色的关系:


我们的实体和实体之间的关系都设置成功了,我们下面将概念模型生成物理模型:
点击工具(Tools)-->Generate Physical Data Model...
然后弹出以下操作框:



我们可以看到重新生成的物理模型:



与之前有何区别呢?这个是实实在在的表关系,可以拿来在数据库建表的。
我们想获取某一个表的建表语句,就可以点击这个实体,然后点击“Preview”,就可以看到建表语句了:



我们下面利用sql语句建表
首先点击PowerDesign的“Database”(数据库)选项,然后选择“Generate Database”,之后出现如下操作框:

点击确定,在相应文件夹会导出sql文件,我们在D:\PowerDesigner15下找到了crebas.sql文件,内容如下:
[sql]  view plain copy
  1. /*==============================================================*/  
  2. /* DBMS name:      MySQL 5.0                                    */  
  3. /* Created on:     2015/11/10 12:39:35                          */  
  4. /*==============================================================*/  
  5.   
  6.   
  7.   
  8.   
  9. drop table if exists emp_role;  
  10.   
  11.   
  12. drop table if exists role_pri;  
  13.   
  14.   
  15. drop table if exists t_dept;  
  16.   
  17.   
  18. drop table if exists t_emp;  
  19.   
  20.   
  21. drop table if exists t_leader;  
  22.   
  23.   
  24. drop table if exists t_org;  
  25.   
  26.   
  27. drop table if exists t_privilege;  
  28.   
  29.   
  30. drop table if exists t_role;  
  31.   
  32.   
  33. /*==============================================================*/  
  34. /* Table: emp_role                                              */  
  35. /*==============================================================*/  
  36. create table emp_role  
  37. (  
  38.    emp_id               varchar(32) not null,  
  39.    role_id              varchar(32) not null,  
  40.    state                int,  
  41.    primary key (emp_id, role_id)  
  42. );  
  43.   
  44.   
  45. /*==============================================================*/  
  46. /* Table: role_pri                                              */  
  47. /*==============================================================*/  
  48. create table role_pri  
  49. (  
  50.    role_id              varchar(32) not null,  
  51.    pin_id               varchar(32) not null,  
  52.    primary key (role_id, pin_id)  
  53. );  
  54.   
  55.   
  56. /*==============================================================*/  
  57. /* Table: t_dept                                                */  
  58. /*==============================================================*/  
  59. create table t_dept  
  60. (  
  61.    dept_id              varchar(32) not null,  
  62.    org_id               varchar(32) not null,  
  63.    name                 varchar(50),  
  64.    primary key (dept_id)  
  65. );  
  66.   
  67.   
  68. /*==============================================================*/  
  69. /* Table: t_emp                                                 */  
  70. /*==============================================================*/  
  71. create table t_emp  
  72. (  
  73.    emp_id               varchar(32) not null,  
  74.    dept_id              varchar(32),  
  75.    name                 varchar(50) not null,  
  76.    primary key (emp_id)  
  77. );  
  78.   
  79.   
  80. /*==============================================================*/  
  81. /* Table: t_leader                                              */  
  82. /*==============================================================*/  
  83. create table t_leader  
  84. (  
  85.    emp_id               varchar(32) not null,  
  86.    dept_id              varchar(32),  
  87.    name                 varchar(50) not null,  
  88.    position             int,  
  89.    primary key (emp_id)  
  90. );  
  91.   
  92.   
  93. /*==============================================================*/  
  94. /* Table: t_org                                                 */  
  95. /*==============================================================*/  
  96. create table t_org  
  97. (  
  98.    org_id               varchar(32) not null,  
  99.    name                 varchar(50),  
  100.    primary key (org_id)  
  101. );  
  102.   
  103.   
  104. /*==============================================================*/  
  105. /* Table: t_privilege                                           */  
  106. /*==============================================================*/  
  107. create table t_privilege  
  108. (  
  109.    pin_id               varchar(32) not null,  
  110.    name                 varchar(50),  
  111.    primary key (pin_id)  
  112. );  
  113.   
  114.   
  115. /*==============================================================*/  
  116. /* Table: t_role                                                */  
  117. /*==============================================================*/  
  118. create table t_role  
  119. (  
  120.    role_id              varchar(32) not null,  
  121.    name                 varchar(50),  
  122.    primary key (role_id)  
  123. );  
  124.   
  125.   
  126. alter table emp_role add constraint FK_emp_role foreign key (emp_id)  
  127.       references t_emp (emp_id) on delete restrict on update restrict;  
  128.   
  129.   
  130. alter table emp_role add constraint FK_emp_role2 foreign key (role_id)  
  131.       references t_role (role_id) on delete restrict on update restrict;  
  132.   
  133.   
  134. alter table role_pri add constraint FK_belong foreign key (role_id)  
  135.       references t_role (role_id) on delete restrict on update restrict;  
  136.   
  137.   
  138. alter table role_pri add constraint FK_own foreign key (pin_id)  
  139.       references t_privilege (pin_id) on delete restrict on update restrict;  
  140.   
  141.   
  142. alter table t_dept add constraint FK_org_dept foreign key (org_id)  
  143.       references t_org (org_id) on delete restrict on update restrict;  
  144.   
  145.   
  146. alter table t_emp add constraint FK_dept_emp foreign key (dept_id)  
  147.       references t_dept (dept_id) on delete restrict on update restrict;  
  148.   
  149.   
  150. alter table t_leader add constraint FK_extends foreign key (emp_id)  
  151.       references t_emp (emp_id) on delete restrict on update restrict;  

然后我们使用这个sql文件,在Mysql的图形化管理工具Sqlyog建立数据库“pd_test”,并下导入这个sql文件,会成功创建相应表:

表导入成功


至此我们的PowerDesign使用和导入表成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值