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

Modellieren einer grundlegenden Datenstruktur zum Verwalten von Benutzern, Threads und Beiträgen

Ein Online-Diskussionsforum ist eine Website, auf der Personen kann Gespräche führen in Form von geposteten Nachrichten . Diskussionsforen ermöglichen Unterhaltungen, wenn Personen nicht online sind, und Nachrichten können vorübergehend archiviert werden. Je nach Einrichtung des Forums muss eine Nachricht möglicherweise auch von einem Moderator genehmigt werden, bevor sie für andere Benutzer sichtbar wird. Foren haben einen bestimmten Satz von Begriffen, zum Beispiel wird eine einzelne Konversation im Allgemeinen als „Thread“ bezeichnet. Threads können von beliebig vielen Personen beantwortet werden. Die meisten Foren erfordern, dass Benutzer sich registrieren und anschließend anmelden, um Nachrichten zu posten. In den meisten Foren müssen sich Benutzer jedoch nicht anmelden, um vorhandene Nachrichten zu lesen.

Dies sind allgemeine Anforderungen für ein Website-Forum , also lasst uns daran arbeiten, ein Datenbankmodell zu erstellen, beginnend mit einer grundlegenden Forumseinrichtung, die wir später erweitern können.

Entitäten

Wie bereits erwähnt, führen Personen Konversationen in Form von geposteten Nachrichten, die in Konversationen gruppiert sind. Die Datenbank muss also Informationen über Personen unterstützen oder Benutzer , Gespräche oder Fäden und Nachrichten oder Beiträge .

Für das Online-Forum müssen Benutzer erstellt werden – es kann notwendig sein, Benutzern zu erlauben, ihre Details zu bearbeiten, nachdem sie erstellt wurden, aber es besteht wahrscheinlich keine Notwendigkeit, das Löschen von Benutzern zuzulassen. Benutzer erstellen Konversationen oder Threads im Allgemeinen, indem sie eine erste Nachricht im Forum posten, anstatt explizit eine Konversation zu erstellen, aber es kann erforderlich sein, beide Möglichkeiten zu unterstützen. Threads enthalten Beiträge, die von Benutzern erstellt wurden.

Funktionalität

Das Posten von Nachrichten ist die Hauptfunktion des Online-Forums . Sollten Benutzer Nachrichten bearbeiten können, nachdem sie gepostet wurden? Sollten Benutzer Nachrichten nach dem Posten löschen können? Die Antwort auf beide ist wahrscheinlich ja.

Beziehungen

Beiträge sind mit Threads verknüpft und Beiträge werden von Benutzern erstellt, sodass eine definierte Beziehung besteht zwischen Benutzern und Beiträgen. Threads werden von Benutzern erstellt, daher sollten Sie dort eine Beziehung speichern (wenn beispielsweise ein Benutzer für das Forum gesperrt wurde, möchten Sie möglicherweise alle Threads und Beiträge entfernen, die dieser Benutzer erstellt hat).

Nun, da Sie die Entitäten kennen und Beziehungen , sind Sie bereit, ein Modell der Datenbank aufzubauen, und das sollte nur wenige Minuten dauern. Hier kommen Werkzeuge ins Spiel.

Datenbankmodell

Werfen wir einen Blick auf Vertabelo, um das Online-Diskussionsforum fortzusetzen.

Erstellen Sie ein Modell für das Online-Forum und fügen Sie die Entitäten hinzu repräsentiert Benutzer, Threads und Beiträge. Vertabelo erinnert Sie daran, dass Sie Primärschlüssel für jede Tabelle definieren müssen; Ich empfehle die Verwendung von id Spalten, da dies Ihnen mehr potenzielle Flexibilität gibt (und Sie nicht an den Namen des Benutzers als Primärschlüssel oder andere Fallstricke bindet). Fügen Sie als Nächstes die Beziehungen hinzu die wir bereits zuvor beschrieben haben. Ich habe ein Passwort (in gehashter Form) für den Benutzer hinzugefügt, um die Anmeldung der Benutzer zu kontrollieren.

Jetzt erhalten Sie etwas, das ungefähr so ​​aussieht:




Sie werden sehen, dass Zeitstempel mit dem Datum/der Uhrzeit der Erstellung jeder Zeile vorhanden sind, sodass diese Informationen im Forum angezeigt werden können („Benutzer seit 2. Februar 2014“, „Veröffentlichungsdatum: 24. Dezember 2014“ usw.). ).

Wenn Sie eine moderierte haben möchten Online-Diskussionsforum, in dem Nachrichten von einem Moderator genehmigt werden müssen, bevor sie für andere Benutzer sichtbar werden, dann sollten Sie ein Statuselement hinzufügen zu Threads und Posts, damit die Anwendung entscheiden kann, ob die Threads und zugehörigen Posts überprüft und genehmigt wurden. Ein Status würde es anderen Benutzern auch ermöglichen, Threads und Posts als Spam oder unangemessen zu markieren.

Ich hoffe, dass Sie bereits anfangen können, über Verbesserungen nachzudenken. Wenn Sie beispielsweise formelle Details über den Benutzer benötigen, möchten Sie anstelle eines einzelnen „Namens“-Felds möglicherweise seinen Vornamen, Nachnamen und Benutzernamen oder Spitznamen. Und ein Beitrag kann zusätzlich zum Inhalt einen Betreff haben, aber ich denke, dass der Betreff des Beitrags mit dem Thread zurückverlinkt ist, sodass dies möglicherweise nicht erforderlich ist.

  Nächster Teil »