使用关系数据库和关系数据库对象之间的区别

时间:2013-07-13 03:44:29

标签: database oracle relational-database object-oriented-database

使用关系数据库和关系数据库对象(混合)之间的区别是什么。

我正在申请广告。使用常见的关系数据库,我想我可以制作各类广告的表格:汽车,技术,庄园,就业,服务,这就是我这样做的方式。但是阅读关系数据库对象我发现你可以创建一个数据库(Oracle)中的类型字段允许您封装其他字段和方法,所以如果我只制作广告表,知道所有广告都有共同的字段,如标题,描述,发布日期,图像等,该怎么办?我可以添加一个封装另一个对象的字段,这些对象将是汽车,技术,就业,并且每个对象内部都包含属性,如  汽车(型号,品牌,价格),  技术(州,价格,饰品,尺寸)  emloyment(工作,付款)

这就是这个想法,实际上对于每个广告,您实际上可以放大功能,为每个广告创建一个数据库。 我的问题是:使用关系数据库对象的潜在问题是什么? 什么是最好的选择?

2 个答案:

答案 0 :(得分:3)

过去十年中最糟糕的数据库设计中的大部分(如果不是全部)都在其根表中建立了对象模型而不是适合关系模型。

OOP是编程;在构建API等时,它将行为和数据结合在一起的概念很有效。但是当涉及到持久性时,它会导致可怕的大型表,大量重复数据和极其缓慢的查询。我并不是说这是不可避免的,但这是打赌的方式。

那么为什么Oracle支持数据库中的类型?因为使用行为定义复杂数据类型是有好处的:XMLType就是这样,Oracle Spatial广泛使用对象。但是这些用法仅限于常规关系表的各列。目的不是,而且从来没有,我们使用对象表来存储数据库中的所有数据。

一定要在Pl / SQL编程中使用Types。我已经做了很多,并且对于正确的用例,它们可以非常有效。只是不要将数据存储在其中。

答案 1 :(得分:0)

最重要的区别是Oracle的对象关系技术很少使用。

很少有程序员或DBA在对象关系技术方面拥有丰富的经验。数据库工具不能很好地支持对象,或者根本不支持。 Oracle不支持这项技术 - 它有缺陷并且不会经常更新。

当然,仅仅因为某项功能很少见并不意味着你应该忽略它。在某些情况下,Oracle的对象关系功能可以很好地工作。但是,如果您计划使用对象构建数据库的重要部分,则需要考虑技能,技术和支持的丢失。