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

2020-02-07 13:42:17 +08:00
 baobao1270

如题,方案一为:

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

方案二为:

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

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

方案一的话开发方便,业务变动的时候加字段方便。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/642768

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX