zzztongxue
V2EX  ›  问与答

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

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

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

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