Struttura del database SQL per categorie personalizzate
-
06-07-2019 - |
Domanda
Sto creando un sito Web di blog online e per ogni post di blog, vorrei che l'utente fosse in grado di creare / modificare / eliminare la propria categoria in modo da poter classificare il proprio post.
Qual è generalmente considerato un buon progetto di database per le categorie generate dall'utente?
Questo è il design del mio tavolo proposto. (C'è un nome per questo tipo di db?)
user_table
id_utente (pk), nome_utente
CATEGORY_TABLE
category_id (pk), nome_categoria
USER_CATEGORIES
user_id (fk), category_id (fk)
Grazie per l'aiuto. Sono sicuro che ci sia un post da qualche parte a riguardo, ma non sono riuscito a trovarlo. Se questo è un duplicato, per favore fatemi sapere e rimuoverò questa domanda.
Soluzione
Questa è una relazione da molte a molte. Ciò consentirebbe a ciascun utente di avere potenzialmente diverse categorie e ogni categoria di avere potenzialmente molti utenti diversi. Questo sembra un modello utile per quello che stai cercando di fare.
Altri suggerimenti
Penso che il tuo schema abbia un bell'aspetto. Mantieni le etichette di categoria in una tabella per evitare duplicazioni e poi assegni i loro ID agli utenti.
Se quello che stai cercando di fare è avere " private " categorie per ciascun utente, allora va bene. Se d'altra parte si suppone che le categorie siano pubbliche (come tag nello stackoverflow), allora si può prendere in considerazione un'altra opzione: non memorizzare la relazione utente & Lt; - & Gt; categoria, invece aggiungere il campo use_counter alla tabella delle categorie e usa i trigger per incrementarla quando viene utilizzata la categoria (la voce del blog è classificata) o diminuirla quando è " liberata " (la voce del blog è stata eliminata / la sua categoria è stata rimossa). Quando use_counter raggiunge 0, rimuovi la categoria.