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

Realizzare un modello più avanzato con utenti, thread e stati dei post

Nel mio primo articolo su un forum online, ho menzionato che potrebbero esserci diverse funzionalità più avanzate da aggiungere:

  • Ulteriori dettagli formali sull'utente invece di un singolo campo "nome". Potresti volere il nome, il cognome e il nome utente o il soprannome dell'utente. Un bel forum consentirebbe anche agli utenti di avere un'immagine del profilo, e-mail, ruoli, stato (per consentire agli utenti di essere bloccati) e altre informazioni come quando hanno visitato l'ultima volta il forum.
  • Controllo aggiuntivo relativo alla creazione degli utenti in modo da poter tracciare quando viene creato un nuovo utente ma prima che il suo indirizzo email sia stato confermato.
  • Forum categorie e sottocategorie in cui ogni categoria ha un argomento, diversi moderatori e informazioni aggiuntive come la data di creazione della categoria. Un oggetto per un post oltre al contenuto
  • Post moderati che devono essere approvati da un moderatore prima che siano visibili ad altri utenti. I post e i thread avrebbero stati diversi come:in attesa di pubblicazione, pubblicati, segnalati come spam, bloccati, sbloccati.
  • E poi potremmo voler consentire agli utenti di votare a favore e vota contro discussioni e post.

Per il forum, userò il termine "thread" per riferirmi a una conversazione con potenzialmente diversi post relativi al thread.




Farò un commento di apertura; In genere uso numeri rotondi come 100 o 1000 per definire la lunghezza dei campi varchar; Non sto suggerendo che queste siano necessariamente le dimensioni appropriate, ma lo sto usando come abbreviazione, piuttosto che lasciare la lunghezza indefinita (%). D'altra parte, occasionalmente utilizzo lunghezze molto specifiche per campi come email e ip_address; 254 è la lunghezza massima che può avere un indirizzo email secondo le definizioni RFC, mentre 45 è la lunghezza massima che può avere un indirizzo IPv6.

Dettagli utente

Nella parte 1 della nostra serie di articoli sulla creazione del forum online, le informazioni sugli utenti erano molto limitate. Migliorerò i dettagli dell'utente che sono memorizzati. Per ora, la moderazione sarà molto semplice:gli utenti saranno il moderatore o meno. In seguito potremmo creare regole di moderazione più complicate relative a categorie e thread.

Per lo stato degli utenti, creerò il user_status tabella, in modo da poterla riutilizzare in un'altra situazione anche se ci sono pochissimi stati, come "EMAIL_NOT_VERIFIED", "VERIFIED" e "BLOCKED".

Creazione utente

Userò lo stato dell'utente per riconoscere gli utenti che si trovano nello stato "EMAIL_NOT_VERIFIED" dopo che un utente ha creato il proprio account ed è stata inviata un'e-mail all'indirizzo e-mail fornito, ma prima che abbiano fatto clic sull'URL di verifica nell'e-mail. Potresti anche diventare più complicato e avere stati come "EMAIL_VERIFICATION_TO_BE_SENT" e "EMAIL_VERIFICATION_RESENT" se alcuni di questi passaggi sono gestiti da diversi componenti del tuo sistema e non immediatamente durante la creazione dell'utente.

Stato thread e post

I post moderati devono essere approvati da un moderatore prima di essere visibili ad altri utenti. I post e i thread avrebbero stati diversi come:in attesa di approvazione, approvato, segnalato come spam, bloccato. Per lo stato dei thread e dei post, sceglierò un modo più flessibile di gestire gli stati collegandomi allo status tavolo. Quindi l'applicazione deve sapere cosa significa ogni valore all'interno delle tabelle di stato (se stato ="APPROVED", viene visualizzato il thread), ma preferisco questo alla semplice memorizzazione di un testo nel thread e post tavoli. Avremo alcuni stati, come "WAITING_FOR_APPROVAL", "APPROVED", "REJECTED", "REPORTED_AS_SPAM" e "BLOCKED" e potremmo volerne aggiungere altri in futuro.

In altre parole, un utente crea un nuovo thread o un nuovo post, e viene messo nello stato "NOT_APPROVED". I thread e i post non approvati non vengono visualizzati dalla maggior parte degli utenti; tuttavia, i moderatori possono visualizzare gli elementi non approvati e scegliere "Approva" o "Rifiuta". Gli utenti possono contrassegnare un thread o un post come spam, ma ciò deve essere confermato da un moderatore. I thread e i post di spam non vengono visualizzati dagli utenti.

Questo mi permette di usare lo status tabella sia per i thread che per i post, poiché gli stati di entrambi dovrebbero avere lo stesso significato. Non userò in modo improprio lo status tabella per indicare lo stato degli utenti; Non credo che sarebbe una buona scelta di design.

Design formale

Quindi, estendiamo l'ERD che è stato creato nella parte 1. Ho colorato di giallo le tabelle che sono state create nell'articolo della parte 1 e ho colorato di arancione le tabelle appena aggiunte in modo che sia più facile vedere le aggiunte. Tuttavia, non ho contrassegnato le singole modifiche all'interno delle tabelle.



E poi?

Ancora una volta, ci sono ancora ulteriori miglioramenti da apportare, ma qui abbiamo preso un forum online molto semplice e abbiamo aggiunto diverse nuove utili funzionalità.

Nelle prossime parti, cercherò di aggiungere altre funzionalità come:

  • forum categorie e sottocategorie in cui ogni categoria ha un argomento, diversi moderatori e informazioni aggiuntive come la data di creazione della categoria. Un soggetto per un post oltre al contenuto
  • e quindi potremmo voler consentire agli utenti di votare in alto e in basso a thread e post.

Quali funzionalità richiede il tuo forum online? Ci sono delle caratteristiche che vuoi che tenga in considerazione quando preparo la prossima parte di questa serie? Se è così, fammi sapere.

« Parte precedente Parte successiva »