leipengcheng
V2EX  ›  科技

求问一个基础的 mysql 业务方案

  •  
  •   leipengcheng · Aug 15, 2022 · 3235 views
    This topic created in 1541 days ago, the information mentioned may be changed or developed.

    需求: 多选题,不定数量的多个选项 方案 1:每个选项一列,a,b,c,d,e,f,g 方案 2:一列,用 json 存多个选项 leader 说,json 不是面向对象的,取出来之后,还要进行处理。但是我感觉 json 比较适应业务需求变化 是否还有更好的方案?

    12 replies  •  2022-08-15 14:16:17 +08:00
    sadfQED2
    sadfQED2
    Aug 15, 2022 via Android
    1
    如果是最新版本的 MySQL ,可以考虑 json

    如果是百年不变的 mysql5.7 ,那还是老老实实的多列吧
    Vegetable
    Vegetable
    Aug 15, 2022
    2
    两张表呗,问题表和选项表,一对多。
    x66
    x66
    Aug 15, 2022❤️2
    3
    二进制,每一位表示一个选项,最后转换为 10 进制或者 16 进制来存储。
    89(0x53) -> 1011001 -> acdg
    dcsuibian
    dcsuibian
    Aug 15, 2022
    4
    个人也觉得 json 不好,但使用得不少。主要是因为业务太多变了,每次都增减列的话相当麻烦。
    corningsun
    corningsun
    Aug 15, 2022
    5
    多列吧,扩展起来更方便。

    比如:下面几个需求,你 json 改起来就麻烦了。

    1 删除 c 选项
    2 增加 y 选项
    3 给选项自定义排序
    psx2019
    psx2019
    Aug 15, 2022
    6
    这种需求直接抽取共性列转行(加一个选项表的附表)就行了
    temp178
    temp178
    Aug 15, 2022
    7
    json 一把梭就行了
    y051313
    y051313
    Aug 15, 2022
    8
    类似的系统,我们是直接用的 json 存。

    “取出来之后,还要进行处理。”
    还要处理什么?答案吗?
    wlkq
    wlkq
    Aug 15, 2022
    9
    要两列:key , value
    横向扩展,变为竖向扩展。key 的值是多变的,存储什么都可以
    wlkq
    wlkq
    Aug 15, 2022
    10
    @wlkq 如果需要,可以再加几列存储特定的值。这样就可以把多变的选项存储在 key 下面,值存储在 value
    wonderfulcxm
    wonderfulcxm
    Aug 15, 2022 via iPhone❤️1
    11
    没有标准答案吧,得看需求,如果答案需要变来变去,一会 123 ,一会 ABC ,json 更好,比如如果要分析答案,比如哪个字数更多(奇怪的需求)那统计列比较方便。
    kaedeair
    kaedeair
    Aug 15, 2022
    12
    分两张表,一张问题表,一张选项表,选项关联到问题的外键
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5726 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 02:25 · PVG 10:25 · LAX 18:25 · JFK 21:25
    ♥ Do have faith in what you're doing.