在数据库中怎么设计可能存在也可能不存在的值和状态值

2020-09-21 18:51:29 +08:00
 TomVista
if(type='type1'){
    a=''
    b=''
}

if(type='type2'){
    c=''
    d=[{
        e:'',
        f:''
        },
        ...
      ]
}

这里的 type 和 a b c d e f 怎么建表呢?

{e,f}要不要建表

799 次点击
所在节点    问与答
5 条回复
shakoon
2020-09-21 19:21:44 +08:00
把若干个子项用相同的分隔符拼成一个字段,使用的时候整体取出来再拆进数组里
yumenawei
2020-09-21 19:24:00 +08:00
哪些列需要经常被查询的吗?
没有的话就放一个字段里呗。
TomVista
2020-09-21 19:34:34 +08:00
@shakoon
@yumenawei
明白了,那 if else 这种呢?

用一个字段 判断 哪几个字段有值, 建立 nullable 的字段吗? 然后在业务上用 if else 判断?
tcfenix
2020-09-21 19:36:36 +08:00
方案 A 数据库弄个 varchar(255) 或者干脆 text 的字段,把数据用 json encode 了然后放进去
用的时候拿出来 decode 就好了

方案 B 对于不确定字段的对象存储,mongoDB 之类的 nosql 会更适合, 如果你还有机会调头,而且未来这样的不确定字段对象会越来越多,那么你可以考虑是不是要做迁移了
tcfenix
2020-09-21 19:37:41 +08:00
@TomVista
数据库加个字段类型,比如对应 type1 或者 type2
然后根据不同的情况把字符串 decode 到不同的 model 里面

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

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

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

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

© 2021 V2EX