Positive oder negative boolesche Feldnamen

8

Die booleschen Felder einer Tabelle können mit dem positiven gegenüber dem negativen benannt werden ...

zum Beispiel ein Feld aufrufen:

%Vor%

Frage: Gibt es eine geeignete Methode, um diese Art der Tabellenentwurfsentscheidung zu treffen, oder ist das willkürlich?

Mein spezifisches Beispiel ist eine Nachrichtentabelle mit einem Bool-Feld (privat / öffentlich). Dieses Feld wird über ein Formular-Kontrollkästchen festgelegt, wenn ein Benutzer eine neue Nachricht eingibt. Gibt es einen Vorteil bei der Benennung des Feldes "öffentlich" gegenüber "privat"?

danke.

    
cardflopper 18.09.2009, 17:21
quelle

7 Antworten

19

Ich bevorzuge immer positive Namen, um Doppel-Negative im Code zu vermeiden. "Ist nicht inaktiv" ist oft Ursache für eine Doppelaufnahme beim Lesen. "Ist inaktiv" kann immer als "if (! Active)" geschrieben werden, während die eingebaute Sprachsemantik genutzt wird.

    
Adam Wright 18.09.2009, 17:22
quelle
15

Meine persönliche Vorliebe:

  • Verwenden Sie Präfixe wie "Is", "Has" usw. für boolesche Felder, um ihren Zweck zu verdeutlichen.
  • Benennen Sie Variablen immer in affirmative . Für Aktiv / Inaktiv würde ich es IsActive nennen.
  • Machen Sie ein Bitfeld nicht nullbar, wenn Sie nicht wirklich einen bestimmten Zweck haben.

In Ihrem speziellen Anwendungsfall sollte das Feld entweder IsPublic oder IsPrivate heißen - je nachdem, welcher Name eine True-Antwort ergeben würde, wenn der Benutzer das Kontrollkästchen ankreuzt.

    
richardtallent 18.09.2009 17:24
quelle
2

Ich würde nicht mit einigen der anderen Antworten nicht einverstanden sein, aber auf jeden Fall die falsche Antwort vermeiden, die nicht immer doppelt Negatives zu setzen ist

    
leora 18.09.2009 17:54
quelle
1

Verwenden Sie immer positive Namen.

Wenn Sie negative Namen verwenden, geraten Sie sehr schnell in die doppelte Negation. Nicht diese doppelte Verneinung ist Raketenoperation, aber es ist ein Gehirnzyklus und diese sind wertvoll:)

    
Stefan 18.09.2009 17:29
quelle
1

Verwenden Sie immer positiv.

Es ist einfacher.

Nehmen Sie die Negation zum logischen Extrem: Wenn InActive besser als Active ist, warum nicht InInActive oder InInInActive?

Weil es weniger einfach wäre.

    
Larry Watanabe 18.09.2009 17:33
quelle
1

Die richtige Methode zum Behandeln dieser Situationen besteht darin, eine Tabelle zu erstellen, die die Werte enthält, die der Spalte zugeordnet sind, und eine Fremdschlüsselbeziehung zwischen den beiden Tabellen zu erstellen. IE:

WIDGETS tabelle:

  • WIDGET_ID
  • WIDGET_STATUS (fk)

WIDGET_STATUS_CODES tabelle:

  • WIDGET_STATUS_CODE (pk)
  • DESCRIPTION

Wenn möglich, wäre WIDGET_STATUS_CODE ein natürlicher Schlüssel (IE: ACT für "Aktiv", INA für "Inaktiv"). Dies würde Datensätze für Menschen lesbarer machen, ist aber nicht immer möglich, also würden Sie einen künstlichen / Ersatzschlüssel verwenden (wie eine automatische Nummer / Sequenz / etc).

Sie möchten dies tun, weil:

  • Es ist lesbar, welcher Status anzeigt (was die ursprüngliche Frage war)
  • Zukunftssicher in der Notwendigkeit, mehr Status zu definieren / zu verwenden
  • Bietet referenzielle Integrität, sodass jemand den Wert nicht auf 2, 3, 4 usw. setzen kann.
  • Der Weltraum ist billig; Es gibt nichts, was das Erlauben von schlechten Daten angeht
OMG Ponies 18.09.2009 17:33
quelle
-1

Versuchen Sie, boolesche Felder in Datenbanken insgesamt zu vermeiden.

Eins, das RM hat eine viel bessere Möglichkeit, Wahrheitswerte darzustellen als über boolesche Felder: über das Vorhandensein eines Tupels in einer Tabelle.

Zwei boolsche Felder sind sehr schlechte Diskriminatoren beim Abfragen. Es ist praktisch völliger Wahnsinn, sie zu indizieren, so dass das Vorhandensein boolescher Felder bei der Abfrage keinen Vorteil bringt.

    
Erwin Smout 18.09.2009 20:49
quelle