V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ciki
V2EX  ›  数据库

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

  •  
  •   ciki · 2021-06-02 15:41:27 +08:00 · 623 次点击
    这是一个创建于 1030 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第一个方案:一个字段需要存储多个关联的 ID,通过逗号的方式存储
    第二个方案:新建一张表存储表的 id 和关联 id,每个 ID 一行记录

    哪个方式更好?或者有没有更好的方案?
    6 条回复    2021-07-05 10:03:04 +08:00
    AoEiuV020
        1
    AoEiuV020  
       2021-06-02 17:28:28 +08:00
    遵循第一范式的话,直接第二方案就好了,
    但就我个人看法,如果这个字段不需要修改和部分查询的话第一个方便就完事了,
    ciki
        2
    ciki  
    OP
       2021-06-02 17:36:41 +08:00
    @AoEiuV020 对,我也倾向于第一个,主要是想看看有没更好的方案
    lostSoul
        3
    lostSoul  
       2021-06-02 19:11:36 +08:00
    @ciki 建议楼主看下 SQL 反模式设计这本书 有讲述了这个问题
    我是建议结合场景来,如果你的数据不用经常的改动,删减或者查询,我是建议存逗号分开,但也会引发维护麻烦的问题
    如果你的数据需要复杂的检索,比如做不等于等于等一系列的查询 随便 mysql 支持逗号这种 但是效率很低效,数据量多的情况下还没连表来的快
    一切还是结合实际出发,单纯谈哪个方案好没啥用
    ciki
        4
    ciki  
    OP
       2021-06-03 12:18:37 +08:00
    @lostSoul 谢谢
    Euthpic
        5
    Euthpic  
       2021-06-10 23:40:07 +08:00
    第一种方案简单.
    第二种方案的使用场景是:
    1.需要用到关联查询
    2.需要保留拓展字段的空间
    ikas
        6
    ikas  
       2021-07-05 10:03:04 +08:00
    现在或者未来需要检索这个字段,需要->表,不需要->随意
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1543 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:05 · PVG 01:05 · LAX 10:05 · JFK 13:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.