05.概念数据模型CDM
Posted oldmao_2000
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了05.概念数据模型CDM相关的知识,希望对你有一定的参考价值。
文章目录
CDM概念
CDM表达的是数据库的整体逻辑结构,该结构独立于任何软件和数据存储结构,即它只是系统分析人员、应用程序设计人员、维护人员和用户之间相互理解的共同语言,并不针对具体的数据库平台(如Oracle或SQLServer)和工具(PowerBuilder)
实体(entity)
实体是现实世界中可区别于其他对象的“物体”,它可能是有形或无形的,具体或抽象的,有生命或无生命的。
每个实体有一组特征,称为实体的属性,用来描述实体的状态和特征(实际上就是Data Items)。
域(domain)
域(Domain)是某个或某丝属性的取值范围,定义域后可以被多个实体的属性共享使用域的定义在模型设计中具有重要意义,使得不同实体中的属性标准化更加容易。通俗的比喻,域就是数据类型的抽象。域在很多模型中都有出现。
联系(relationship)
实体可以通过联系(Relationship)相互关联。
按照实体之间的数量对应关系,通常可将联系分为:一对一联系(One to One)、一对多联系(One to Many)、多对多联系(Many to Many)等。
例如:
注意Mandatory选项:
一对一双向关联模型
几个模型是可以相互转化的,这里看下CDM转LDM的效果
对比一下两个模型
CDM
LDM
可以看到用户表和护照表分别都出现了对方的主键,也就意味着将来生成数据表后,可以通过护照查询用户,也可以通过用户查询护照。这个查询是双向的,下面看单向的咋整。
一对一单向关联模型
这个是一对一关系才有的设置,对于一对多模型,主表已经定好了,都是从表保存主表的主键。具体设置看下面:
这里的设置表示用户才是主表。
可以看到用户表一侧有一个大写的字母D表示主表(Dominant role),如果是直接用的双向管理中的实体,会有问题,原来的实体已经有关系,因此需要将实体进行拷贝,实体下面的数据项可以不用重命名可共用:
对象浏览器中是这样:
最后生成LDM的结果如下:
一对多关系
一般是从主表画向从表,当然从从表画到主表也可以,但是需要在关系属性页面修改cardinalities(最后得到是多对一关系)。例如下面的部门与员工实体:
如果实在搞不明白可以看最上面的描述:
Each部门must have one or more员工
Each员工must have one and only one部门
生成LDM:
多对多
多对多关系是先创建一对多关系,然后在关系属性页面修改cardinalities,例如下面的学生与课程的关系:
生成LDM的结果如下:
可以看到这里生成了一个中间表,中间表的字段分别是学生表和课程表的pi项。
中间表的主键是由两个字段组成的联合主键。
这里我们不需要在中间表存放额外的信息,因此可以直接设计多对多关系,如果我们需要存放额外信息就要将多对多关系拆分设计为两个一对多关系,例如:我们需要保存学生每门课程考试的分数,此时需要手动添加课程考核实体。
生成LDM:
发现在生成的LDM中,考核信息中间表中没有主键,这里有两种解决方案:
第一种是在考核信息中间表设置自己的主键,学号和课程编号做外键;
第二种是在CDM的一对多关系中设置依赖关系:
设置了依赖关系后,主表的主键就会以主键的身份出现在从表中,我们将考核信息表的两个主表的关系中都设置上依赖关系:
可以看到有依赖关系的实体会出现小三角形。
再次生成LDM:
考核信息表中现在有了联合主键。
实体继承
最常见的实体继承场景就是多用户系统,一个系统通常会有不同用户或角色,每个用户有相同的属性或字段,也有不同的属性。在PD的CDM里面可通过设置继承来完成不同的多用户表设计。下图为一个父表三个子表继承的例子:
法一 :生成各自子表
各自生成对应表,在继承关系属性页中不勾选生成父表。
生成LDM的结果如下:
可以看到子表中都从父表拷贝了对应字段,在PDM中父表将会消失。
法二:只生成父表,加字段区分子表类型
1.在所有继承关系中不勾选Generate children;
2.仅需在其中一个继承关系中加区分子表类型的字段。
生成LDM如下:
在最终的PDM中子表将不会出现,只有主表。
法三:主从表都要,靠外键关联
在继承关系属性页中勾选生成父表和子表,但单选框中选择只继承主键即可。
最后生成LDM如下:
以上是关于05.概念数据模型CDM的主要内容,如果未能解决你的问题,请参考以下文章
数据库——概念模型(CDM)逻辑模型(LDM)物理模型(PDM)
数据库——概念模型(CDM)逻辑模型(LDM)物理模型(PDM)
概念数据模型(Concept Data Model,CDM)逻辑数据模型(Logical Data Model,LDM)物理数据模型(Physical Data Model,PDM)概念(示例代码