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)]

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux驱动之设备树下的platform驱动

目录 一、设备树下的 platform 驱动简介 二、修改设备树文件 2.1 添加 LED 设备节点 2.2 添加 pinctrl 节点 2.3 检查 PIN 是否被其他外设使用 三、platform 驱动程序编写 四、测试 APP 编写 五、运行测试 5.1 编译 5.2 运行测试 前面一篇我们讲解了传统的、未采用设备…

用香港服务器域名需要备案吗?

​  在选择服务器的时候,很多人会考虑使用香港服务器。香港服务器的一个优势就是不需要备案。不管是虚拟主机还是云主机,无论是个人网站还是商业网站,都不需要进行备案手续。 域名实名认证 虽然不需要备案,但使用香港服务器搭建…

webrtc的Sdp中的Plan-b和UnifiedPlan

在一些类似于视频会议场景下,媒体会话参与者需要接收或者发送多个流,例如一个源端,同时发送多个左右音轨的音频,或者多个摄像头的视频流;在2013年,提出了2个不同的SDP IETF草案Plan B和Unified Plan&#x…

数据库表结构导出为word、html、markdown【转载,已解决,已验证,开源】

注&#xff1a;本文为gitcode代码验证&#xff0c;转载gitcode gitcode&#xff1a;https://gitcode.net/mirrors/pingfangushi/screw?utm_sourcecsdn_github_accelerator 整理数据库文档&#xff1a;https://mp.weixin.qq.com/s/Bo_U5_cl82hfQ6GmRs2vtA <!--数据库文档核…

【Day-21慢就是快】代码随想录-栈与队列-逆波兰表达式求值

逆波兰表达式&#xff1a;是一种后缀表达式&#xff0c;所谓后缀就是指运算符写在后面。 平常使用的算式则是一种中缀表达式&#xff0c;如 ( 1 2 ) * ( 3 4 ) 。 该算式的逆波兰表达式写法为 ( ( 1 2 ) ( 3 4 ) * ) 。 逆波兰表达式主要有以下两个优点&#xff1a; 去掉…

Spring AOP基于注解方式实现和细节

目录 一、Spring AOP底层技术 二、初步实现AOP编程 三、获取切点详细信息 四、 切点表达式语法 五、重用&#xff08;提取&#xff09;切点表达式 一、Spring AOP底层技术 SpringAop的核心在于动态代理&#xff0c;那么在SpringAop的底层的技术是依靠了什么技术呢&#x…

数据结构--队列与循环队列

队列 队列是什么&#xff0c;先联想一下队&#xff0c;排队先来的人排前面先出&#xff0c;后来的人排后面后出&#xff1b;队列的性质也一样&#xff0c;先进队列的数据先出&#xff0c;后进队列的后出&#xff1b;就像图一的样子&#xff1a; 图1 如图1&#xff0c;1号元素是…

【Rust】Rust学习 第十八章模式用来匹配值的结构

模式是 Rust 中特殊的语法&#xff0c;它用来匹配类型中的结构&#xff0c;无论类型是简单还是复杂。结合使用模式和 match 表达式以及其他结构可以提供更多对程序控制流的支配权。模式由如下一些内容组合而成&#xff1a; 字面值解构的数组、枚举、结构体或者元组变量通配符占…

Java【手撕双指针】LeetCode 18. “四数之和“, 图文详解思路分析 + 代码

文章目录 前言一、四数之和1, 题目2, 思路分析3, 代码 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4d5; JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 &#x1f4d7; Java数据结构: 顺序表, 链表, 堆…

React笔记(二)JSX

一、JSX JSX是javascript XML的简写&#xff0c;实际上是javascript的扩展&#xff0c;既有javascript的语法结构&#xff0c;又有XML的结构 1、JSX的规则要求 jsx必须要有一个根节点 如果不想产生无用的根标签&#xff0c;但是还要遵守JSX的语法的要求&#xff0c;可以使用…

【javaweb】学习日记Day6 - Mysql 数据库 DDL DML

之前学习过的SQL语句笔记总结戳这里→【数据库原理与应用 - 第六章】T-SQL 在SQL Server的使用_Roye_ack的博客-CSDN博客 目录 一、概述 1、如何安装及配置路径Mysql&#xff1f; 2、SQL分类 二、DDL 数据定义 1、数据库操作 2、IDEA内置数据库使用 &#xff08;1&…

CSDN编程题-每日一练(2023-08-27)

CSDN编程题-每日一练&#xff08;2023-08-27&#xff09; 一、题目名称&#xff1a;异或和二、题目名称&#xff1a;生命进化书三、题目名称&#xff1a;熊孩子拜访 一、题目名称&#xff1a;异或和 时间限制&#xff1a;1000ms内存限制&#xff1a;256M 题目描述&#xff1a; …

SpringBoot权限认证

SpringBoot的安全 常用框架&#xff1a;Shrio,SpringSecurity 两个功能&#xff1a; Authentication 认证Authorization 授权 权限&#xff1a; 功能权限访问权限菜单权限 原来用拦截器、过滤器来做&#xff0c;代码较多。现在用框架。 SpringSecurity 只要引入就可以使…

Git企业开发控制理论和实操-从入门到深入(五)|标签管理

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…

前端需要理解的性能优化知识

优化的目的是展示更快、交互响应快、页面无卡顿情况。 1 性能指标 2 分析方法 使用 ChromeDevTool 作为性能分析工具来观察页面性能情况。其中Network观察网络资源加载耗时及顺序&#xff0c;Performace观察页面渲染表现及JS执行情况&#xff0c;Lighthouse对网站进行整体评分…

Mycat之前世今生

如果我有一个32核心的服务器&#xff0c;我就可以实现1个亿的数据分片&#xff0c;我有32核心的服务器么&#xff1f;没有&#xff0c;所以我至今无法实现1个亿的数据分片。——MyCAT ‘s Plan 话说“每一个成功的男人背后都有一个女人”&#xff0c;自然MyCAT也逃脱不了这个诅…

K8S集群中使用JDOS KMS服务对敏感数据安全加密 | 京东云技术团队

基本概念 KMS&#xff0c;Key Management Service&#xff0c;即密钥管理服务&#xff0c;在K8S集群中&#xff0c;以驱动和插件的形式启用对Secret&#xff0c;Configmap进行加密。以保护敏感数据&#xff0c; 驱动和插件需要使用者按照需求进行定制和实现自己的KMS插件&…

基于MATLAB开发AUTOSAR软件应用层Code mapping专题-part 5 Signal/States标签页介绍

这一篇我们说下signals和State这两个怎么搞做映射,那首先我们要知道什么是Signal和state,我们看下模型, 在原来的模型里我增加了标红的圆圈处delay模块,这个delay模块就是一个state模块,表示离散的一个状态,这个是个模型的基本概念,后续我有个专栏交接simulink建模,那…

ARTS打卡第二周之链表环的检测、gdb中disassemble的使用、底层学习建议、学习分享

Algorithm 题目&#xff1a;链表中环的检测 自己的分析见博客《检测链表中是否存在环》 Review disassemble command是我读的一篇英语文章&#xff0c;这篇文章主要是介绍gdb反汇编命令的使用和参数。自己为了能够演示这篇文章里边的内容&#xff0c;特意自己使用汇编语言编…

Apache Poi 实现Excel多级联动下拉框

由于最近做的功能&#xff0c;需要将接口返回的数据列表&#xff0c;输出到excel中&#xff0c;以供后续导入&#xff0c;且网上现有的封装&#xff0c;使用起来都较为麻烦&#xff0c;故参考已有做法封装了工具类。 使用apache poi实现excel联动下拉框思路 创建隐藏单元格&a…