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

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

In diesem letzten Artikel einer vierteiligen Serie vervollständige ich das Design für eine Online-Umfragedatenbank, um Flexibilität für mehrere Umfragen, die Wiederverwendung von Fragen, Multiple-Choice-Antworten, das Ordnen von Fragen, bedingte Sprünge in der Umfrage basierend auf Antworten und mehr zu bieten Kontrolle über den Zugriff der Benutzer auf Umfragen über Gruppen von Umfragebesitzern.

Einführung

Am Ende von Teil 3 dieser Artikelserie habe ich erwähnt, dass ich in diesem Artikel erweiterte Funktionen hinzufügen werde. Diese erweiterten Funktionen sind:

  • Verwaltung der Umfragen
  • Berichte und Analysen

Zur Erinnerung, hier war das Modell nach Teil 3:



Verwaltung

Mein Ziel bei der Verwaltung von Umfragen ist es, eine Umfrage und die dazugehörigen Informationen von einer Gruppe verwalten zu lassen. So werde ich es einem administrativen Benutzer ermöglichen, Benutzergruppen zu definieren, die gemeinsam eine Online-Umfrage und ihre Fragen pflegen können. Der Eigentümer der Gruppe kann festlegen, welche Funktionen die anderen Benutzer der Gruppe ausführen können; Jeff kann beispielsweise Umfragen und Fragen ändern und löschen, aber Joe kann Umfragen und Fragen nur anzeigen, aber nicht ändern oder löschen.

Eine Sache, die Ihnen vielleicht aufgefallen ist, ist, dass die Benutzer von den Befragten der Umfrage getrennt sind. Natürlich kann ein Benutzer auch auf eine Umfrage antworten, aber ich möchte sie getrennt halten, damit ich weniger Informationen von einem Befragten verlangen kann als von einem Benutzer (zum Beispiel habe ich das Passwortfeld von einem Befragten entfernt, damit es ist es für Personen einfacher, auf die Umfrage zu antworten, ohne sich anzumelden/ein Konto zu erstellen).

Grundsätzlich erstelle ich für diese Verwaltung Tabellen für Gruppen und Benutzer sowie die Rollen und entsprechenden Berechtigungen oder Aktionen, die zulässig sind. Dies ermöglicht mehr Flexibilität als eine fest codierte Verknüpfung zwischen den Rollen und den Aktionen, die von jeder Rolle zugelassen werden. Natürlich muss die entsprechende Anwendung erstellt werden, um zu verstehen, welche Funktionalität von jeder Berechtigung zugelassen wird, und muss angepasst werden, wenn eine neue Funktionalität hinzugefügt wird, aber das Datenbankdesign muss nicht geändert werden, wenn eine Funktionalität hinzugefügt wird – neue Zeilen werden der hinzugefügt Tabelle, die Rollen mit Berechtigungen verknüpft.

Sie werden vielleicht auch bemerken, dass ich für die email eine ungerade Länge verwendet habe Spalte auf dem user und respondent Tabellen und einen ungeraden Wert für die ip_address Spalte für den respondent; 254 ist die maximale Länge, die eine E-Mail-Adresse gemäß den RFC-Definitionen haben kann, während 45 die maximale Länge ist, die eine IPv6-Adresse (mit IPv4-Tunneling) haben kann.




Außerdem werde ich einen Link aus der group hinzufügen Tabelle zur survey Tabelle, von der aus Links zu allen zugehörigen Tabellen gehen (question_order , survey_response , conditional_order , question_type , response_choice ). Auf diese Weise kann ich beim Löschen der Gruppe den Eigentümer der Gruppe warnen, dass alle entsprechenden Informationen gelöscht werden.

Ich bevorzuge diesen Ansatz, die Tabellendaten mit etwas anderem als dem spezifischen Benutzer zu verknüpfen, anstatt die Daten mit nichts zu verknüpfen. Wenn wir die Daten nicht mit irgendetwas (weder Gruppe noch Benutzer) verknüpft haben, wie ich es in früheren Teilen dieser Artikelserie anscheinend getan habe, stehen wir vor der Herausforderung, veraltete Daten zu „bereinigen“, wenn ein Benutzer aus der Online-Umfrage gelöscht wird Anwendung. Durch die Verknüpfung mit dem abstrakteren Begriff „Gruppe“ wird es dem Besitzer möglich, den Besitz der Gruppe und aller dazugehörigen Daten (Umfragen, Fragen, Antworten etc.) ggf. einem anderen Mitglied der Gruppe zu übertragen.

Formales Design

Dann erweitern wir die ERD, die in den anderen Teilen dieser Artikelserie erstellt wurde.




Ich habe die Tabellen, die in Teil 1 des Artikels erstellt wurden, gelb gefärbt, die in Teil 2 hinzugefügten Tabellen orange, die in Teil 3 hinzugefügten Tabellen grün und die neu hinzugefügten Tabellen hellblau, damit es einfacher ist siehe Ergänzungen. Den Spalten und Fremdschlüsseln, die in diesem letzten Artikel hinzugefügt wurden, wurde keine Farbe hinzugefügt, sodass Sie das aktuelle Modell mit dem vorherigen aus Teil 3 vergleichen müssten, um die Unterschiede zu sehen.

Berichte und Analysen

Wir haben genügend Informationen, die aus den Tabellen extrahiert werden können, um mehrere Berichte zu erstellen.

Zum Beispiel, welche Fragen besonders beantwortet wurden („Wie oft haben die Befragten bei Umfrage 7 Frage 10 mit „Ja“ beantwortet?“). Diese Informationsebene ist wahrscheinlich ausreichend für einfache Berichte über Umfrageantworten.

Wir können auch extrahieren, wie lange die Befragten gebraucht haben, um auf eine bestimmte Umfrage zu antworten („bei Umfrage 5 betrug die durchschnittliche Zeit, die für die Umfrage aufgewendet wurde, 13 Minuten“); Auch dies kann eine nützliche Information sein, damit die Eigentümer einer Umfrage die Umfragefragen so anpassen können, dass sie nicht mehr Zeit in Anspruch nehmen, als ein typischer Befragter bereit ist aufzuwenden oder was der Befragte den Befragten „versprochen“ hat (z. B. „diese Umfrage sollte zwischen 5 und 10 Minuten dauern“). Ich weiß, wenn mir jemand sagt, dass ich in weniger als 10 Minuten fertig sein soll, und ich mich 15 Minuten später immer noch durch Fragen quäle, dann werde ich wütend und bin im Allgemeinen nicht bereit, auf eine weitere Umfrage von ihm zu antworten.

Basierend auf den IP-Adressen der Befragten könnten wir eine Rückwärtssuche durchführen, um eine ungefähre Vorstellung davon zu bekommen, woher die Befragten stammen oder zumindest woher ihre IP-Adresse zu stammen scheint, als sie geantwortet haben. Beachten Sie, dass diese Informationen nicht absolut zuverlässig sind, da sich Personen möglicherweise über VPNs oder andere Mechanismen verbinden, die ihre IP-Adresse von ihrem physischen Standort trennen.

Wir können sogar extrahieren, wie Fragen von den ersten Befragten beantwortet wurden im Vergleich dazu, wie sie von den letzteren Befragten beantwortet wurden. Dies könnte einen interessanten Blickwinkel auf Ihre Umfrage darstellen – haben zum Beispiel die eifrigen Personen, die auf die Umfrage geantwortet haben, anders reagiert als die Personen, die nicht so eifrig waren und später auf die Umfrage geantwortet haben?

Zum jetzigen Zeitpunkt denke ich, dass diese Berichte ausreichen werden und dass weiterführende Analysen nicht erforderlich sind, da die wichtigsten Informationen offensichtlich der grundlegende Bericht darüber sind, welche Antworten auf jede Frage in einer Umfrage gegeben wurden. Wenn Sie erweiterte Analysen benötigen, überlegen Sie, welche Anforderungen Sie haben und wie vorhandene Daten oder neue Strukturen diese Analysen unterstützen können.

Schlussfolgerung

Und da haben Sie es. Ich werde nicht behaupten, dass dies das Design für die ideale Online-Umfragedatenbank ist, aber dies wird meinen Anforderungen in Bezug auf Flexibilität gerecht:mehrere Umfragen, Wiederverwendung von Fragen, Multiple-Choice-Antworten, Reihenfolge der Fragen, bedingte Sprünge in der Umfrage basierend auf Antworten und Kontrolle über den Zugriff der Benutzer auf Umfragen über Gruppen von Umfragebesitzern.

Wie ich es in jedem vorherigen Teil dieser Artikelserie getan habe, werde ich darauf hinweisen, dass Sie möglicherweise andere Anforderungen haben. Identifizieren Sie Ihre Anforderungen und implementieren oder passen Sie an, was Sie brauchen. Ich glaube fest an Wiederverwendung und nicht daran, das Rad neu zu erfinden.


Wenn Sie möchten, dass wir dieses Modell gemäß den Anforderungen Ihrer Anwendung umgestalten oder erweitern, lassen Sie es uns wissen. Wir können Ihnen helfen.


Ein Datenbankmodell für eine Online-Umfrage – die ganze Serie

Teil 1 Teil 2 Teil 3 Teil 4