sql >> Databáze >  >> RDS >> Database

Přidání pokročilejších funkcí, jako je správa kategorií a hlasování o vláknech a příspěvcích

Ve svém druhém článku o online fóru jsem zmínil, že může být přidáno několik pokročilejších funkcí:

  • kategorie fóra a podkategorie, kde každá kategorie má předmět, několik moderátorů a další informace, jako je datum vytvoření kategorie.
  • příspěvek může mít předmět kromě obsahu.
  • Mohli bychom uživatelům umožnit hlasovat pro a hlasovat proti ve vláknech a příspěvcích.

Abychom mohli model lépe uchopit, připravili jsme příklad takového fóra s kategoriemi, vlákny, příspěvky atd. Doufáme, že to usnadní pochopení věcí:

Entity z části 1 jsou vybarveny žlutě a entity z části 2 jsou vybarveny oranžově. Zde je aktuální databázový model po prvních dvou článcích:




Další podrobnosti o příspěvcích

Ve druhém článku jsem pouze přidal vztahy do „stavu“ pro vlákna a příspěvky, ale nyní bych chtěl příspěvky vylepšit o další detail, který přesahuje jen jednoduchý obsah. Prozatím u každého příspěvku přidám „předmět“, který se může lišit od „předmětu“ vlákna. Pomocí „předmětu“ (přemýšlejte o předmětu e-mailu nebo předmětu zprávy MMS) můžeme zobrazit zhuštěnou verzi obsahu – například první řádky e-mailu, který se zobrazuje v aplikaci Outlook nebo na telefonu pošta. Uživatelé mohou také použít „předmět“ příspěvku k zaznamenání komentáře na vysoké úrovni, jako je „nesouhlasím“, a poté vložit své argumenty do sekce komentářů příspěvku. Toto je příjemná jednoduchá změna modelu.

Kategorie

Nyní, když jsme se rozehřáli, přidáme nový koncept (entitu) pro kategorizaci vláken a příspěvků. Každá kategorie bude definována názvem; každá kategorie je vytvořena uživatelem a mezi uživateli bude mít alespoň jednoho moderátora plus několik dalších atributů, jako jsou příspěvky a vlákna, která již máme. Chtěli bychom kategorie a podkategorie, takže umožníme, aby kategorie odkazovaly na jiné (pod)kategorie.

Protože bych chtěl mít více moderátorů v každé kategorii, vytvořím tabulku pro propojení kategorií se skupinami uživatelů a propojím uživatele s těmito skupinami. Tato tabulka bude definovat „skupiny“ uživatelů, z nichž jedna budou „moderátoři“, ale v budoucnu by to mohlo být rozšířeno o další typy skupin.

Hlasování nebo „To se mi líbí“

Osobně dávám přednost něčemu „hlasovat nahoru“ nebo „hlasovat proti“ než tomu, abych to jednoduše „líbil“ (ale myslím, že v tom se mnou Mark Zuckerberg nesouhlasí). Rozhodnu se vytvořit mechanismus hlasování, který uživatelům umožní odevzdat „hlas pro“ nebo „hlasovat proti“. Můžeme se rozhodnout zakázat hlasy proti, když nejsou žádné hlasy pro, nebo omezit počet hlasů proti, ale to je na rozhodnutí aplikace, databáze bude jednoduše sledovat počet hlasů nahoru a dolů.

Můžeme vytvořit samostatné tabulky pro hlasování o vláknech a hlasování o příspěvcích, ale ponechám je ve stejné tabulce s volitelnými cizími klíči z tabulky vláken a příspěvků. Kromě toho jsem se rozhodl nehlasovat o kategoriích.

Formální design

Tím jsou prozatím změny na modelu uzavřeny, takže se můžeme podívat na formální design. Opět rozšiřujeme ERD, který byl vytvořen v Části 1 a 2. Změny popsané v tomto článku a zavedené do modelu jsou vybarveny modře.




Závěr

Stále existují další vylepšení, která by mohla být provedena, ale zde jsme naši databázi pro online fórum vytvořili do docela kompletního designu – to by podporovalo většinu typických online diskusních fór.

Jaké další funkce vyžaduje vaše online fórum?

« Předchozí část  


  1. Začínáme s GearHost pro vývoj databáze SQL Server

  2. PG::ConnectionBad:fe_sendauth:nebylo zadáno heslo

  3. Jak vytvořit trasování SQL pro zachycení událostí serveru SQL

  4. Získání výjimky java.sql.SQLException:Operace není povolena po uzavření sady ResultSet