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.

Lösung