2010-09-21 25 views
4

AdventureWorks Data Dictionary指定在[Contact][EmailPromotion]列是int值和:命名布尔(位)是一个SQL分贝

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数据类型bit(这两种使用都将被记录)?
  • 你推荐布尔型和布尔型列的命名约定是什么? (例如,IsActive,ActiveFlag,Active)

回答

6

对于第一部分,他们可能允许将来的状态代码(尽管使用该列名很难想象它会是什么......)。

在第二个问题上你会发现很多异议,但在这种情况下,我更喜欢IsActive作为名称。我发现它读得很好,并且可以防止代码中出现双重瑕疵,如果您使用类似IsInactive的东西,则会获得该代码。

+0

+1 - IsActive是一个很好的标准。对于第一部分,你不想限制自己的两种选择。如果您在路上有不同的电子邮件列表,您可以创建一个新列或更改所有下游过程以适应新的数据类型,除非您计划好并使用int :) – JNK 2010-09-21 15:59:30

2

无论漂浮你的船。唯一重要的是在整个数据库中命名约定和一致性。

使用int的标志是没有道理的,我会一直使用tinyint,我几乎从来不使用bit可言,因为我始终是敞开的各种各样的可能性在那里。

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

2

是否有充分的理由在适当的位置使用int数据类型(这两种用法都将被记录)?

INT一贯支持。虽然BIT变得越来越普遍,但我会打赌支持只是一个具有CHECK约束的INT列的掩码。有一个good asktom question about why Oracle doesn't have a specific BIT/BOOLEAN data type ...

什么命名约定的布尔和布尔状的列,你推荐? (例如IsActive,ActiveFlag,Active)

与编程相同,它们应该以“is”作为前缀,并且在读取时应该提供是/否的问题来推断列是布尔指示符。所以“isActive”将是我的决定,但我会探讨是否情况不需要一个STATUS表&外键。