在表中存储状态标志值的最佳方法(char或int)

时间:2013-11-13 05:14:12

标签: mysql charts integer

我需要在表格中有一个名为 status 的列。此状态列可以包含 - > 已激活已过期已停用。所以我想知道为什么我不能创建一个名为status的整数类型列并将它们存储为0,1,2(已过期,已激活,已停用)。但我们被要求使用这些东西。 CHAR而不是Int。所以它将是状态Char(2)并存储为0,1,2。

为什么我应该使用Char作为列类型而不是Integer是我的问题?

2 个答案:

答案 0 :(得分:2)

对于标志字段,我通常会使用CHAR(1),以便我有一些有意义的内部值,例如'A',{{1} },'E' - 在这种情况下,使用顺序整数值,因为它们不会泄露信息!

这些标志值 - 即使你的“更具可读性”仍然通过常量映射,这样代码中就不会出现“魔术值”。 (不幸的是,它们仍然必须出现在Views和诸如此类的东西中。)

组合标志时要小心,但是:如果标志试图表示太多(例如,超过小的谨慎值集)那么它可能太复杂并且需要分成多个列/关系。

答案 1 :(得分:1)

我的偏好是我们有一个StatusType表,其值的增量为10(10,20,30 ......)。该表有一个描述字段和一个IsActive列。

这使我们可以轻松地在行上设置状态。我们还在代码中使用枚举中的描述使其更具可读性。

我认为使用字母与数字没有任何好处,因为单个字母仍然没有描述性,而SQL SERVER是一个喜欢数字的巨型计算器。再一次只是我的意见。更重要的是你打算如何使用数据。