使用PowerDesigner设计数据库保姆级教程

简介: 使用PowerDesigner设计数据库

一、前言

  使用PowerDesigner进行数据库设计,学《数据库技术》这门课时,使用它完成了一次小型的数据库设计。这次是第二次使用,中间间隔了一年多,再次打开PowerDesigner时,已经把使用步骤忘记个差不多了,有些还需要再去查找一下资料。为了让自己下次再次使用PowerDesigner时能快速上手,写此笔记便于后面使用时能快速上手!


1、powerDesigner设计软件介绍

数据库设计(DataBase Designe)是根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。


PowerDesigner是进行数据库设计的强大软件,是我们开发的人常用的一款数据库设计软件,用来做数据库建模,设计概念模型 物理模型 ,最终都反映到数据库,以及设计的正向和逆向工程导入使用。


使用PowerDesigner做数据库设计,主要用到两个大的模型,第一个是CDM ,第二个是PDM 。


使用步骤大抵如下:


1.先创建CDM


2.然后把CDM转化成PDM


3.最后把PDM转化成数据库sql执行语句,还可以把PDM转化成word可视化数据库文档。可执行的sql语句和可视化word文档是做设计的最终成果,sql语句用于创建数据库,可视化word文档用于团队成员的沟通、开发及后期维护。 PowerDesigner工具的亮点就是生成可执行的sql语句、可视化的word数据库文档 。能不能快速高效地做出一份数据库设计,关键在于CDM的设计。


2、概念数据模型(CDM)

概念数据模型描述的是独立于数据库管理系统(DBMS)的实体定义和实体关系定义,在CDM中用来标识实体的属性(Attribute)


#第一个是实体entity
#第二个是实体entity中的属性attributes,也就是列
#第三个是域domains
域是对属性attributes的归类,可以提前创建域
在设置实体entity中的属性attributes时,先创建好属性的名称name和编码code,
然后选择合适的域domains,就可以设定属性的数据类型datatype和长度length
#第四个是关系relationship
 也就是两个实体之间的关联关系,是一对一的关系,还是一对多的关系,还是多对多的关系。
#第五个是关联association
 关联是实体的多对多关系,在做数据设计时,
 一对多时,可以把一存储在多的表中做外键,
 多对多时,需要另外建一个表进行关联,这就是关联association。
 在CDM中表现为关联association,用于区别一般的实体。
 #第六个,标识符identifier就是实体中的主键。

10.png

3、物理数据模型(PDM)

物理数据模型是在概念数据模型的基础上针对目标数据库管理系统的具体化。


PDM的对象:表(Table),表中的列(Table Column),主外键(Primary,Foreign key),参照(reference),索引(index ),视图(View)等


在PDM中用来表示实体属性的是列(Column)


4、CDM和PDM对比

#CDM概念模型:
描述要存储的实体、属性、时体关系!
#PDM模型:
对概念数据库模型进行升级,将实体转化为数据库特性的模型
实体——》表
属性——》列


5、数据库设计步骤

1.设计CDM模型

2.生成PDM模型

3.生成DBMS脚本


二、powerDesigner项目实战

1、题目:

用powerDesigner创建学生表和班级表和课程表 的CDM(概念数据模型)模型,然后生成PDM(物理数据)模型 和DBMS(数据库管理系统)脚本 ,可视化的word数据库文档


2、数据库

学生表**(t_student)**

image.png


班级表(t_clazz)

image.png


课程表(t_course)

image.png


中间关系表(t_s_c_fk)

image.png


3、CDM(数据概念模型)创建步骤

(1)第一步,创建概念数据模型CDM,并对其命名。

1、打开PowerDesigner工具,在工具栏点击文件,在打开的菜单栏中,选择第一个选项->建立新模型


11.png


2、在建立新模型的窗口,选择第二个模型,在modelname中对模型重新命名,最后点击OK按钮。


12.png


(2)第二步,创建域domains,也可以从其他现成的地方拷贝过来。

1、在 CDM模型 数据库设计 上点击鼠标右键,选中list of


13.png


2、在出现的列表中选中domains,出现如下窗口:


14.png


3、domains(域)


15.png


4、 在此窗口,添加name、code,code可以不填,让其自动填充 ,并设置数据类型datatype和长度length,设置数据类型和长度是关键 ,后面的实体属性会继承这里的数据类型和长度,最后点击ok按钮进行保存,如下图所示:


16.png


(3)第三步,创建实体entity。

1、在窗口的右上角有一个ToolBox中的conceptual Diagram中有一个四方形的图表,鼠标移上去时会有一个entity的标识,没错,就是它了,


17.png


2、点击这个图表,在空白的地方,点击一下就绘出实体entity的图表


18.png


3、让鼠标恢复状态,然后双击其中的一个实体,即可对实体进行name和code的命名,命名之后点击应用。点击应用不会关闭当前窗口,点击确定会关闭当前窗口。


学生表

19.png


班级表

20.png


课程表

21.png


(4)第四步,创建实体entity中的属性attribute。

1、接着上一个窗口,在entity窗口中,点击属性attribute,在这一栏目里可进行属性的name和code创建,name对应的是中文描述,code对应的数据库字段名称。


学生表

22.png


班级表

23.png

课程表

24.png


2、 如果此时想添加备注,但是列表中并没有备注,可点击菜单栏下,漏斗下带笔 的小图标勾选出备注comment,这时就可以看到备注一栏了。


26.png

27.png



3、在上图中有一个细节,就是在备注comment之前,有三个字母,每个字母下面有个复选框,这是什么意思呢,


1.P是PrimaryIdentifier是否为主键表述的缩写,勾选了P就代表当前被勾选字段是该表的主键。

2.M是Mandatory的缩写,属性值是否允许为空的意思。

3.D是displayed的缩写,表示是否在实体图形符号中显示该属性。


28.png


还有一个Identifiers标识符,可以把主键的code拷贝过去,设置这个的好处是,可以在关系图中,一下子就能清楚地看到某个表的主键是哪个,是否有设置。


班级表

29.png


课程表

30.png


(5)创建实体entity之间的多对多、一对多关系的关联relationship。

几种关系:


1. 一对一 
2. 一对多 
3. 多对一
4.  多对多


1、 现在有三个实体,一个是班级,一个是学生,一个是课程,

1. 一个班级存在多名学生,一个学生只能在一个班级上课,这就是一对多的关系,
2. 一个课程可以有多名学生,一个学生可以选多门课程


2、一对多关系


在右边ToolBox中的conceptual Diagram里有一个提示文字为Raletionship的图标,就是关系的映射,点击这个图标,按住鼠标的左键,从一个实体拖往另一个实体,通常一对多的关系中,从一开始拖这个图标,到多的实体停止这个图标。


31.png


然后双击关系这条线,对关系进行编辑,对关系的name和code进行命名。


32.png


点击cardinalities栏目,可以对关系重新设置,设置班级和学生的关系是0对N关系,还是1对N关系,最后点击OK按钮保存。


33.png


2、多对多关系


从学生开始拖这个图标,到课程的实体停止这个图标。


34.png


然后双击关系这条线,对关系进行编辑,对关系的name和code进行命名。


35.png


点击cardinalities栏目,可以对关系重新设置,设置课程和学生的关系是1对N关系,还是1对N关系,最后点击OK按钮保存。


36.png


(6)第六步,生成PDM模型

1、点击Tools然后点Generate Physical Data Model


37.png


2、选择mysql5.0版本


38.png


建立mysql版本的关系表


39.png


(7)第七步,生成DBMS脚本


40.png



(八)DBMS脚本

/*==============================================================*/
/* DBMS name:      MySQL 5.0                                    */
/* Created on:     2021/11/8 21:07:31                           */
/*==============================================================*/
drop table if exists s_c_fk;
drop table if exists t_clazz;
drop table if exists t_course;
drop table if exists t_student;
/*==============================================================*/
/* Table: s_c_fk                                                */
/*==============================================================*/
create table s_c_fk
(
   s_id                 int not null comment '自增',
   c_id                 int not null,
   primary key (s_id, c_id)
);
alter table s_c_fk comment '学生表和课程表多对多关系';
/*==============================================================*/
/* Table: t_clazz                                               */
/*==============================================================*/
create table t_clazz
(
   clazz_id             int not null auto_increment,
   clazz_name           varchar(20),
   primary key (clazz_id)
);
alter table t_clazz comment '这是学生管理系统的班级表';
/*==============================================================*/
/* Table: t_course                                              */
/*==============================================================*/
create table t_course
(
   c_id                 int not null auto_increment,
   c_name               varchar(20),
   primary key (c_id)
);
alter table t_course comment '这是学生管理系统的课程表';
/*==============================================================*/
/* Table: t_student                                             */
/*==============================================================*/
create table t_student
(
   s_id                 int not null  auto_increment comment '自增',
   clazz_id             int,
   s_name               varchar(20),
   primary key (s_id)
);
alter table t_student comment '这是学生管理系统中的student表';
alter table s_c_fk add constraint FK_s_c_fk foreign key (s_id)
      references t_student (s_id) on delete restrict on update restrict;
alter table s_c_fk add constraint FK_s_c_fk2 foreign key (c_id)
      references t_course (c_id) on delete restrict on update restrict;
alter table t_student add constraint FK_clazz_s_fk foreign key (clazz_id)
      references t_clazz (clazz_id) on delete restrict on update restrict;


(8) 第八步, PowerDesigner将PDM导出生成WORD文档(略)

如果需要可以参考:https://blog.csdn.net/tongdengquan/article/details/104615332


相关文章
|
3天前
|
存储 SQL 关系型数据库
【入门级教程】MySQL:从零开始的数据库之旅
本教程面向零基础用户,采用通俗易懂的语言和丰富的示例,帮助你快速掌握MySQL的基础知识和操作技巧。内容涵盖SQL语言基础(SELECT、INSERT、UPDATE、DELETE等常用语句)、使用索引提高查询效率、存储过程等。适合学生、开发者及数据库爱好者。
14 0
【入门级教程】MySQL:从零开始的数据库之旅
|
21天前
|
tengine 关系型数据库 MySQL
Tengine、Nginx安装MySQL数据库命令教程
本指南详细介绍了在Linux系统上安装与配置MySQL数据库的步骤。首先通过下载并安装MySQL社区版本,接着启动MySQL服务,使用`systemctl start mysqld.service`命令。若启动失败,可尝试使用`sudo /etc/init.d/mysqld start`。利用`systemctl status mysqld.service`检查MySQL的服务状态,确保其处于运行中。通过日志文件获取初始密码,使用该密码登录数据库,并按要求更改初始密码以增强安全性。随后创建一个名为`tengine`的数据库,最后验证数据库创建是否成功以及完成整个设置流程。
|
1月前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
1月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
14天前
|
SQL 存储 数据库
初识SQL数据库教程——从入门到精通
随着信息技术的飞速发展,数据库技术已成为计算机领域的重要组成部分。作为最流行的数据库管理系统之一,SQL数据库广泛应用于各类企业和组织的数据管理中。本文将带领读者从入门到精通,学习SQL数据库的相关知识。一、SQL数据库概述SQL(StructuredQueryLanguage)是一种用于管理关系数
31 2
|
5天前
|
SQL NoSQL MongoDB
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
18 0
|
8天前
|
存储 NoSQL API
.NET NoSQL 嵌入式数据库 LiteDB 使用教程
.NET NoSQL 嵌入式数据库 LiteDB 使用教程~
|
9天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
43 6
|
7天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
39 3
Mysql(4)—数据库索引
|
9天前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
30 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用