深入理解对象角色建模(ORM)
立即解锁
发布时间: 2025-08-23 01:29:47 阅读量: 2 订阅数: 16 

# 深入理解对象角色建模(ORM)
## 1. 什么是对象角色建模(ORM)
对象角色建模(Object-Role Modeling,ORM),也被称为面向事实建模,是一种概念性方法,用于对业务领域的信息语义进行建模和查询。它基于业务领域中人们感兴趣的潜在事实,所有的事实和规则都可以用业务领域的非技术用户容易理解的语言来表达。
与实体 - 关系(ER)建模和统一建模语言(UML)类图不同,ORM将所有事实都视为关系(一元、二元、三元等)。如何将事实分组到各种结构(如基于属性的实体类型、类、关系模式、XML模式)中,被认为是设计层面和实现层面的问题,与捕捉基本业务语义无关。
### 1.1 ORM的优势
- **语义稳定性**:避免在基础模型中使用属性,可以最大程度减少因需要记录属性相关信息而带来的变更影响。
- **自然语言表达**:所有事实和规则都可以轻松地用领域专家能够理解的句子表达出来。
- **可填充性**:可以方便地在事实表中提供示例事实填充。
- **避免空值**:基础事实类型的填充中不会出现空值,这些事实类型必须是基本的或存在性的。
虽然无属性的图表通常会占用更多空间,但使用ORM工具可以轻松克服这一明显的缺点,它可以自动创建基于属性的结构(如ER、UML类或关系模式),作为ORM模式的视图。
### 1.2 ORM相关的“方言”
面向事实建模方法包含一系列密切相关的“方言”,包括对象角色建模(ORM)、自然语言信息分析方法(NIAM)和全通信导向信息建模(FCO - IM)。此外,虽然没有采用ORM图形符号,但面向对象系统模型(OSM)和对象管理组织(OMG)内的业务词汇和业务规则语义(SBVR)倡议,都秉持无属性的理念,与ORM密切相关。
## 2. ORM的历史背景
### 2.1 早期发展
- 1973年,Falkenberg将Abrial和Senko关于二元关系的工作推广到n元关系,并在概念层面排除了属性,以避免“模糊”的区分并简化模式演变。后来,他提出了基本的ORM框架,称为“对象 - 角色模型”。
- Nijssen对该框架进行了改编,引入了对象和角色的圆框符号,并增加了语言导向和设计流程,提供了一种名为ENALIM(演进自然语言信息模型)的建模方法。他在比利时Control Data的研究团队进一步发展了该方法,van Assche将对象类型分为词法对象类型(LOTs,现在通常称为“实体类型”)和非词法对象类型(NOLOTs,现在称为“值类型”)。
- Meersman为该方法添加了子类型,并与Falkenberg和Nijssen一起为RIDL查询语言做出了重要贡献。该方法随后被更名为“aN信息分析方法”(NIAM),现在被称为“自然语言信息分析方法”。
### 2.2 后续发展
- 20世纪80年代,Nijssen和Falkenberg致力于设计流程,并搬到了昆士兰大学。在那里,Halpin进一步增强了该方法,提供了第一个完整的形式化,包括模式等价证明,并进行了一些改进和扩展。
- 多年来,许多研究人员为面向事实的方法做出了贡献,如今存在各种版本,但都遵循基本的对象 - 角色框架。例如,Habrias开发了一个面向对象的版本MOON(规范化面向对象方法);ter Hofstede等人开发的谓词集模型(PSM)包含复杂的对象构造器;De Troyer和Meersman开发了带有构造器的自然对象 - 关系模型(NORM);Halpin开发了一个扩展版本,简称为ORM,并与Bloesch等人开发了相关的查询语言ConQuer。Bakema等人将所有实体类型重新表述为嵌套关系,产生了全通信导向NIAM,后来将其修改为全通信导向信息建模(FCO - IM)。
- 最近,Meersman等人使用名为DOGMA(开发基于本体的方法和应用)的框架,将ORM应用于本体建模。Nijssen等人将NIAM扩展到一个名为NIAM2007的版本。Halpin等人开发了第二代ORM(ORM 2),本文使用的就是它的图形符号。
## 3. ORM的基础
### 3.1 ORM的组成部分
ORM包括用于在概念层面建模和查询信息的图形和文本语言,以及设计概念模型、在不同概念表示之间进行转换、将ORM模式正向工程到实现模式(如关系数据库模式、面向对象模式、XML模式和外部模式)以及将实现模式逆向工程到ORM模式的程序。
### 3.2 事实类型表达
ORM不使用属性作为基础构造,而是将所有事实结构表示为事实类型(关系类型),包括一元(如“Person smokes”)、二元(如“Person was born on Date”)、三元(如“Person vi
0
0
复制全文
相关推荐










