数据库设计软件Power Designer详解教程(附源码)

news2024/11/15 8:59:43

版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

Power Designer概述

在这里插入图片描述

Power Designer 是美国Sybase公司的CASE工具集,利用Power Designer可分别从概念数据模型(Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库进行设计。其中,概念数据模型描述的是独立于数据库管理系统(DBMS)的实体定义和实体关系定义;物理数据模型是在概念数据模型的基础上针对目标数据库管理系统的具体化。

Power Designer安装

请在Power Designer官方网站下载Power Designer并依据提示进行安装。在本教程中,我们将使用Power Designer 15展开数据库设计相关工作。

数据准备

在本节Power Designer使用教程中,我们准备三张表:学生表,教师表,班级表;各表字段信息如下:

学生表

字段名称字段说明
sid学生学号(主键)
sname学生姓名
sage学生年龄
sgender学生性别
sclassid所属班级

教师表

字段名称字段说明
tid教师编号(主键)
tname教师姓名
tage教师年龄
tgender教师性别

班级表

字段名称字段说明
cid班级编号(主键)
cname班级名称

利用Power Designer设计概念数据模型

在此,详细介绍利用Power Designer设计概念数据模型。

第一步:创建概念模型

在Power Designer中依次点击File —> New Model —> Conceptual Data Model并设置Model name

在这里插入图片描述

第二步:打开Palette面板

依次点击Tools —> Customize Toolbars… —> Palette 打开Palette面板

在这里插入图片描述

第三步:创建标题

利用Palette面板中的Text工具创建文本,其内容为"学生教师班级数据模型"

在这里插入图片描述

第四步:创建实体Entity

利用Palette面板中的Entity工具创建3个实体

在这里插入图片描述

第五步:设置实体Entity

在此,以班级Entity为例详细介绍其设置过程。

班级Entity

双击Entity为其设置基本信息。在该设置中Name用于描述表的,Code表示该实体在数据库中表的名字,Comment用于填写备注信息。

在这里插入图片描述

接下来,设置实体Entity的属性。在该设置中Name用于说明各字段含义;Code表示该字段在数据库表中的列名;Data Type表示数据类型;Length表示数据长度;Precision表示数据精度;M表示该属性是否为强制(Mandatory)的,即是否允许该列的值为空,选中表示不允许为空;P表示该属性是否为主标识符(Primary Identifier);D表示该属性是否在图形窗口中显示(Displayed)。

在这里插入图片描述

学生Entity

类似地,我们来完成学生Entity

在这里插入图片描述

在这里插入图片描述

教师Entity

类似地,我们来完成教师Entity

在这里插入图片描述

在这里插入图片描述

Entity总览

依次完成3个Entity后,图示如下:

在这里插入图片描述

第六步:设置实体Entity之间的关系

在此,以班级和学生之间一对多的关系为例进行介绍。

(1)、通过Palette面板中的Relationship工具为班级实体和学生实体添加联系

在这里插入图片描述

(2)、双击关系图标,在弹出的Relationship Properties对话框中设置实体之间的基本信息

在这里插入图片描述

(3)、在Relationship Properties对话框中点击Cardinalities设置实体之间的关系

在这里插入图片描述

设置实体间的各种关系,它们分别为:

  • One-One选项,设置实体间的关系为一对一。
  • One-Many选项,设置实体间的关系为一对多。
  • Many-One选项,设置实体间的关系为多对一。
  • Many-Many选项,设置实体间的关系为多对多。

班级与学生的关系是一对多,所以在此选择One-Many选项

类似地,我们设置教师实体与学生实体之间的关系,图示如下:

在这里插入图片描述

教师与学生之间是多对多的关系,所以选择Many-Many选项。

在这里插入图片描述

至此,我们完成了概念数据模型的设计,图示如下:
在这里插入图片描述

利用Power Designer设计物理数据模型

当设计完概念数据模型后,利用Power Designer可非常容易地将概念数据模型(CDM)转换成物理数据模型(PDM)。

请在Power Designer中依次点击Tools —> Generate Physical Data Model。将DBMS设置为MySQL 5.0并将Name和Code修改为SchoolPhysicalDataModel再单击确定生产成了与MySQL匹配的物理数据模型。

在这里插入图片描述

观察该物理模型可看到,在从概念模型转到物理模型时自动将教师与学生的多对多关系拆解成了一对多。

在这里插入图片描述

但是,我们发现:在学生表中自动生成了一个字段班级编号;并且,该字段作为了外键。这一点和我们的初衷有所差异;我们原本的想法是:将学生表里的字段所属班级作为外键。既然和原本的想法不同而且生成了多余的字段,那么我们可以对其进行修改。

1、双击学生表,删除生成的字段班级编号。

在这里插入图片描述

2、双击学生表与班级表之间的连线重新设置外键。

在这里插入图片描述
3、修改完成后,学生表字段所属班级成为了新的外键。

在这里插入图片描述

利用Power Designer创建数据库脚本

请在Power Designer中打开PDM,然后依次点击Database —> Generate Database。使用Directory和File name指定数据库脚本的存放路径及其保存后的文件名再单击确定。

在这里插入图片描述

最后,我们来查看由PDM生成的数据库脚本,代码如下:

/*==============================================================*/
/* DBMS name:      MySQL 5.0                                    */
/* Created on:     2020/11/20 0:20:11                           */
/*==============================================================*/


drop table if exists class;

drop table if exists student;

drop table if exists teacher;

drop table if exists teacher_student_r;

/*==============================================================*/
/* Table: class                                                 */
/*==============================================================*/
create table class
(
   cid                  int not null,
   cname                varchar(20),
   primary key (cid)
);

alter table class comment '班级信息';

/*==============================================================*/
/* Table: student                                               */
/*==============================================================*/
create table student
(
   sid                  int not null,
   sname                varchar(20),
   sage                 int,
   sgender              varchar(20),
   sclassid             int,
   primary key (sid)
);

alter table student comment '学生信息';

/*==============================================================*/
/* Table: teacher                                               */
/*==============================================================*/
create table teacher
(
   tid                  int not null,
   tname                varchar(20),
   tage                 int,
   tgender              varchar(20),
   primary key (tid)
);

alter table teacher comment '教师信息';

/*==============================================================*/
/* Table: teacher_student_r                                     */
/*==============================================================*/
create table teacher_student_r
(
   sid                  int not null,
   tid                  int not null,
   primary key (sid, tid)
);

alter table student add constraint FK_class_student_r foreign key (sclassid)
      references class (cid) on delete restrict on update restrict;

alter table teacher_student_r add constraint FK_teacher_student_r foreign key (sid)
      references student (sid) on delete restrict on update restrict;

alter table teacher_student_r add constraint FK_teacher_student_r foreign key (tid)
      references teacher (tid) on delete restrict on update restrict;


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/671508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何查看某个starter的详细官方文档

\qquad 相信很多小伙伴在用到一个没怎么接触过的starter的时候,也有不知道怎么使用,怎么配置的苦恼,本文介绍一种大部分开源技术都能使用的查看官方文档的方式。 1.首先在github搜索相关技术 \qquad 这里以redis为例,如下&#x…

QT学习之旅 - network连接

文章目录 网络知识点IP地址IPv4和IPv6 端口号(协议端口)端口分类UDP端口和TCP端口 networkpro文件.h文件.cpp文件 UDP连接绑定端口绑定成功后等待对方进行连接点击发送源码扩展: nodejs-udp服务端(用于跟QT程序进行通信)现象 网络知识点 IP地址 192.168.127.170(√) 192.168.…

结构化GPT用例,在CSDN私密社区中死磕@ada 探索SpringBoot

在CSDN私密社区中死磕ada 探索SpringBoot Q: Spring的核心概念是哪些?Q: Spring MVC的核心概念是哪些?Q: SpringBoot的核心概念有哪些?Q: 介绍下SpringBoot AutoConfiguration的机制。Q: SpringBootConfiguration 和 Configuration 的区别是&…

使用esp32+micropython+microdot搭建web(http+websocket)服务器(超详细)第二部分

使用esp32micropythonmicrodot搭建web(httpwebsocket)服务器(超详细)第二部分 microdot文档速查 什么是Microdot?Microdot是一个可以在micropython中搭建物联网web服务器的框架micropyton文档api速查 Quick reference for the ESP32 实现http服务器 …

基于cycle of curves的Nova证明系统

1. 引言 主要见斯坦福大学Wilson Nguyen、Dan Boneh和微软研究中心Srinath Setty 2023年论文《Revisiting the Nova Proof System on a Cycle of Curves》。 前序博客有: Nova: Recursive Zero-Knowledge Arguments from Folding Schemes学习笔记 在2021年Nova …

Java线程的六种状态(付代码解释)

目录 一.新建状态 (New) 解释 代码 运行结果 ​编辑 二.运行状态(Runnable) 解释 代码 运行结果 三.等待状态(Waiting) 解释 代码 运行结果 四.阻塞状态(Blocked) 解释 代码 运行结果 五.计时等待状态(…

PCB设计系列分享-开关稳压器接地处理

目录 概要 整体架构流程 技术名词解释 1.DCDC: 2.PGND: 3.AGND: 技术细节 1.认识1 2.认识2 3.综合 小结 概要 提示:这里可以添加技术概要 如何使用带有模拟接地层(AGND)和功率接地层(PGND)的开关稳压器? 这是许多开发人员在设计…

启用Windows应急重启功能

博主最近发现了Windows隐藏功能——应急重启,并且这个功能可以追溯到Windows Vista!但是因为大家习惯长按电源键关机所以就鲜为人知。今天博主叫你如何使用应急重启功能。 因为使用功能都无法截图,所以就不展示图片了。 第一步,按住CtrlAltD…

什么是元宇宙?元宇宙由哪些关键技术、设备构成?

元宇宙近几年来火爆起来,各个行业争先恐后加入。从目前来看,元宇宙初步体现在游戏娱乐行业、社交、消费、数字孪生等方面。元宇宙近两年开始在各个行业快速崛起,但各个行业并没有一个清晰的发展方向,那么什么是元宇宙? 元宇宙到底由哪些技术和设备组成?查询了很多资…

用于SOLIDWORKS装配体的X光机——SOLIDWORKS装配体直观工具

​ SOLIDWORKS报告和故障排除的瑞士军刀 如何快速的根据条件会装配体中的零部件进行分类? 如何快速找到装配体中的某些特定零件? 如何快速在图形区域中突出显示出特定的零部件? 如果你用过“SOLIDWORKS装配体直观工具”的话,…

JMeter之常见逻辑控制器实践

ForEach Controller(循环控制器) 组件使用说明 选项说明: ①需要循环遍历名称(name); ②循环变量的下标起点(name_0); ③循环变量的下标终点(name_4); ④引用变量名称定义; ⑤在变量后加_&…

jsvmp xs逆向学习

内容仅供参考学习 欢迎朋友们V一起交流: zcxl7_7 首先直接搜索关键词 找到encrypt位置 接下来就是分析encrypt过程,详情请看专栏中的文章

leetcode 2448. Minimum Cost to Make Array Equal(使数组相等的最小成本)

数组nums的元素每次可进行下面的操作: 每个元素1 或者 -1。 操作一次的cost是cost[i]. 问把nums的元素全部变为相等的元素需要的最小的cost. 思路: nums的元素全部变为相等的元素,这个相等的元素是多少,现在不知道。 一旦知道了…

Jmeter查看结果树之查看响应的13种方法

目录 前言: 1、Text 2、RegExpTester 3、BoundaryExtractorTester 4、CSSSelectorTester 5、XpathTester 6、JSONPathTester 7、HTML 8、HTMLSourceFormatted 9、HTML(downloadresources) 10、Document 11、JSON 12、XML 13、B…

RPA×IDP×AIGC,实在智能打造全新“超进化”文档审阅超自动化解决方案

企业商业活动频繁,每日都有大量文档被创建、书写、传递,需要人工审阅核查,以确保其准确性和合法性。这是对企业文档管理的一个巨大挑战,尤其对于金融机构、审计机构等文本相关岗位的工作人员来说更是如此。传统的文档审核通常需要…

集合和泛型的详细讲解

集合 1)可以动态保存任意多个对象,使用比较方便! 2)提供了一系列方便的操作对象的方法:add、remove、set、get等3)使用集合添加,删除新元素的示意代码-简洁了 集合的框架体系 …

实时检测Aruco标签坐标opencv-python之添加卡尔曼滤波

在实时检测Aruco标签坐标用于定位的时候发现,追踪效果不是很好,于是在检测过程中添加了卡尔曼滤波,在aruco检测算法检测不到aruco标签的时候,调用卡尔曼滤波算法(KalmanFilter),补偿丢失的定位的…

Rabbitmq学习

文章目录 前言RabbitMQ 1 同步调用和异步调用2 常见的MQ对比3 安装RabbitMQ4 RabbitMQ学习4.1 helloworld学习 5 Spring AMQP5.1 AMQP的入门案例(使用rabbittemplate进行消息发送和接受)5.2 RabbitMQ的workquene5.3 发布订阅模型(exchange(广播fanout 路由direct 话题topic))5.…

RK3588 修改USB/Sata/TF挂载点

文章目录 概要整体架构流程技术名词解释技术细节小结APP概要 rk3588 android12 平台的挂载点是:/storage/设备卷名(即uuid) 对上层开发不太友好,因此需要固定某个挂载点提供上层app调用。 修改后的路径效果如下: 整体架构流程 从概要图示中可知:对每个挂载点创建软连接来…

大牛分享,提高工程性能的7个简单技巧

软件性能和弹性(恢复能力)是用户体验的关键组成部分,但随着软件行业采用DevOps,它开始在性能和弹性方面出现不足。在软件完全失败之前,性能问题经常被忽略。 但是,我们都知道性能不会突然降低。随着软件通…