Tradizionalmente lo schema è molto semplice:
User <- Post
Ho scritto il codice per un modello Profile
come intermedio:
User <- ProfileUser -> Profile <- Post
Durante la registrazione per il sito Web, viene creato un User
. Un User
può creare Profile
e più User
può essere collegato a Profile
tramite ProfileUser
.
Motivi per l'implementazione
- Potenzialmente utile per i clienti più grandi con più dipendenti che hanno bisogno di accedere a
Post
(s) - Per gli utenti casuali / di livello gratuito, il collegamento dei profili può essere reso trasparente, non è necessario conoscere la funzionalità esistente
- Potrei avere bisogno di questa flessibilità "un giorno nel futuro" per motivi che non ho ancora pensato
Ragioni contro l'implementazione
- Complica lo sviluppo, il sovraccarico logistico
- Potrebbero esserci delle spese generali per le prestazioni; Non l'ho profilato, ma mi aspetto che il costo di due nuovi join sia sostanziale.
- Responsabilità degli utenti che si lamentano che un altro
ProfileUser
ha fatto qualcosa di sbagliato e incolpano il sito per il controllo delle autorizzazioni primitive (non implementerò autorizzazioni granulari o versioning / cronologia). Se questa funzione non esistesse, la loro unica opzione sarebbe quella di condividere account e la responsabilità sarebbe su di loro.
Una cosa che potrebbe aiutarmi a prendere una decisione: È difficile aggiungere in questa tabella intermedia in un secondo momento? In teoria basterebbe staccare Post
da User
e aggiungere nuova Profile
e ProfileUser
tra loro. Non ho idea di come sarebbe questo in SQL, e non so da dove cominciare a cercare o come si chiama questo tipo di operazione. Mi piacerebbe sentire da persone con esperienza nell'esecuzione di questo tipo di operazioni su un sito Web di produzione.
Se è rilevante: sto usando Django e Postgres, non ho esperienza con SQL raw [ancora] e le migrazioni di Django sono ancora per me una magia nera.