PowerDesigner学习笔记

备注:文章主要对概念数据模型进行深入分析

1.对各种模型图初步认识

1.1.概念数据模型 (CDM) (Conceptual Data Model)

对数据和信息进行建模,利用实体-关系图(E-R图)的形式组织数据,检验数据设计的有效性和合理性。

与具体的数据管理系统(Database Management System,简称DBMS)无关。概念数据模型必须换成逻辑数据模型,才能在DBMS中实现。

1.2.逻辑数据模型 (LDM) (Logical Data Model)

PowerDesigner 15 新增的模型。逻辑模型是概念模型的延伸,表示概念之间的逻辑次序,是一个属于方法层次的模型。具体来说,逻辑模型中一方面显示了实体、实体的属性和实体之间的关系,另一方面又将继承、实体关系中的引用等在实体的属性中进行展示。逻辑模型介于概念模型和物理模型之间,具有物理模型方面的特性,在概念模型中的多对多关系,在逻辑模型中将会以增加中间实体的一对多关系的方式来实现。

逻辑模型主要是使得整个概念模型更易于理解,同时又不依赖于具体的数据库实现,使用逻辑模型可以生成针对具体数据库管理系统的物理模型。逻辑模型并不是在整个步骤中必须的,可以直接通过概念模型来生成物理模型。

1.3.物理数据模型 (PDM) (Physical Data Model)

基于特定DBMS(数据库系统),在概念数据模型、逻辑数据模型的基础上进行设计。由物理数据模型生成数据库,或对数据库进行逆向工程得到物理数据模型。

每一种逻辑数据模型在实现时都有其对应的物理数据模型。DBMS为了保证其独立性与可移植性,大部分物理数据模型的实现工作由系统自动完成,而设计者只设计索引、聚集等特殊结构。

最常用的一种数据库模型,模型是针对某种数据库系统而设计。

1.4.面向对象模型 (OOM) (Objcet Oriented Model)

包含UML常见的所有的图形:类图、对象图、包图、用例图、时序图、协作图、交互图、活动图、状态图、组件图、复合结构图、部署图(配置图)。OOM 本质上是软件系统的一个静态的概念模型。

1.5.业务程序模型 (BPM) (Business Process Model)

BPM 描述业务的各种不同内在任务和内在流程(工作流),而且客户如何以这些任务和流程互相影响。BPM 是从业务合伙人的观点来看业务逻辑和规则的概念模型,使用一个图表描述程序,流程,信息和合作协议之间的交互作用。

1.6.企业架构模型 (EAM) (Enterprise Architecture Model)

从业务层、应用层以及技术层的对企业的体系架构进行全方面的描述。包括:组织结构图、业务通信图、进程图、城市规划图、应用架构图、面向服务图、技术基础框架图。

2.深入学习概念数据模型图

在PowerDesigner中,定义表关系有三种,分别是:
在这里插入图片描述

补充说明:除此之外,还有一种单个表之间的关系——自反( Reflexive ),Reflexive 使用Relationship图标,

实际上可以理解成∶数据库表的关系有4种。

为了说明各种表定义关系,则创建以下一个概念数据模型图(CDM):
在这里插入图片描述

2.1.关系(Relationship)-重点理解

2.1.1.一对多

2.1.1.1.“—”端的Mandatory (强制)

"—"端是没有Dependent依赖的。

1)选中Mandatory,表示“一”端的每一条记录(班级),都至少有一个“多”端的记录(学生)对应,即,一个班级至少要有一名学生;

2)不选中 Mandatory,表示,一个班级,可以是空班级,可以没有学生(比如招生前夕),也可以有多个学生。

2.1.1.2.“多”端的Mandatory (强制)

Mandatory选项,对一对多关系中“多”的这端,选中和不选中的区别是︰

  1. 创建的SQL语句:选中了,表示“多"端的表中的外键不能为空;没选中,表示“多”端的表中的外键可以为空;

  2. 举例∶选中了,学生必须属于某个班级﹔没选中,表示学生可以暂时不属于任何一个班级(比如降级还没有分班的学生)

2.1.1.3.“多”端的Dependent(依赖)

Dependent(依赖)选项,对一对多关系中“多”的这端,选中和不选中,区别如下︰

SQL语句∶选中,"多”端的外键跟自己的主键一起成为主键﹔否则,外键只是外键,生成的物理模型图是︰

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cgnSo5xW-1693154998102)(PowerDesigner学习笔记.assets/image-20230828002337344.png)]

举例∶选中Dependent,表示:班级的ID传递给学生之后,既是学生表的外键,又跟学生表的学号一起构成学生表的主键﹔

如果没有选中,那班级的ID传递给学生表,仅仅作为学生表的外键。

备注说明:"—"端是没有Dependent依赖的。

2.1.2.多对多

多对多的Dependent和Mandatory的意思跟一对多的意思是一样的。所不同的是,多对多的关系,会在生成物理模型的时候,自动生成一张表,原表和新表之间是两个一对多的关系。

比如︰学生和老师的关系,概念模型是︰
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yjFXdj26-1693154998102)(PowerDesigner学习笔记.assets/image-20230828002942618.png)]
生成物理模型之后,就是︰
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ULmiaAg4-1693154998103)(PowerDesigner学习笔记.assets/image-20230828003006891.png)]

2.1.3.一对一

选择“Dominant role”:一对一的Relationship,最重要的选项是“Dominant(支配义,A“支配”B,表示:A的主键传递给B,但是B的主键不传递给A;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vLeuHdBx-1693154998103)(PowerDesigner学习笔记.assets/image-20230828003555530.png)]

如果不选择“Dominant”,表示,A的主键要传递给B,并且,B的主键也要传递给A。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ceqa59hW-1693154998104)(PowerDesigner学习笔记.assets/image-20230828003613051.png)]
对于一对一中的Mandatory和Dependent,跟一对多的情况一样。

备注:一对一的表间关系,很容易跟继承、关联混淆。

2、继承(Inheritance )

所谓继承,看本文开头部分举的例子,教师和学生都有共同的字段——姓名、性别、年龄——教l师和学生都是“人”,他们的属性是从“人”继承来的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HvKIQTWB-1693154998104)(PowerDesigner学习笔记.assets/image-20230828004017378.png)]

在概念模型中,子表没有主表的字段,生成物理模型之后,主表的全部字段全部复制到子表中。

3、关联(Association)

Association关系,就是两个实体之间的多对多关系,一般这种情况下会增加一个中间实体,这就是前面“Relationship”中的“一对多”。

此外,在Power Designer中,提供了一个专门的符号来对应,叫做“Association"关联,需要注意的是,“Association”只是为了方便直观地表示这种类型的实体而设置的一个图标,他其实还是实体。

使用一个普通的实体,定义多对多关系,和使用"Association”图标定义多对多关系,两者相比,使用“Association”更方便、直观,使模型更容易理解,并可以减少因不谨慎而可能导致的错误。

下面的是概念模型:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vJr9CILN-1693154998105)(PowerDesigner学习笔记.assets/image-20230828004201834.png)]
生成物理模型之后︰
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CgoXIaS1-1693154998105)(PowerDesigner学习笔记.assets/image-20230828004214186.png)]
需要足以的是,针对Association,PowerDesigner专门提供了一个图标用于设置这种关系︰
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W3bk6vTS-1693154998105)(PowerDesigner学习笔记.assets/image-20230828004257331.png)]

4、自反(Reflexive)

如上图中的领导。领导本身是老师,每个老师都有一个领导。这种关系就是自反关系。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cTfI4FCp-1693154998106)(PowerDesigner学习笔记.assets/image-20230828004453117.png)]

这种关系下,Mandatory、Dependent的设置,跟一对多的Relationship关系是一样的。

5、总结

① —张表跟自己的关系,是Reflexive (自反);

② 一张表的主键和字段全部传递给另一张表,是Inheritance(继承);

③ 一张表只把自己的主键传递给另一张表,是Relationship(关系)和Association(关联),其中,Relationship可以是一对一、一对多、多对多;Association只能是多对多;

④ Mandatory(强制)选项,选中了,表示:一张表的主键传递给另一张表,作为后者的外键,并且不能为空﹔

⑤ Dependent(依赖)选项,选中了,表示:一张表的主键传递给另一张表,作为后者的外键,并且不能为空;并且与它原来的主键,一起构成它的主键;

⑥ Dominant (支配)选项,只针对一对一的情况,选择A“支配”B,表示:A的主键传递给B,但是B的主键不传递给A;如果不选择“Dominant”,表示,A的主键要传递给B,并且,B的主键也要传递给A。

本文开始给出的概念模型,生成物理模型后,是下面的样子∶

项,选中了,表示:一张表的主键传递给另一张表,作为后者的外键,并且不能为空;并且与它原来的主键,一起构成它的主键;

⑥ Dominant (支配)选项,只针对一对一的情况,选择A“支配”B,表示:A的主键传递给B,但是B的主键不传递给A;如果不选择“Dominant”,表示,A的主键要传递给B,并且,B的主键也要传递给A。

本文开始给出的概念模型,生成物理模型后,是下面的样子∶
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rNBGhqjb-1693154998106)(PowerDesigner学习笔记.assets/image-20230828004707855.png)]

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在 Vue TypeScript 项目使用 emits 事件

Vue是构建出色的Web应用程序的最灵活、灵活和强大的JavaScript框架之一。Vue中最重要的概念和关键特性之一是能够促进应用程序组件之间的通信。让我们深入探讨一下Vue中的“emits”概念,并了解它们如何以流畅和无缝的方式实现父子组件之间的通信。 Vue中的emits是什…

微信小程序手机号快速验证组件调用方式

目录 一、测试环境 二、问题现象 三、总结 手机号验证组件&#xff08;包括快速验证组件和实时验证组件&#xff09;调用后无法对事件进行回调这个问题&#xff0c;先说结论&#xff0c;以下是正确的使用方式&#xff1a; <!-- 手机号快速验证组件 --> <button op…

京东API接口解析,实现获得JD商品评论

要获取京东商品评论&#xff0c;需要使用京东的开放平台API接口。以下是一个基本的示例&#xff0c;解析并实现获取JD商品评论的API接口。 首先&#xff0c;你需要访问京东开放平台并注册一个开发者账号。注册完成后&#xff0c;你需要创建一个应用并获取到API的权限。 在获取…

深度学习-4-二维目标检测-YOLOv5源码测试与训练

本文采用的YOLOv5源码是ultralytics发行版3.1 YOLOv5源码测试与训练 1.Anaconda环境配置 1.1安装Anaconda Anaconda 是一个用于科学计算的 Python 发行版&#xff0c;支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。 官方网址下载安装包&…

LeetCode 82 删除排序链表中的重复元素 II

LeetCode 82 删除排序链表中的重复元素 II 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/description/ 博主Github&#xff1a;https://github.com/GDUT-Rp/LeetCode 题目&am…

第7篇:ESP32连接按钮点亮LED无源喇叭播放声音

第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 第4篇:vscodeplatformio搭建esp32 arduino开发环境 第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验 第6篇:ESP32连接无源喇叭播放音乐《涛声…

【pyqt5界面化工具开发-13】QtDesigner功能择优使用

目录 0x00 前言&#xff1a; 一、完成基本的布局 二、其他功能的使用 三、在代码行开发 0x00 前言&#xff1a; QtDesigner工具的择优使用&#xff1a; 1、他的界面开发&#xff0c;是我们主要需要使用的功能 2、他的其他功能的使用&#xff0c;有需要就可使用&#xff…

【python爬虫】9.带着小饼干登录(cookies)

文章目录 前言项目&#xff1a;发表博客评论post请求 cookies及其用法session及其用法存储cookies读取cookies复习 前言 第1-8关我们学习的是爬虫最为基础的知识&#xff0c;从第9关开始&#xff0c;我们正式打开爬虫的进阶之门&#xff0c;学习爬虫更多的精进知识。 在前面几…

mysql使用st_distance_sphere函数报错Incorrect arguments to st_distance_sphere

最近发现执行mysql st_distance_sphere报错了。 报错的信息是Incorrect arguments to st_distance_sphere。 最开始以为是跟mysql的版本有关系&#xff0c;所以看了下自己本地的mysql版本&#xff0c;执行一下sql select version(); 发现自己本地的mysql版本是 5.7.30 这…

基于深度学习的三维重建从入门实战教程 原理讲解 源码解析 实操教程课件下载

传统的重建方法是使用光度一致性等来计算稠密的三维信息。虽然这些方法在理想的Lambertian场景下,精度已经很高。 但传统的局限性,例如弱纹理,高反光和重复纹理等,使得重建困难或重建的结果不完整。 基于学习的方法可以引入比如镜面先验和反射先验等全局语义信息,使匹配…

如何使用 Amazon EMR 在 Amazon EKS 上构建可靠、高效、用户友好的 Spark 平台

这是 SafeGraph 技术主管经理 Nan Zhu 与亚马逊云科技高级解决方案架构师 Dave Thibault 共同撰写的特约文章。 SafeGraph 是一家地理空间数据公司&#xff0c;管理着全球超过 4100 万个兴趣点&#xff08;POI&#xff0c;Point of Interest&#xff09;&#xff0c;提供品牌隶…

Java设计模式:四、行为型模式-10:访问者模式

一、定义&#xff1a;访问者模式 访问者模式&#xff1a;核心在于同一个事物不同视角下的访问信息不同。 在一个稳定的数据结构下&#xff0c;例如用户信息、雇员信息等&#xff0c;增加易变的业务访问逻辑。为了增强扩展性&#xff0c;将两部分的业务解耦的一种设计模式。 二…

基于springboot跟redis实现的排行榜功能(实战)

概述 前段时间&#xff0c;做了一个世界杯竞猜积分排行榜。对世界杯64场球赛胜负平进行猜测&#xff0c;猜对1分&#xff0c;错误0分&#xff0c;一人一场只能猜一次。 1.展示前一百名列表。 2.展示个人排名(如&#xff1a;张三&#xff0c;您当前的排名106579)。 一.redis so…

利用 AI 赋能云安全,亚马逊云科技的安全技术创新服务不断赋能开发者

文章分享自亚马逊云科技 Community Builder&#xff1a;李少奕 2023年6月14日&#xff0c;一年一度的亚马逊云科技 re:Inforce 全球大会在美国安纳海姆落下了帷幕。re:Inforce 是亚马逊云科技全球最大的盛会之一&#xff0c;汇集了来自全球各地的安全专家&#xff0c;共同学习、…

11.Redis数据库管理命令

Redis数据库管理命令 数据库管理selectdbsizeflushall / flushdb 数据库管理 redis 中的 database 是现成的&#xff0c;咱们用户不能创建新的数据库&#xff0c;也不能删除已有的数据库~ 默认 redis 给我们提供了 16 个数据库&#xff0c;名字为 数字0 到数字15 这16个数据库…

VS2019编译curl库

下载&#xff1a; curl-7.61.0.tar.gz 编译&#xff1a; 解压到一个文件下&#xff0c;然后右键以管理员权限运行buildconf.bat 编译x64的库使用的是x64 Native Tools Command Prompt for VS 2019 本机工具命令提示&#xff0c;如果想编译x86的库&#xff0c;可以选择x86 Nat…

纯 CSS 开关切换按钮

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>纯 CSS 开关切换按钮</title><style>html {font-size: 62.5%;}body {background-color: #1848a0;}.wrapper {position: absolute;left: …

Windows右键添加用 VSCODE 打开

1.安装VSCODE时 安装时会有个选项来添加&#xff0c;如下&#xff1a; ①将“通过code 打开“操作添加到windows资源管理器文件上下文菜单 ②将“通过code 打开”操作添加到windows资源管理器目录上下文菜单 说明&#xff1a;①②勾选上&#xff0c;可以对文件&#xff0c;目…

API管理风险:如何确保您的API安全与可靠?

API管理风险&#xff1a;如何确保您的API安全与可靠&#xff1f; 随着数字化时代的到来&#xff0c;应用程序接口&#xff08;API&#xff09;在现代软件开发中发挥着关键的作用。然而&#xff0c;API管理过程中存在着各种潜在的风险。本文将探讨如何有效地管理和缓解这些风险…

Django-跨域

一、基础概念 cors 跨域资源共享 二、跨域请求-简单请求 满足以下全部条件的请求为 简单请求 1.请求方法如下&#xff1a; GET or HEAR or POS 2.请求头仅包含如下&#xff1a; Accept、Accept-Language、Content-Language、Content-Type 3.ConTent-Type 仅支持如下三种&…