如何使用PowerDesigner软件进行数据库设计(一对多关系)

  • 1 模型概述
  • 2 创建CDM
  • 3 建立实体之间的联系
  • 4 检查CDM
  • 5 将CDM转换成PDM
  • 6 由PDM生成sql文件


1 模型概述

CDM(Conceptual Data Model):概念数据模型,就是实体图
PDM(Physical Data Model):物理数据模型,就是表格,是由CDM转换而来

在本例中,设计的数据库为一对多的关系,人与车的关系,一个人可以拥有多辆汽车,但是每辆汽车只能有一个主人。

2 创建CDM

首先打开PowerDesigner,点击左上角“File”,选择“New Model”。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_sql文件


①选择第二个,Model types;

②选择第二个,Conceptual Data Model;

③默认选中了Conceptual Diagram

④在Model name处为模型起一个名字,在本例中我命名为:Person_Car;

⑤点击ok。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_数据库_02


进入了以下界面,选择该界面中的保存按钮,选择合适的路径,先将创建的该模型保存了。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_mysql_03


为Person_Car下面的默认的图形名字Diagram_1改名,修改为“CDM”。再找到最右边的Toolbox,选择Conceptual Diagram,选择第2个图标,在中间的绘图区域绘图,有几个实体,就点几下鼠标(在本例中有两个实体,因此绘制两个),然后将鼠标恢复成箭头状态。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_database_04


①双击第一个实体图标,根据Person表(pid,pname,age,gender)进行绘制;

②进入General界面,更改Name,本例中更改为:Person;

③点击Attributes,添加属性,在Name处填写字段名,在Data Types处选择数据类型(两个图标都是修改数据类型的选项),如果该字段为主键,则勾选中间列(Primary Identifier);

④点击Identifiers,在Name处添加主属性,点击下方的“应用”,再点击确定。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_数据库_05


这样显示出来的结果字体可能有一些小,我们可以通过以下操作来更改样式:

①在实体图上右击鼠标,选择Format;

②选择选项卡Font,根据自己的需求修改样式。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_mysql_06


紧接着为Car表(cid,mark,price,pid)建立实体,步骤与上面Person表建立过程相同。但是在设计时,不应该将pid设置为属性,因为pid并不是Car表的属性。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_mysql 多对多关系怎么模糊查询_07

3 建立实体之间的联系

①点击Toolbox下的Conceptual Diagram下的第3个小图标(Relationship);

②将鼠标按住从Person框内拉到Car框内,再松开鼠标,然后将鼠标切换回去箭头。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_mysql 多对多关系怎么模糊查询_08


双击中间的Relationship_1部分,会弹关系窗口,在General选项卡中将Name改名,本例中修改为per_car。

然后点击Cardinalities选项卡,在Person to Car部分选择1:n,在Car to Person部分选择1:1,点击最下面的应用,再点击确定。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_mysql 多对多关系怎么模糊查询_09

4 检查CDM

点击最上方菜单栏的Tools选项,选择Check Model,打开检查模型的界面,根据自己的需求来选择检查的项目,在本例中选择全部检查,点击确定后,会打开Result List窗口,如果该窗口下什么都没有显示,代表模型并没有检查出错误,如果显示了信息,代表检查到了错误。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_数据库_10

5 将CDM转换成PDM

点击最上方菜单栏的Tools选项,选择Generate Physical Data Model,则会弹出以下窗口,在DBMS一栏中选择自己使用的数据库,本例中使用的数据库是MySQL,因此选择MySQL 5.0,该版本可以兼容MySQL 8.0版本数据库,然后点击应用,点击确定。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_database_11


这时会打开以下页面,在这个页面中,Person和Car就是两张表了,在Person表的pid和Car表的cid后面显示的<pk>代表了主键,在Car表中自动生成了pid,后面的<fk>代表了外键。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_sql文件_12


这时界面上会显示两个CDM,会产生冲突,所以需要将显示两张表的CDM改名为PDM。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_mysql_13


这时需要再次将PDM保存,点击保存的按钮,选择合适的文件夹下进行保存。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_mysql 多对多关系怎么模糊查询_14

6 由PDM生成sql文件

切换到PDM页面,选择菜单栏中的Database(注:在CDM页面没有Database选项),点击Generate Database。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_sql文件_15


在弹出的对话框中,先修改sql文件存放的路径,然后修改sql文件的名字,本例中修改为:person_car,点击应用,点击确定。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_database_16


紧接着弹出以下窗口,点击Edit,可以查看生成的sql文件。生成了sql文件之后,就可以从数据库中将这个sql文件导入了。

mysql 多对多关系怎么模糊查询 数据库多对多关系模型_sql文件_17


生成的sql文件为:

/*==============================================================*/
/* DBMS name:      MySQL 5.0                                    */
/* Created on:     2022/1/23 22:02:01                           */
/*==============================================================*/


drop table if exists Car;

drop table if exists Person;

/*==============================================================*/
/* Table: Car                                                   */
/*==============================================================*/
create table Car
(
   cid                  int not null,
   pid                  int not null,
   mark                 varchar(50),
   price                decimal(15,2),
   primary key (cid)
);

/*==============================================================*/
/* Table: Person                                                */
/*==============================================================*/
create table Person
(
   pid                  int not null,
   pname                varchar(50),
   age                  int,
   gender               varchar(2),
   primary key (pid)
);

alter table Car add constraint FK_per_car foreign key (pid)
      references Person (pid) on delete restrict on update restrict;