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

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

  •  
  •   leipengcheng · 2022-08-15 09:56:35 +08:00 · 1769 次点击
    这是一个创建于 832 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    12 条回复    2022-08-15 14:16:17 +08:00
    sadfQED2
        1
    sadfQED2  
       2022-08-15 10:12:07 +08:00 via Android
    如果是最新版本的 MySQL ,可以考虑 json

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

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

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

    “取出来之后,还要进行处理。”
    还要处理什么?答案吗?
    wlkq
        9
    wlkq  
       2022-08-15 11:48:43 +08:00
    要两列:key , value
    横向扩展,变为竖向扩展。key 的值是多变的,存储什么都可以
    wlkq
        10
    wlkq  
       2022-08-15 11:50:48 +08:00
    @wlkq 如果需要,可以再加几列存储特定的值。这样就可以把多变的选项存储在 key 下面,值存储在 value
    wonderfulcxm
        11
    wonderfulcxm  
       2022-08-15 12:04:22 +08:00 via iPhone   ❤️ 1
    没有标准答案吧,得看需求,如果答案需要变来变去,一会 123 ,一会 ABC ,json 更好,比如如果要分析答案,比如哪个字数更多(奇怪的需求)那统计列比较方便。
    kaedeair
        12
    kaedeair  
       2022-08-15 14:16:17 +08:00
    分两张表,一张问题表,一张选项表,选项关联到问题的外键
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1152 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:11 · PVG 02:11 · LAX 10:11 · JFK 13:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.