我需要在表格中有一个名为 status 的列。此状态列可以包含 - > 已激活,已过期,已停用。所以我想知道为什么我不能创建一个名为status的整数类型列并将它们存储为0,1,2(已过期,已激活,已停用)。但我们被要求使用这些东西。 CHAR而不是Int。所以它将是状态Char(2)并存储为0,1,2。
为什么我应该使用Char作为列类型而不是Integer是我的问题?
答案 0 :(得分:2)
对于标志字段,我通常会使用CHAR(1),以便我有一些有意义的内部值,例如'A'
,{{1} },'E'
- 在这种情况下,不使用顺序整数值,因为它们不会泄露信息!
这些标志值 - 即使你的“更具可读性”仍然通过常量映射,这样代码中就不会出现“魔术值”。 (不幸的是,它们仍然必须出现在Views和诸如此类的东西中。)
组合标志时要小心,但是:如果标志试图表示太多(例如,超过小的谨慎值集)那么它可能太复杂并且需要分成多个列/关系。
答案 1 :(得分:1)
我的偏好是我们有一个StatusType表,其值的增量为10(10,20,30 ......)。该表有一个描述字段和一个IsActive列。
这使我们可以轻松地在行上设置状态。我们还在代码中使用枚举中的描述使其更具可读性。
我认为使用字母与数字没有任何好处,因为单个字母仍然没有描述性,而SQL SERVER是一个喜欢数字的巨型计算器。再一次只是我的意见。更重要的是你打算如何使用数据。