postgresql以链式方式链接和取消链接行

bwntbbo3  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(231)

如果文档共享任何公共docid,则可以称为“家庭成员”。
简单Map如下所示:

Docs: docid
1 : a,b
2 : a,c,d
3 : d,e,f
4 : b,g

在表中,该数据如下所示:

1 = a
1 = b
2 = a
2 = c
2 = d
3 = d
3 = e
3 = f
4 = b
4 = g

这里的1,2,3,4文档是一个系列,因为它们有共同点:1和2共享“a”,2和3共享“d”,1和4共享“b”。
我可以通过创建一个单独的表来实现这种分组,并在插入时检查是否存在任何记录,然后将现有值赋给所有docid。

When doc 1 is inserted :
checks any of (a,b) already in family table:
if no:
  insert into table and get a famid

因此插入:a=1和b=1行。
对于其他情况,如DOC2情况

: any (a,c,d) exists --> doc 1 has been inserted hence output : a = 1

so take this value and assign to a,c,d (separate entries: a=1, c=1, d=1)and upsert into family table.

所以家族表看起来像:

Docs : docid : famid
1    :   a   :  1
1    :   b   :  1
2    :   c   :  1
2    :   d   :  1
3    :   e   :  1
3    :   f   :  1
4    :   g   :  1

我想把它作为维护groupby,以便在这种情况下,如果我有doc1,2,3,4,我可以按famid分组并返回这4个文档中的任何一个。
我担心的是,这些docid可能包含手动错误,因此几天后“a”可能会从doc1取消链接,因此从逻辑上讲,docs 2和3不应再是famid 1族的成员,但是family表仍然存储它,因此完整的链会损坏。是否有方法可以存储和维护,以便在删除中的公共节点时取消链接链条。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题