关于面向对象的对象关系设计
今天在自己设计的项目中进行实体关系设计时,突然引发了我对关系表关系设计和java实体对象的关联关系的设计的思考。
突然有点模糊了这2者的概念和目的。这样,我们很容易误会一些东西。如果不能清晰这2者的关系,那么我们很有可能造成资源
的浪费和构成服务器的巨大压力的应用。
首先,先确定下,关系表的关联设计目的是什么呢?是为了最大程度的减小数据冗余,来让我们的表更加的合理,存储的数据
有更充分的价值。这样,一定程度上也节约了数据库的存储压力。在今天的这个时代,数据已经达到了海量,甚至已经早有了数据
仓库的技术来辅助我们的数据存储问题的解决。那么这样一来我们很清楚的认识到,关系表的关联设计和业务是没有太大的密切关
系,主要核心目的是以最小的存储空间来存储最多的数据。这样充分的发挥数据库的存储空间。
那么,我们的面向对象的关联设计的目的是什么呢?面向对象之所以有了非常可喜的发展,可以非常明显的说明其优势,那就
是把编程思想与我们常人的做事思想一般,把问题大大抽象并简化了,有句话最贴切:java程序员的头发比C程序员多多了。那么
反过来再看的话,那么面向对象的关联设计方案的目的是什么呢?先假设没有关联关系,那么我们在处理实践中有关联关系的实体
的时候,是不是很麻烦?必须要去把所有与该对象有关联关系的对象数据进行相关处理,尤其是删除。数据库的数据完整性是数据
库的另一个设计要求。其次,我们还要保证数据库的数据有效性,否则,时间过久,会有大量的无用数据空占空间,这是我们都不
希望的。好,那么非常明确的一点是,面向对象的关联设计和关系表的关系设计并不矛盾,他们解决的是同一个问题,只是方式不
同而已。但是,另一个方面,它们完全一样吗?答案是肯定的。不是完全一样的。面向对象的目的就是为了简化数据的抽象度,让
我们以日常的思想来解决软件设计和实现的问题,它是辅助我们更简单的去实现业务流程的,那么很显然,面向对象的关联关系设
计是与业务挂钩的,而不是数据库表的关联关系一致。如果二者在业务和实体关系表设计上一致时,他们就是完全一样的。同理,如
过它们二者因为业务和表设计不能一致时,自然的,它们就不一样了,这很大程度上是取决于业务定义的,而不是关系表的设计。
最后,我的定论是:add,update,delete的直接关系对象才有必要设计面向对象的关联关系。查询没必要。而关系表的设计就不
用多说了,一般达到2nf的要求就不错了。对设计的事情上,没有最优,只有相对的优化了。

浙公网安备 33010602011771号