- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ORACLE8 UML 对象建模设计12.pdf
下载
第12章 循 环 结 构
类形成闭环的情况是很常见的。当经过一系列的关系后回到初始类时就存在一个循环结
构。必须仔细考察循环结构以分清这些结构代表了什么含义,以及如何对它们形式化地建模。
最简单的循环关系是递归结构,即一个类与自己挂接在一起。循环关系这种特殊类型的规范
在第1 0章已有更详细的讨论。在这里将讨论几种常见的循环结构。
有些建模者努力避免采用循环结构。 I D E F建模认为循环结构是非法的。然而,还是不能
轻易忽略循环结构。实际上,在数据模型中不采用循环结构排除了很多为与数据相关的业务
规则建模的可能。
因为本书提倡一般方法,以及第 1 6章中更完整的介绍,因而本书中有很多循环结构的例
子。本章将讨论循环结构带来的问题以及如何有效地处理这些问题。
12.1 循环结构举例
图1 2 - 1展示了大学或学院系里有关课程设置的经典例子。指定日期和时间的特定课程分配
给特定的教授(P r o f e s s o r ),该教授被一个或者多个系(D e p a r t m e n t )聘用。该模型本身没有任
何错误,但需要注意它隐含的业务规则,即该模型结构隐含地认为任何一个教授都可以为任何
系的任何课程授课。这是现实情况吗?该业务规则是否适合源于模型的循环结构?注意
D e p a r t m e n t和O ff e r i n g之间为什么存在两个依赖—一个通过C o u r s e ,另一个通过E m p l o y m e n t 。
这种结构上的冗余将导致我们怀疑D e p a r t m e n t和Course Off e r i n g之间关系的本质。像前面提到的
一样,模型隐含地认为这两个关系是完全独立的,因此,任何一个教授都可以教授任何一门课。
图12-1 简单的循环结构
为了实现更加严格的业务规则,如“教授只能教授目前聘用他的系里的课程”,这就需要
书写一个触发器。
164计计第三部分 基 本 建 模
下载
图12-2 教授/课程模型
这种触发器可以放在 Course Of f e r i n g
表中,以实现该业务规则。在 O r a c l e 中,
有很多实现这种业务规则的方法。如果把
模型改成图 1 2 - 2 中的样子,则D e p a r t m e n t
表中的主码D e p t N o将通过两条路径进入表
Course Of f e r i n g 。这就要增加一个简单的
约束,保证两个系号相等。
该模型也可以通过在两个约束中共享
Course Of f e r i n g表中的系号(列)实现。
然而,这样就不能通过传统的参照完整性
而需用触发器来实现业务规则了。
一旦选择了循环结构来使自己发现问
题,最终结果可能是改变模型。大学可能
会采用这样的业务规则,教授要么只在本
系授课,要么经过某种特殊的许可在外系
授课。如果真的采用这种业务规则,则把
模型改成图 1 2 - 3的样子。
采用这种结构,教授要么通过他在系
里的聘用关系显式地安排某一门课程,要
么通过某个教学许可安排某门课程。这里
还是需要触发器来解决循环结构的问题
(以保证教授某门课程的授权是正确的)。
如果授权由系里进行,必须保证是正确的
系进行的授权。采用这个结构确实使有效
地表达业务规则成为了可能。实际上,
U M L 就有表达这种复杂约束的语法,大部 图12-3 修改后的教授/课程模型
第12章 循 环 结 构计计165
下载
分是通过用点线连接到类上的文本框表示的。当前还没有哪个产品能真正把这些约束生成代
码,而且将来大概也不可能有产品这样做。如果有 U M L产品支持这种语法,那么在数据模型
中包括这种约束是有用的。否则,数据模型只能表示与数据相关的业务规则的一个子集。
12.2 使用对象I D
对象I D提供了比外码更加清晰的实现,如图 1 2 - 4所示。
该模型中有General Agents和In
文档评论(0)