与关系有关的多对多关系数据

时间:2020-04-23 11:54:35

标签: datomic

我想实现也包含元数据的多对多关系 描述关系。 可以将这种关系视为标记边缘。 具体来说,路径由一系列有序集合组成,并且一系列可以 在一条以上的路径内,在每种情况下都在该路径内具有位置。 如果我正确理解,则在原子学中需要对关系进行某种形式的修改 (因为我们不能直接标记边缘),例如像这样的连接实体:

:path/path-member      ; ref, many

:path-member/series    ; ref, one
:path-member/position  ; long, one

或者更完整地对其进行修正:

:path-member/series    ; ref, one
:path-member/path      ; ref, one
:path-member/position  ; long, one

还有其他可行的数据建模选项吗?

复合属性在这里有用吗?

这个问题一直是[temp.deduct.decl],但是我想知道自从提出该问题(2015年)以来,对原子学的补充是否提供任何新的可能性。

1 个答案:

答案 0 :(得分:0)

几乎每个人在使用damic进行数据建模时都会遇到这个问题,正如在同一点上存在大量堆栈溢出问题所证明的那样。

有个好消息:Heterogenous tuples是一项强大的新功能,于2019年6月添加,可以很好地解决此问题-正是我们所有人都认为缺少的功能。

这意味着属性值,即v 5元组中的eavto现在本身可以是元组。

这是最大长度为8的clojure向量。虽然此长度限制并未完全允许将任意数量的元数据存储为边上的标签,如真实图db,但它添加了datomic具有强大的建模能力,同时保留了datomic提供的所有其他优势和简单性。

blog post官方公告。

twitter上讨论发行版本。

要在数据记录中使用此功能,您只需要tupleuntuple函数。它非常简单,正是“缺失”的功能。