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.
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.
Meine persönliche Vorliebe:
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.
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.
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:
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.
Tags und Links sql database-design data-modeling boolean