某系统业务逻辑如下:
1)每个用户可以属于多个角色
2)每个角色可以有多个数据权限
3)数据表tbl_data中的每一行数据属于一个数据权限
要求:
1)请简单设计所需要的表和结构
2)请编写一段后台代码,对当前登录的用户,返回tbl_data中他有权限看到的所有数据,可以使用Hibernate或Django或其他ORM框架,也可以用SQL.
答:
1):
2):
select dateId,dateName from date where powerId in (select powerId from roleAndPower where roleId in (select roleId from userAndRole where userId = 1));
解答过程:
1、通过用户id找到用户的所有角色:
select roleId from userAndRole where userId = 1;
2、通过所有角色找到所有权限:
select powerId from roleAndPower where roleId in (select roleId from userAndRole where userId = 1);
3、通过所有权限找到权限对应的所有数据:
select dateId,dateName from date where powerId in (select powerId from roleAndPower where roleId in (select roleId from userAndRole where userId = 1));