我有一个(虚拟)表 struct ,如下所示:
ticket id: int(11) PK name: varchar(255) status: ?????????
问题是,我应该为状态使用什么数据类型?在我看来,以下是我的 Select :
- varchar表示状态-不好,因为没有完整性
- 表示状态的枚举-不好,因为要更改值,我必须更改表,然后更改任何带有下拉列表的代码,等等
- 将FK插入到状态表-好是因为它是动态的,坏是因为它更难目视判断(这可能很有用)
- varchar FK连接到状态表-很好,因为它是动态的,并且在判断时可见.不好,因为 keys 是有意义的,这通常是不赞成的.有趣的是,在本例中,状态表完全可能只有一列,这使它成为一个美化的枚举
我对情况了解得准确吗?拥有一把有意义的 keys 真的那么糟糕吗?因为虽然它确实让我起鸡皮疙瘩,但我没有任何理由这样做…
Update:个 对于备选方案4,拟议的 struct 将是status:char(4) FK,与状态表相比.所以,
OPEN => "Open"
CLOS => "Closed"
"PEND" => "Pending Authorization"
"PROG" => "In Progress
这种情况的缺点是什么?在这种情况下,我看到使用int而不是char的唯一好处是性能不高.