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

  • 1 多对多关系示例
  • 2 创建CDM
  • 3 建立实体之间的联系
  • 4 检查CDM
  • 5 将CDM转换成PDM
  • 6 由PDM生成sql文件

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;

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

  1. ORACLE数据库设计 多对多关系

    关于数据库两张表多对多的关系设计,之前以为多对多关系,只要两张表存在各自对方表的主键就行.而这种理解是错误的,总结如下. 数据库多对多表设计,假设使用主外键关系设计多对多表关系,会造成: 1.对一张表 ...

  2. Bootstrap4+MySQL前后端综合实训-Day04-AM【新闻管理手机端页面+数据库操作(PowerDesigner 图形化数据库设计软件、SQLyog软件)】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目   录 W3C标准盒子模型和IE盒子模型的区别 Bootstrap4--新闻管理手机端页面 菜 ...

  3. Bootstrap4+MySQL前后端综合实训-Day04-PM【PowerDesigner 图形化数据库设计软件(设置依赖关系、自动增长主键、生成sql语句)、SQLyog软件(备份数据库)】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目   录 PowerDesigner软件 5张数据表之间的依赖关系图 设置数据表的自动增长主键 ...

  4. PowerDesigner一键导出数据库设计表结构

    1.背景 帮朋友弄下数据库设计,又用到PowerDesigner,因为还要数据库设计文档(word),还想着怎么把数据库结构导出呢,发现以前弄过,一键导出,很方便,分享下,祝好运! 2.解决方案 2. ...

  5. Flask 数据库高级多对多关系

    之前介绍了多对多关系:http://blog.csdn.net/ying847782627/article/details/51333090 在之前介绍的多对多关系中,关联表就是一个简单的表,不是模型 ...

  6. 关系型数据库中多对多关系的中间表的命名规则

    在关系型数据库中,除了有一对一,一对多外,还有多对多的关系.前两种关系只需要表本身就能表达清楚,然而多对多需要第三张中间表才能表达清楚多对多的关系. 中间表在一般情况下是由三个字段组成: 1.中间表本 ...

  7. (数据库系统概论|王珊)第七章数据库设计-第一节:数据库设计概述

    注意:此部分内容和软件工程的知识点重合较多,更多请点击[免费分享]软件工程核心知识点 本章较分散,各节导航如下 (数据库系统概论|王珊)第七章数据库设计-第二节:需求分析 (数据库系统概论|王珊)第七 ...

  8. 【领域驱动设计】(4):从 DDD 落实到数据库设计的整个过程

    云世  公众号 过去,系统的软件设计是以数据库设计为核心,当需求确定下来以后,团队首先开始进行数据库设计.因为数据库是各个模块唯一的接口,当整个团队将数据库设计确定下来以后,就可以按照模块各自独立地进 ...

  9. [架构设计]-- 数据库设计原则

    转自:http://blog.sina.com.cn/s/blog_735fb3b40100svet.html 数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库 ...

最新文章

  1. torch转onnx错误 exit code -1073741819
  2. 网络协议系列之四:IGMP、ICMP和ARP
  3. Linux基础入门学习笔记之二
  4. (32) css—opcity属性
  5. asp.net core 依赖注入问题
  6. 台式计算机cpu多好,2019台式处理器排行榜_台式机处理器排行榜 前六强详细介绍...
  7. 最近很热衷于研究相册效果:)
  8. 小程序模板template
  9. 新手android中ListView实现音乐列表
  10. PS照片换背景,证件照更换背景色
  11. 魔兽十区服务器人最多,十区毁灭计划 新一轮wow大服务器实装公告
  12. 1、植物大战僵尸:修改配置
  13. 1741. Communication Fiend(dp)
  14. 设计,构建线框图和对Android应用进行原型制作:第1部分
  15. pcb元器件通孔焊盘激光焊锡的优势
  16. Java.IO.InputStream-OutputStream
  17. unity ugui image组件ngui uisprite 对称显示功能
  18. 什么是 ArrayList
  19. 584. 寻找用户推荐人
  20. mysql5.7和mysql8.0区别

热门文章

  1. 双串口转以太网网关模块–WIZ127SR
  2. uni-app 项目引入第三方js插件,单个js文件引入成功,调用该插件方法
  3. Linux中的如何对当前进程进行查看和监控——ps命令和pgrep命令
  4. 微博移动版网页自动跳转pc版网页软件
  5. CMStudio 计算机组成原理课程设计报告 基本模型机的设计与实现 来自____王peng_____老师的模板
  6. 《评多多测评》亚马逊真人测评介绍
  7. 基于蛾群算法的函数寻优算法
  8. 【NOIP模拟赛】刺客信条(AC)
  9. win10恢复出厂设置_Windows10系统如何重置、还原、恢复出厂设置
  10. Ps制作信号干扰故障风艺术效果动图