随锐旗下互动传媒:

用UML设计数据库应用

http://www.weaseek.com  2008-08-15 11:09:40  来源:搜讯网

图15摘录于我们的在参考文献3的财务案例学习。我们用资产超类来统一某些没有显示在摘录里的通用的数据和功能。一项资产可以是一支股票或股票期权。一支股票可以有许多它的股票期权。例如,IBM股票可以有许多写明达到价格和过期日期的期权。

图15 参考完整性和泛化的例子。

我们推荐的泛化实现是单独的表 - 映射该超类和每个子类为一个表。然后,我们就可以使用参考完整性使股票期权和股票的记录依赖于资产。一个资产记录的删除级联到相应的子类记录、股票期权或股票的删除上。我们也能够定义一个参考完整性动作,这样一个股票的删除就级联到关联的股票期权记录的删除。

现在问题如下:如果我们删除的一项资产是一支股票,资产记录的删除级联到引起股票记录的删除。随后,股票记录的删除级联引起所有股票期权记录的删除。但现在参考完整性使我们失败了:一条股票期权记录的删除并不引起一项资产记录的删除。删除级联只能从超类走到子类。为了完全的行为,级联应该双向地走下去。

当前有用的参考完整性的工作是做更多的编程(也即做更多的工作和承担更多的故障风险)。在我们的案例学习的实现里,用户随时要删除一项是股票的资产,我们不得不书写额外的代码来首先检查关联股票期权的存在性,然后删除它们。

支持交叉表的记录划分。单继承(泛化的最常见方式)的含义是一个超类的每个实例都是用最多一个子类来例示。现在的RDBMS不能容易地加强这个约束。例如,没有什么防止下面的情形。一支股票可以用ID18加入到资产表,用ID18加入到股票表,并且也可以用ID18加入到股票期权表。再一次地,我们为了确信行为的完整,不得不作额外的编程,而不是写一个简单的声明约束。

5. 结论

本文陈述了用关系型数据库实现UML模型的快速的概观。我们希望本文向你演示的技术是十分适用的。一个训练有素的开发人员能够用关系型数据库准备一套优秀的OO模型的实现。如果你要关于实现机制的更多的细节,参考3有另外的信息,并且也覆盖了我们没有在这里讨论的一些高级模型建模结构。

[责任编辑:梧桐]热门关键词: UML 数据库