V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zzztongxue
V2EX  ›  问与答

评论和回复放一张表里好,还是分表好?求解

  •  1
     
  •   zzztongxue · Apr 14, 2022 via iPhone · 4375 views
    This topic created in 1478 days ago, the information mentioned may be changed or developed.
    前端结构是楼中楼的形式,之前决定放一张表里,现在实践过程中发现放一张表 restful 形式的 api 不好设计
    Supplement 1  ·  Apr 15, 2022

    🙌🏻问题已解决。最后没改,还是放在一张表里,把回复当成一种特殊评论来看。 表结构为 user_id topic_id comment_id reply_id 。

    27 replies    2022-04-15 19:53:10 +08:00
    KagurazakaNyaa
        1
    KagurazakaNyaa  
       Apr 14, 2022
    你把评论看成一种特殊的回复不就好了
    zzztongxue
        2
    zzztongxue  
    OP
       Apr 14, 2022 via iPhone
    @XiLingHost 之前就是这样考虑的,但是接口不太好写
    seakingii
        3
    seakingii  
       Apr 14, 2022
    @zzztongxue 哪里不好写呢?
    shakaraka
        4
    shakaraka  
    PRO
       Apr 14, 2022
    回复不就是评论的一种么。。。
    KagurazakaNyaa
        5
    KagurazakaNyaa  
       Apr 14, 2022
    @zzztongxue 有什么不好写的,restful 形式的话那就是直接把对象的 json 返回到前端就行了,你可以把评论和回复的模型统一,然后把评论的回复对象指向文章,回复的回复对象指向评论或回复,接下来就是前端渲染的活了
    itechify
        6
    itechify  
    PRO
       Apr 14, 2022
    怀疑你是不是我司的,现在就在做评论需求,今天提测,明天上线呢
    itechify
        7
    itechify  
    PRO
       Apr 14, 2022
    @oneisall8955 #6 不对,我这没`回复`楼中楼功能~
    fiypig
        8
    fiypig  
       Apr 14, 2022
    链表嘛
    wonderfulcxm
        9
    wonderfulcxm  
       Apr 14, 2022 via iPhone
    一般楼中楼要用到递归
    unnamedhao
        10
    unnamedhao  
       Apr 14, 2022 via iPhone
    不放一张表更不好写
    DuDuDu0o0
        11
    DuDuDu0o0  
       Apr 14, 2022
    @oneisall8955 今天提测,明天上线。 测了个寂寞?
    whusnoopy
        12
    whusnoopy  
       Apr 14, 2022   ❤️ 1
    做过 BBS 维护,你这个情况多加几个 id 是不是就能解决

    首先回复和评论隶属的主贴叫 topic_id ,然后每个回复或评论都有自己独立的 post_id ,如果是楼中楼,每层楼的 reply_id 是他上一级楼的 post_id ,如果就是主楼 reply_id 置空或也指向自己 post_id 都可以,然后楼中楼所有楼都增加一个 thread_id 指向楼中楼的主楼

    ```
    topic_id1
    +- topic_id_1, post_id_2, reply_id_2, thread_id_2
    |+- topic_id_1, post_id_3, reply_id_2, thread_id_2
    ||+- topic_id_1, post_id_4, reply_id_3, thread_id_2
    |+- topic_id_1, post_id_5, reply_id_2, thread_id_2
    |+- topic_id_1, post_id_6, reply_id_2, thread_id_2
    +- topid_id_1, post_id_7, reply_id_7, thread_id_7
    ```

    这个灵魂描述看能不能看懂
    akira
        13
    akira  
       Apr 14, 2022   ❤️ 1
    把所有的帖子都视为一个不存在的帖子的回复,那不就统一起来了么
    itechify
        14
    itechify  
    PRO
       Apr 14, 2022
    @DuDuDu0o0 #11 说起来就来气,公司的节奏,创业团队,一年多了还这样。美其名为敏捷开发,快速迭代
    tuutoo
        15
    tuutoo  
       Apr 14, 2022 via Android
    放一个表 一个评论或者回复就是一条记录,有自己的唯一 id 。
    加一列 reply_id 或者 parent_id 指向 @的评论或者回复的 id 。
    这样应该就能达到你说的效果了吧。
    Win7GM
        16
    Win7GM  
       Apr 15, 2022
    @oneisall8955 #14 草....听起来像是披着敏捷的皮瞎搞
    janda
        17
    janda  
       Apr 15, 2022 via Android
    递归
    murmur
        18
    murmur  
       Apr 15, 2022
    @wonderfulcxm 楼中楼不需要递归,现在的 bbs 就是直接复制别人的东西
    murmur
        19
    murmur  
       Apr 15, 2022
    我觉得你们都设计复杂了,回复的引用是复制内容,然后只能对楼层评论,这哪里是递归啊

    nga 、百度贴吧都是这种设计
    murmur
        20
    murmur  
       Apr 15, 2022
    而且考虑 ui 展示,评论是只能输文字,回复可以是富文本
    xxxxware
        21
    xxxxware  
       Apr 15, 2022
    一张表好, 不管是微信那种一条下面拖多条的形式 还是楼中楼的形式都好扩展。
    daimubai
        22
    daimubai  
       Apr 15, 2022   ❤️ 1
    一张表好,如果不知道怎么设计,那就去模仿别人的设计:

    https://juejin.cn/post/6844903542679928846
    whileFalse
        23
    whileFalse  
       Apr 15, 2022 via iPhone
    我能理解楼主的意思。楼中楼在需要翻页的时候很难搞,因为要确保“一个主回复的所有子回复都同时显示出来”
    oy9r
        24
    oy9r  
       Apr 15, 2022
    如果楼主只想嵌套一层的话,两个表似乎更加方便一点。
    zzztongxue
        25
    zzztongxue  
    OP
       Apr 15, 2022 via iPhone
    @whusnoopy 👍我们现在就是这么做的,感谢灵魂回复
    zzztongxue
        26
    zzztongxue  
    OP
       Apr 15, 2022 via iPhone
    @whileFalse 解决了,回复评论放在一个表里实践之后发现挺好操作
    Mandelo
        27
    Mandelo  
       Apr 15, 2022
    组织机构树做过吗?我感觉是一样的结构 id--->id reply_id --> parent_id
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2447 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 68ms · UTC 03:36 · PVG 11:36 · LAX 20:36 · JFK 23:36
    ♥ Do have faith in what you're doing.