Zum Inhalt springen

← Zurück zum Beitrag

Best Practices: Semantisches Datenmodell

12.10.2025

Semantisches Datenmodell (Markdown)

Markdown herunterladen

Semantisches Datenmodell für eine Online‑Umfrage

Übersicht

Das folgende semantische Datenmodell beschreibt die Struktur und Beziehungen der Entitäten, die für die Verwaltung und Durchführung einer Online‑Umfrage erforderlich sind. Es umfasst die Definition von Umfragen, Fragen, Antwortoptionen, Umfrageergebnissen sowie optionalen personenbezogenen Angaben der teilnehmenden Personen.

  • Survey: Enthält Metadaten einer konkreten Umfrage.
  • Question: Definiert die einzelnen Fragen einer Umfrage.
  • AnswerOption: Repräsentiert vorgegebene Antwortmöglichkeiten je Frage.
  • SurveyResponse: Speichert eine ausgefüllte Umfrage.
  • ResponseAnswer: Verknüpft ein Umfrageergebnis mit den Antworten zu den Fragen.
  • Respondent: Optionale, personenbezogene Angaben einer teilnehmenden Person.
  • Enumerationen: GenderEnum, AgeGroupEnum, QuestionTypeEnum.
erDiagram Survey ||--o{ Question : "enthält" Question ||--o{ AnswerOption : "hat" SurveyResponse ||--|| Survey : "gehört zu" SurveyResponse ||--|{ ResponseAnswer : "besteht aus" ResponseAnswer ||--|| Question : "beantwortet" ResponseAnswer }o--|| AnswerOption : "wählt" SurveyResponse }o--|| Respondent : "zugeordnet zu" Respondent }o--|| GenderEnum : "hat" Respondent }o--|| AgeGroupEnum : "hat" Question }o--|| QuestionTypeEnum : "hat"

Entitäten

Survey

AttributDatentypPKFKPflicht?BeschreibungHinweise/Constraints
SurveyIDUUIDxjaEindeutige Kennung der Umfrage.Generiert als UUID.
TitleString (max. 200)jaTitel der Umfrage.Nicht leer; getrimmt.
DescriptionText (max. 2000)neinAusführliche Beschreibung und Zweck der Umfrage.Optional; getrimmt.
StartDateDatumneinStartdatum, ab dem die Umfrage aktiv ist.ISO‑8601 (YYYY‑MM‑DD).
EndDateDatumneinEnddatum, bis zu dem die Umfrage beantwortet werden kann.ISO‑8601 (YYYY‑MM‑DD); ≥ StartDate.
CreatedByString (max. 100)jaErsteller (z. B. Name oder Organisation).Nicht leer; getrimmt.
CreatedAtDatum/ZeitjaZeitstempel der Erstellung.Automatisch gesetzt; ISO‑8601 (UTC).

Question

AttributDatentypPKFKPflicht?BeschreibungHinweise/Constraints
QuestionIDUUIDxjaEindeutige Kennung der Frage.Generiert als UUID (UUIDv4).
SurveyIDUUIDxjaFremdschlüssel zur Umfrage, zu der die Frage gehört.FK; verweist auf existierende Survey.
OrderNumberIntegerjaReihenfolge der Frage innerhalb der Umfrage.Ganzzahl ≥ 1; eindeutig je Survey.
QuestionTextText (max. 1000)jaFormulierung der Frage.Nicht leer; getrimmt.
QuestionTypeEnumjaTyp der Frage. Bestimmt, ob Bewertungsskala, Auswahl oder Freitext zulässig ist.Siehe Enum QuestionTypeEnum
IsMandatoryBooleanjaGibt an, ob die Frage verpflichtend beantwortet werden muss.

AnswerOption

AttributDatentypPKFKPflicht?BeschreibungHinweise/Constraints
OptionIDUUIDxjaEindeutige Kennung der Antwortoption.Generiert als UUID (UUIDv4).
QuestionIDUUIDxjaFremdschlüssel zur zugehörigen Fragestellung.FK; verweist auf existierende Question.
OptionTextString (max. 200)jaText der Antwortoption (z. B. „Sehr gut“).Nicht leer; getrimmt.
ValueString (max. 100)jaWert, der intern für die Option gespeichert wird.Eindeutig je Question; Regex: ^[A-Za-z0-9_-]+$.
IsOtherOptionBooleanneinKennzeichnet, ob es sich um eine Freitext‑Option handelt.Bei „Open“‑Fragen auf true gesetzt.

SurveyResponse

AttributDatentypPKFKPflicht?BeschreibungHinweise/Constraints
ResponseIDUUIDxjaEindeutige Kennung des Ergebnisses.Generiert als UUID (UUIDv4).
SurveyIDUUIDxjaFremdschlüssel zur Umfrage.FK; verweist auf existierende Survey.
RespondentIDUUIDxneinVerweis auf die optionale teilnehmende Person.DSGVO‑relevant; wenn gesetzt → ConsentGiven = true.
SubmittedAtDatum/ZeitjaZeitpunkt der Abgabe.Automatisch gesetzt; ISO‑8601 (UTC).
ConsentGivenBooleanjaZeigt an, ob die teilnehmende Person der Verarbeitung personenbezogener Daten zustimmt.Muss true sein, wenn personenbezogene Daten vorhanden (RespondentID, Email, GenderCode, AgeGroupCode).

ResponseAnswer

AttributDatentypPKFKPflicht?BeschreibungHinweise/Constraints
AnswerIDUUIDxjaEindeutige Kennung der Antwort.Generiert als UUID (UUIDv4).
ResponseIDUUIDxjaFremdschlüssel zum Umfrageergebnis.FK; verweist auf existierende SurveyResponse.
QuestionIDUUIDxjaVerweis auf die beantwortete Fragestellung.FK; verweist auf existierende Question.
OptionIDUUIDxneinGewählte Antwortoption (nur bei Auswahlfragen).Darf nur gesetzt sein, wenn QuestionType != Open; muss zu QuestionID gehören.
FreeTextResponseText (max. 2000)neinFreitextantwort (nur bei offenen Fragen).Darf nur gesetzt sein, wenn IsOtherOption oder QuestionType = Open.

Respondent

AttributDatentypPKFKPflicht?BeschreibungHinweise/Constraints
RespondentIDUUIDxjaEindeutige Kennung der teilnehmenden Person.Generiert als UUID.
EmailString (max. 254)neinE‑Mail‑Adresse der teilnehmenden Person.DSGVO‑relevant; optional; Format: E‑Mail (RFC 5322); Regex‑Beispiel: ^[^\s@]+@[^\s@]+.[^\s@]{2,}$.
GenderCodeEnumxneinGeschlechtsangabe.Siehe Enum GenderEnum; optional; Default: NotSpecified.
AgeGroupCodeEnumxneinAltersgruppe der teilnehmenden Person.Siehe Enum AgeGroupEnum; optional; Default: NotSpecified.
CreatedAtDatum/ZeitjaErstellungszeitpunkt des Teilnehmerdatensatzes.Automatisch gesetzt; ISO‑8601 (UTC).
LastConsentChangeAtDatum/ZeitneinZeitpunkt der letzten Änderung der Einwilligung.ISO‑8601 (UTC); ≥ CreatedAt.

Enumerationen

NameWerteBeschreibung
GenderEnumMale, Female, NonBinary, NotSpecifiedGeschlechtsangabe der teilnehmenden Person.
AgeGroupEnumAge_0_18, Age_19_35, Age_36_60, Age_61_99, NotSpecifiedAltersgruppe der teilnehmenden Person.
QuestionTypeEnumRating, SingleChoice, MultipleChoice, OpenTyp der Frage.