关于关系数据库理论的疑惑

07-01-31 acqy
banq您好!

我非常同意您在数据持久层上面的见解,我也想过这样的问题:软件系统的分析与设计为什么要从数据库设计开始。

或许是关系型数据库的本质特征所决定的,它着重于数据的持久化以及数据与数据间的关系,但其还没有达到值对象的层面。

我想请问您的是,如何理解数据库中的关系理论?数据库只是提供数据持久化的机制,那么在做领域建模的时候,难道还要去考虑实体间的关系吗?换句话说,ORM中的R是如何体现的?

谢谢!期待您的答复!

banq
2007-02-01 10:03
>领域建模的时候,难道还要去考虑实体间的关系

以对象关系替代数据库实体之间关系,对象关系有依赖 关联 继承 和实现,非常丰富,关联关系有1:N或者N:1,特别是1:N关系,对象表达很合理,符合自然,而数据库关系只能在多方增加一个关系字段,而不是象对象关系在1方表示,这就绕弯了。

在致面向对象技术初学者的一封公开信一文中:

http://www.jdon.com/article/30840.html

Cockburn也说了,对象关系表达多对多关系是数据库所不能,当然,实际多对多我们也很少用到。

所以,在领域建模时,无需涉及ORM的R,R只是结果,ORM应该理解为: O + M = R

我们只要关注O(对象)和M(映射配置)即可,R关系数据库只是我们代码在部署时的运行结果而已。

如果你做ORM时,O和R都要考虑,这属于两种不同思维和性格,就象人如果同时具备两种对立阻抗的性格,会得精神分裂症一样,O和R都考虑会很痛苦,异常的。

acqy
2007-02-06 11:43
非常感谢!看了您的答复,我总结一下我的理解。

在做ORM时,如果过多考虑数据表的relation,势必仍然无法摆脱面向数据库设计的软件开发方式。因此,我觉得应该把重点放在O的relation上,而这又是领域建模中非常重要的一部分。

您觉得我的理解正确吗?

kele8boy
2007-02-08 14:17
以对象关系替代数据库实体之间关系,对象关系有依赖 关联 继承 和实现,非常丰富,关联关系有1:N或者N:1,特别是1:N关系,对象表达很合理,符合自然,而数据库关系只能在多方增加一个关系字段,而不是象对象关系在1方表示,这就绕弯了。

猜你喜欢