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

Vytvoření pokročilejšího modelu se stavy uživatele, vlákna a příspěvku

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

  • Další formální podrobnosti o uživateli místo jednoho pole „jméno“. Možná budete chtít jméno, příjmení a uživatelské jméno nebo přezdívku uživatele. Pěkné fórum by také uživatelům umožnilo mít profilový obrázek, e-mail, role, stav (aby bylo možné uživatele zablokovat) a další informace, například když fórum naposledy navštívili.
  • Další kontrola související s vytvářením uživatelů abychom mohli sledovat, kdy je vytvořen nový uživatel, ale předtím, než byla potvrzena jeho e-mailová adresa.
  • 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ředmět příspěvku kromě obsahu
  • Moderované příspěvky které musí schválit moderátor, než je uvidí ostatní uživatelé. Příspěvky a vlákna by měly různé stavy jako:čekání na zveřejnění, zveřejněno, nahlášeno jako spam, zablokováno, odblokováno.
  • Poté bychom mohli uživatelům umožnit hlasovat pro a hlasovat proti vlákna a příspěvky.

Pro fórum budu používat termín „vlákno“ k označení konverzace s potenciálně několika příspěvky souvisejícími s vláknem.




Udělám úvodní komentář; Obecně používám zaokrouhlená čísla jako 100 nebo 1000 k definování délky polí varchar; Netvrdím, že se jedná o nezbytně vhodnou velikost, ale používám to spíše jako zkratku, než abych nechal délku nedefinovanou (%). Na druhou stranu občas používám velmi specifické délky pro pole jako email a ip_address; 254 je maximální délka, kterou může mít e-mailová adresa podle definic RFC, zatímco 45 je maximální délka adresy IPv6.

Podrobnosti uživatele

V 1. části naší série článků o vytváření online fóra byly informace o uživatelích velmi omezené. Vylepším údaje o uživateli, které jsou uloženy. Prozatím bude moderování velmi základní:uživatelé budou moderátory, nebo ne. Později můžeme vytvořit složitější pravidla moderování související s kategoriemi a vlákny.

Pro stav uživatelů vytvořím user_status tabulku, abych ji mohl znovu použít v jiné situaci, i když existuje jen velmi málo stavů, například „EMAIL_NOT_VERIFIED“, „VERIFIED“ a „BLOCKED“.

Vytvoření uživatele

Stav uživatele použiji k rozpoznání uživatelů, kteří jsou ve stavu „EMAIL_NOT_VERIFIED“ poté, co si uživatel vytvořil svůj účet a byl mu odeslán e-mail na jeho zadanou e-mailovou adresu, ale předtím, než klikli na ověřovací adresu URL v e-mailu. Pokud některé z těchto kroků provedou různé součásti vašeho systému a ne hned při vytváření uživatele, můžete být ještě složitější a mít stavy jako „EMAIL_VERIFICATION_TO_BE_SENT“ a „EMAIL_VERIFICATION_RESENT“.

Stav vlákna a příspěvku

Než budou moderované příspěvky viditelné pro ostatní uživatele, musí je schválit moderátor. Příspěvky a vlákna by měly různé stavy, například:čeká na schválení, schváleno, nahlášeno jako spam, zablokováno. U stavu vláken a příspěvků zvolím flexibilnější způsob nakládání se stavy odkazem na status stůl. Aplikace pak musí vědět, co která hodnota znamená ve stavových tabulkách (pokud status =„SCHVÁLENO“, vlákno se zobrazí), ale dávám přednost tomu, než ukládat text do thread a post tabulky. Budeme mít několik stavů, jako „ČEKÁNÍ_NA_SCHVÁLENÍ“, „SCHVÁLENO“, „ZAMÍTNUTO“, „NAHLÁŠENO_AS_SPAM“ a „ZABLOKováno“ a v budoucnu možná budeme chtít přidat další.

Jinými slovy, uživatel vytvoří nové vlákno nebo nový příspěvek a ten je uveden do stavu „NOT_APPROVED“. Neschválená vlákna a příspěvky se většině uživatelů nezobrazují; moderátoři však mohou zobrazit neschválené položky a vybrat „Schválit“ nebo „Odmítnout“. Uživatelé mohou označit vlákno nebo příspěvek jako spam, ale to musí potvrdit moderátor. Nevyžádaná vlákna a příspěvky se uživatelům nezobrazují.

To mi umožňuje používat status tabulka pro vlákna i příspěvky, protože stavy pro oba by měly mít stejný význam. status tabulka k označení stavu uživatelů; Nemyslím si, že by to byla dobrá designová volba.

Formální design

Rozšiřujeme tedy ERD, který byl vytvořen v Části 1. Tabulky, které byly vytvořeny v článku Část 1, jsem obarvil žlutě a nově přidané tabulky obarvil oranžově, aby bylo snazší vidět doplňky. Jednotlivé změny jsem však v tabulkách neoznačil.



Co dál?

Opět je třeba provést další vylepšení, ale zde jsme vytvořili velmi jednoduché online fórum a přidali několik užitečných nových funkcí.

V dalších dílech se podívám na přidání dalších funkcí, jako jsou:

  • 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ředmět pro příspěvek kromě obsahu
  • a pak bychom mohli chtít uživatelům umožnit hlasovat pro a proti vláknům a příspěvkům.

Jaké funkce vyžaduje vaše online fórum? Jsou nějaké funkce, které bych měl vzít v úvahu při přípravě dalšího dílu této série? Pokud ano, dejte mi vědět.

« Předchozí část Další část »


  1. Jak efektivně používat MySQLDB SScursor?

  2. Nasaďte skupiny dostupnosti SQL Server AlwaysOn v systému Linux

  3. Jak funguje operátor SOUNDS LIKE v MySQL

  4. To-do list aplikace využívající PHP a MySQL databázi