我有一个相当通用的数据库模式用于身份验证/授权:
User
- Id
- Username
- Password
Role
- Id
- Name
RolePermission
- RoleId
- PermissionType
UserRole
- UserId
- RoleId
到那里,没有问题。现在,我需要以相当复杂的方式将UserRole
与资源相关联。
例如想象一个Department
资源。用户可以是一个部门的 Teacher 和其他部门的 Auditor 。同一用户还可以是整个 Institute 资源的 Supervisor 。
现在,我需要在数据库结构中表达该要求,然后我想到了这个想法:
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
这可能有效,但是我担心缺乏参照完整性强制。是否有更好的解决方案可以对需求进行建模?