V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zzztongxue
V2EX  ›  问与答

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

  •  1
     
  •   zzztongxue · 2022-04-14 15:01:15 +08:00 via iPhone · 3223 次点击
    这是一个创建于 987 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前端结构是楼中楼的形式,之前决定放一张表里,现在实践过程中发现放一张表 restful 形式的 api 不好设计
    第 1 条附言  ·  2022-04-15 21:55:04 +08:00

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

    27 条回复    2022-04-15 19:53:10 +08:00
    XiLingHost
        1
    XiLingHost  
       2022-04-14 15:04:09 +08:00
    你把评论看成一种特殊的回复不就好了
    zzztongxue
        2
    zzztongxue  
    OP
       2022-04-14 15:11:40 +08:00 via iPhone
    @XiLingHost 之前就是这样考虑的,但是接口不太好写
    seakingii
        3
    seakingii  
       2022-04-14 15:12:50 +08:00
    @zzztongxue 哪里不好写呢?
    wunonglin
        4
    wunonglin  
       2022-04-14 15:14:13 +08:00
    回复不就是评论的一种么。。。
    XiLingHost
        5
    XiLingHost  
       2022-04-14 15:21:48 +08:00
    @zzztongxue 有什么不好写的,restful 形式的话那就是直接把对象的 json 返回到前端就行了,你可以把评论和回复的模型统一,然后把评论的回复对象指向文章,回复的回复对象指向评论或回复,接下来就是前端渲染的活了
    oneisall8955
        6
    oneisall8955  
       2022-04-14 17:08:01 +08:00
    怀疑你是不是我司的,现在就在做评论需求,今天提测,明天上线呢
    oneisall8955
        7
    oneisall8955  
       2022-04-14 17:08:49 +08:00
    @oneisall8955 #6 不对,我这没`回复`楼中楼功能~
    fiypig
        8
    fiypig  
       2022-04-14 17:15:56 +08:00
    链表嘛
    wonderfulcxm
        9
    wonderfulcxm  
       2022-04-14 18:55:56 +08:00 via iPhone
    一般楼中楼要用到递归
    unnamedhao
        10
    unnamedhao  
       2022-04-14 18:57:39 +08:00 via iPhone
    不放一张表更不好写
    DuDuDu0o0
        11
    DuDuDu0o0  
       2022-04-14 19:12:55 +08:00
    @oneisall8955 今天提测,明天上线。 测了个寂寞?
    whusnoopy
        12
    whusnoopy  
       2022-04-14 19:14:48 +08:00   ❤️ 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  
       2022-04-14 19:27:14 +08:00   ❤️ 1
    把所有的帖子都视为一个不存在的帖子的回复,那不就统一起来了么
    oneisall8955
        14
    oneisall8955  
       2022-04-14 19:27:45 +08:00
    @DuDuDu0o0 #11 说起来就来气,公司的节奏,创业团队,一年多了还这样。美其名为敏捷开发,快速迭代
    tuutoo
        15
    tuutoo  
       2022-04-14 22:39:53 +08:00 via Android
    放一个表 一个评论或者回复就是一条记录,有自己的唯一 id 。
    加一列 reply_id 或者 parent_id 指向 @的评论或者回复的 id 。
    这样应该就能达到你说的效果了吧。
    Win7GM
        16
    Win7GM  
       2022-04-15 02:14:00 +08:00
    @oneisall8955 #14 草....听起来像是披着敏捷的皮瞎搞
    janda
        17
    janda  
       2022-04-15 07:46:17 +08:00 via Android
    递归
    murmur
        18
    murmur  
       2022-04-15 09:07:10 +08:00
    @wonderfulcxm 楼中楼不需要递归,现在的 bbs 就是直接复制别人的东西
    murmur
        19
    murmur  
       2022-04-15 09:08:05 +08:00
    我觉得你们都设计复杂了,回复的引用是复制内容,然后只能对楼层评论,这哪里是递归啊

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

    https://juejin.cn/post/6844903542679928846
    whileFalse
        23
    whileFalse  
       2022-04-15 12:31:10 +08:00 via iPhone
    我能理解楼主的意思。楼中楼在需要翻页的时候很难搞,因为要确保“一个主回复的所有子回复都同时显示出来”
    oy9r
        24
    oy9r  
       2022-04-15 13:08:12 +08:00
    如果楼主只想嵌套一层的话,两个表似乎更加方便一点。
    zzztongxue
        25
    zzztongxue  
    OP
       2022-04-15 18:15:42 +08:00 via iPhone
    @whusnoopy 👍我们现在就是这么做的,感谢灵魂回复
    zzztongxue
        26
    zzztongxue  
    OP
       2022-04-15 18:17:03 +08:00 via iPhone
    @whileFalse 解决了,回复评论放在一个表里实践之后发现挺好操作
    Mandelo
        27
    Mandelo  
       2022-04-15 19:53:10 +08:00
    组织机构树做过吗?我感觉是一样的结构 id--->id reply_id --> parent_id
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5651 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:10 · PVG 11:10 · LAX 19:10 · JFK 22:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.