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

Modellazione di una struttura dati di base per gestire utenti, thread e post

Un forum di discussione online è un sito in cui persone può tenere conversazioni sotto forma di messaggi pubblicati . I forum di discussione consentono lo svolgimento di conversazioni quando le persone non sono in linea e i messaggi possono essere temporaneamente archiviati. Inoltre, a seconda della configurazione del forum, potrebbe essere necessario approvare un messaggio da un moderatore prima che diventi visibile ad altri utenti. I forum hanno un insieme specifico di termini, ad esempio, una singola conversazione viene generalmente definita "thread". I thread possono ricevere risposta da tutte le persone che desiderano. La maggior parte dei forum richiede agli utenti di registrarsi e successivamente di accedere per inviare messaggi. Tuttavia, nella maggior parte dei forum, gli utenti non devono accedere per leggere i messaggi esistenti.

Questi sono requisiti comuni per un forum del sito web , quindi lavoriamo per creare un modello di database partendo da una configurazione di base del forum che possiamo estendere in seguito.

Entità

Come accennato in precedenza, le persone tengono conversazioni sotto forma di messaggi pubblicati raggruppati in conversazioni. Quindi il database deve supportare le informazioni sulle persone o utenti , conversazioni o fili e messaggi o post .

Per il forum online, sarà necessario creare utenti:potrebbe essere necessario consentire agli utenti di modificare i propri dettagli dopo che sono stati creati, ma probabilmente non è necessario consentire l'eliminazione degli utenti. Gli utenti creeranno conversazioni, o thread, generalmente pubblicando un primo messaggio sul forum, piuttosto che creare esplicitamente una conversazione, ma potrebbe essere necessario supportare entrambe le possibilità. I thread conterranno post creati dagli utenti.

Funzionalità

La pubblicazione di messaggi è la funzionalità principale del forum online . Gli utenti dovrebbero essere in grado di modificare i messaggi dopo che sono stati pubblicati? Gli utenti dovrebbero essere in grado di eliminare i messaggi dopo la pubblicazione? La risposta ad entrambi è probabilmente sì.

Relazioni

I post sono collegati a thread e i post vengono creati dagli utenti, quindi ci sarà una relazione definita tra utenti e post. I thread vengono creati dagli utenti, quindi dovresti archiviare una relazione lì (ad esempio, se un utente è stato bandito dal forum, potresti voler rimuovere tutti i thread e i post che quell'utente ha creato).

Ora che conosci le entità e relazioni , sei pronto per creare un modello del database e ciò dovrebbe richiedere solo pochi minuti. È qui che gli strumenti tornano utili.

Modello di database

Diamo un'occhiata a Vertabelo per continuare il forum di discussione online.

Crea un modello per il forum online e inizia ad aggiungere le entità che rappresentano utenti, thread e post. Vertabelo ti ricorderà che devi definire le chiavi primarie per ogni tabella; Consiglio di utilizzare id colonne in quanto ciò ti darà una maggiore flessibilità potenziale (e non ti legherà al nome dell'utente come chiave primaria o altre insidie). Successivamente, aggiungi le relazioni che abbiamo già descritto in precedenza. Ho aggiunto una password (in forma hash) per consentire all'utente di controllare l'accesso degli utenti.

Ora ti ritroverai con qualcosa che assomiglia più o meno a questo:




Vedrai che ci sono timestamp con la data/ora di creazione di ogni riga, in modo che tali informazioni possano essere visualizzate sul forum ("Utente dal 2 febbraio 2014", "Data di pubblicazione:24 dicembre 2014", ecc. ).

Se hai intenzione di avere un moderato forum di discussione online in cui i messaggi devono essere approvati da un moderatore prima che diventino visibili ad altri utenti, quindi dovresti aggiungere un elemento di stato a thread e post in modo che l'applicazione possa decidere se i thread e i post associati sono stati rivisti e approvati. Uno stato consentirebbe anche ad altri utenti di contrassegnare thread e post come spam o inappropriati.

Spero che tu possa già iniziare a pensare a miglioramenti. Ad esempio, se hai bisogno di dettagli formali sull'utente, invece di un singolo campo "nome", potresti volere il suo nome, cognome e nome utente o nickname. E un post potrebbe avere un oggetto oltre al contenuto, ma penso che l'oggetto del post sia ricollegato al thread, quindi potrebbe non essere necessario.

  Parte successiva »