【发布时间】:2013-12-07 02:32:41
【问题描述】:
客户端有一个存储为简单 DAG 的可组合对象的数据库。
item (id, info...)
link (parent_id, child_id)
出于过时的(不幸的是,不可协商的)认证目的,他们现在希望存储源和顶点的每个组合的附加信息。例如作曲
A
|
B
/ \
C D
他们想要证书 (A,B) 证书 (A,C) 和证书 (A,D)。容易吧?
cert(parent_id, child_id, info...)
现在的问题是这些证书应该适用于每个 path 而不是每个节点。所以对于有共同祖先的物品
A
/ \
B C
\ /
D
我们需要证书 (A,B), (A,C) and (A,D)[via B] 和 (A,D)[via C]
我想不出一种方法来存储这些证书,而不涉及在它所代表的路径中存储对每个顶点的引用,但这似乎是可怕的指数。有数十万条记录,如果一些图表只包含几个共同祖先,事情可能会很快失控。
除了为每个证书引用每个路径中的每个顶点之外,还有更好的方法来存储这些路径吗?
【问题讨论】:
标签: database graph data-modeling directed-acyclic-graphs