Схема базы данных авторизации на основе ресурсов
У меня довольно обычная схема базы данных для аутентификации / авторизации:
User
- Id
- Username
- Password
Role
- Id
- Name
RolePermission
- RoleId
- PermissionType
UserRole
- UserId
- RoleId
До этого никаких проблем. Теперь мне нужно ассоциироватьUserRole
s к ресурсам довольно сложным образом.
Например, представьте себе Department
ресурс. Пользователь может быть учителем для одного отдела и аудитором для других отделов. Этот же пользователь может также быть руководителем всего ресурса института.
Теперь мне нужно выразить это требование в моей структуре базы данных, и мне в голову пришла эта идея:
User
Id Username
1 user1
Role
Id Name
1 Teacher
2 Auditor
3 Supervisor
Department
Id Name
1 Dep1
2 Dep2
3 Dep3
Institute
Id Name
1 Inst1
UserRole
UserId RoleId EntityName EntityId
1 1 Department 1
1 2 Department 2
1 2 Department 3
1 3 Institute 1
Это может сработать, но меня беспокоит отсутствие обеспечения ссылочной целостности. Есть ли лучшие решения для моделирования этих требований?