Rolf B: Ja (true), Nein(false) und Beides (both) - 3 Werte - wie am Besten umsetzen?

Beitrag lesen

Hallo T-Rex,

ich hab immer wieder das Problem 3 Werte zu speichern bzw. ab zu fragen. Ja, nein und beides (oder keins von beidem).

Bei einer Ja/Nein Frage kann ich mir nicht vorstellen, wie "Ja und Nein" fachlich interpretierbar sein kann. "Keins von beiden" wäre als "unbeanwortet" deutbar. Es gibt für eine generische Lösung aber noch eine vierte Möglichkeit: "Nicht zutreffend".

Den Sachverhalt "nicht zutreffend" sollte man definitiv über ein eigenes boolesches Feld abbilden. Zumindest in der Datenbank.

Den Sachverhalt "Frage unbeantwortet" kann man durch ein nullable bool in der DB darstellen, dann gibt's eben TRUE, FALSE und NULL als mögliche Werte - de facto ist "NULL" aber auch nur ein weiteres bool, das von der DB verwaltet wird.

Wenn Du tatsächlich Ja UND Nein als gültige Eingabe haben kannst, dann mach aus Ja und Nein jeweils ein eigenes bool - d.h. es läuft dann auf 2-3 bools in der DB hinaus: Eins für JA, eins für NEIN und, sofern das benötigt wird, eins für "Frage relevant". Die Abfrage ist dann natürlich etwas mühsamer, aber in einer DB würde ich nicht anfangen, diese unterschiedlichen Zustände in einem Feld abzubilden und als Zahl zu codieren. Damit denormalisierst Du die DB (jedes Attribute in ein eigenes Feld, 1NF), was man nur tut, wenn es für die Performance der DB unabdingbar ist.

Im Programm könntest du diese Zustände durch verschiedene Bits eines int abbilden, aber das macht dein Programm unübersichtlich. Man kann auch ein Objekt dafür vorsehen, und immer dann, wenn Du die Antwort auf eine dieser Ja/Nein Fragen darstellen musst, setzt Du dieses JaNein-Objekt dafür ein. Das kann es dann in der erweiterten Ausprägung "JaNeinIrrelevant" Objekt geben.

Rolf

--
sumpsi - posui - obstruxi