ciki
V2EX  ›  数据库

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

  •  
  •   ciki · Jun 2, 2021 · 1304 views
    This topic created in 1824 days ago, the information mentioned may be changed or developed.
    第一个方案:一个字段需要存储多个关联的 ID,通过逗号的方式存储
    第二个方案:新建一张表存储表的 id 和关联 id,每个 ID 一行记录

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