Umfragedatenbank-Schema.
Dies ist ein echter Klassiker, der von Tausenden gemacht wird. Sie scheinen immer "ziemlich einfach" zu sein, aber um gut zu sein, ist es eigentlich ziemlich komplex. Um dies in Rails zu tun, würde ich das im beigefügten Diagramm gezeigte Modell verwenden. Ich bin mir sicher, dass es für einige viel zu kompliziert erscheint, aber wenn Sie im Laufe der Jahre ein paar davon zusammengestellt haben, werden Sie feststellen, dass die meisten Entwurfsentscheidungen sehr klassische Muster sind, die am besten durch eine dynamische, flexible Datenstruktur am besten angegangen werden Anfang.
Weitere Details unten:
Tabellendetails für Schlüsseltabellen
Antworten
Die Antworten Tabelle ist von entscheidender Bedeutung , da sie die tatsächlichen Antworten von Nutzern erfasst. Sie werden feststellen, dass Antworten auf Fragenoptionen verweisen , nicht auf Fragen . Das ist beabsichtigt.
eingabetypen
input_types sind die Arten von Fragen. Jede Frage kann nur von einem Typ sein, z. B. alle Radiowahlen, alle Textfelder usw. Verwenden Sie zusätzliche Fragen, wenn beispielsweise 5 Radiowahlen und 1 Kontrollkästchen für ein "Einschließen?" Option oder eine solche Kombination. Beschriften Sie die beiden Fragen in der Benutzeransicht als eine, haben Sie jedoch intern zwei Fragen, eine für die Radiowahl und eine für das Kontrollkästchen. Das Kontrollkästchen hat in diesem Fall eine Gruppe von 1.
option_groups
Mit option_groups und option_choices können Sie "gemeinsame" Gruppen erstellen . In einer Immobilienanwendung könnte beispielsweise die Frage "Wie alt ist die Immobilie?" Die Antworten können in den Bereichen 1-5 6-10 10-25 25-100 100+ erwünscht sein
Wenn es dann zum Beispiel eine Frage zum Alter der angrenzenden Immobilien gibt, wird die Umfrage die obigen Bereiche "wiederverwenden" wollen, damit dieselbe Optionsgruppe und dieselben Optionen verwendet werden.
Maßeinheiten
units_of_measure ist so, wie es sich anhört. Ob Zoll, Cups, Pixel, Bricks oder was auch immer, Sie können es hier einmal definieren.
Zu Ihrer Information: Obwohl es sich um eine generische Anwendung handelt, kann darüber hinaus eine Anwendung erstellt werden. Dieses Schema eignet sich gut für das Ruby On Rails- Framework mit Konventionen wie "id" für den Primärschlüssel für jede Tabelle. Auch die Beziehungen sind alle einfach, ohne dass viele oder viele Durchgänge erforderlich sind. Ich würde wahrscheinlich has_many: throughs und / oder: delegates hinzufügen, um Dinge wie survey_name einfach aus einer einzelnen Antwort zu erhalten, ohne dass .multiple.chaining.