前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用PowerDesigner做数据库设计(二)

使用PowerDesigner做数据库设计(二)

作者头像
张哥编程
发布于 2024-12-19 01:26:26
发布于 2024-12-19 01:26:26
3010
举报
文章被收录于专栏:云计算linux云计算linux

使用PowerDesigner做数据库设计(二)

CDM设计后续

在上一篇文章中,有一点给忘记了,在CDM设计窗口中,如果在设计中,实体entity越来越多,实体entity间的关系也会越来越复杂,像蜘蛛网一样难以分辨,从可视化和可维护性上面讲,这是不利的,有没有办法解决这个问题呢。办法是有的,请看下图:

使用PowerDesigner做数据库设计(二)_PDM
使用PowerDesigner做数据库设计(二)_PDM

图-1

在图中,点击鼠标右键,选择新增,在新增下选择第一项Conceptual Diagram,这样就可以根据业务逻辑来建立一个子CDM,在打开的窗口中给子CDM命名,添加code和备注。

使用PowerDesigner做数据库设计(二)_数据库业务建模_02
使用PowerDesigner做数据库设计(二)_数据库业务建模_02

图-2

如果想让每一个子CDM排列有序,则可以在名称前面增加数字来进行排序,如下图所示:

图-3

对于实体Entity,关联关系Relationships,还有Association及Association Link也可以使用同样的命名规则,根据业务逻辑在名字前添加数字,进行归类存放,方便后续的审核确认。

*​PDM介绍*

PDM是PhysicalDataMode的英文简称,物理数据模型的意思。PDM可以直接创建,也可以从CDM之间生成,还可以从已有的PDM再次生成PDM。

在PDM中可以对CDM生成的表结构,做进一步的核对、确认一下,这是不是就是自己想要的数据结构,需要注意的是CDM中的关联association会直接生成对应的表table,还有一点需要注意,如果一个表中有两个来自同一个表的外键,外键的命名还需要人为的手动修改一下。

*​CDM转PDM,手把手实际操作*

第一步,选中即将转化为PDM的CDM设计稿上,在工具栏上,选择Generate Physical Data Model,如下图所示:

图-4

第二步,在打开的窗口,进行PDM相关参数的设置,在第一个选项卡General,数据库的选择非常重要,要根据需要的数据类型,来选择生成模型对应的数据库类型。

使用PowerDesigner做数据库设计(二)_数据库开发_03
使用PowerDesigner做数据库设计(二)_数据库开发_03

图-5

第三步,数据库表前缀的设置,在上图中,点开第二个选项卡detail,可以看到一个table prefix,这个便是表前缀的设置。

使用PowerDesigner做数据库设计(二)_PDM_04
使用PowerDesigner做数据库设计(二)_PDM_04

图-6

第四步,切换到第四个选项卡Selection,对需要生成PDM的实体,做一个选择,如果不需要,就去掉实体前复选框中的勾选,如果全部需要,这一步可以跳过。

使用PowerDesigner做数据库设计(二)_数据库业务建模_05
使用PowerDesigner做数据库设计(二)_数据库业务建模_05

图-7

最后,点击确定按钮,根据CDM的大小,等待个几秒钟,就可以看到已生成PDM的样子了,如下图:

图-8

只需三步,CDM就转换成PDM了,非常简单吧。

再来确认一下,学生和课程关系表,生成的对不对,打开Tables下的学生和课程关系表,表的前缀是有的,这个是对的。

使用PowerDesigner做数据库设计(二)_数据库业务建模_06
使用PowerDesigner做数据库设计(二)_数据库业务建模_06

图-9

再确认一下,表中的列,喔,好吧,学生和课程关联关系时,错把班级和这张表关联了,真是太粗心,怎么办,再回到CDM设计中,把上面的相关步骤再走一遍喽!

使用PowerDesigner做数据库设计(二)_PDM_07
使用PowerDesigner做数据库设计(二)_PDM_07

图-10

回到CDM设计界面,在删除的确认对话框中,有个选项需要注意一下

使用PowerDesigner做数据库设计(二)_数据库开发_08
使用PowerDesigner做数据库设计(二)_数据库开发_08

图-11

在删除对话框中,默认的选项Delete objects,会连带删除掉左边列表中的关系或实体,下面的选项则只会删除右边的关系或实体。在操作实体时,如果不想删除左边菜单栏中的实体,则选择Delete symbols only选项。确定要删除哪些项目后,按下OK按钮确认删除操作。

使用PowerDesigner做数据库设计(二)_数据库业务建模_09
使用PowerDesigner做数据库设计(二)_数据库业务建模_09

图-12

好吧,设计真是个细心活,最后再把PDM生成一下,生成的结果如下图:

使用PowerDesigner做数据库设计(二)_数据库锁_10
使用PowerDesigner做数据库设计(二)_数据库锁_10

图-13

再把每个表中的列信息核对一遍,这下,学生和课程关系表中的列信息都是对的,课程id和学生id分别作为外键,插入到这张表中,在此表中,课程id和学生id构成了联合主键。

使用PowerDesigner做数据库设计(二)_数据库业务建模_11
使用PowerDesigner做数据库设计(二)_数据库业务建模_11

图-14

在学生表中,班级也是作为外键插入到学生表中的,如下图所示:

使用PowerDesigner做数据库设计(二)_数据库开发_12
使用PowerDesigner做数据库设计(二)_数据库开发_12

图-15

*​PDM生成sql语句*

第一步,鼠标焦点落在需要生成PDM的设计稿上,然后就可以在菜单栏看到数据库这个选项,点击数据库,选择Generate Database选项

使用PowerDesigner做数据库设计(二)_PDM_13
使用PowerDesigner做数据库设计(二)_PDM_13

图-16

第二步,在打开的Database Generation窗口中,设置文件需要保存的路径,文件名称,sql语句的组成。

使用PowerDesigner做数据库设计(二)_PDM_14
使用PowerDesigner做数据库设计(二)_PDM_14

图-17

第三步,在后面几个选项卡中,还有其他的选项,在Preview选项卡中,还可以预览到sql语句的效果,如下图所示:

使用PowerDesigner做数据库设计(二)_数据库开发_15
使用PowerDesigner做数据库设计(二)_数据库开发_15

图-18

最后点击确定按钮,然后到文件保存的位置,查看sql语句的文档即可,文档中的sql语句和预览preview中的是一样的。

从以上生成sql语句的过程来看,这一步还算是简单的,只需三步走。下面的一步就比较复杂啦。

*​PDM生成word可视化文档*

第一步,鼠标焦点落在需要需要生成word可视化文档的PDM设计稿上,然后点击工具栏中的报告,如果是第一次使用,则需要打开Report Templates窗口,首先设计word导出模板,如下图所示:

使用PowerDesigner做数据库设计(二)_数据库开发_16
使用PowerDesigner做数据库设计(二)_数据库开发_16

图-19

使用PowerDesigner做数据库设计(二)_数据库设计_17
使用PowerDesigner做数据库设计(二)_数据库设计_17

图-20

第二步,在打开的List of Report Templates模板中,点击新建模板图表后,会出现下面窗口Report Template Type,通过这个窗口给模板命名,选择生成的语言类型,选中的数据模板类型,如下图所示,最后按OK按钮确定。

使用PowerDesigner做数据库设计(二)_数据库开发_18
使用PowerDesigner做数据库设计(二)_数据库开发_18

图-21

第三步,模板设计细节。点击确认按钮后会出现下面操作窗口,模板内容的选择。在这一步,需要确定将要输出的word文档,都有哪些内容展示,table的列表清单,table表头信息,table下的每一列,每一列的数据类型及备注等等。

使用PowerDesigner做数据库设计(二)_数据库开发_19
使用PowerDesigner做数据库设计(二)_数据库开发_19

图-22

拖两个title到文档下,第一个title下面展示table清单,把list of tables拖到第一个title下,这时已经完成了模板的头部设计。

使用PowerDesigner做数据库设计(二)_数据库业务建模_20
使用PowerDesigner做数据库设计(二)_数据库业务建模_20

图-23

接下来,在Available items列表下,找到Table文件夹,打开Table文件夹,把Table Card拖到第二个title下,再找到List of column,把这个也拖到第二个title下,见图-25,把多余的删掉。

使用PowerDesigner做数据库设计(二)_数据库锁_21
使用PowerDesigner做数据库设计(二)_数据库锁_21

图-24

这个步骤考验拖拖拉拉的能力,需要多点耐心,Java程序员还真不习惯这样拖拖拉拉的。

使用PowerDesigner做数据库设计(二)_数据库业务建模_22
使用PowerDesigner做数据库设计(二)_数据库业务建模_22

图-25

最后按保存按钮,在弹框里选择合适的保存路径。

使用PowerDesigner做数据库设计(二)_PDM_23
使用PowerDesigner做数据库设计(二)_PDM_23

图-26

行到此处,模板的设计就告一个段落了,点击右上角的关闭按钮,关闭这个设计模板的窗口,接下来检验这个模板是不是我们想要的。

使用PowerDesigner做数据库设计(二)_数据库锁_24
使用PowerDesigner做数据库设计(二)_数据库锁_24

图-27

第四步,模板验证。鼠标焦点落在要导出word模板的PDM设计稿上,打开图-19的对话框,打开Generate Report窗口,在打开的窗口中,选择刚刚设计的模板,导出文档的后缀,语言类型及存储路径。

使用PowerDesigner做数据库设计(二)_数据库业务建模_25
使用PowerDesigner做数据库设计(二)_数据库业务建模_25

图-28

第五步,确认输出。按下OK按钮确认后,会弹出对话框,点击是,打开已经生成好的word文档,预览一下格式

使用PowerDesigner做数据库设计(二)_数据库锁_26
使用PowerDesigner做数据库设计(二)_数据库锁_26

图-29

这份看起来高大上的文档,还有些不足,行之间缺少下划线,列表清单缺少备注等等。

使用PowerDesigner做数据库设计(二)_数据库开发_27
使用PowerDesigner做数据库设计(二)_数据库开发_27

图-30

第六步,模板设计再确认。从模板保存的路径,打开模板,选择模板中的项目,点击鼠标右键,分别对format和layout进行设计,format主要是对格式的设置,layout是对数据项展示的设置,根据需要进行设置,设置好后保存。

使用PowerDesigner做数据库设计(二)_PDM_28
使用PowerDesigner做数据库设计(二)_PDM_28

图-31

使用PowerDesigner做数据库设计(二)_数据库业务建模_29
使用PowerDesigner做数据库设计(二)_数据库业务建模_29

图-32

使用PowerDesigner做数据库设计(二)_数据库设计_30
使用PowerDesigner做数据库设计(二)_数据库设计_30

图-33

最后,再次生成word文档,打开文档,是不是觉得很完美呢,感觉不完美继续修改模板吧,哈哈。

使用PowerDesigner做数据库设计(二)_PDM_31
使用PowerDesigner做数据库设计(二)_PDM_31

最后总结

CDM、PDM是PowerDeginer工具做数据库设计时最常使用的,PowerDeginer里面的功能还有很多,都待研究。

使用了PowerDeginer这款工具后,有没有觉得做数据库设计高效了很多呢,当然,做设计是细心活,粗心时还需要多review几次。

哈哈。

最后总结

CDM、PDM是PowerDeginer工具做数据库设计时最常使用的,PowerDeginer里面的功能还有很多,都待研究。

使用了PowerDeginer这款工具后,有没有觉得做数据库设计高效了很多呢,当然,做设计是细心活,粗心时还需要多review几次。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
python中的数据结构
对于习惯使用于C++的大佬来说, 容器的使用极大的方便了编程的需要,尤其对于参加算法竞赛的同学们,不必再自己去写类函数(当然了,类函数已经明明白白的)。作为python的使用者,开发者也为大家提供了已经打包好的函数库,import 即可。
AngelNH
2020/04/15
7320
python︱ collections模块(namedtuple/defaultdict/OrderedDict等)
给[‘x’,‘y’]这个tuple命名为point,这个tuple中,第一个空位命名为'x',第二个为'y'。
悟乙己
2019/05/26
1.9K0
Python 工匠:容器的门道
容器”这两个字很少被 Python 技术文章提起。一看到“容器”,大家想到的多是那头蓝色小鲸鱼:Docker,但这篇文章和它没有任何关系。本文里的容器,是 Python 中的一个抽象概念,是对专门用来装其他对象的数据类型的统称。
腾讯蓝鲸助手
2022/06/28
5890
python 安装spark_Spark环境搭建 (Python)
—————————————————————————————————— 2018-5-11更新
学到老
2019/02/14
1.1K0
MongoDB Spark Connector 实战指南
1、高性能,官方号称 100x faster,因为可以全内存运行,性能提升肯定是很明显的;
MongoDB中文社区
2019/10/23
1.4K0
MongoDB Spark Connector 实战指南
流畅的 Python 第二版(GPT 重译)(七)
面向对象编程关乎接口。在 Python 中理解类型的最佳方法是了解它提供的方法——即其接口——如 “类型由支持的操作定义”(第八章)中所讨论的。
ApacheCN_飞龙
2024/03/21
3040
流畅的 Python 第二版(GPT 重译)(七)
使用Elasticsearch、Spark构建推荐系统 #1:概述及环境构建
推荐系统是机器学习当前最著名、最广泛使用,且已经证明价值的落地案例。尽管有许多资源可用作训练推荐模型的基础,但解释如何实际部署这些模型来创建大型推荐系统的资源仍然相对较少。
flavorfan
2022/03/18
3.5K0
使用Elasticsearch、Spark构建推荐系统 #1:概述及环境构建
【错误记录】Python 中使用 PySpark 数据计算报错 ( SparkException: Python worker failed to connect back. )
os.environ['PYSPARK_PYTHON'] 的值设置为 你自己电脑上的 python.exe 绝对路径即可 , 不要按照我电脑上的 Python 解释器路径设置 ;
韩曙亮
2023/10/11
2K0
【错误记录】Python 中使用 PySpark 数据计算报错 ( SparkException: Python worker failed to connect back. )
Jupyter在美团民宿的应用实践
做算法的同学对于Kaggle应该都不陌生,除了举办算法挑战赛以外,它还提供了一个学习、练习数据分析和算法开发的平台。Kaggle提供了Kaggle Kernels,方便用户进行数据分析以及经验分享。在Kaggle Kernels中,你可以Fork别人分享的结果进行复现或者进一步分析,也可以新建一个Kernel进行数据分析和算法开发。Kaggle Kernels还提供了一个配置好的环境,以及比赛的数据集,帮你从配置本地环境中解放出来。Kaggle Kernels提供给你的是一个运行在浏览器中的Jupyter,你可以在上面进行交互式的执行代码、探索数据、训练模型等等。更多关于Kaggle Kernels的使用方法可以参考 Introduction to Kaggle Kernels,这里不再多做阐述。
美团技术团队
2019/12/04
2.6K0
写py2、py3兼容的代码
写py2、py3兼容的代码 用到一段时间python,之前也重点复习了一次python3。但工作中运行环境是python2.7,于是要求写出py2、py3都兼容的代码。下面将涉及到的几点技巧列举出来以备忘。 print函数 py3中print语句没有了,取而代之的是print()函数。 Python 2.6与Python 2.7部分地支持这种形式的print语法。因此保险起见,新写的代码都使用print函数。 from __future__ import print_function print("fish
jeremyxu
2018/05/10
2.5K0
第二章、深入类和对象
2.1.鸭子类型和多态 “当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。”  我们并不关心对象是什么类型,到底是不是鸭子,只关心行为。 实例一: # 鸭子类型和多态简单实例 class Dog(object): def say(self): print('a dog') class Cat(object): def say(self): print('a cat') class Duck(object):
zhang_derek
2018/05/30
9360
Python基础(九) | time random collections itertools标准库详解
(2)time.perf_counter()   随意选取一个时间点,记录现在时间到该时间点的间隔秒数,记录sleep
timerring
2022/10/06
6640
Python基础(九) | time random collections itertools标准库详解
Python3.x和Python2.x的区别
http://www.cnblogs.com/codingmylife/archive/2010/06/06/1752807.html
bear_fish
2018/09/20
9340
CentOS8.0下安装PaddlePaddle后ImportError: cannot import name 'collections_abc'
用腾讯云轻量服务器带的系统镜像CentOS8.0系统安装paddlepaddle 直接 $ pip install paddlepaddle 然后在Python解释器里面输入 import paddle 然后就会有错误: ImportError: cannot import name 'collections_abc' 或者其他等等,原因可能是轮子的版本太旧了,需要更新一下。 简单粗暴的卸载再装上( $ pip uninstall six $ pip install six $ pip uninstall
bywjge
2021/06/11
2.9K0
Python 工匠:容器的门道
https://www.zlovezl.cn/articles/mastering-container-types/
用户2196567
2019/03/04
7850
Python 容器使用的 5 个技巧和 2 个误区
在 Python 中,有四类最常见的内建容器类型: 列表(list)、 元组(tuple)、 字典(dict)、 集合(set)。通过单独或是组合使用它们,可以高效的完成很多事情。
一墨编程学习
2019/07/14
8290
Python2和Python的区别那个版
想学习Python的人都会有一个困惑,那就是Python目前有两个版本Python2和Python3,Python2与Python3有何区别,两个版本该学习哪个呢?
py3study
2020/01/09
8430
解决ImportError: cannot import name 'pywrap_tensorflow'
在使用 TensorFlow 进行开发和训练深度学习模型时,有时候可能会遇到 ​​ImportError: cannot import name 'pywrap_tensorflow'​​ 这个错误。这个错误通常是由于 TensorFlow 版本不兼容或没有正确安装所引起的。本文将介绍如何解决这个错误。
大盘鸡拌面
2023/10/20
7760
Caffe2 - (三十三) Detectron 之 roi_data - data loader
Caffe2 - (三十三) Detectron 之 roi_data - data loader 1. loader.py Detectron data loader.py 是通用设计,与 minibatch 的实现细节无关. 多线程的数据加载. minibatch 是字典形式,存储了 blob name keys 和对应的 numpy (float32 或 int32) ndarray values. 设计结构: loader thread\ loader thread \
AIHGF
2018/05/17
1.1K0
Python工匠:解析容器类型的门道
花下猫语:年关已近,我本周忙得天昏地暗,忙中出了不少错,喵了个去。无论如何,希望大伙是买票顺顺利利的,回家安安全全的,过年是开开心心的。今天,给大家分享的是一篇很长的好文,祝大家阅读愉快。PS:本文是该系列的第四篇,其它文章也很好,文末附了链接,可关联阅读哦~
Python猫
2019/04/09
8340
推荐阅读
相关推荐
python中的数据结构
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档