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.mzph.cn/news/59312.shtml

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

相关文章

【数据结构-链表-01】反转链表

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

多个开源姿态检测模型项目,上手即用,实测可行!

编辑:OAK中国 项目来源:oakchina.cn 喜欢的话,请多多👍⭐️✍ ▌前言 Hello,大家好,这里是OAK中国,我是助手君。 我发现今年有不少朋友都想做姿态检测,正好我们也有不少客户做过这…

结构体(个人学习笔记黑马学习)

1、结构体的定义和使用 #include <iostream> using namespace std; #include <string>struct Student {string name;int age;int score; }s3;int main() {//1、struct Student s1;s1.name "张三";s1.age 18;s1.score 100;cout << "姓名&a…

Python中小数据池知识最详细教程

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 话不多说&#xff0c;直接开搞&#xff0c;如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 一、id&#xff0c;is&#xff0c; 在Python中&#xff0c;id是什么&#xff1f; id是内存地址&#xff0c;比如你利用i…

【Unity小技巧】手戳一个简单易用的游戏UI框架(附源码)

文章目录 前言整套框架分为三大部分素材效果框架代码调用源码参考完结 前言 开发一款游戏美术成本是极其高昂的&#xff0c;以我们常见的宣传片CG为例&#xff0c;动辄就要成百上千万的价格&#xff0c;因此这种美术物料一般只会放在核心剧情节点&#xff0c;引爆舆论&#xf…

生产环境部署与协同开发 Git

目录 一、前言——Git概述 1.1 Git是什么 1.2 为什么要使用Git 什么是版本控制系统 1.3 Git和SVN对比 SVN集中式 Git分布式 1.4 Git工作流程 四个工作区域 工作流程 1.5 Git下载安装 1.6 环境配置 设置用户信息 查看配置信息 二、git基础 2.1 本地初始化仓库 ​编辑…

Java 中数据结构LinkedList的用法

LinkList 链表&#xff08;Linked list&#xff09;是一种常见的基础数据结构&#xff0c;是一种线性表&#xff0c;但是并不会按线性的顺序存储数据&#xff0c;而是在每一个节点里存到下一个节点的地址。 链表可分为单向链表和双向链表。 一个单向链表包含两个值: 当前节点…

创新指南|CEO如何应对生成式AI带来的4大颠覆创新机遇

生成式AI是一种快速发展的颠覆式创新&#xff0c;可以帮助企业创新商业模式、提高效率和解锁商业价值。本研究介绍如何应对生成式AI技术带来的挑战和机遇&#xff0c;以及如何先发利用这种技术来超越竞争和组织创造力和效率。如果您想了解更多关于生成式AI的企业创新战略&#…

【C++深入浅出】初识C++下篇(auto关键字、范围for、nullptr指针)

目录 一. 前言 二. auto关键字 2.1 auto的引入 2.2 auto简介 2.3 auto的使用细则 2.4 auto不能推导的场景 三. 基于范围的for循环(C11) 3.1 范围for的语法 3.2 范围for的原理 3.3 范围for的使用条件 四. 指针空值nullptr(C11) 一. 前言 上期我们介绍了c新增的两个重…

网络基础知识socket编程

目录 网络通信概述网络互连模型&#xff1a;OSI 七层模型TCP/IP 四层/五层模型数据的封装与拆封 IP 地址IP 地址的编址方式IP 地址的分类特殊的IP 地址如何判断2 个IP 地址是否在同一个网段内 TCP/IP 协议TCP 协议TCP 协议的特性TCP 报文格式建立TCP 连接&#xff1a;三次握手关…

服务器端使用django websocket,客户端使用uniapp 请问服务端和客户端群组互发消息的代码怎么写的参考笔记

2023/8/29 19:21:11 服务器端使用django websocket,客户端使用uniapp 请问服务端和客户端群组互发消息的代码怎么写 2023/8/29 19:22:25 在服务器端使用Django WebSocket和客户端使用Uniapp的情况下&#xff0c;以下是代码示例来实现服务器端和客户端之间的群组互发消息。 …

前端加springboot实现Web Socket连接通讯以及测试流程(包括后端实现心跳检测)

【2023】前端加springboot实现Web Socket连接通讯&#xff08;包括后端实现心跳检测&#xff09; 前言一、Web Socket 简绍1 为什么用 websocket&#xff1f; 二、代码实现1、前端&#xff08;html&#xff09;1.1、无前端向后端发送消息1.2、有前端向后端发送消息 2、后端具体…

springboot整合jquery实现前后端数据交互

一 实施逻辑 1.1 前端 <!doctype html> <html lang"en"><head><meta charset"UTF-8"><meta name"Generator" content"EditPlus"><meta name"Author" content""><meta n…

C# 生成唯一ID

1.首先通过nuget安装yitter.idgenerator 下面的三行代码搞定

win11 docker-desktop安装记录

win11安装Docker踩坑实录 马上开始正式工作了&#xff0c;需要用到docker&#xff0c;以前在win10上安装过&#xff0c;新电脑是win11&#xff0c;心想肯定会遇到坑&#xff0c;就浅浅记录一下 首先看一下安装要求 需要wsl2 那么就先进行 wsl的更新 wsl --update注意这里网络…

【STM32】串口初步使用

本文只作为学习笔记&#xff0c;对串口进行一个简单的介绍&#xff0c;正确的使用方式还需要进行实际的调试 通信的类型&#xff1a; 同步 异步 单工 双工 串行 并行 STM32的串口通信&#xff1a; 配置片上外设的控制寄存器&#xff0c;通信双方进行相同的配置&#xff0c;…

VScode代码自动补全提示

VScode代码自动补全提示 打开设置 搜索 Suggest:Snippets Prevent Quick Suggestions &#xff0c;去掉勾选 CtrlShiftP打开setting.json文件&#xff0c;添加以下代码 "editor.suggest.snippetsPreventQuickSuggestions": false,"editor.quickSuggestions…

C++标准库STL容器详解

目录 C标准模板库STL容器容器分类容器通用接口 顺序容器vectorlistdeque 容器适配器queuestackpriority_queue 关联容器&#xff1a;红黑树setmultisetmapmultimap 关联容器&#xff1a;哈希表unordered_set和unordered_multisetunordered_map和unordered_multimap 附1&#xf…

数据库集群的简单了解

Update 关于操作的日志 1.0 redo log 读一次写一次 一共2次, 不安全 注意redo log是顺写 而file是随机 所以Mysql做出类似HDFS的操作 行为日志和数据分离&#xff0c;但是不同的是&#xff0c;Mysql在内存中操作修改&#xff0c;如果不出事故&#xff0c;由内存中的行为来直接…

ES 7.6 - JAVA应用基础操作篇

ES 7.6 - JAVA应用基础操作篇 环境准备依赖配置 实体类准备使用说明索引/映射操作创建索引和映射索引和映射相关查询删除索引 文档操作插入数据更新数据删除数据批量操作 文档查询根据ID查询根据字段精准查询根据字段分词查询控制返回字段范围查询组合查询排序分页高亮搜索聚合…