У меня есть довольно распространенная схема базы данных для аутентификации / авторизации:
User
- Id
- Username
- Password
Role
- Id
- Name
RolePermission
- RoleId
- PermissionType
UserRole
- UserId
- RoleId
Вплоть до проблем нет. Теперь мне нужно связать UserRole
с ресурсами довольно сложным способом.
Например, представьте себе ресурс Department
. Пользователь может быть Преподаватель для одного отдела и Аудитор для других отделов. Этот же пользователь также может быть Supervisor для всего ресурса Institute .
Теперь мне нужно express это требование в структуре моей базы данных, и я пришел с эта идея:
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
Это может сработать, но я обеспокоен отсутствием принудительного применения ссылочной целостности. Есть ли лучшие решения для моделирования этих требований?