: .
쿂퓘
产品支持这种语法,那么在数据模型
中包括这种约束是有用的。否则,数据模型只能表示与数据相关的业务规则的一个子集。
使用对象I D
对象I D提供了比外码更加清晰的实现,如图 1 2 - 4所示。
该模型中有General Agents和Insurance Companies,一个代理可能代表几个保险公司。当发
布一项政策时,它要么直接通过保险公司执行,要么通过代理实行。在传统的关系型实现中,
保险公司的标识符将通过两个途径与保险政策相关。采用 O I D时,标识符将与保险公司记录关
联或与代理联系记录关联。采用传统的关系型实现,可以如图 1 2 - 5那样重新建模图1 2 - 4。
图12-4 ��������������-�������������©
图12-5 保险代理的传统关系型实现举例166计计第三部分 基 本 建 模
下载
本例中,保险政策总是直接从保险公司发出或者有选择的从代理发出,这就需要一个保
险政策上的约束,来保证代理与保险公司存在某种联系。该模型也存在某种吸引力,因为如
果使用了O I D,则存在一个到保险公司的直接连接。在第一个模型中,有两个要担心的路径,
因而最好的模型是在图 1 2 - 6中。
从物理实现的观点看来,第三个模型是使用 O I D的最好模型。一项政策必须与一个保险公
司相联系,而可选择地与一个代理相联系。哪个模型是最好的依赖于设计目标:
■ 第一个模型(图1 2 - 4)在逻辑上是最正确的。
■ 第二个模型(图1 2 - 5)在关系型数据库中能被最好地实现。
■ 第三个模型(图1 2 - 6)是使用O I D时最好的模型。
图12-6 保险代理的对象关系型实现举例
分析时最好从第一个模型开始,然后不断进化到第二个或第三个模型,这依赖于实现的
选择。
循环结构的一般化
有时,一般化会导出很有趣的循环结构。图 1 2 - 7包含贷款( L o a n s )和偿还( P a y m e n t s)的
模型中,对一个贷款一般存在简单的偿还。在传统系统中,每一笔贷款有多次偿还。然而,
存在一些特例,如一个公司可能同时偿还多笔债务。
左边的模型展示了信息的逻辑结构。既然除了关系,简单的和成组的偿还是一样的,模
型的物理实现在本质上也就是一致的。实施该规则的触发器很复杂,需要保证在任何时候这
些关系中只有一个被触发。
循环结构的实现
如果图 1 2 - 2的意图是要教授所在的系与提供该课程的系一致的话,则您可能认为只需要
一个额外的检查约束来验证两个独立的 D e p t N o列具有一致的值。然而,检查约束不能参照其
他列。因此,基于给定的数据结构,代码 1 2 - 1中显示的触发器是需要的。第12章 循 环 结 构计计167
下载
图12-7 循环结构模型
代码 1 2 - 1168计计第三部分 基 本 建 模
下载
如
循环结构 来自淘豆网m.daumloan.com转载请标明出处.