代码之家  ›  专栏  ›  技术社区  ›  David Murdoch

在SQL数据库中命名布尔(位)值

  •  4
  • David Murdoch  · 技术社区  · 15 年前

    这个 AdventureWorks Data Dictionary 指定 [EmailPromotion] [Contact] 表是一个 int 而且:

    0 = Contact does not wish to receive e-mail promotions.
    1 = Contact does wish to receive e-mail promotions.
    

    [Employee].[CurrentFlag] 使用 bit 如下:

    0 = Inactive
    1 = Active
    

    我的问题有两部分:

    • 有充分的理由使用 int 数据类型已就位 一点 (将记录两种用途)?
    • 对于布尔型和布尔型列,您推荐什么命名约定?(例如,isactive、activeflag、active)
    3 回复  |  直到 15 年前
        1
  •  6
  •   D'Arcy Rittich    15 年前

    对于第一部分,他们可能会考虑将来的状态代码(尽管对于这个列名,很难想象可能是什么…)。

    你在第二个问题上会发现很多不同意见,但我更喜欢 IsActive 在本例中作为名称。我发现它读起来很好,并且可以防止代码中出现双重重读,如果使用 IsInactive .

        2
  •  2
  •   OMG Ponies    15 年前

    是否有充分的理由使用int datatype in-place位(这两种用法都将记录在案)?

    始终支持int。虽然bit变得越来越常见,但我敢打赌,支持只是带有check约束的int列的一个掩码。有一个 good asktom question about why Oracle doesn't have a specific BIT/BOOLEAN data type

    对于布尔型和布尔型列,您推荐什么命名约定?(例如,isactive、activeflag、active)

    与编程相同,它们应该以“is”为前缀,读取时,应该显示“yes/no”问题,以推断列是布尔指示器。因此,“isactive”是我的决定,但我将调查情况是否不需要状态表和外键。

        3
  •  2
  •   momo    15 年前

    任何能浮在你船上的东西。唯一重要的是整个数据库的命名约定和一致性。

    使用 int 因为旗子不合理,我会用 tinyint 我几乎没用过 bit 因为我总是乐于接受各种各样的可能性。

    我通常给这些列命名 Active (如果只有两种状态)和 StatusId (如果有多个状态)。