资源(包括对象和容器)可以由用户访问的,但可以授权给用户或角色(用户和角色在此处统称为授权对象),一个用户可以赋予多个角色,并自动享有这些角色的权限,当用户对某个资源享有的权限冲穾时,禁止的权限将优先盖掉允许的权限。对象和容器可以定制是否继承容外层容器的授权列表。继承方式及限制:内层容器继承外层的授权列表,由内向外逐层继承,直到继承到设定为不继承外层容器的授权的容器为止。
对象表(tb_obj):
对象代号(obj_id)、所在容器代号(cntn_id)、是否继承容器的授权列表(inherit_acl)。容器表(tb_cntn):
容器代号(cntn_id)、所在容器代号(parent_id)、绝对地址(abs_addr)。用户表(tb_usr):
用户代号(usr_id)、用户名称(usr_name)。角色表(tb_rul)
角色代号(rul_id)、角色名称(rul_name)。用户角色表(tb_usr_rul)
用户代号(usr_id)、角色代号(rul_id)。存取控制表(tb_acl):
资源代号(res_id)、授权对象(obj_id)、可查看(can_view)、可修改(can_modify)。
要求:给定一个用户代号,能用SQL语句统计出该用户可以访问的所有资源。
说明:用的是ACCESS数据库,不知能否使用存储过程,如何定义?最好能用一条SQL查出,哪怕复杂些。