V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
leipengcheng
V2EX  ›  科技

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

  •  
  •   leipengcheng · Aug 15, 2022 · 2601 views
    This topic created in 1352 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
        1
    sadfQED2  
       Aug 15, 2022 via Android
    如果是最新版本的 MySQL ,可以考虑 json

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

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

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

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