一、树状权限根据实际情况来,如果只是简单区分,普通用户 -> VIP -> SVIP -> 管理员,这种层级分明,上级同时拥有下级权限的那么直接分别为这几个权限设置一个权重值。逐层递加 1000,即权限权重普通用户1000VIP2000SVIP3000管理员10000然后在视频加上一个权限字段,比如这视频仅 VIP 可见,那查询时直接查 权限字段大于等于 2000 的就好了。BIT 实现如果较为复杂的权限设计,角色 A、 角色 B、 角色 C,多种角色没有继承关系,那可能就要复杂一点儿,如果只是以够用的情况去设计,那就可以把权限字段设计成 bit ,然后使用位运算的方式来确定权限。以上设计仅从查询方便的角度来设计,且应该避免使用,因为在数据量大时可能会造成慢查询。分表联表实现你也可以创建一个一对多表,比如视频权限表,分别存视频和权限的标识,然后查询时根据使用子查询获取用户拥有的权限进行过滤(SQL 可能会复杂)同样,在大量数据查询时,使用不当可能会存在慢查询。对于过于复杂的权限设计,你可能需要 RBAC,或者在代码业务中判断用户权限,这样效率更为高效,但是可能会造成一些问题,比如分页时可能数据量不如预期,需要额外处理等。
一、树状权限
根据实际情况来,如果只是简单区分,普通用户 -> VIP -> SVIP -> 管理员,这种层级分明,上级同时拥有下级权限的
那么直接分别为这几个权限设置一个权重值。逐层递加 1000,即
然后在视频加上一个权限字段,比如这视频仅 VIP 可见,那查询时直接查 权限字段大于等于 2000 的就好了。
BIT 实现
如果较为复杂的权限设计,角色 A、 角色 B、 角色 C,多种角色没有继承关系,那可能就要复杂一点儿,如果只是以够用的情况去设计,那就可以把权限字段设计成 bit ,然后使用位运算的方式来确定权限。
以上设计仅从查询方便的角度来设计,且应该避免使用,因为在数据量大时可能会造成慢查询。
分表联表实现
你也可以创建一个一对多表,比如视频权限表,分别存视频和权限的标识,然后查询时根据使用子查询获取用户拥有的权限进行过滤(SQL 可能会复杂)
同样,在大量数据查询时,使用不当可能会存在慢查询。
对于过于复杂的权限设计,你可能需要 RBAC,或者在代码业务中判断用户权限,这样效率更为高效,但是可能会造成一些问题,比如分页时可能数据量不如预期,需要额外处理等。