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

Erstellen eines fortgeschritteneren Modells mit Benutzer-, Thread- und Beitragsstatus

In meinem ersten Artikel über ein Online-Forum habe ich erwähnt, dass es möglicherweise mehrere erweiterte Funktionen gibt, die hinzugefügt werden können:

  • Mehr formelle Details über den Benutzer anstelle eines einzelnen "Namens"-Felds. Möglicherweise möchten Sie den Vornamen, den Nachnamen und den Benutzernamen oder Spitznamen des Benutzers. Ein nettes Forum würde es Benutzern auch ermöglichen, ein Profilbild, eine E-Mail, Rollen, einen Status (um Benutzern das Blockieren zu ermöglichen) und andere Informationen zu haben, z. B. wann sie das Forum zuletzt besucht haben.
  • Zusätzliche Kontrolle im Zusammenhang mit der Benutzererstellung damit wir nachverfolgen können, wann ein neuer Benutzer erstellt wird, aber bevor seine/ihre E-Mail-Adresse bestätigt wurde.
  • Foren-Kategorien und Unterkategorien, wobei jede Kategorie ein Thema, mehrere Moderatoren und zusätzliche Informationen wie das Erstellungsdatum der Kategorie hat. Ein Betreff für einen Beitrag zusätzlich zum Inhalt
  • Moderierte Beiträge die von einem Moderator genehmigt werden müssen, bevor sie für andere Benutzer sichtbar sind. Posts und Threads haben unterschiedliche Status wie:warten auf Veröffentlichung, veröffentlicht, als Spam gemeldet, blockiert, nicht blockiert.
  • Und dann möchten wir den Benutzern vielleicht erlauben, abzustimmen und lehnen ab Themen und Beiträge.

Für das Forum werde ich den Begriff „Thread“ verwenden, um auf eine Konversation mit möglicherweise mehreren Postings im Zusammenhang mit dem Thread zu verweisen.




Ich werde einen Eröffnungskommentar machen; Ich verwende im Allgemeinen runde Zahlen wie 100 oder 1000, um die Länge von varchar-Feldern zu definieren; Ich behaupte nicht, dass diese unbedingt die richtige Größe haben, sondern verwende dies als Kurzform, anstatt die Länge undefiniert zu lassen (%). Andererseits verwende ich gelegentlich sehr spezifische Längen für Felder wie email und ip_address; 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 haben kann.

Benutzerdetails

In Teil 1 unserer Artikelserie zum Aufbau des Online-Forums waren die Benutzerinformationen sehr begrenzt. Ich werde die gespeicherten Benutzerdaten ergänzen. Im Moment wird die Moderation sehr einfach sein:Benutzer werden entweder Moderator sein oder nicht. Möglicherweise erstellen wir später kompliziertere Moderationsregeln in Bezug auf Kategorien und Threads.

Für den Status der Benutzer erstelle ich den user_status Tabelle, damit ich sie in einer anderen Situation wiederverwenden kann, auch wenn es nur sehr wenige Status gibt, wie "EMAIL_NOT_VERIFIED", "VERIFIED" und "BLOCKED".

Benutzererstellung

Ich werde den Status des Benutzers verwenden, um Benutzer zu erkennen, die sich im Status „EMAIL_NOT_VERIFIED“ befinden, nachdem ein Benutzer sein Konto erstellt und eine E-Mail an seine angegebene E-Mail-Adresse gesendet wurde, aber bevor er auf die Bestätigungs-URL in der E-Mail geklickt hat. Sie könnten sogar noch kniffliger werden und Status wie „EMAIL_VERIFICATION_TO_BE_SENT“ und „EMAIL_VERIFICATION_RESENT“ haben, wenn einige dieser Schritte von verschiedenen Komponenten in Ihrem System und nicht sofort während der Benutzererstellung ausgeführt werden.

Thread- und Beitragsstatus

Moderierte Beiträge müssen von einem Moderator genehmigt werden, bevor sie für andere Benutzer sichtbar sind. Posts und Threads hätten unterschiedliche Status wie:warten auf Genehmigung, genehmigt, als Spam gemeldet, blockiert. Für den Status von Threads und Beiträgen werde ich einen flexibleren Umgang mit Status wählen, indem ich auf den status Tisch. Dann muss die Anwendung wissen, was jeder Wert in den Statustabellen bedeutet (wenn Status =„GENEHMIGT“, wird der Thread angezeigt), aber ich bevorzuge dies, anstatt nur einen Text im thread und post Tische. Wir werden einige Status haben, wie „WAITING_FOR_APPROVAL“, „APPROVED“, „REJECTED“, „MELD_ALS_SPAM“ und „BLOCKED“, und wir möchten vielleicht in Zukunft weitere hinzufügen.

Mit anderen Worten, ein Benutzer erstellt einen neuen Thread oder einen neuen Beitrag und erhält den Status „NOT_APPROVED“. Nicht genehmigte Themen und Beiträge werden den meisten Benutzern nicht angezeigt; Moderatoren können jedoch nicht genehmigte Elemente anzeigen und „Genehmigen“ oder „Ablehnen“ auswählen. Benutzer können einen Thread oder Beitrag als Spam markieren, dies muss jedoch von einem Moderator bestätigt werden. Spam-Threads und -Posts werden Benutzern nicht angezeigt.

Dadurch kann ich den status sowohl für Threads als auch für Beiträge, da die Status für beide die gleiche Bedeutung haben sollten. Ich werde den status Tabelle zur Angabe des Benutzerstatus; Ich glaube nicht, dass das eine gute Designwahl wäre.

Formales Design

Also erweitern wir die ERD, die in Teil 1 erstellt wurde. Ich habe die Tabellen, die im Artikel in Teil 1 erstellt wurden, gelb und die neu hinzugefügten Tabellen orange eingefärbt, damit die Ergänzungen besser zu sehen sind. Allerdings habe ich einzelne Änderungen innerhalb von Tabellen nicht markiert.



Was kommt als Nächstes?

Auch hier müssen noch weitere Verbesserungen vorgenommen werden, aber hier haben wir ein sehr einfaches Online-Forum genommen und einige nützliche neue Funktionen hinzugefügt.

In den nächsten Teilen werde ich mich mit dem Hinzufügen weiterer Funktionen befassen, wie zum Beispiel:

  • Foren-Kategorien und Unterkategorien, wobei jede Kategorie ein Thema, mehrere Moderatoren und zusätzliche Informationen wie das Erstellungsdatum der Kategorie hat. Ein Betreff für einen Beitrag zusätzlich zum Inhalt
  • und dann möchten wir vielleicht Benutzern erlauben, Threads und Posts positiv und negativ abzustimmen.

Welche Funktionen benötigt Ihr Online-Forum? Gibt es Besonderheiten, die ich bei der Vorbereitung des nächsten Teils dieser Serie berücksichtigen soll? Wenn ja, lassen Sie es mich wissen.

« Vorheriger Teil Nächster Teil »