荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: bstone (Win32 API), 信区: Program
标  题: 面向对象方法 与 关系数据库应用 ?
发信站: 荔园晨风BBS站 (Thu Nov  1 08:27:24 2001), 站内信件

发信人: tianY (天眼), 信区: SoftEng
标  题: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 10:29:27 2001)


  现在,大量的实际应用都是基于数据库的应用。

  OO的特点包括 数据隐藏、继承、封装。
  关系数据库的特点是基于集合的运算。

  个人感觉两者之间有很大的距离。

  大家在用OO的方法进行分析和设计的时候,如何解决这些问题?

  1。数据的存储同OO的矛盾:
     我们在分析的时候,类的继承几乎是不可避免的,在RDBMS中,类层次中
的每个类都对应一个表的方法不大合适, 一般是把导出类作为表来保存。

  2。方法。
     类的某些方法可以用存储过程,但不可能把所有的方法都用存储过程描述。


  3。在很多应用中,跨表进行查询和分析是常见的,这就违反了 OO 的数据隐藏

     的原则 ??

 大家在用OO的方法进行分析和设计的时候,是怎么同RDBMS结合起来的呢?

 哪里有相关的资料?

--

※ 来源:·BBS 水木清华站 smth.org·[FROM: 211.101.168.18]


-----------------------------------------------------------------
发信人: qhbbslwh (小刀), 信区: SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 12:08:24 2001)

关系数据库的基本建模之一是Entity-Relation建模,我们最常用到的
也是这种建模。从Entity来讲,他描述的是一个实体的数据属性。
Entity 和Entity之间的关系通过属性关联表达。ER模型面向的是独立
的数据,不包括数据的如何使用,目的只在于尽可能有效的存储必要数据,
通过范式约束数据的完整,减少数据冗余。
在OOD中,Object虽然有着Entity相似的一面,但是他已经把数据属性和活
动结合在一起,形成具有自治能力的数据功能体。自治的特性使得Object
与外界联系的机制变得简单而且易于管理。Object与Objec可以继承,复合,聚集

达到组成任何规模Entity的目的.而二维表对数据属性表达却十分有限,Object之

间的关系必须通过多Entity来反映。
OOD的困境是如何把一个多维的数据关系展成二维来存储,再又应用到多维
的世界中去。思想的抽象同方法的具体矛盾,所以OO的纯洁性在此无可奈
何被打破。OO和范式中的选择,我个人比较倾向于:小规模数据量,范式
让位于OO;大规模数据OO让位于范式。



-------------------------------------------------------------
发信人: tianY (天眼), 信区: SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 12:42:43 2001)


那么是否意味着用OO的方法对业务建模是困难的?
或者说 建模的结果同 实际系统的实现是不同的,甚至说该OO模型是无法
实现的??

如你所说,在大规模数据的应用中,OO并不合适。可OO号称是用来对付
复杂的问题领域。??迷惑啊,迷惑。??

在我看过的一些书中,对OO同数据库的关系仅仅限于对象的永久化。
对于简单的数据和关系,OO方法可以作的很好。但是对于实际开发的系统,
总是有很多别扭之处。

可能我过分考虑了实现,但是OO的优点之一据说就是从分析、设计到实现
可以保持一致。 大家说呢?



-----------------------------------------------------------
发信人: bakkhos (笨瓶子·即使不是心甘情愿,该做还是要做), 信区:
SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 12:56:40 2001)


【 在 tianY (天眼) 的大作中提到: 】
: 那么是否意味着用OO的方法对业务建模是困难的?
//nod,我觉得OO对有些类型的业务并不适合

: 或者说 建模的结果同 实际系统的实现是不同的,甚至说该OO模型是无法
: 实现的??
: 在我看过的一些书中,对OO同数据库的关系仅仅限于对象的永久化。
: 对于简单的数据和关系,OO方法可以作的很好。但是对于实际开发的系统,
: 总是有很多别扭之处。
: 可能我过分考虑了实现,但是OO的优点之一据说就是从分析、设计到实现
                            ~~~~~~~~~~~~~~~~~~~是吗?

: 可以保持一致。 大家说呢?



------------------------------------------------------------------
发信人: tianY (天眼), 信区: SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 13:05:13 2001)


【 在 bakkhos (笨瓶子·即使不是心甘情愿,该做还是要做) 的大作中提到: 】

: 标  题: Re: 面向对象方法 与 关系数据库应用 ?
: 发信站: BBS 水木清华站 (Wed Oct 31 12:56:40 2001)
:
:
: 【 在 tianY (天眼) 的大作中提到: 】
: : 那么是否意味着用OO的方法对业务建模是困难的?
: //nod,我觉得OO对有些类型的业务并不适合
  能简单说一说OO所适合的类型吗?  给一两个例子最好了。
:
: : 或者说 建模的结果同 实际系统的实现是不同的,甚至说该OO模型是无法
: : 实现的??
: : 在我看过的一些书中,对OO同数据库的关系仅仅限于对象的永久化。
: : 对于简单的数据和关系,OO方法可以作的很好。但是对于实际开发的系统,
: : 总是有很多别扭之处。
: : 可能我过分考虑了实现,但是OO的优点之一据说就是从分析、设计到实现
:                             ~~~~~~~~~~~~~~~~~~~是吗

  可能是我的叙述不清楚,但是从OO分析开始,就集中精力在类、属性、方法的
  获取上,当然,也包括其他方面,但主要任务应该是如此。
: : 可以保持一致。 大家说呢?



-----------------------------------------------------------
发信人: bakkhos (笨瓶子·即使不是心甘情愿,该做还是要做), 信区:
SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 13:06:48 2001)

最近比较忙,所以无法写太长……

【 在 tianY (天眼) 的大作中提到: 】
:   能简单说一说OO所适合的类型吗?  给一两个例子最好了。
例如控制类的程序

:   可能是我的叙述不清楚,但是从OO分析开始,就集中精力在类、属性、方法的

                                              ~~~~~~~~~~~~~

                                                No!

:   获取上,当然,也包括其他方面,但主要任务应该是如此。



-------------------------------------------------------
发信人: oops (每天爱你多一些), 信区: SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 13:26:54 2001)

请看一下1130、1131
【 在 tianY (天眼) 的大作中提到: 】
:   能简单说一说OO所适合的类型吗?  给一两个例子最好了。
:   可能是我的叙述不清楚,但是从OO分析开始,就集中精力在类、属性、方法的

:   获取上,当然,也包括其他方面,但主要任务应该是如此。


-----------------------------------------------------
发信人: tianY (天眼), 信区: SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 13:49:58 2001)

看了,里面说 MIS 类的也适合。  :((

【 在 oops (每天爱你多一些) 的大作中提到: 】
: 请看一下1130、1131


-------------------------------------------------------
发信人: bakkhos (笨瓶子·即使不是心甘情愿,该做还是要做), 信区:
SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 13:53:33 2001)


这个我跟bear007有不同意见,我觉得MIS不是很适合用OO

【 在 tianY (天眼) 的大作中提到: 】
: 看了,里面说 MIS 类的也适合。  :((


---------------------------------------------------
发信人: tianY (天眼), 信区: SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 14:01:30 2001)


【 在 bakkhos (笨瓶子·即使不是心甘情愿,该做还是要做) 的大作中提到: 】

: 这个我跟bear007有不同意见,我觉得MIS不是很适合用OO

  我也觉得OO不大适合数据库应用。  但是现实中,又有多少应用能离开RDBMS呢



----------------------------------------------------
发信人: tianY (天眼), 信区: SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 14:05:30 2001)


【 在 bakkhos (笨瓶子·即使不是心甘情愿,该做还是要做) 的大作中提到: 】

: 标  题: Re: 面向对象方法 与 关系数据库应用 ?
: 发信站: BBS 水木清华站 (Wed Oct 31 13:06:48 2001)
:
: 最近比较忙,所以无法写太长……
:
: 【 在 tianY (天眼) 的大作中提到: 】
: :   能简单说一说OO所适合的类型吗?  给一两个例子最好了。
: 例如控制类的程序
:
: :   可能是我的叙述不清楚,但是从OO分析开始,就集中精力在类、属性、方法

:                                               ~~~~~~~~~~~~

:                                                 No!
:
: :   获取上,当然,也包括其他方面,但主要任务应该是如此。

   bakkhos,能说一说我错在哪里吗?




---------------------------------------------------
发信人: bakkhos (笨瓶子·即使不是心甘情愿,该做还是要做), 信区:
SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 14:14:11 2001)


MIS跟数据库应用是两回事

【 在 tianY (天眼) 的大作中提到: 】
:   我也觉得OO不大适合数据库应用。  但是现实中,又有多少应用能离开RDBMS
呢?


------------------------------------------------------
发信人: bakkhos (笨瓶子·即使不是心甘情愿,该做还是要做), 信区:
SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 14:15:45 2001)


虽然说类、属性、方法是设计的结果,但不能说“集中精力”在这些地方。
我觉得use case是最重要的。现在比较忙,或者我晚上再详细解释吧。

【 在 tianY (天眼) 的大作中提到: 】

【 在 bakkhos (笨瓶子·即使不是心甘情愿,该做还是要做) 的大作中提到: 】

: 标  题: Re: 面向对象方法 与 关系数据库应用 ?
: 发信站: BBS 水木清华站 (Wed Oct 31 13:06:48 2001)
:
: 最近比较忙,所以无法写太长……
:
: 【 在 tianY (天眼) 的大作中提到: 】
: :   能简单说一说OO所适合的类型吗?  给一两个例子最好了。
: 例如控制类的程序
:
: :   可能是我的叙述不清楚,但是从OO分析开始,就集中精力在类、属性、方法

:                                               ~~~~~~~~~~~~

:                                                 No!
:
: :   获取上,当然,也包括其他方面,但主要任务应该是如此。

   bakkhos,能说一说我错在哪里吗?

:



-----------------------------------------------
发信人: tianY (天眼), 信区: SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 14:35:16 2001)


还是抛开名词问题吧。
回到我们原来说的OO在基于大型数据库应用系统中的使用。

【 在 bakkhos (笨瓶子·即使不是心甘情愿,该做还是要做) 的大作中提到: 】

: MIS跟数据库应用是两回事



------------------------------------------------------
发信人: leejw (喜欢自由的感觉,寻找生活的乐趣), 信区: SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 14:46:10 2001)

在一些大型系统的设计里面,往往是以数据为中心的;
而这些系统的数据量往往有很大,因此就需要dbms进行管理。
dbms是干什么的呢?就是用来解决大量数据存储的问题的(效率、
安全性等等)。这个领域里面重要的是关系理论、索引、范式……
(oo里面好像没有索引这个概念吧?)。
oo是干什么的?--按我的理解,它适用于对一个特定的系统或者
业务流程进行建模,按照oo的设计,会使系统得到更好的灵活性、
更易于理解和维护,从而降低成本。但是,如何快速高效的存储数据
并不是oo所管理的范围!
所以我觉得,oo设计和数据库设计是两个不一样的领域,在一套系统
的开发过程中是不同的阶段,做的是不同的事情
(但是数据库设计依赖于oo设计的成果)。oo设计中可以提出
数据的需求,在数据库设计的时候就根据这些提取出来的需求按照
数据库理论的原则去设计表、索引、权限。
在具体开发的过程中,数据库设计好了之后,一般就很少在变动了。
而应用一般采取多层的结构,其中最底层负责封装数据库的存取。
后期如果系统需求有什么变动,可以修改底层的构件。



【 在 bakkhos (笨瓶子·即使不是心甘情愿,该做还是要做) 的大作中提到: 】

: 虽然说类、属性、方法是设计的结果,但不能说“集中精力”在这些地方。
: 我觉得use case是最重要的。现在比较忙,或者我晚上再详细解释吧。
:    bakkhos,能说一说我错在哪里吗?




---------------------------------------------------
发信人: bakkhos (笨瓶子·即使不是心甘情愿,该做还是要做), 信区:
SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 14:47:52 2001)


这个不是名词问题啊,MIS是MIS,数据库是数据库,一个是从应用角度,一个是从
实现角
度,不可以混为一谈的。

关系型的数据库跟OO是无法简单平滑地建立对应关系的,所以一般来说,只能把这
个对应
在对象的保存时使用较复杂的逻辑实现。

【 在 tianY (天眼) 的大作中提到: 】
: 还是抛开名词问题吧。
: 回到我们原来说的OO在基于大型数据库应用系统中的使用。



-----------------------------------------------------
发信人: bakkhos (笨瓶子·即使不是心甘情愿,该做还是要做), 信区:
SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 14:50:59 2001)


tianY的意思我能理解,难点在于OO和DBMS的接口

【 在 leejw (喜欢自由的感觉,寻找生活的乐趣) 的大作中提到: 】
: 在一些大型系统的设计里面,往往是以数据为中心的;
: 而这些系统的数据量往往有很大,因此就需要dbms进行管理。
: dbms是干什么的呢?就是用来解决大量数据存储的问题的(效率、
: 安全性等等)。这个领域里面重要的是关系理论、索引、范式……
: (oo里面好像没有索引这个概念吧?)。
: oo是干什么的?--按我的理解,它适用于对一个特定的系统或者
: 业务流程进行建模,按照oo的设计,会使系统得到更好的灵活性、
: 更易于理解和维护,从而降低成本。但是,如何快速高效的存储数据
: 并不是oo所管理的范围!
: 所以我觉得,oo设计和数据库设计是两个不一样的领域,在一套系统
: 的开发过程中是不同的阶段,做的是不同的事情
: (但是数据库设计依赖于oo设计的成果)。oo设计中可以提出
: 数据的需求,在数据库设计的时候就根据这些提取出来的需求按照
: 数据库理论的原则去设计表、索引、权限。
: 在具体开发的过程中,数据库设计好了之后,一般就很少在变动了。



------------------------------------------------------------
发信人: qhbbslwh (小刀), 信区: SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 20:25:44 2001)

我想提两点:
第一:OO是一种模拟现实的建模思想,并不是解决任何问题的万用方法。
第二:数据库的任务是解决数据的最优利用,尤其是大量的数据的最优存储。
相对于其他建模方法,OO的特点比较突出,应用面很广,解决了软件危机的部
分问题,这是其风靡的原因。但是我们不能说OO是万用的。至于那些应用不适
用,我觉得可以分析一下:
在一个应用中它是否具有如下特征吗?
1.可以方便的分解成对象
2.对象的特征鲜明
3.分解的对象有自治需要
现实中的应用可能只是部分用到面向对象设计,这是我最大的体会。
OO与关系数据库的尴尬我想是可以理解的。因为关系数据库先于OO发展,
其任务是解决大数据的储存问题,到后来OO思想风靡,而且现实中出现了很多你
说的那种需要,所以后来的数据库发展逐渐受到OO的影响,出现了关系对象
数据库,对象关系数据库,对象数据库。这种趋势我想在ORACLE身上体现的
比较充分。但是,以我们老师分析的,关系数据库还会存在很长时间,一方
面因为关系数据库理论基础扎实,生命力强,另一方面,几个占领市场的数
据库都是关系数据库,利益使得别的先进数据库技术很难短时间抬头。
但是,未来发展方向肯定是把内存和外存统一起来,不仅数据可以长期保存,
方法也可以长期保存。保存的基本单位将是“颗粒的”。这样你说的那种矛
盾就不存在了。


【 在 tianY (天眼) 的大作中提到: 】
: 那么是否意味着用OO的方法对业务建模是困难的?
: 或者说 建模的结果同 实际系统的实现是不同的,甚至说该OO模型是无法
: 实现的??
: 如你所说,在大规模数据的应用中,OO并不合适。可OO号称是用来对付
: 复杂的问题领域。??迷惑啊,迷惑。??
: 在我看过的一些书中,对OO同数据库的关系仅仅限于对象的永久化。
: 对于简单的数据和关系,OO方法可以作的很好。但是对于实际开发的系统,
: 总是有很多别扭之处。
: 可能我过分考虑了实现,但是OO的优点之一据说就是从分析、设计到实现
: 可以保持一致。 大家说呢?



------------------------------------------------
发信人: bakkhos (笨瓶子·即使不是心甘情愿,该做还是要做), 信区:
SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Wed Oct 31 23:59:54 2001)


我觉得,如果需求是确定不变的,无论什么设计方法影响都不大。但实际上需求是
变化
的,OO使用继承等方法来适应变化,在很多情况下有非常好的效果。但OO方法的弱
点是
以每个对象为研究对象,对于多个对象之间的复杂关系出现的变化适应能力并不好
,模
式可以在一定程度上解决这个问题。


-----------------------------------------------------------
发信人: sOcean (星海起风), 信区: SoftEng
标  题: Re: 面向对象方法 与 关系数据库应用 ?
发信站: BBS 水木清华站 (Thu Nov  1 01:23:23 2001)


【 在 bakkhos (笨瓶子·即使不是心甘情愿,该做还是要做) 的大作中提到: 】

: 我觉得,如果需求是确定不变的,无论什么设计方法影响都不大。但实际上需求
是变化
: 的,OO使用继承等方法来适应变化,在很多情况下有非常好的效果。但OO方法的
弱点是
: 以每个对象为研究对象,对于多个对象之间的复杂关系出现的变化适应能力并不
好,模
                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                   aspect-oriented mothodology, seems sticking to this
field.
                   refers to aspectj.org

: 式可以在一定程度上解决这个问题。


------------------------------------------------------------
我觉得,如果需求是确定不变的,无论什么设计方法影响都不大。但实际上需求是
变化
的,OO使用继承等方法来适应变化,在很多情况下有非常好的效果。但OO方法的弱
点是
以每个对象为研究对象,对于多个对象之间的复杂关系出现的变化适应能力并不好
,模
式可以在一定程度上解决这个问题。
(昨晚写到宿舍断电,现在继续)
我不支持用OO来做MIS分析,是因为MIS往往对应着一些业务流程,这些流程是牵涉
到很
多的实体,一旦把流程分解成各个对象的方法,流程优化就很难进行。
不过我上面说的只是分析阶段,因为需要跟客户有效交流以调整业务模型,所以不
使用
OO是较好的选择,但到了设计实施,还是使用OO最好。SAP R/3好像就是这样的方
式。
我觉得问题所在是OO方法从粗粒度往细粒度分解时首先考虑对象,以致流程分解下
去后
就散落到各个对象中,不好直观地把它们重新组织起来。


--
        Just Do It
        时间不多了

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.28.212]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店