Както krokodilko написа в коментара си, зависи от нивото на гъвкавост, от което се нуждаете.
Внедрих разрешения, базирани на роли, за един от моите клиенти, както следва:
- Потребител (потребителско име (PK), потребителско име (уникално), парола (осолени и хеширани! ), име, фамилия, телефон и т.н')
- Роля (идентификатор на роля (PK), име на роля (уникално), описание на ролята)
- Разрешение (идентификатор на разрешение (PK), име на разрешение (уникално)) – разделите/екраните/действията са тук
- Потребител към роля (идентификатор на потребителя, идентификатор на роля) – PK е комбинирана от двете колони
- Роля към разрешение (идентификационен номер на роля, идентификатор на разрешение) – PK е комбинация от двете колони
Но моето изискване беше да бъда възможно най-гъвкав, а това е система, която все още се разраства (6 години и расте).
Предполагам, че много приложения могат да имат ролята на потребителя като връзка един към много, вместо много към много, както е в моя случай, но не бих приложил твърдо кодиране на разрешения или разрешения на роля към никое приложение.
Допълнително обяснение:Дизайн на база данни за сигурност, базиран на роли на Какво, по дяволите #, знам?