润叶仓管 发表于 2023-9-14 12:11:48

用于sql表中“ tatus”列的类型

我有一个(虚拟)表结构,如下所示:
票证**ID** :int(11)PK**名称** :varchar(255)**状态** ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????问题是,我应该使用哪种数据类型作为状态?正如我所看到的,这是我的选择:
varchar代表状态-错误是因为没有完整性
枚举代表状态-BAD,因为要改变值,我必须改变表,然后添加任何值下拉列表的代码,等等
int FK到状态表-好的,因为是动态的,不好的,因为很难通过目视检查(这可能很有用)
varchar FK到状态表-好的,因为它是动态的,在检查中可见。坏的,因为密钥是有意义的,通常是不合理的owned。有趣的是,在这种情况下,状态表可能只有一列,这使它成为美化的枚举我对情况有准确的了解吗?有意义的钥匙真的那么糟糕吗?因为虽然它确实给我带来了鸡皮b,但我没有任何理由这样做……
更新:    对于选项4,建议的结构将是 status表的状态    : char(4)FK    。所以,
OPEN =>“打开”
CLOS =>“已关闭”
“ PEND” =>待定授权
“ PROG” =>“进行中
在这种情况下有什么缺点?我可以看到在这种情况下使用它int而不是char唯一的优点是性能稍差。
                                                               
    解决方案:                                                               
                                                                转到数字3。如果您想检查某些内容,请在状态值中创建连接视图。
页: [1]
查看完整版本: 用于sql表中“ tatus”列的类型