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

2022-08-15 09:56:35 +08:00
 leipengcheng

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

1797 次点击
所在节点   科技
12 条回复
sadfQED2
2022-08-15 10:12:07 +08:00
如果是最新版本的 MySQL ,可以考虑 json

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

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

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

“取出来之后,还要进行处理。”
还要处理什么?答案吗?
wlkq
2022-08-15 11:48:43 +08:00
要两列:key , value
横向扩展,变为竖向扩展。key 的值是多变的,存储什么都可以
wlkq
2022-08-15 11:50:48 +08:00
@wlkq 如果需要,可以再加几列存储特定的值。这样就可以把多变的选项存储在 key 下面,值存储在 value
wonderfulcxm
2022-08-15 12:04:22 +08:00
没有标准答案吧,得看需求,如果答案需要变来变去,一会 123 ,一会 ABC ,json 更好,比如如果要分析答案,比如哪个字数更多(奇怪的需求)那统计列比较方便。
kaedeair
2022-08-15 14:16:17 +08:00
分两张表,一张问题表,一张选项表,选项关联到问题的外键

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/872874

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX