5

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

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

4

2 回答 2

3

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

这些标志值 - 即使您“更具可读性”仍然通过常量映射,因此代码中不会出现“神奇值”。(不幸的是,它们仍然必须出现在视图中等等。)

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

于 2013-11-13T05:20:48.613 回答
2

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

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

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

于 2014-12-11T19:10:20.893 回答