【问题标题】:Best way to store three type bits?存储三种类型位的最佳方法?
【发布时间】:2017-08-11 20:34:03
【问题描述】:

存储和查询三种不同类型信息的最佳方式是什么?

例如:

是/否/否评论

我需要将这些数据存储为整数吗? (例如 1,2,3)与否?

我将使用 sqlite 获取本地数据并定期与 mssql 服务器同步。

【问题讨论】:

  • 可空位类型可以有三个值:0、1 或 NULL。
  • 使用“NULL”作为数据安全吗?选择数据时有用吗?
  • 不,“null”在 SQL 中通常表示“未知”
  • 对于三态布尔值(是,否,未指定),NULL 非常好。您可以选择值为 NULL 的所有行(不要使用等号)。您不能做的是像使用实际值一样加入另一个表。但是您当然可以查询所有没有 COMMENT 的行。

标签: c# asp.net sql-server database sqlite


【解决方案1】:

您可以使用位字段并在 mssql 数据库中将 yes/no/no 注释为 true/false/null,但是 sqlite 没有特殊的布尔字段,您需要使用整数字段。我的建议是在 sqlite 中使用 1/0/null。

【讨论】:

    【解决方案2】:

    为了“按本书”做,你应该有一个这样的“响应”表:

    +--------+----------------+
    | id     | name           |
    +--------+----------------+
    | 0      | yes            |
    | 1      | no             |
    | 2      | no comment     |
    +--------+----------------+
    

    并在需要的地方使用 id(可能是整数)作为外键。

    这样,您的 RDBMS 可以保持参照完整性

    但实际上,大多数人为此使用单个字符,例如'Y''N''C'

    此外,没有什么能阻止您将单个字符作为“响应”表的键,但根据我的经验,选择此解决方案的人并不多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      相关资源
      最近更新 更多