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