ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2022-01-26 18:36:05  阅读:173  来源: 互联网

标签:varchar 数据库 PowerDesigner Course 点击 Student table 软件 id


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

1 多对多关系示例

1、表名和字段
学生表:Student(s_id,s_name,s_birth,s_gender) -->学生编号,学生姓名,,出生年月,学生性别
课程表: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;
②选择第二个,Conceptual Data Model;
③默认选中了Conceptual Diagram
④在Model name处为模型起一个名字,在本例中命名为:sct;
⑤点击ok。
请添加图片描述
将Diagram_1改名,改成CDM,然后点击保存按钮,选择合适的路径保存该模型。
请添加图片描述
在最右边的Toolbox,选择Conceptual Diagram,选择第2个图标,在中间的绘图区域绘图,有几个实体,就点几下鼠标(在本例中有三个实体,因此绘制三个),然后将鼠标恢复成箭头状态。
请添加图片描述
①双击第一个实体图标(刚刚创建的蓝色的图像),根据Student表(s_id,s_name,s_gender,s_birthday)进行绘制;
②进入General界面,更改Name,本例中更改为:Student;
③点击Attributes,添加属性,在Name处填写字段名,在Data Types处选择数据类型(两个图标都是修改数据类型的选项),如果该字段为主键,则勾选中间列(Primary Identifier);
④点击Identifiers,在Name处添加主属性,点击下方的“应用”,再点击确定。
请添加图片描述
其余的两个实体图标也按照上面的方法进行设置,设置结果如下所示:
在这里插入图片描述
为了使实体图看起来更美观,为实体图设置字体等。鼠标右击Student实体图,选择选择Format,然后点击Font选项卡,在这里可以修改字体,最后点击“应用”,再点击“确定”即可,Teacher和Course实体图也是同样操作。

3 建立实体之间的联系

①点击Toolbox下的Conceptual Diagram下的第3个小图标(Relationship);
②将鼠标按住从Student框内拉到Course框内,再松开鼠标,然后将鼠标切换回去箭头,Teacher和Course也相同。
请添加图片描述
双击Relationship_1部分,会弹出关系窗口,在General选项卡中将Name改名,学生和课程之间的关系是成绩,因此将Name修改为Course。然后点击Cardinalities选项卡,在Student to Course部分选择1:n,在Course to Student部分选择1:n,点击最下面的应用,再点击确定。
请添加图片描述
双击Relationship_2,在General选项卡中将Name改名,老师和课程之间的关系是上课,因此将Name修改为Teach。然后点击Cardinalities选项卡,在Teacher to Course部分选择1:n,在Course to Teacher部分选择1:n,点击最下面的应用,再点击确定。得到下面的效果:
在这里插入图片描述

4 检查CDM

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

5 将CDM转换成PDM

点击最上方菜单栏的Tools选项,选择Generate Physical Data Model,则会弹出以下窗口,在DBMS一栏中选择自己使用的数据库,本例中使用的数据库是MySQL,因此选择MySQL 5.0,该版本可以兼容MySQL 8.0版本数据库,然后点击应用,点击确定。
在这里插入图片描述
这时会打开以下页面,在这个页面中,<pk>代表了主键<fk>代表了外键。
在这里插入图片描述
这时界面上会显示两个CDM,会产生冲突,所以需要将该页面的CDM改名为PDM。
请添加图片描述
这时需要再次将PDM保存,点击保存的按钮,选择合适的文件夹下进行保存。
在这里插入图片描述
保存之后,需要对Score表进行编辑。双击Score表,打开表格属性的对话框,在Columns选项卡中再增加一列成绩s_score。点击应用,点击确定。
在这里插入图片描述
修改之后,在页面上显示效果如下:
在这里插入图片描述

6 由PDM生成sql文件

切换到PDM页面,选择菜单栏中的Database(注:在CDM页面没有Database选项),点击Generate Database。
在这里插入图片描述
在弹出的对话框中,先修改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;

标签:varchar,数据库,PowerDesigner,Course,点击,Student,table,软件,id
来源: https://blog.csdn.net/m0_46612221/article/details/122658638

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有