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

在设计 BBS 数据库的时候,评论(回复)的内容是和评论数据放在一张表里好,还是另设新表?

  •  
  •   baobao1270 · 2020-02-07 13:42:17 +08:00 · 1996 次点击
    这是一个创建于 1757 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,方案一为:

    table comment{
    	id,
        user,
        publish_time,
        ……,
        content
    }
    

    方案二为:

    table comment{
    	id,
        user,
        publish_time,
        ……
    }
    
    table comment_content{
    	id,
        comment_id,
        content
    }
    
    9 条回复    2020-02-07 18:21:33 +08:00
    swulling
        1
    swulling  
       2020-02-07 13:45:11 +08:00
    正常不都是方案一么。
    JmmBite
        2
    JmmBite  
       2020-02-07 13:54:32 +08:00
    量小方案一,量大剥离出来方案二
    keepeye
        3
    keepeye  
       2020-02-07 13:56:51 +08:00
    不管怎么样 开始最好用方案一 不要过度优化
    opengps
        4
    opengps  
       2020-02-07 14:13:42 +08:00
    字段位置移动性质,建议后期再垂直拆分
    akira
        5
    akira  
       2020-02-07 14:21:43 +08:00
    方案 1.
    如果是走方案 2 的话,那你可以把帖子和回复的内容都放一起了
    gzlock
        6
    gzlock  
       2020-02-07 17:24:29 +08:00 via Android
    方案三,主帖表用 JSON 字段放回复楼层数据
    ila
        7
    ila  
       2020-02-07 17:27:03 +08:00 via Android
    @gzlock 这套路适用范围广,把工作推到前端(ー_ー)!!
    akira
        8
    akira  
       2020-02-07 17:32:29 +08:00
    @gzlock 查询某个人的全部回帖的时候 会比较困难吧
    sadfQED2
        9
    sadfQED2  
       2020-02-07 18:21:33 +08:00
    方案二适合数据量大的情况,把索引字段和内容数据分开,这样方便做分表,并且不至于大量数据冗余。我们公司目前百亿级别评论数据,comment 表有 2 份,一份 uid 分表,一份文章 id 分表,所有查询走 comment,取到评论 id 再去 comment_content 表查内容。但是这样做以后表基本上不能改字段了,如果业务变动会非常麻烦,所以后期我们花了非常大的精力做迁移,将数据忘 nosql 上同步

    方案一的话开发方便,业务变动的时候加字段方便。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2640 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:48 · PVG 09:48 · LAX 17:48 · JFK 20:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.