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
数据类型bit
(两种用途都会记录在案)?答案 0 :(得分:6)
对于第一部分,他们可能允许将来的状态代码(虽然使用该列名称很难想象它可能是什么......)。
你会在第二个问题上发现很多不同意见,但在这种情况下我更喜欢IsActive
作为名称。我发现它读得很好,并防止你使用像IsInactive
这样的代码时会遇到双重错误。
答案 1 :(得分:2)
无论你的船漂浮着什么。唯一重要的是在整个数据库中命名约定和一致性。
使用int
作为标记是不合理的,我会使用tinyint
,我几乎不会使用bit
,因为我总是对各种各样的那里的可能性。
我通常将这些列命名为Active
(如果只有两种状态)和StatusId
(如果有多个状态)。
答案 2 :(得分: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表&外键。