整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

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

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

1 多对多关系示例

1、表名和字段

学生表:Student(s_id,s_name,s_birth,) -->学生编号,学生姓名,,出生年月,学生性别

课程表:Course(c_id,c_name) -->课程编号,课程名称

教师表:Teacher(t_id,t_name) -->教师编号,教师姓名

成绩表:Score(s_id,c_id,s_score) -->学生编号,课程编号,分数

教师—课程表(teach):Teach(t_id,c_id)

2、表之间的关系

学生与课程之间是多对多(m:n)的关系:一名学生要学习多门课程,一门课程有多名学生学习。

教师与课程之间是多对多(m:n)的关系:一个老师可以上多门课程,一门课程可以由多个老师上

注意:多对多的关系,会生成第三张表,将多对多的关系转换成一对多的关系

2 创建CDM

点击菜单栏“File”,点击“New Model”,打开New Model对话框,在该对话框中:

①选择第二个,Model types;

②选择第二个, Data Model;

③默认选中了 Diagram

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

⑤点击ok。

请添加图片描述

将改名,改成CDM,然后点击保存按钮,选择合适的路径保存该模型。

请添加图片描述

在最右边的Toolbox,选择 Diagram,选择第2个图标,在中间的绘图区域绘图,有几个实体,就点几下鼠标(在本例中有三个实体,因此绘制三个),然后将鼠标恢复成箭头状态。

请添加图片描述

①双击第一个实体图标(刚刚创建的蓝色的图像),根据Student表(s_id,s_name,,)进行绘制;

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

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

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

请添加图片描述

其余的两个实体图标也按照上面的方法进行设置,设置结果如下所示:

在这里插入图片描述

为了使实体图看起来更美观,为实体图设置字体等。鼠标右击Student实体图,选择选择Format,然后点击Font选项卡,在这里可以修改字体,最后点击“应用”,再点击“确定”即可,Teacher和Course实体图也是同样操作。

数据库系统设计软件_数据库设计软件_数据库设计软件有哪些

3 建立实体之间的联系

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

②将鼠标按住从Student框内拉到Course框内,再松开鼠标,然后将鼠标切换回去箭头,Teacher和Course也相同。

请添加图片描述

双击部分,会弹出关系窗口,在General选项卡中将Name改名,学生和课程之间的关系是成绩,因此将Name修改为Course。然后点击选项卡,在Student to Course部分选择1:n,在Course to Student部分选择1:n,点击最下面的应用,再点击确定。

请添加图片描述

双击,在General选项卡中将Name改名,老师和课程之间的关系是上课,因此将Name修改为Teach。然后点击选项卡,在Teacher to Course部分选择1:n,在Course to Teacher部分选择1:n,点击最下面的应用,再点击确定。得到下面的效果:

在这里插入图片描述

4 检查CDM

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

请添加图片描述

5 将CDM转换成PDM

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

在这里插入图片描述

这时会打开以下页面,在这个页面中,

代表了主键代表了外键。

在这里插入图片描述

数据库设计软件_数据库系统设计软件_数据库设计软件有哪些

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

请添加图片描述

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

在这里插入图片描述

保存之后,需要对Score表进行编辑。双击Score表,打开表格属性的对话框,在Columns选项卡中再增加一列成绩s_score。点击应用,点击确定。

在这里插入图片描述

修改之后,在页面上显示效果如下:

在这里插入图片描述

6 由PDM生成sql文件

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

在这里插入图片描述

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

请添加图片描述

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

在这里插入图片描述

生成的sql文件如下:

/*==============================================================*/
/* DBMS name:      MySQL 5.0                                    */
/* Created on:     2022/1/26 18:15:25                           */
/*==============================================================*/
drop table if exists Course;
drop table if exists Score;
drop table if exists Student;
drop table if exists Teach;
drop table if exists Teacher;
/*==============================================================*/
/* Table: Course                                                */
/*==============================================================*/
create table Course
(
   c_id                 varchar(10) not null,
   c_name               varchar(100),
   primary key (c_id)
);
/*==============================================================*/
/* Table: Score                                                 */
/*==============================================================*/
create table Score
(
   s_id                 varchar(20) not null,
   c_id                 varchar(10) not null,

数据库系统设计软件_数据库设计软件_数据库设计软件有哪些

s_score decimal(5,2), primary key (s_id, c_id) ); /*==============================================================*/ /* Table: Student */ /*==============================================================*/ create table Student ( s_id varchar(20) not null, s_name varchar(50), s_gender varchar(2), s_birthday date, primary key (s_id) ); /*==============================================================*/ /* Table: Teach */ /*==============================================================*/ create table Teach ( t_id varchar(20) not null, c_id varchar(10) not null, primary key (t_id, c_id) ); /*==============================================================*/ /* Table: Teacher */ /*==============================================================*/ create table Teacher ( t_id varchar(20) not null, t_name varchar(50), primary key (t_id) ); alter table Score add constraint FK_Score foreign key (s_id) references Student (s_id) on delete restrict on update restrict; alter table Score add constraint FK_Score2 foreign key (c_id) references Course (c_id) on delete restrict on update restrict; alter table Teach add constraint FK_Teach foreign key (t_id) references Teacher (t_id) on delete restrict on update restrict; alter table Teach add constraint FK_Teach2 foreign key (c_id) references Course (c_id) on delete restrict on update restrict;