Fragebögen
Aufgabenstellung
Es gibt Situationen, wo man Fragebögen in einer Datenbank verwalten möchte. Diese Fragebögen haben meistens irgendwelche Kriterien, die man ankreuzen kann:
Bei Frage 1 kann nur immer ein Kriterium angekreuzt werden,
während bei Frage 2 eine Auswahl möglich ist. Es stellt sich nun die
Frage, wie man solche Fragebögen am besten in einer Datenbank
ablegt.
Die einfachste Möglichkeit besteht
darin, dass man für jedes Kriterium ein eigenes Attribut in einer
Tabelle verwendet:
Fragebögen (FBNr,
F1a, F1b, F1c, F1d, F2a, F2b, F2c, F2d, F2e, F2f, F2g, F2h)
Diese Tabelle besitzt einen ID-Schlüssel FBNr, der den Fragebogen
identi-fiziert, sowie ein Attribut für jedes Kriterium, wobei die
Nummer der Frage sowie die Position des Kriteriums (a,b,c...) für
den Attributnamen ver-wendet wird (Beispiel: F2g=Frage 2, Kriterium
"Orange"). Als Datentyp der Kriterienattribute wird BOOLEAN
verwendet (falls vorhanden, sonst INTEGER oder BYTE oder SHORT oder
sonst ein ganzzahliger, numerischer Typ). Der Typ BOOLEAN kann nur
die Werte "Ja" und "Nein" annehmen (Ja=Feld markiert).
Man sieht nun bereits, dass schon bei kleinen Fragebögen grosse
Tabellen (viele Attribute) entstehen. Noch schlimmer wird es, wenn
man eine Abfrage verwenden möchte, die alle
Fragebögen auflistet, bei denen
nur die Farben Rot, Grün und Orange angekreuzt
worden sind:
SELECT FBNr
FROM Fragebögen
WHERE F2a=Ja AND F2b=Ja AND F2c=Nein AND F2d=Nein
AND F2e=Nein AND F2f=Nein AND F2g=Ja AND F2h=Nein;
Man sieht bereits hier, dass noch kompliziertere Abfragen schlicht
un- überschaubar werden. Es stellt sich daher die Frage, ob es
bessere Lösungen gibt.