12

A table's boolean fields can be named using the positive vs the negative...

for example, calling a field:

"ACTIVE" , 1=on / 0=off 
or
"INACTIVE" , 0=on / 1=off

Question: Is there a proper way to make this type of table design decision, or is it arbitrary?


My specific example is a messages table with a bool field (private/public). This field will be set using a form checkbox when a user enters a new message. Is there a benefit in naming the field "public" vs "private"?

thanks.

4

7 に答える 7

23

I always prefer positive names, to avoid double negatives in code. "Is not inactive" is often cause for a double take when reading. "Is inactive" can always be written as "if (!Active)" whilst taking advantage of built-in language semantics.

于 2009-09-18T17:22:28.960 に答える
18

My personal preference:

  • Use prefixes like "Is", "Has", etc. for Boolean fields to make their purpose clear.
  • Always name variables in the affirmative. For Active/Inactive, I would name it IsActive.
  • Don't make a bit field nullable unless you really have a specific purpose in doing so.

In your specific use case, the field should be named either IsPublic or IsPrivate--whichever name would result in a True answer when the user ticks the checkbox.

于 2009-09-18T17:24:04.010 に答える
2

私は他のいくつかの答えに同意しませんが、常に二重否定を入れないでくださいという間違った答えを絶対に避けてください

于 2009-09-18T17:54:59.033 に答える
1

常に肯定的な名前を使用してください。

否定的な名前を使用すると、すぐに二重否定になります。二重否定がロケット手術であるというわけではありませんが、それは脳のサイクルであり、それらは価値があります:)

于 2009-09-18T17:29:00.873 に答える
1

常にポジティブを使用してください。

もっと簡単です。

論理的に極端に否定を使用してください。InActive が Active よりも優れている場合、InInActive または InInInActive ではないのはなぜですか?

それはそれほど単純ではないからです。

于 2009-09-18T17:33:21.340 に答える
1

これらの状況を処理する適切な方法は、列に関連付けられた値を格納するテーブルを作成し、2 つのテーブル間に外部キー関係を作成することです。いいえ:

WIDGETSテーブル:

  • WIDGET_ID
  • WIDGET_STATUS(fk)

WIDGET_STATUS_CODESテーブル:

  • WIDGET_STATUS_CODE(ピーク)
  • DESCRIPTION

可能であればWIDGET_STATUS_CODE、自然キーになります (IE: 「アクティブ」の場合は ACT、「非アクティブ」の場合は INA)。これにより、レコードが人間にとってより読みやすくなりますが、常に可能であるとは限らないため、人工/代理キー (自動番号/シーケンスなど) を使用します。

これを行う理由は次のとおりです。

  • ステータスが示すものは読み取り可能です(これは元の質問でした)
  • より多くのステータスを定義/使用する必要があるという将来の証拠
  • 誰かが値を 2、3、4 などに設定できないように、参照整合性を提供します。
  • スペースは安いです。悪いデータを許可することは効率的ではありません
于 2009-09-18T17:33:42.917 に答える
-2

データベースにブール型フィールドを使用しないようにしてください。

1 つ目は、RM には真偽値の情報を表現するためのより優れた方法があります。つまり、テーブルにタプルが存在することです。

2 つ目は、ブール型フィールドは、クエリを実行する際の非常に不適切な識別子です。それらにインデックスを付けるのは事実上完全な狂気であるため、クエリを実行する場合、ブールフィールドの存在はまったくメリットがありません。

于 2009-09-18T20:49:40.047 に答える