数据库表中布尔列的命名

Amr*_*awy 48 database sql-server database-design naming-conventions

我有'服务'表和以下列描述如下

  1. 用户是否需要验证服务?
  2. 是否需要用户的电子邮件激活服务?
  3. 该服务是否需要用户的移动激活?

我犹豫是否命名这些列如下

IsVerificationRequired
IsEmailActivationRequired
IsMobileActivationRequired
Run Code Online (Sandbox Code Playgroud)

要么

RequireVerification
RequireEmailActivation
RequireMobileActivation
Run Code Online (Sandbox Code Playgroud)

我无法确定哪种方式最好.所以,以上建议的名称之一是最好的还是还有其他更好的名称?

gbn*_*gbn 48

我会(并且确实)使用"IsVerificationRequired"

我尝试在列名中添加一些含义,因此很明显(ValueDate,InsertedDateTime,IsActive,HazCheezBurger,ProductName等)."Isxxxx"暗示是/否,例如没有思考,你只有2个状态不像"ProductName".

  • 生成 getter 和 setter 时会出现问题。大多数 IDE 都会将“is”添加到布尔值 getter 中。例如,如果布尔变量是“verificatedRequired”,getter 将生成为“isVerificationRequired”而不是“getVerificatedRequried”。如果您使用变量作为“isVerificationRequired”,那么 getter 将是“isIsVerificationRequired”。 (4认同)

Dan*_*n F 17

运行Is变体,或至少交换Require到Requires.布尔语应该用作问题.是,可以,有,应该,它们都是布尔函数/列的良好前缀.有关此问题的更多参数,请参见1370840

  • 这是一个值得参考的有趣问题,因为它更多的是关于命名 getter 方法的约定,而不是变量。我不知道其他语言,但在 Java 中,我一直看到的约定是使用“is”前缀作为 getter,而不是变量。那么,对于数据库,您是否考虑将列名更像字段或 getter?;) (2认同)

小智 6

我会选择VerificationRequired,EmailActivationRequired等.

数据库是状态的快照,因此上面列出的列名称比我认为的那些更好.

  • 我同意。以问题形式出现的列名似乎有点矫枉过正。这就像将 FirstName 和 LastName 列命名为“WhatIsTheFirstName”和“WhatIsTheLastName”。这显然是愚蠢的。 (2认同)
  • 但我认为在某些情况下这样需要真或假的问题是如此可读,以确定真或假而不是任何其他值 (2认同)
  • @MJB:不傻。您还可以具有DateVerificationRequired!我经常用日期字段替换布尔字段,如果这会增加额外的信息(当然,如果值可能会更改)。在那种情况下,Null表示尚未满足条件。 (2认同)