Database
 sql >> Datenbank >  >> RDS >> Database

Ein Datenbankmodell für eine Online-Umfrage. Teil 2

In Teil 1 dieser Artikelserie haben wir ein grundlegendes Design für eine Online-Umfrage diskutiert. Am Ende dieses Artikels habe ich erwähnt, dass Teil 2 erweiterte Funktionen für unsere Umfrage behandeln würde, wie zum Beispiel:

  • Verschiedene Arten von Fragen wie Multiple-Choice-Fragen
  • Bedingte Reihenfolge der Fragen in einer Umfrage bzw. die Möglichkeit eines bedingten Pfades durch die Umfrage
  • Verwaltung der Umfragen
  • Berichte und Analysen

Beginnen wir damit, die Funktionalität zu erweitern, um verschiedene Arten von Fragen zu unterstützen.

Arten von Fragen

In Teil 1 dieser Artikelserie verwendeten wir ausschließlich offene Fragen, die aus einer Frage und einer Antwort bestanden. In diesem Artikel werden wir verschiedene Arten von Fragen definieren, wie z. B. polare (Ja-Nein)-Fragen und Multiple-Choice-Fragen . Jede Frage wird einem Typ zugeordnet. Bei polaren Fragen werden wir nur Ja/Nein als Antwort zulassen, aber in Zukunft könnten wir Variationen wie Richtig/Falsch zulassen. Fragen, die nicht offen sind, haben mögliche Antworten, aus denen der Befragte wählen kann.

In Zukunft werden wir Fragen hinzufügen, die eine bewertete Antwort erfordern. Zum Beispiel:„Wie sehr gefällt Ihnen das Datenbankdesign; zwischen 1 und 100 (wobei 1 angibt, dass es Ihnen sehr gefällt, und 100 angibt, dass es Ihnen sehr gefällt)?”

Entitäten und Beziehungen

Für die verschiedenen Arten von Fragen in der Umfrage werde ich den Bereich „Fragen“ um Arten und Antwortmöglichkeiten erweitern.

Idealerweise möchte ich einen Fremdschlüssel zwischen den tatsächlichen Antworten und den möglichen Antworten für Multiple-Choice-Fragen (response_choice) erstellen, um die Datenintegrität zu gewährleisten. Dies würde funktionieren, wenn alle Fragen Antwortmöglichkeiten hätten und offene Fragen nicht erlaubt wären. Da ich offene Fragen unterstützen muss, muss ich die Integrität der Antworten im Anwendungscode sicherstellen.

Formales Design

Wir müssen die in Teil 1 erstellte ERD erweitern dieser Artikelserie. Wie zuvor werde ich Vertabelo verwenden, einen Online-Datenbankmodellierer. Wenn Sie noch kein Vertabelo-Konto haben, können Sie sich hier für eine kostenlose Testversion registrieren.

Ich werde einen Kommentar abgeben; Sie werden feststellen, dass ich im Allgemeinen runde Zahlen wie 100 oder 1000 verwende, um die Länge von varchar-Feldern zu definieren; Ich schlage nicht vor, dass diese unbedingt die richtige Größe haben, sondern ich verwende dies eher als Abkürzung, anstatt die Länge undefiniert zu lassen. Wenn Sie dieses Modell verwenden, passen Sie die Längen bitte an Ihre speziellen Anforderungen an. Erlauben Sie beispielsweise einem Befragten, eine sehr, sehr lange Antwort auf eine offene Frage einzugeben – oder beschränken Sie sie auf, sagen wir, 1000 Zeichen? Dies kann von der Anwendung abhängen, die Sie für die Verwendung der Datenbank erstellen, da sie Einschränkungen bei der Feldlänge haben kann.

Ich füge eine question_type-Tabelle hinzu, die mit der Frage verknüpft ist:Diese könnten die Namen „offenes Ende“, „Ja-Nein“, „Multiple-Choice“ und in Zukunft „Rating“ haben. Bei Multiple-Choice-Fragen hätte jede Frage Antwort_Auswahlmöglichkeiten, aus denen ausgewählt werden kann.

Damit könnte man sogar polare Fragen umsetzen, aber das halte ich für übertrieben. Eine andere Lösung wäre, response_choice mit question_type zu verknüpfen, sodass die question_type-Zeile „ja-nein“ mit den response_choice-Zeilen „ja“ und „nein“ verknüpft wäre, aber ich denke, das ist nicht notwendig – aber Sie könnten es tun Sie wollen mehrsprachige Möglichkeiten. Sie würden dann ein Feld für die Sprache des Befragten in die Tabelle response_choice aufnehmen oder die Internationalisierung auf der Benutzeroberfläche verwalten.




Ich habe die in Teil 1 erstellten Tabellen koloriert in  Gelb  und die neu hinzugefügten Tabellen in Orange , damit die Hinzufügungen besser zu sehen sind.

Schlussfolgerung

Jetzt haben wir begonnen, die Verbesserungen umzusetzen, die in Teil 1 besprochen wurden dieser Artikelserie.

Im nächsten Artikel werde ich weitere Unterstützung für die folgenden Funktionen hinzufügen:

  • Bedingte Reihenfolge der Fragen in einer Umfrage
  • Verwaltung der Umfragen
  • Berichte und Analysen