Come ha scritto krokodilko nel suo commento, dipende dal livello di flessibilità di cui hai bisogno.
Ho implementato autorizzazioni basate sui ruoli per uno dei miei clienti come segue:
- Utente (ID utente (PK), nome utente (univoco), password (saltato e hash! ), nome, cognome, telefono ecc')
- Ruolo (ID ruolo (PK), nome ruolo (univoco), descrizione ruolo)
- Autorizzazione (ID autorizzazione (PK), nome autorizzazione (univoco)) - le schede/schermate/azioni vanno qui
- Utente a ruolo (ID utente, ID ruolo) - PK è la combinazione di entrambe le colonne
- Ruolo per l'autorizzazione (ID ruolo, ID autorizzazione) - PK è una combinazione di entrambe le colonne
Ma la mia esigenza era quella di essere il più flessibile possibile, ed è un sistema che è ancora in crescita (6 anni e oltre).
Immagino che molte applicazioni possano avere l'utente nel ruolo di una relazione uno a molti, invece di molti a molti come nel mio caso, ma non andrei a codificare i permessi o a dare un ruolo ai permessi in nessuna applicazione.
Ulteriori spiegazioni:Progettazione di database di sicurezza basata sui ruoli su Che cosa # so?