如何使用PowerDesigner软件进行数据库设计(一对多关系)
1 模型概述
CDM(Conceptual Data Model):概念数据模型,就是实体图 PDM(Physical Data Model):物理数据模型,就是表格,是由CDM转换而来
在本例中,设计的数据库为一对多的关系,人与车的关系,一个人可以拥有多辆汽车,但是每辆汽车只能有一个主人。
2 创建CDM
首先打开PowerDesigner,点击左上角“File”,选择“New Model”。 ①选择第二个,Model types; ②选择第二个,Conceptual Data Model; ③默认选中了Conceptual Diagram ④在Model name处为模型起一个名字,在本例中我命名为:Person_Car; ⑤点击ok。 进入了以下界面,选择该界面中的保存按钮,选择合适的路径,先将创建的该模型保存了。 为Person_Car下面的默认的图形名字Diagram_1改名,修改为“CDM”。再找到最右边的Toolbox,选择Conceptual Diagram,选择第2个图标,在中间的绘图区域绘图,有几个实体,就点几下鼠标(在本例中有两个实体,因此绘制两个),然后将鼠标恢复成箭头状态。 ①双击第一个实体图标,根据Person表(pid,pname,age,gender)进行绘制; ②进入General界面,更改Name,本例中更改为:Person; ③点击Attributes,添加属性,在Name处填写字段名,在Data Types处选择数据类型(两个图标都是修改数据类型的选项),如果该字段为主键,则勾选中间列(Primary Identifier); ④点击Identifiers,在Name处添加主属性,点击下方的“应用”,再点击确定。 这样显示出来的结果字体可能有一些小,我们可以通过以下操作来更改样式: ①在实体图上右击鼠标,选择Format; ②选择选项卡Font,根据自己的需求修改样式。 紧接着为Car表(cid,mark,price,pid)建立实体,步骤与上面Person表建立过程相同。但是在设计时,不应该将pid设置为属性,因为pid并不是Car表的属性。
3 建立实体之间的联系
①点击Toolbox下的Conceptual Diagram下的第3个小图标(Relationship); ②将鼠标按住从Person框内拉到Car框内,再松开鼠标,然后将鼠标切换回去箭头。 双击中间的Relationship_1部分,会弹关系窗口,在General选项卡中将Name改名,本例中修改为per_car。 然后点击Cardinalities选项卡,在Person to Car部分选择1:n,在Car to Person部分选择1:1,点击最下面的应用,再点击确定。
4 检查CDM
点击最上方菜单栏的Tools选项,选择Check Model,打开检查模型的界面,根据自己的需求来选择检查的项目,在本例中选择全部检查,点击确定后,会打开Result List窗口,如果该窗口下什么都没有显示,代表模型并没有检查出错误,如果显示了信息,代表检查到了错误。
5 将CDM转换成PDM
点击最上方菜单栏的Tools选项,选择Generate Physical Data Model,则会弹出以下窗口,在DBMS一栏中选择自己使用的数据库,本例中使用的数据库是MySQL,因此选择MySQL 5.0,该版本可以兼容MySQL 8.0版本数据库,然后点击应用,点击确定。 这时会打开以下页面,在这个页面中,Person和Car就是两张表了,在Person表的pid和Car表的cid后面显示的<pk> 代表了主键,在Car表中自动生成了pid,后面的<fk> 代表了外键。 这时界面上会显示两个CDM,会产生冲突,所以需要将显示两张表的CDM改名为PDM。 这时需要再次将PDM保存,点击保存的按钮,选择合适的文件夹下进行保存。
6 由PDM生成sql文件
切换到PDM页面,选择菜单栏中的Database(注:在CDM页面没有Database选项),点击Generate Database。 在弹出的对话框中,先修改sql文件存放的路径,然后修改sql文件的名字,本例中修改为:person_car,点击应用,点击确定。 紧接着弹出以下窗口,点击Edit,可以查看生成的sql文件。生成了sql文件之后,就可以从数据库中将这个sql文件导入了。 生成的sql文件为:
drop table if exists Car;
drop table if exists Person;
create table Car
(
cid int not null,
pid int not null,
mark varchar(50),
price decimal(15,2),
primary key (cid)
);
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;
|