Dies ist eine Follow-up-Frage zu meinem vorherigen. Wir Junior-Jahr-Studenten machen Website-Entwicklung für die Universität als Freiwilligenarbeit. Wir verwenden PHP + MySQL-Technik. Jetzt bin ich hauptsächlich verantwortlich für die Datenbankentwicklung mit MySQL, aber ich bin ein MySQL-Designer. Ich frage jetzt nach Hinweisen zum Schreiben meiner ersten Tabelle, um meine Hände darauf zu bekommen, dann könnte ich gut mit anderen Tabellen arbeiten. Die Frage ist wie folgt, das erste, was unsere Webseite tun wird ist, dem Benutzer eine Umfrage zu präsentieren, um zu erfahren, wann sie den Bus-Service nutzen wollen. und hier beginne ich mit der Entwicklung meiner Datenbank. Das Benutzeranforderungsdokument gibt an, dass für die Umfrage
verwendet werden sollKundenseite:
Survery wird den Kunden mit einer Reihe vordefinierter Fragen und Antworten zur Verfügung stehen und leicht zu füllen sein
Geschäftsseite:
Survery Info. wird gespeichert, ausgegeben und zur Analyse angezeigt.
Es klingt nicht zu viel Arbeit, und ich muss mich nicht um irgendwelche PHP-Sache kümmern, aber ich bin nur verwirrt auf: sollte ich nur eine einzige Tabelle namens "Survery" oder zwei Tabellen "Survey_business" und "Survey_Customer" erstellen und wie kann die Datenbank die Info speichern? Ich wäre dankbar, wenn ihr mir helfen könnt, damit ich mitarbeiten kann, denn der erste Schritt ist immer der schwierigste und wichtigste. Danke.
Ich würde mehrere Tabellen verwenden. Einer für die Umfragen selbst und ein anderer für die Fragen. Vielleicht noch eine Antwortmöglichkeit, wenn Sie mit Multiple-Choice-Fragen gehen wollen. Eine weitere Tabelle für die Antworten mit einem Datensatz pro Frage pro Beantworter. Die Komplexität eskaliert, wenn Sie mehrere Arten von Antworten berücksichtigen (Auswahl, Ausfüllen einer Zeile, Freiform-Multilinie usw.) und Anzeigeoptionen (Optionsfeld, Dropdown-Liste, Textfeld, Yada Yada), aber für ein einfaches Multiple-Choice-Beispiel mit einem einzigen Rendering-Typ, das würde funktionieren, denke ich.
Etwas wie:
%Vor%Verwenden Sie dann den Anwendungscode für:
Sie könnten als Datenbankentwickler mit dem Web-App-Entwickler zusammenarbeiten, um die Abfragen zu entwerfen, die die entsprechenden Daten für jede Aufgabe auffüllen und abrufen.
Survey.Customer klingt wie eine Speicherfunktion, während Survey.Business wie eine Abruffunktion klingt.
Die einzigen Tabellen, die Sie benötigen, sind zum Speichern. Die Suchvorgänge werden mithilfe von Abfragen und Berichten der vorhandenen Speichertabellen ausgeführt, sodass für diese keine zusätzlichen Tabellen benötigt werden.
Die meisten Ratschläge / Antworten sind bis jetzt anwendbar, stellen aber bestimmte (unausgesprochene!) Annahmen über Ihre Domain dar.
Versuchen Sie, ein logisches Modell der Entitäten und Attribute zu erstellen, die zum Erfassen der Anforderungen erforderlich sind, untersuchen Sie die Beziehungen, überlegen Sie, wie die Daten auf beiden Seiten des Prozesses verwendet werden, und entwerfen Sie dann die Tabellen. Sprechen Sie mit den Benutzern, sprechen Sie mit den Personen, die die Berichte ausführen, sprechen Sie mit dem Benutzer, der die Benutzeroberfläche erstellt (Bildschirme und Berichte), um ein vollständiges Bild zu erhalten.
Achten Sie genau auf die Berichtspflichten, da diese oft zusätzliche Attribute und Entitäten enthalten, die im Dateneingabeschema nicht vorhanden sind
Ich denke, dass 2 Tabellen benötigt werden:
Dann können Sie die Ergebnisse berechnen und in einer surveyResults-Ansicht speichern.
Werden die Daten, die Sie präsentieren, als Fragen und Antworten dynamisch sein? Ist das ein langfristiges Projekt, bei dem Fragen ausgetauscht werden? Wenn ja, möchten Sie wahrscheinlich auch die Fragen und Antworten in Ihrer Datenbank haben.
Die Art und Weise, wie ich es tun würde, würde darin bestehen, Ihre Entitäten zu definieren und herauszufinden, wie Sie Ihre Tabellen so gestalten, dass Beziehungen einfach sind. Klingt für mich so, als hätten Sie drei Entitäten:
Nur eine Beispielausarbeitung dessen, was Steven und Chris oben erwähnt haben.
Es wird mehrere Tabellen geben, wenn es mehrere Umfragen gibt, und jede Umfrage hat andere Fragen und wenn derselbe Benutzer mehrere Umfragen machen kann.
Kundentabelle mit CustID als Primärschlüssel
Fragen Tabelle mit einer Fragen-ID als Primärschlüssel. Wenn eine Frage nicht zu mehr als einer Umfrage gehören kann (eine N: 1-Beziehung), kann sie auch die Umfrage-ID (der in Tabelle 3 erwähnten Tabelle Umfragetabelle) als einen der Werte in der Tabelle haben.
Aber wenn eine Umfrage zu Frage Beziehung N: M ist, dann (SurveryID, QuestionID) würde ein zusammengesetzter Schlüssel für das SurveyTable werden, andernfalls hätte es nur die SurveyID mit den Details der Umfrage auf hoher Ebene wie Beschreibung.
UserSurvey-Tabelle, die (USerID, SurveryID, QuestionID, AnswerGiven) enthalten würde
[Hinweis: Wenn derselbe Benutzer die gleiche Umfrage immer wieder durchführen kann, muss entweder die alte Umfrage aktualisiert werden oder die Wiederholungsversuche müssen als weitere Zeilen mit einer bestimmten Seriennummer gespeichert werden.
Tags und Links mysql database-design