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

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

  •  
  •   ciki · 2021 年 6 月 2 日 · 1132 次点击
    这是一个创建于 1683 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第一个方案:一个字段需要存储多个关联的 ID,通过逗号的方式存储
    第二个方案:新建一张表存储表的 id 和关联 id,每个 ID 一行记录

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