当前位置: 首页 > news >正文

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、连接外键后的线就是直线了

http://www.lryc.cn/news/601671.html

相关文章:

  • 青少年编程能力等级测评试卷及答案 Python编程(三级)
  • Rouge:面向摘要自动评估的召回导向型指标——原理、演进与应用全景
  • Java面试全方位解析:从基础到AI的技术交锋
  • 如何思考一个动态规划问题需要几个状态?
  • 负载均衡 LoadBalance
  • 阻止网页重定向
  • 6、企业信息化
  • 齐护Ebook科技与艺术Steam教育套件 可图形化micropython Arduino编程ESP32纸电路手工
  • 装修独栋别墅需要注意的细节有哪些?
  • 像素农场播种机-作物模拟器HTML+CSS+JavaScript
  • Linux 系统网络配置及 IP 地址相关知识汇总
  • JVM terminated. Exit code=1
  • 通俗理解主机的BIOS和UEFI启动方式
  • SpringBoot 整合 Langchain4j AIService 深度使用详解
  • uniapp input 聚焦时键盘弹起滚动到对应的部分
  • Python入门构建网页
  • Python爬虫实战:研究netaddr库相关技术构建IP地址信息采集分析系统
  • r0env2024:开箱即用的AI工具集成Kali发新版
  • Java学习-------外观模式
  • 不坑盒子:Word里1秒制作“花括号”题目,多音字组词、形近字组词……
  • J3160迷你小主机 性能测试 对比i3-4170 以及服务器
  • 【Linux | 网络】传输层(UDP和TCP)
  • Word和WPS文字如何制作分栏试卷?想分几栏分几栏
  • 使用uni-app开发一个点餐收银台系统前端静态项目练习
  • Netty中 ? extends Future<? super V>这种的写法的理解
  • 使用GPU训练模型
  • MyBatis-Plus高效开发实战
  • 关于GRPC的相关知识。
  • 编程语言Java——核心技术篇(五)IO流:数据洪流中的航道设计
  • 点击劫持:潜藏在指尖的安全陷阱