数据库中如何存储有向图? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Grenadn
V2EX    程序员

数据库中如何存储有向图?

  •  
  •   Grenadn 2015-05-14 16:59:28 +08:00 via Android 5032 次点击
    这是一个创建于 3809 天前的主题,其中的信息可能已经有所发展或是生改变。
    一个节点有多个父节点的结构
    第 1 条附言    2015-05-15 10:46:31 +08:00
    一个场景:知乎的话题结构,一个话题有多个父话题,可以有多个子话题,但没有循环。即有根无循环的有向图。
    11 条回复    2017-03-14 10:26:20 +08:00
    incompatible
        1
    incompatible  
       2015-05-14 17:21:56 +08:00   1
    两个表即可
    node存储节点
    transition存储边
    davidlau
        2
    davidlau  
       2015-05-14 17:45:00 +08:00   1
    staticor
        3
    staticor  
       2015-05-14 18:30:41 +08:00
    你可以参考 graphviz 的dot.language.
    Grenadn
        4
    Grenadn  
    OP
       2015-05-14 19:35:22 +08:00 via Android
    @davidlau 了解过,这种数据库太小众了,等几年说不定会流行。
    @staticor 这个跟数据库好像没有关系诶。
    omengye
        5
    omengye  
       2015-05-14 22:53:23 +08:00
    两个字段,分别存每条边的始点,末点. 比如 A->C , B->E , C->E 这样,存的时候注意一下有没有环
    Grenadn
        6
    Grenadn  
    OP
       2015-05-15 10:56:41 +08:00 via Android
    @incompatible
    @omengye
    谢谢,二位应该说的是一个意思吧。添加了使用场景,场景中并没有特别使用图的特性计算,倒不如说恰巧实现了图结构,继续研究中。
    (感觉自己好弱啊,数学成了瓶颈了(┯_┯))
    incompatible
        7
    incompatible  
       2015-05-15 11:16:42 +08:00
    @Grenadn 是一个意思。
    你这场景就是个简单的多对多的关系嘛
    Grenadn
        8
    Grenadn  
    OP
       2015-05-15 11:54:37 +08:00 via Android
    @incompatible 实现是不难的,但多对多会不会有局限性?比如移除一个节点及其子节点这样的操作会很麻烦吧。
    incompatible
        9
    incompatible  
       2015-05-15 13:19:58 +08:00
    @Grenadn 移除一个话题 除了移除该话题与其子话题的关系,子话题也要一并移除?
    Grenadn
        10
    Grenadn  
    OP
       2015-05-15 22:29:18 +08:00
    @incompatible 的确,直接ban掉一个节点就行了。我是说类似的操作,需要构建的图的深度比较大的情况(从子节点回溯到原始节点),就不好办了。我可能想的有点多了:-P
    EchoUtopia
        11
    EchoUtopia  
       2017-03-14 10:26:20 +08:00   1
    发现一个现成的牛逼的django库,感觉满足我的要求了,如果树太深,可以把节点的祖先节点和子孙节点缓存起来就行了
    https://github.com/elpaso/django-dag/tree/master/django_dag
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2625 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 12:49 PVG 20:49 LAX 05:49 JFK 08:49
    Do have fait in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86