数据库设计问题,一个字段通过逗号分割存储多个 ID 的方式和拆分子表的方式,哪个好?

2021-06-02 15:41:27 +08:00
 ciki
第一个方案:一个字段需要存储多个关联的 ID,通过逗号的方式存储
第二个方案:新建一张表存储表的 id 和关联 id,每个 ID 一行记录

哪个方式更好?或者有没有更好的方案?
642 次点击
所在节点    数据库
6 条回复
AoEiuV020
2021-06-02 17:28:28 +08:00
遵循第一范式的话,直接第二方案就好了,
但就我个人看法,如果这个字段不需要修改和部分查询的话第一个方便就完事了,
ciki
2021-06-02 17:36:41 +08:00
@AoEiuV020 对,我也倾向于第一个,主要是想看看有没更好的方案
lostSoul
2021-06-02 19:11:36 +08:00
@ciki 建议楼主看下 SQL 反模式设计这本书 有讲述了这个问题
我是建议结合场景来,如果你的数据不用经常的改动,删减或者查询,我是建议存逗号分开,但也会引发维护麻烦的问题
如果你的数据需要复杂的检索,比如做不等于等于等一系列的查询 随便 mysql 支持逗号这种 但是效率很低效,数据量多的情况下还没连表来的快
一切还是结合实际出发,单纯谈哪个方案好没啥用
ciki
2021-06-03 12:18:37 +08:00
@lostSoul 谢谢
Euthpic
2021-06-10 23:40:07 +08:00
第一种方案简单.
第二种方案的使用场景是:
1.需要用到关联查询
2.需要保留拓展字段的空间
ikas
2021-07-05 10:03:04 +08:00
现在或者未来需要检索这个字段,需要->表,不需要->随意

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

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

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

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

© 2021 V2EX