PowerDesigner 画ER图并生成sql 教程

前言

power designer是能进行数据库设计的强大的软件,是一款开发人员常用的数据库建模工具,

在数据库建模的过程中,需要运用PowerDesigner进行数据库设计,这个不但可以让人直观的理解模型,而且可以充分的利用数据库技术,优化数据库的设计;

但是有一点,power designer 的用法不适合中国人的习惯;这是非常不好的一点,所以前期需要花一些时间来习惯这个软件的用法;

开始

1、创建项目

首先创建一个项目 ,依次点击 左上角的 File > New Project...

2、给项目起个名

然后会弹出一个窗口, 在里面输入项目名称后点击 OK 按钮

3、项目创建完成

然后,这个项目就创建好了,在左边的菜单栏里面会显示这个项目,并且自动生成了一个文件,在右侧的面板还打开了这个文件;

4、创建物理图 Physical Diagram

接下来我们需要创建一个 Physical Diagram 的物理图, 依次点击左上角的 File > New Model...

5、编辑物理图信息

此时会弹出一个窗口,在窗口中我们依次选择 Model types > Physical Data Model > Physical Digram ; Model name 输入物理图的名称这个随意些就好,DBMS 选择MySQL 5.0,然后点击 OK 按钮

在看看左侧菜单栏,物理图已经创建好了

6、建表

先在右侧的 Physical Diagram 组件栏 中点一下 table 图标,然后在中间空白处点一下,一个表就创建好了;

7、将表放大

刚建好的表格太小了,点击右边 的 Zoom In 放大镜,可以让这个表格大一些

这是放大后的效果

8、修改表结构

先点击 右侧的箭头 pointer, 然后双击这个表

9、给表起个名

此时会弹出一个窗口,在里面输入表名

10、配置字段

点击 Columns ,然后在下面的表格中双击就可以添加字段;

添加好之后,在双击左边的箭头就可以编辑这个字段的信息

此时会打开一个窗口,各主要信息如下

  • Comment : 注释
  • Code:字段名称
  • Indentity: 是否自增字段
  • Primary Key : 是否主键

点击 ok 保存退出,一个字段就创建好了

11 、在添加一个字段 user_name
12、在添加一个订单表 order

订单表的字段如下

13、外键关联

先点一下右边的 Reference 图标,然后移到用户表,按住 鼠标左键 拉到订单表后松开,

然后就可以看到,订单表多了一个外键(fk)字段,这个多出来的外键字段就是 user 表的主键, 而且会有各箭头,表示他们已经建立了关联关系

14、添加索引

双击订单表后切换到 columns 的 tab 页,点击这个很像柜子的图标,会提示 create index 字样,就是创建索引的意思

此时会弹出一个窗口,里面可以填写索引的信息,按需填写就好,包含 :

  • 索引名称
  • 索引注释
  • 索引类型

    切换到columns,可以看到这里已经有一个order_id 的主键了

    我们点击 这个很像表格的按钮(Add Columns)可以选择需要添加索引的字段

    在弹出的窗口中选择需要添加索引的字段即可,可以添加多个,选好后点击ok即可

    然后可以看到,索引已经加好了

    除此之外,我们也可以通过 indexes 的tab页查看或编辑索引,
15、导出sql

依次点击 Database > Change Current DBMS...

将数据库都改为 mysql5.0

然后开始生成sql,依次点击 Database > Generate Database...

在弹出的窗口中选择生成路径和文件名称,其他都默认就好,然后点击确定按钮,即可生成sql

点击确定后会提示你已经生成了,会显示生成的文件路径,点击 Edit... 按钮可以直接查看生成的内容

查看文件后发现,表名里面是带了双引号的,但是有个问题,如果把这个sql直接拿去执行,是会报错的,因为很多的编辑器都不能用双引号

修改,将双引号改为单引号,依次点击 Database > Generate Database... ,然后选择 Format 窗口,在Identifier De;imiter 的选项中,将双引号改为单引号即可

再次生成sql后发现,已经是单引号了

统一添加默认字段(创建时间、创建人等)

使用powerdesigner设计表结构时,每个表都需要设置一些默认字段,如果每添加一个表都要加上 创建时间、创建人、修改时间、修改人 这些字段的话,添加起来会很麻烦,所以就有一些方式可以自动生成这些默认字段。

  1. 打开Powerdesigner工具,依次点击Database -> Edit Current DBMS...。

  2. 在弹出窗口,依次点击Script->Objects->Table->Create。

  3. 在右侧窗口的 Value 中填入以下内容:(如果想要重置,可以create处右键,选择restore value)

    create [%Temporary%?temporary ]table[%R%?[ if not exists]] [%QUALIFIER%]%TABLE%[
    (
    %TABLDEFN%,
    create_user bigint comment '创建人',
    create_time datetime default CURRENT_TIMESTAMP comment '创建时间',
    update_user bigint comment '修改人',
    update_time datetime default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '修改时间'
    )][%R%?[comment = %.q:TLABL%]]
    [%OPTIONS%]

加完后如图

生成表后就会自动加上这些字段了

设置表字符集和存储引擎

在菜单上方选择 Database => Edit Current DBMS

然后选择Mysql5.0 => Script => Objects => Table => Options

在右边的Value框内最后部分追加:

复制代码
ENGINE = %s : list = BDB | HEAP | ISAM | InnoDB | MERGE | MRG_MYISAM | MYISAM, default = InnoDB
DEFAULT CHARACTER SET = %s : list = utf8mb4 | gbk, default = utf8mb4
  • engine :代表存储引擎。
  • default character set :代表的就是字符集了

添加完如图

点击确定保存;

然后回到工作区双击表。选择 Physical Options 标签。然后就可以看到刚刚添加的值了。将字符集和存储引擎添加到右边的窗口中。

然后点击确定进行保存,在次生成sql,就可以看到建表语句中有字符集和存储引擎了

Name 和Code 同步问题

PowerDesigner中,但修改了某个表或者字段的name,其code也跟着修改,这个问题很讨厌,因为一般来说,name是中文的,code是字段名。他俩应该是各不相关的;

16.5及其以前版本

解决方法如下:

1、选择Tools->GeneralOptions...菜单,出现GeneralOptions对话框。

2、从Category中选择Dialog项。

3、取消右边"Name to Code mirroring"复选框。

16.6版本及以上版本

16.6 版本并没有Name To Code mirroring 选项

正确做法

依次打开 tools >> model option... >> Naming Convention 取消 Synchronize code 即可

修改外键连接线为直线

1、依次点击菜单栏的 Tools > Display Preferences...

2、在弹出的窗口种依次点击 Reference > Format > Modify...

3、将Corners中的线改为类似闪电的线即可

4、连接外键后的线就是直线了

相关推荐
小陈工1 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
科技小花6 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸6 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain6 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希6 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神6 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员6 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java7 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿7 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴7 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存