Memorizza i dati per più tipi di utente

1

Sto sviluppando un'applicazione in cui quattro tipi di utenti condividono lo stesso modulo. Quindi è una buona idea creare:

  1. una tabella e user_type e user_id (qualcosa del genere)
  2. i prefissi delle tabelle sono fondamentalmente 4 tabelle diff delle stesse colonne
  3. il tuo suggerimento

(tenendo presente che è un'applicazione CakePHP in modo che unirsi e contenere sia lì)

    
posta Mubasshir Pawle 21.10.2013 - 10:43
fonte

1 risposta

2

La tua prima opzione è probabilmente la migliore delle due.

Come punti di considerazione rispetto alla seconda opzione:

  • Cosa succede quando ottieni un quinto tipo di utente? Ora hai bisogno di creare un quinto tavolo? Che ne dici di un sesto o settimo tipo? cosa succede quando devi creare un tipo ibrido basato su uno ma ha alcune delle autorizzazioni di un altro?

  • Cosa succede quando è necessario eseguire la manutenzione sui tavoli? Hai quadruplicato il tuo lavoro (e la possibilità di errore!) Avendo 4 tabelle anziché 1.

  • Pensa attraverso la logica di come un utente accederà ai dati. Essenzialmente, avrai 4 percorsi separati attraverso il tuo codice perché accedono alla loro tabella specifica. Questo è 4 volte la quantità di lavoro e di debug che ora devi eseguire sul tuo livello php.

  • In che modo la seconda soluzione viene ridimensionata quando c'è più di una tabella che deve essere controllata dall'accesso? Tutte le considerazioni di cui sopra si moltiplicano per il numero di tabelle interessate.

Torna alla prima opzione. In genere, le autorizzazioni basate su gruppi sono le più facili da implementare e più scalabili per questo scenario.

Gli utenti apparterranno a gruppi (tipi, nella lingua della tua domanda), ei gruppi avranno le autorizzazioni per eseguire le azioni CRUD contro le tabelle.

Vorrei sconsigliare le autorizzazioni basate sull'utente in quanto i costi di manutenzione sono più alti. La differenza è questa:

  • Basato sul gruppo: l'utente appartiene al gruppo e il gruppo ha le autorizzazioni
  • Utente basato: l'utente ha i permessi.

Se si mantengono le autorizzazioni in un'altra tabella, viene aggiunto un altro join alle query per assicurarsi che l'utente disponga dell'autorizzazione corretta.

D'altra parte, se codifichi le autorizzazioni nelle query del livello php, avrai un accoppiamento più stretto tra il tuo DB e il tuo codice oltre a potenziali percorsi di codice aggiuntivi.

In ogni caso, utilizzando la prima opzione avrai ancora meno codice e possibilità di errori da gestire rispetto alla seconda opzione.

    
risposta data 21.10.2013 - 15:57
fonte

Leggi altre domande sui tag