鉴于我将采用将更改存储在历史表中的策略,我面临以下选项来实现 MySQL 中给定行的状态:
- 一个
isActive
布尔 - 一个
activeStatus
枚举 activeStatus
引用小型ActiveStatus
查找表的INT- 不引用另一个表的
activeStatus
INT
在我看来,第一种方法相当不灵活,因为将来我可能需要更多的布尔值来支持其他类型的活动状态(我不确定它们会是什么,但可能是“正在逐步淘汰”或“为一组随机用户”等)。
有人告诉我 MySQL 枚举不好,所以第二种方法可能行不通。
我喜欢第三种方法,但我想知道它是否是一个相对较小的问题的笨拙解决方案。
第四种方法要求我们提前知道每个状态 INT 的含义,并且看起来像是一种过时的做事方式。
有规范的正确答案吗?我是否忽略了另一种方法?