CDM和PDM的区别?

本文探讨了CDM(概念数据模型)和PDM(物理数据模型)的区别。CDM专注于数据库的整体逻辑结构,而PDM考虑了物理实现细节,包括表、列、键、索引等。在CDM中,通过定义域来统一数据结构,并在建立实体和关系时应用。在转换为PDM时,实体关系如一对一、一对多、多对多会映射为表的主键和外键。此外,文章还提及了子模型和继承关系在数据模型中的作用。

CDM和PDM的区别? 概念数据模型(CDM) 
信息系统的概念设计工具,即实体-联系图(E-R图),CDM就是以其自身方式来描述E-R图。此时不考虑物理实现的细节,只表示数据库的整体逻辑结构,独立于任何软件和数据存储结构。 物理数据模型(PDM) 
PDM考虑了数据库的物理实现,包括软件和数据存储结构。 
PDM的对象:表(Table)、表中的列(Table column)、主码和外码(Primary & Foreign key)、参照(Reference)、索引(Index)、视图(View)等。 下面通过创建一个CDM项目的过程来谈一下我对CDM的认识 
1. 创建一个CDM项目,设置其属性。 
2. 定义域(Domain):一般在开始之前,我们要为CDM模型定义一些域,域的作用有些像元数据,它定义了某一类数据的数据结构。通过定义一个域,你就定义了一种数据结构,你可以在项目中引用它。这样做的好处时,一旦你改动了一个域的属性,整个项目中所有引用处都跟着改变。例如,你定义一个名称为my_money的域,数据类型为money,整数位数为8,小数位数为3。你在数据项(DataItem)pay和get中引用了money的域后,该数据项的数据类型自动变为money。如果某一天你增加money类型的小数位数,那么你只需要改一下my_money这个域,所有引用了my_money这个域的数据项的数据类型都将改变。 
3. 建立实体:建立一个实体后,设置属性,修改名称,增加attributes,每一个attribute在CDM中就是一个数据项(DataItem),转换成PDM后就像当于表中的一个字段。在属性栏里你可以对任意一个attribute设置它的一些特性。分别是DataType,Domain,M,P,D。DataType就是数据类型,如果引用了域就不需要设置。Domain就是引用域。M,P,D分别是:是否必填,是否为主键,是否可显,这三个属性可多选,当你选择P后,M也自动选择,同时在Identifiers里也多出一个标识符。标识符的作用也比较大,在relationship中,是以它为对应。 
4. 建立联系(relationship):选择relationship后进行拖拉可在两个实体间建立一种联系,双击联系将显示其属性,可在其中设置两个实体之间的关系,这些关系包括,一对一,一对多,多对一,多对多。例如,class表和student表,是一对多关系,这种一对多的实体关系转换成PDM后,第一个实体的主键将做为第二个实体的外键存放,例如class表的主键class_id将作做studuent的外键。 
5. 建立子模型:子模型相当于我们平时所说的实体关系表,ER图中的菱形部分。子模型用在多对多关系中。如class表和teacher表,它们之间就是一个多对多关系,为实现这两个实体之间的联系就需要建立一个子模型,建立子模型用association link将多个实体联系起来。PDM中子模型也是一个物理表,与它联系的每个实体的主键都是子模型表的字段。同时子模型也可以增加一些其它的attribute。 
6. 建立继承关系:继承关系与我们在编程中的继承类似,以父实体为基准,所有子实体将拥有父实体中的所有attribute。子实体中可定义其它attribute,以区别于其它子实体。(对继承关系的应用我有些糊涂,在ER图中也找不到其对应的模式。关于其父表是否有存在的价值,我与同事探讨了一下,没有结果。还望各位高手不惜赐教。)

### 创建 CDM PDM 图的教程 在 PowerDesigner 16.5 中,创建概念数据模型(CDM物理数据模型(PDM)是数据库设计的核心步骤。以下是关于如何在 PowerDesigner 16.5 中创建 CDM PDM 的详细说明。 #### 创建 CDM(概念数据模型) 1. 打开 PowerDesigner 软件后,选择“Create Model”以创建新模型[^2]。 2. 在弹出的对话框中,选择“Conceptual Data Model (CDM)”作为模型类型,并为模型命名[^3]。 3. 在 CDM 编辑器中,可以通过工具栏或右键菜单添加实体(Entity)、属性(Attribute)关系(Relationship)。每个实体代表数据库中的一个表,属性代表表中的列[^1]。 4. 设置实体的主键(Primary Key),这可以通过在属性列表中选择合适的属性并将其设置为主键来完成。 5. 定义实体之间的关系。通过拖动一个实体到另一个实体上,并选择合适的关系类型(如一对一、一对多等),可以建立实体间的关联。 ```python # 示例代码:定义一个简单的实体及其属性 entity = { "name": "Customer", "attributes": [ {"name": "CustomerId", "type": "integer", "is_primary_key": True}, {"name": "Name", "type": "string"}, {"name": "Email", "type": "string"} ] } ``` #### 创建 PDM(物理数据模型) 1. 在已有的 CDM 基础上,选择菜单中的“Tools > Generate Physical Data Model”选项,以生成对应的 PDM 模型。 2. 在弹出的对话框中,选择目标数据库管理系统(DBMS),例如 MySQL、Oracle 或 SQL Server 等。这将决定生成的 PDM 的语法特性。 3. 在 PDM 编辑器中,可以根据需要进一步调整表结构、索引、约束等物理特性。 4. 使用“Tools > Generate Database Creation Scripts”功能,可以生成用于创建数据库的 SQL 脚本文件[^3]。 #### 注意事项 - 在创建 CDM PDM 的过程中,确保实体属性的命名符合数据库设计的最佳实践,避免使用保留字或特殊字符。 - 如果需要从现有的数据库反向生成 PDMCDM,可以使用 PowerDesigner 的“Reverse Engineer”功能。 ```sql -- 示例 SQL 脚本:创建一个简单的表 CREATE TABLE Customer ( CustomerId INT PRIMARY KEY, Name VARCHAR(255), Email VARCHAR(255) ); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值