【问题标题】:Transform between relational database and graph-based database在关系数据库和基于图的数据库之间进行转换
【发布时间】:2017-07-10 14:01:38
【问题描述】:

我知道有一些算法(甚至工具)可以将关系数据库 (RDBMS) 转换为图形数据库,反之亦然。

我确实有几个问题比这要大一些:

  1. 是否有用于此类转换的通用工作算法,例如 RDBMS => 图(或多个)?

  2. 这个算法是双射的吗?更准确地说:

    2.1。给定所述算法,转换 RDBMS => 图单射(一对一)?说白了,有没有两个关系型数据库可以转换成同一个图型数据库?

    2.2。同样,任何图形数据库都可以用关系数据库表示吗?基本上,我是在问算法函数是否是满射的(onto)?

【问题讨论】:

    标签: algorithm graph relational-database rdbms graph-databases


    【解决方案1】:

    TL;DR

    从图的特定数学概念(节点集、边关系)到关系表示通常存在明显的双射。本质上是因为数学使用集合和关系。

    没有标准的图形 DBMS。并且没有标准的方式来使用一种来表示应用程序/业务情况。因此,图数据库状态和关系状态之间没有标准映射,更不用说在另一种状态下给出对所表示的情况而言自然的表示。

    没有关系值属性,非关系结构和关系结构之间的映射并不总是双射的,因为我们有时必须选择关系代理值与我们将使用的关系值 1:1。


    有时我们对特定情况不感兴趣,我们只对数据结构感兴趣。然后我们可以想出它的(各种)关系版本。

    但数据库或数据结构变量通常代表应用程序/业务情况。从情境到表示通常存在一对多或一对一的映射。在关系模型下,每个表都有一个关联的(特征)谓词(语句模板),并保存从其谓词构成真正的命题(语句)的行。其他数据结构以特别的方式用于表示情况。

    关系模型的特别之处在于,您可以通过谓词逻辑和/或关系运算符进行一般性查询——查询表达式确定一个谓词,其结果包含从其谓词构成真实命题的行。 (计算时有一定的复杂性保证和一定的自动优化机会。)

    表示相同情况的结构之间的映射取决于数据库如何表示情况。因此,表示之间没有通用映射,即使对于使用相同数据结构的两个表示也是如此。

    另一方面,您可以定义两个结构之间的一些通用映射,它可能是双射的,但是当一种情况由一个表示时,另一个告诉您该情况的另一种表示 ,因此情况只是间接的,而不是直接的情况本身。因此,不要指望描述其他结构表示的关系版本就像该应用程序/业务的良好关系设计。

    这是 ORM 和对象数据库的问题。您可以定义从特定的面向对象状态到关系的映射,但关系仅描述面向对象的状态,而不是其表示的情况。每当一个对象值持有一个对象引用而不是包含对象的 oid 时,该引用对象就表示一个关系/关联实体实例。但通常没有为与这些对象集合相对应的关系给出明确的谓词。取而代之的是,我们获得了从某个完整的表示状态到表示的情况的表示函数。而在关系设计中每个表(基本或查询结果)的每个超键值与某些(可能是关联的)实体是 1:1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多