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

15

当我在维基上阅读有关PostgreSQL的内容时,它自称为ORDBMS。我一直知道Microsoft SQL Server是一个RDBM系统。有人能帮助我理解关系数据库管理系统(RDBMS)和对象关系数据库管理系统(ORDBMS)之间的主要区别,并且在什么情况下应该使用它们?

此外,我的关键问题与Microsoft SQL Server的世界有关,我们经常使用Entity Framework(EF)层在应用程序端进行对象关系映射。那么,在ORDBMS世界中,ORM的所有职责是否已经完全由数据库本身履行,或者是否存在使用ORM(如Entity Framework)覆盖ORDBMS的用例或场景?人们真的会在ORDBMS系统上使用ORM吗?


维基百科有一些例子:https://en.wikipedia.org/wiki/Object-relational_database - TheGameiswar
2个回答

3
http://www.aspfree.com/c/a/database/introduction-to-rdbms-oodbms-and-ordbms/中获取:

RDBMS

RDBMS的主要元素基于Ted Codd的13个关系系统规则、关系完整性概念和规范化。关系数据库的三个基本原则是所有信息必须以表格形式保存,所有数据都使用数据值进行描述。第二个基本原则是表列中的每个值不重复。最后一个基本原则是使用标准查询语言(SQL)。

RDBMS的优点是系统简单、灵活、高效。因为表格简单易懂,数据更容易与他人沟通。RDBMS很灵活,因为用户不必使用预定义的键来输入信息。此外,RDBMS更加高效,因为SQL更容易学习。这使得用户可以花更多的时间输入而不是学习。更重要的是,RDBMS最大的优势是用户可以轻松地创建、访问数据并在需要时扩展它。在创建原始数据库之后,可以添加新的数据类别而无需改变现有的应用程序。

关系数据库管理系统也有局限性。首先,关系型数据库没有足够的存储空间来处理图像、数字和音频/视频等数据。该系统最初是为了处理媒体、传统的字段数据和模板的集成而创建的。关系数据库的另一个限制是其不能有效地使用SQL以外的语言。在其最初的开发之后,形成了C++和JavaScript等语言。然而,关系型数据库不能有效地与这些语言一起使用。第三个限制是信息必须在表格中,实体之间的关系由值定义。

ORDMS

对象-关系数据库(ORDBMS)是今天常见的第三种类型的数据库。ORDBMS是试图扩展关系数据库系统以支持更广泛应用程序类别的系统,并在许多方面提供关系和面向对象范例之间的桥梁。

ORDBMS的创建是为了处理关系型数据库无法处理的新类型数据,例如音频、视频和图像文件。此外,它的开发是由于面向对象编程语言的使用增加,以及这些语言与DBMS软件之间的巨大不匹配。

ORDBMS的优点之一是允许组织继续使用其现有系统,而无需进行重大更改。第二个优点是它允许用户和程序员并行使用面向对象系统。

实现ORDBMS存在挑战。第一个是存储和访问方法。第二个是查询处理,第三个是查询优化。


2
大多数数据库玩家不支持它,或者不仅支持它。它很复杂,且未被广泛使用。即使“数据”本质上是面向对象的,但数据库存在几十年了,它们无法采用ORDBMS(或OODBMS)。学习曲线也会带来问题。
ORDBMS / OODBMS 就像您在注册表编辑器中看到的虚拟注册表视图。内容以树状对象的形式呈现。但在内部,它们可能以平面/分层或关系方式存储。你真的不在意 - API 为你提供了注册表信息的视图。
同样,即使主要的数据库玩家不支持(并且不会支持)数据库的面向对象性质,他们可能会提供一些扩展。或者,您可能需要为面向对象的数据创建自己的框架。电影数据库,包含演员和导演,可以使用关系(表)来表示。演员、导演、拍摄地点也是类/对象,可以轻松地使用表来表示,并由数据库/数据库设计师强制执行引用完整性。
作为开发人员,您可以将数据的关系性转换为面向对象形式,将Movie作为一个类,并引用演员/导演(1:1或1:N)。我不知道EE如何/以何种方式实现这一点,但它只能通过这种方式进行映射。
对象关系数据库
- 在关系上下文中构建在面向对象技术之上。 - 对象存储在对象表而不是行表中。 - 支持主要的面向对象特征:复杂类型、继承、聚合、方法 - 优点:扩展了众所周知的技术。 - 缺点:两种技术的混合可能导致难以理解的模式。 - 存在性能问题。 - 对象关系系统包括复杂对象可扩展性、封装、继承和更好的OO语言接口等功能。 - ORDBMS允许开发人员将新类别的数据对象嵌入关系数据模型抽象(并在SQL之上)。
以下图表显示了如何访问数据。

enter image description here


8
可以请问您需要技术方面的解释,而不是英语文学方面的解释吗? - overexchange
@overexchange,恐怕我不能。即使是好书也无法以技术方式很好地解释它。你需要阅读材料,形象化事物,或使用一些免费/试用的OODBMS。 - Ajay
@overexchange,那只是SQL风格的伪语言。面向对象数据库并不总是使用SQL,而是有自己多样化的语言和格式。 - Ajay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接