0

使用关系数据库和关系数据库对象(混合)有什么区别。

我正在申请广告。使用常见的关系数据库,我想我可以制作每种广告类型的表格:汽车、技术、房地产、就业、服务,这就是我做的方式。但是阅读关系数据库对象我发现你可以创建一个数据库(Oracle)中的类型字段,它允许您封装其他字段和方法,那么如果我只制作一个广告表,知道所有广告都有共同的字段,如标题、描述、发布日期、图像,但是我可以添加一个字段来封装另一个对象,这些对象将是汽车、技术、就业,并且每个对象的内部都封装了它们的属性,例如汽车(型号、品牌、价格)、技术(状态、价格、配件、尺寸)就业(工作,支付)

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

4

2 回答 2

3

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

OOP 是一种编程方式;它的将行为和数据结合在一起的概念在构建 API 等时效果很好。但在持久性方面它很糟糕,导致非常大的表、大量重复的数据和极其缓慢的查询。我并不是说这是不可避免的,但这是下注的方式。

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

一定要在你的 Pl/SQL 编程中使用类型。我已经广泛地这样做了,对于正确的用例,它们可能非常有效。只是不要将您的数据存储在其中。

于 2013-07-13T08:29:36.663 回答
0

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

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

当然,仅仅因为一个特性很少见并不意味着你应该忽略它。在某些情况下,Oracle 的对象关系特性运行良好。但是,如果您计划使用对象构建数据库的重要部分,则需要考虑技能、技术和支持的损失。

于 2013-07-13T05:08:38.567 回答