Схема базы данных авторизации на основе ресурсов

У меня довольно обычная схема базы данных для аутентификации / авторизации:

User

 - Id
 - Username
 - Password

Role

 - Id
 - Name

RolePermission

 - RoleId
 - PermissionType

UserRole

 - UserId
 - RoleId

До этого никаких проблем. Теперь мне нужно ассоциироватьUserRoles к ресурсам довольно сложным образом.

Например, представьте себе 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

Это может сработать, но меня беспокоит отсутствие обеспечения ссылочной целостности. Есть ли лучшие решения для моделирования этих требований?

0 ответов