词条 | 对象关系模型 |
释义 | 概述面向对象(OO)和三范式(3NF)都是成熟的设计方法,本文基于面向对象设计思想和三范式数据库设计方法,提出一种实体对象分层建模的思路,其目的是设计简单明了、标准化的数据库结构,同时能够更好的支持模型驱动模型(MDA)的代码自动生成和代码复用,减少代码编写工作量。 业务对象(BO)包含复杂的逻辑关系,通过对业务对象及实体对象之间的关系的分析,将对象的关系简化为对象基本关系、对象变更关系、对象汇总关系、类别对象关系等,针对对象数据不确定的对象,建立属性不确定对象关系。除了对象之间的关系外,本模型增加了一个附加对象层,包含树装结构、时间结构等,用于处理一个特殊的业务需求。 在本模型中,实体对象基本关系是核心,确定了基本关系,也就把数据库的整体框架搭建起来了,其他模型可以看作仅仅是一个范式,在设计数据库的时候选择一个范式即可。本文虽然是以实体对象进行建模,但是其和业务对象是对应的,所以其关系模型也适应于业务对象。 基本关系模型标准元实体对象:实体对象完全独立,不依赖于任何其他的实体对象,典型标准元实体对象如组织机构、国家等内容。标准元实体对象完全独立,有标准的编码体系(一般都有企业标准、国标或者国际标准),不会因为在不同的系统不同有不同编码体系。标准元实体对象只有一个主键。元实体对象:独立的实体对象,和标准元实体对象不同,一般没有一个唯一的标识符,需要增加一个唯一标识符(比如单位编码,需要制定一个编码规则,主要目的在于未来数据合并的时候不会因为多个系统合并而使得数据重复),然后才能唯一标示对象。元实体对象是建模中最基本、最核心的对象。如客户,订单、流程等,是业务逻辑、对外接口的核心实体对象。标准元实体对象是有标准编码体系特殊的元实体对象。关联实体对象:标准元实体对象、元实体对象之间的关联对象,有些仅仅是简单的关联,有些关联对象中含有其他的业务信息。前者仅仅是对应关系,后者包含对应关系的其他属性。如具体一个公司的商品价格信息,是实体对象-商品和组织机构关联之后的信息。关联对象本身也是一个特殊的实体对象。关联实体对象主键一般是两个或者两个以上,一般来说,应该尽量减少关联对象的主键数量。根据实体对象(含元实体对象和关联实体对象)数量增长的快慢,可以把实体对象分成基础实体对象和流水实体对象,前者实体对象一般变化缓慢,如客户数据(比较重要的基础元实体对象一般对应着的是主数据),后者变化快,如订单数据等。 除了以上基本关系之外,还有一些特殊的实体对象关系,包含附属关联实体对象、主从关联实体对象等 附属关联实体对象:实体对象的附属信息,和实体对象是一对一或者一对多关系。一对一关系一般是为了把一个属性太多的对象分解成多个(在IDA中可以用继承来描述);一对多关系采用增加序号的方式,增加多条信息。如人员的学历、工作经历等。不同于关联对象,其只是简单的序号的增加。订单可以以客户编码和流水号作为主键,但是这种有流水号主键的一般是可以将几个主键合并为一个主键,如果能合并为一个主键,则合并为一个主键,从而简化模型的层次。附属关系一般是为了解决简单一对多的附属信息,如果附属对象需要复杂的业务逻辑,需要将多个主键合并为一个主键。分身附属关联实体对象,如果不同的业务领域,不同的组件之间,为了增加复用,采用增加表而不是字段的方式,减少组件间的耦合。分身附属关联实体对象,是一种特殊的附属关联实体对象、主从关联实体对象:关联实体对象的一种特殊情况,关联的两个对象之间有强烈的主从关系,如订单和订单项等。主从管理实体对象一般从对象内容有限,在软件实现中一般以单据方式进行展示。 变更对象关系模型实体对象属性变更,对属性变化的历史进行记录。根据记录的先后顺序可以分成两种:采用申请单的方式,先记录变化的信息,然后更改实体对象;监控对象变化,变化之后记录变化之后的属性。对于不重要的属性可以选择不记录变更情况。实体对象整体变更,对实体对象的变更情况整体记录,记录更改后的完整信息,一般适合于流水元实体对象,用于记录流水对象的变化情况。实体对象快照,为了便于记录历史信息,可以完整的还原当时的场景,记录当时所有实体对象的信息,作为实体对象的快照进行管理。快照不同于后文所述的汇总表,快照仅仅是对原始对象的原样备份,汇总表则是实现对内容“汇总”之后的记录。实体对象操作痕迹化管理,对于一些关键业务数据,业务上需要保留操作痕迹,比如订单数量修改和删除需要记录相应的信息。采用两种方式来解决,一个是不允许删除实体对象,只做实体对象除删除标记,适用于整条记录删除的情况;对于记录变更的情况,采用增加一个废弃实体对象,记录实体对象的修改记录。 对于变更信息,在一些特殊的情况下需要增加一个变更审批,记录变更信息的审批确认情况,从而实现痕迹化管理,一般来说需要结合流程管理。 不定属性关系模型不定属性实体对象属性多变,没有固定的属性,需要灵活处理每个对象的属性,典型的如考核指标,不同的部门、不同的公司指标的差异非常大,因此需要按照每个指标的类别,在行上进行存储。一般来说,指标本身是一种树,指标本身有关联。 不定属性对象其特点和一般的实体对象一样,其特殊之处在于其属性是变化的,对象实例化的时候,对象是存储是在行上存储的。 如果属性数量是明确的,但是不同类别实体对象具有的属性不同,可以通过继承或者关联关系建立附属关联关系。比如商品信息,分别建立消费品商品信息、电器商品信息等,用与分别记录其不同的信息。 如果属性相对来说是稳定的,但是存在变化的可能,则需要考虑实体对象属性动态增加的模式。比如工资条,存在着工资条内容的增减,因此需要特殊考虑。 本模型以面向对象的分析为基本方法,首先找出业务对象(BO),然后基于范式理论把业务对象转化成实体对象(PO),并进行分类分层管理,根据主键的特点,设置实体对象的基本层级,最终建立实体对象分层模型。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。