1、UserInfo:定义所有user,对应的类为SPUser,以site collection为单位,tp_ID字段标识user的id值。
2、Groups:定义所有组,对应的类为SPGroup,以site collection为单位,ID字段表示组的id值。
UserInfo与Groups的id交集为空,即一个id表示了组就不能表示user;表示user就不能表示组。
3、GroupMemberShip:user与group的对应关系,以site为单位,表示哪一个用户属于哪一个组,某一个Group中包含有哪些User,它们之间是多对多的关系。GroupId对应Groups表中的ID值,MemberId对应UserInfo中的tp_ID值。
4、Roles:以site为单位,对应的类为SPRole(SharePoint 中叫做Permission Level),RoleId字段表示每个web下定义的各个权限,PermMask表示定义的具体权限是什么。
5、RoleAssignment:以site collection为单位,对应的类为SPRoleAssignment,ScopeId对应site collection/site/list/item的scopeid值,RoleId字段对应Roles表中的RoleId值,PrincipalId表示的是UserInfo或者Groups表中的id值。
6、Perms:以site为单位,ScopeId字段意义与5相同,ACL字段保存的是这个Scope中所有的RoleAssignment合集(加密)。
ACL的读取有一个特别的方法:
前12个字节是固定的,然后的四个字节是RoleAssignment的个数,再然后16个字节是一组,每组的前四个字节是Principal Id,后12个字节是Role。
6个表的关系如下图,Principal为非实表。