cdm ldm pdm 区别、转化

2024-01-21 08:40
文章标签 区别 转化 pdm ldm cdm

本文主要是介绍cdm ldm pdm 区别、转化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PowerDesigner

简称PD,是一种数据建模工具,适合于开发大型应用系统时的数据模型设计过程。总共有5种模型。





模型

CDM

以实体为单元,进行实体以及实体对应关系的建立。即实体-联系图(E-R图),CDM就是以其自身方式来描述E-R图。

此时不考虑物理实现的细节,只表示数据库的整体逻辑结构,独立于任何软件和数据存储结构。 

在CDM中用来标识实体的是属性(Attribute)。

LDM

  逻辑模型是概念模型的延伸,逻辑模型中一方面显示了实体、实体的属性和实体之间的关系,另一方面又将继承、实体关系中的引用等在实体的属性中进行展示。逻辑模型主要是使得整个概念模型更易于理解,同时又不依赖于具体的数据库实现。

   具体表现 : 

  在概念模型中的多对多关系,在逻辑模型中将会以增加中间实体的一对多关系的方式来实现。 

   和其他模型的联系

使用逻辑模型可以生成针对具体数据库管理系统的物理模型。

逻辑模型并不是在整个步骤中必须的,可以直接通过概念模型来生成物理模型。

PDM

  PDM更接近与关系数据库里的关系表,PDM可以直接与RDBMS(关系型数据库管理系统)发生关联。PDM考虑了数据库的物理实现,包括软件和数据存储结构。

PDM的对象:表(Table)、表中的列(Table column)、主外键(Primary、Foreign key)、参照(Reference)、索引(Index)、视图(View)等。

在PDM中用来表示实体属性的是列(Column)。

OOM

  一个OOM包含一系列包,类,接口 , 和他们的关系。 这些对象一起形成所有的( 或部份) 一个软件系统的逻辑的设计视图的类结构。 一个OOM 本质上是软件系统的一个静态的概念模型。可以直接生成JavaBean文件。 

总结

CDM和LDM的区别有些地方解释不一样,认为概念模型中只有实体和实体之间的关系,并没有实体的属性、唯一标识这些具体的内容。但是有一点是一样的,就是逻辑模型比概念模型更详细,目的是更详尽的描述数据,使得整个概念模型更易于理解。

OOM是整个软件系统的一个概念模型,不仅仅是对数据的建模,而且从思想上也是面向对象的思想。

个人认为,一些区别可能大家理解得不一致,这是正常的,类似于“狭义”和“广义”的区别,我们只需把握住每种模型的侧重点就可以了。

在软件工程文档的数据库设计书需要有CDM,LDM,PDM三种模型。

参考:

http://www.lai18.com/content/962225.html


1.基本概念和约定

  1.1实体与属性

    实体是现实世界中可区别于其他对象的“物体”,它可能是有形或无形的,具体或抽象的,有生命或无生命的。

   每个实体有一组特征,称为实体的属性,用来描述实体的状态和特征。如:某个员工,姓名:吊丝,性别:男,这些指标表示了吊丝这个实体的各项属性。

    实体与属性之间的关系如图5-1所示。

图5-1

  1.2联系

    实体可以通过联系(Relationship)相互关联。按照实体之间的数量对应关系,通常可以将联系分为:一对一联系(One to One),一对多联系(One to Many),多对多联系(Many to Many),递归联系(Recursive Relationship)以及标识关系(Identify Relationship)等。

                                   多对多联系                                                              递归联系

  1.3域

  域(Domain)是某个或某些属性的取值范围,定义域后可以被多个实体的属性共享使用,域的定义在模型设计中具有重要意义,使得不同实体中的属性标准化更加容易。

  1.4业务规则

   业务规则反映了信息系统所描述对象的特殊的数据完整约束。一个业务规则可以是一个行业标准,一个客户需求或一本软件开发规范手册。当实体中包含的信息发生变化时,

系统都会检查这些信息是否违反了特定的业务规则。因此在创建业务规则之前,必须首先明确数据之间存在的约束关系。

2.建立概念模型

  2.1确定业务问题

  在BPM中已经明确了业务流程问题,在此基础上从中提炼出需要存储的信息。其中包括与业务有关的实体,实体间的关系,特殊的业务规则等。这些问题将成为建立CDM的基础。

  2.2建立概念模型

  (1)选择File-New Model命令,弹出如图5-2所示的窗口。选择Conceptual Data Model(概念模型)。

图5-2

  (2)单击“确定”按钮,打开如图5-3所示的CDM工作区。在工作区包括左侧的浏览器窗口,右侧的设计窗口,下侧的输出窗口和浮动的工具窗口(Palette),可以利用工具窗口中的图标在设计窗口中设计E-R图。

图5-3

  (3)建立实体及实体间的联系。

  3.CDM生成LDM

  LDM是PowerDesigner 15的新增模型,用于完成信息系统的逻辑设计。虽然LDM任然独立于DBMS的,但却可以进行外部键,索引,视图等对象的设计工作。

  CDM生成LDM的具体方法如下:

  (1)打开CDM模型,选择Tools-Generate Logical Data Model命令,打开如图5-4所示的LDM Generation Options(生成LDM的选项设置)窗口。


图5-4

  (2)选择Detail选项卡,进行其他选项的设置。

  (3)选择Selection选项卡,可以选择CDM,实体,如图5-5所示。

图5-5

  (4)单击“确定”按钮,开始生成LDM。如图5-7所示。


图5-7

    注:LDM的主要内容是介于CDM与PDM之间。

4.CDM生成PDM

  CDM完成的是信息系统的概要设计,但在数据库的物理设计阶段必须在此基础上进行详细的后台设计,只有将CDM转换成PDM才能完成该阶段的设计工作。在CDM生成PDM之前必须要选择一种DBMS作为目标数据库,CDM中定义的实体属性的数据类型将转换为目标数据库对的数据类型。

  CDM生成PDM时,其中的对象要转换成PDM中的对象,即物理数据库中的对象。

  CDM生成PDM的具体过程如下:

  (1)打开CDM模型,选择Tools-Generate Physical Data Model命令,打开如图5-8所示的窗口。在General选项中选择生成PDM的方式及参数。选中Generate new Physical Data Model单选按钮表示生成新的PDM,DBMS表示目标数据库管理系统(及版本),Name表示目标PDM的名称,Code表示目标PDM的代码。选中Update existing Physical Data Model单选按钮则表示与已经存在的PDM合并生成新的PDM。

图5-8

  (2)选择Detail选项卡,进行详细选择设置。

  (3)选择Selection选项卡,选择要转换为PDM表的实体,如图5-9所示。

图5-9

  (4)单击"确定"按钮,开始生成PDM。如果在Detail选项卡中选中Check model复选框,则在Result List窗口中将显示在处理过程中出现的警告,错误和提示信息。

  (5)根据提示对出现的警告和错误进行修改。

 (6)生成PDM如图5-10所示。如果PDM中显示的信息过多,难以阅读,可以通过更改Tools-Display Preferences命令设置以减小信息的信息。


图5-10

 5.CDM生成OOM

  当从CDM生成OOM时,PowerDesigner将CDM中的对象和数据类型转换成UML语言支持的OOM对象和数据类型。

  CDM生成OOM的的具体步骤如下:

  (1)打开CDM模型,选择Tools-Generate Object-Oriented Model命令,打开如图5-11所示窗口。

图5-11

  (2)选择Detail选项卡,进行其他选项的设置。

  (3)选择Selection选项卡,可以选择CDM,包和实体。

  (4)单击“确定”按钮,开始生成OOM。效果如5-12所示。

图5-12

6.小结

  以上通过CDM生成LDM,PDM和OOM模型,只是将系统的概要设计转化成相关的内容,为系统的详细审计生成了框架,此后还需要再LDM,PDM和OOM中进一步设计,例如:在PDM中添加存储过程,触发器,在OOM中设计用例图等。


参考:

http://blog.csdn.net/conviction_thinking/article/details/7957367



这篇关于cdm ldm pdm 区别、转化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/628960

相关文章

hevc和H.264格式的区别

HEVC(High Efficiency Video Coding)和H.264(也称为Advanced Video Coding,AVC)都是视频压缩标准,但它们之间存在一些显著的区别,主要集中在压缩效率、资源需求和兼容性方面。 压缩效率 HEVC,也被称为H.265,提供了比H.264更高的压缩效率。这意味着在相同的视频质量下,HEVC能够以大约一半的比特率进行编码,从而减少存储空间需求和

Java面试题:通过实例说明内连接、左外连接和右外连接的区别

在 SQL 中,连接(JOIN)用于在多个表之间组合行。最常用的连接类型是内连接(INNER JOIN)、左外连接(LEFT OUTER JOIN)和右外连接(RIGHT OUTER JOIN)。它们的主要区别在于它们如何处理表之间的匹配和不匹配行。下面是每种连接的详细说明和示例。 表示例 假设有两个表:Customers 和 Orders。 Customers CustomerIDCus

Eclipse+ADT与Android Studio开发的区别

下文的EA指Eclipse+ADT,AS就是指Android Studio。 就编写界面布局来说AS可以边开发边预览(所见即所得,以及多个屏幕预览),这个优势比较大。AS运行时占的内存比EA的要小。AS创建项目时要创建gradle项目框架,so,创建项目时AS比较慢。android studio基于gradle构建项目,你无法同时集中管理和维护多个项目的源码,而eclipse ADT可以同时打开

在 Java 中,JDK、JRE、JVM 分别代表什么,有何关系和区别?

在Java开发的世界中,我们会经常听到JDK、JRE和JVM这三个词。它们都与Java的运行环境以及Java程序的编译和运行有关,它们之间也存在一些关联性和区别。 什么是JDK、JRE和JVM 我们来看它们分别是什么。 JDK,全称Java Development Kit,即Java开发工具包。顾名思义,JDK是用于Java开发的一套工具包,里面包含了Java的编译器javac、

QT 中ListView和ListWidget有什么区别

ListView和ListWidget在Qt框架中都是用于显示列表数据的控件,但它们在使用方法和特性上存在一些明显的差异。以下是关于它们用法不一样的地方的详细分析: 数据管理方式: ListView:使用QAbstractItemModel数据模型来管理和显示列表数据。QAbstractItemModel是一个抽象类,允许开发者自定义数据模型以适应特定的数据结构和需求。这使得ListView在处

Transformers和Langchain中几个组件的区别

1.对于Transformers框架的介绍 1.1 介绍: transformers 是由 Hugging Face 开发的一个开源库,它提供了大量预训练模型,主要用于自然语言处理(NLP)任务。这个库提供的模型可以用于文本分类、信息抽取、问答、文本生成等多种任务。 1.2 应用场景: 文本分类:使用 BERT、RoBERTa 等模型进行情感分析、意图识别等。命名实体识别(NER):使用序列

java的clone() 深克隆与浅克隆的区别

克隆的目的:快速创建一个已有对象的副本。 克隆的步骤: 创建一个对象将原有对象的数据导入到新创建的数据中 1. Object的clone()源代码简介 [java]  view plain copy /**   * Creates and returns a copy of this {@code Object}. The default   * i

HTTP状态码中301与302的区别

一.官方说法  301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:  301 redirect: 301 代表永久性转移(Permanently Moved)。  302 redirect: 302 代表暂时性转移(Temporarily Moved )。  这是很官方的说法,那么它们的区别到底是什么呢?  1.1、什么是301转向?什么是301重定向?

什么是dB?dBm、dBc、dBi、dBd怎么计算,有什么区别?

什么是dB?dBm、dBc、dBi、dBd怎么计算,有什么区别? 引言 在电子工程、通信和音频领域,dB(分贝)是一个常见的术语。许多人刚接触时可能会感到困惑,因为它不仅仅是一个简单的单位,还有多种不同的形式,如dBm、dBc、dBi和dBd。这篇文章将详细解释这些概念,并介绍如何计算它们,帮助初学者更好地理解和应用。 什么是dB? dB,即分贝,是一种表示两个数值比值的对数单位。分贝的基

工程师 - status和state的区别

"Status"和 "state"是相关的概念,但有不同的含义,尤其是在计算、系统和编程方面: 1. Status:     * 定义: 状态是指系统、进程或实体在某一特定时间点的当前状态或情况。     * 使用方法: 它通常描述一项操作的状态,如是否正在进行、是否已成功完成、是否遇到错误或是否正在等待输入。     * 举例说明: 在编程中,函数可能会返回一个状态代码,