Ho appena iniziato a lavorare su un progetto in cui sto cercando di implementare alcune logiche di backend che includono la creazione di un modello di dati per il problema specificato. Ecco un problema che ho riscontrato e sono curioso di sapere quale approccio sarebbe più adatto per affrontarlo.
Modello: Ci sono vari utenti nel sistema con diversi diritti e strutture ma esiste un'eredità molto semplice tra di loro.
Esiste un user
di base che può sfogliare e visualizzare alcuni dati, commenti di psot ecc. C'è un member
che può fare tutto il user
può + qualcosa in più e condividono le strutture di dati di base + member
ha il suo. E c'è un producer
che è di nuovo solo un'estensione di member
.
Ogni user
può (ma non deve) essere un member
e ogni member
può (ma non deve) essere un producer
.
1) La mia idea attuale:
Crea tabella user
e tabelle member
e producer
che si farebbero riferimento l'un l'altro utilizzando l'id dell'utente. Ci sarebbe una relazione da 0 a 1 tra queste tabelle:
USER {
id
username
email etc..
}
MEMBER {
userid
some_member_attributes
}
PRODUCER {
userid
some_producer_attributes
}
Il vantaggio è che mi avrebbe salvato un sacco di valori NULL in un singolo tavolo e mi sembra in qualche modo naturale. Il disadvatage è che dovrei interrogare tre diverse tabelle ogni volta che vorrei ottenere alcuni dati da un producer
.
2) L'altra possibilità è implementarla come una tabella con attributi isMember
e isProducer
. Ma di nuovo, questo produrrà molti valori NULL poiché la maggior parte degli utenti non sarà producers
. E non è molto tipico avere molte relazioni 0-1 in un modello, penso ...
Che cosa suggerisci? Spero che non sia fuori tema qui, sto solo cercando di farlo bene, quindi non dovrò reimplementare una dozzina di volte in futuro. Grazie per eventuali suggerimenti!