1 引言
ER模型图中有三大主要元素:实体型,属性和联系。其中实体型对应到CDM中的Entity,属性对应到CDM中每个Entity的Attribute,在概念上基本上是一一对应的。但在联系的处理上,CDM除了保留ER图原有的RelationShip概念之外,还增加了Associ ati on,Inheritance两种实体关系。图1给出了工具栏中三个联系工具图标的位置。
图1 PowerDesign中CDM模型元素工具栏
本文将从简单的CDM模型图入手,对这些CDM元素进行阐述,试图包含所有数据库建模必须环节。
2 CDM模型
以简单的学校场景的为例,给出图2所示的CDM模型,该图中所有元素在后面建模均有覆盖,以体现最小集与完备性。
图2 学校场景的CDM模型
2.1 RelationShip(联系)
CDM模型中的联系给出了简单定义,但如此简单的定义反而让人难以区分现实世界实际存在的一些复杂情形。
当提起实体间联系的时候,首先想到的是one to one,one to many和many to many这三种联系类型,在Hibernate和IB atis这两种居统治地位的ORM框架中也沿用了这三种类型。在CDM中,联系还有另外三个可以设置的属性:Mandatory(强制性联系),Dependent(依赖性联系/标定关联)和Domi nant(统制联系)。这些属性对后面PDM的生成都有比较大的影响,需要精确理解。它们都是在联系的属性控制面板中设定的,图3所示。
图3 联系属性控制面板
2.1.1 Mandatory强制性联系
联系是否具有强制性,指的是实体间是不是一定会出现这种联系;或者换句话说,当我们在谈及一个联系的应用场景的时候,联系对应的那两个实体型的实体实例的个数可不可能为零。也许这样的解释还是有点抽象,让我们举两个联系的例子,一个是对两边的实体都有强制性的,另一个则不然。
(1)教师——学生联系
这个联系首先是一个多对多联系,因为每个老师可以教多个学生,每个学生也都有多个老师来负责他们的学业。同时,这个联系对教师和学生都是强制性的,也就是说,不存在任何一个老师,他不负责任何一个学生的教学;也不存在任何一个学生,他没有任何一个任课老师。
(2)学生——俱乐部联系
这也是一个多对多关系,但它对学生这个实体型而言就不是强制的(Optional,可选的)。每个俱乐部都有至少一个学生参加,但并不是每个学生都要去参加俱乐部的活动。完全可以有一些学生,他们什么俱乐部都没参加。
上面的例子从概念的角度来区分了Mandatory和Optional的区别。如果把这个模型对应到我们最后生成的表,如果A-B间的联系对A是Mandatory的话,那么如果在A里面如果包含B的外键,这个外键不能为空值,反之可以为空值。
2.1.2 Dependent
每一个E ntity型都有独立的Identifier,若两个Entity型之间发生关联,其中一个Entity型的Identifier进入另一个Entity型并与该Entity型中的ld en tifi er共同组成其lden tifi er时,这种关联称为标定关联,也叫依赖性关联(Dependent Relationship)。一个Entity型的Identifier进入另一个Entity型后充当其非Identifier时,这种关联称为非标定关联,也叫非依赖关联。
上述叙述表达的就是主,从表关系,从表要依赖于主表。比如在我们系统里要记录教师休假的情况,有一个实体型H oliday,其属性包括休假的开始时间和天数,每次有教师休假的时候,都要在这个表留下记录。从我们的场景描述中可以看到,实体型假期必须依附于实体型教师,即对于每一个假期实例,必须指向某一个教师实例。
对于依赖型联系,注意它不能是一个多对多联系;如果是多对多关系,需要简单的将其转换为两个主,从表的多对一关系。在这个联系中,必须有一个作为主体的实体型。一个Dependent联系的从实体可以没有自己的Identifier。
2.1.3 Dominant依赖性联系
这个联系属性是最简单的,它仅作用于一对一联系,并指明这种联系中的主从表关系,习惯上称之为标定关联。在A,B两个实体型的联系中,如果A→B被指定为Dominant,那么A为这个一对一联系的主表,B为从表,并且在以后生成的PDM中会产生一个引用(如果不指定Dominant属性的话会产生两个引用)。比如老师和班级之间的联系,因为每个班级都有一个老师做班主任,每个老师也最多只能做一个班级的班主任,所以是一个一对一关系。同时,我们可以将老师作为主表,用老师的工号来唯一确定一个班主任联系。
2.2 Association(关联)
A ssoci ation给出的定义出现了许多RelationShip,也就是2.1中给出的联系。在很多情况下(特别是多对多关系中),我们会把联系专门提出来,作为一个实体型放在两个需要被关联的实体型中间(在PD中,选中任何一个联系,在右键的弹出菜单中选择“Change to Entity”命令即可完成联系转实体的操作)。类似的做法,在UML的通用建模工具Rational Rose中定义了Association Class来建立ORM映射日。但有时,把若干个实体型之间的联系抽象为一个实体型可能不太合适,这时可选择为这些实体型建立一个Association,那么在生成PDM的时候,所有这些相关实体型的Identifier都会被加入到Associ ati on对应生成的表模型中。
更贴切的理解,其实Association是实体型的一种特例,用来在建模的时候更确切的表达实体间的关联信息。在本文的学校模型里,定义了家访做为老师和学生实体型中间的一个A ssoci ati on,在接下来产生的PDM中能看到这种定义所产生的效果。
2.3 Inheritance(继承)
非常简但的IS-A关系模型。
3 PDM模型
前面给出了CDM中关于实体间关系的主要内容,接下来将探讨CDM→PDM。
图4为对应图3的PDM模型,图4中标红的部分都是由于对实体型间的关系的定义而产生的,下面给出简要说明。
1.“师生关系”和“学生俱乐部”这两个表是由于我们的多对多关系而产生的。
图4 对应的PDM模型
2.“假期”表的“工号”字段是由于我们将教师,假期关系指定为Dependent而产生的。
3.“班级”表的“工号”字段是由于我们将教师.班级关系制定为Dominant而产生的。
4.“家访”表中的“工号”和“学号”字段是由于家访是教师和学生实体型的A ssoci ati on而产生的。
此外,在2.1.3节中提到,一个没指定Dominant方向的一对一联系将产生两个引用,因此需要把原本的CDM中的教师,班级关系进行一个修改,去掉这个Relation Ship的Dominant定义,那么最终产生的PDM中教师表和班级表将互相包含对方的主键。截图如下:
图5 修改后的PDM模型局部
对照图5和图4两个PDM模型的区别,容易得看出Dominant属性对一个一对一关系的作用。
4 小结
PD建模遵循着第一步严格精确设计,后继自动化演化生成的原则。因此CDM模型的完备性与精确性至关重要。CDM模型最复杂难以把握的是其对联系的扩展。本文从PD Online在线文档出发,对CDM和PDM建模作了清晰的路线图阐述,给出了完整的实例。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/