假设我正在创建论坛应用程序,我了解如何使用Groups设计论坛级权限系统。
即。您可以创建一个论坛来分组映射,并将用户分配给一个组,以授予他们访问特定论坛的权限。
如何优化权限以允许行级权限(或论坛术语,帖子级别)。
答案 0 :(得分:1)
您可以采用与您已描述的类似方式进行此操作。它需要更多的连接。假设你有一个像这样的结构(我故意不使用约束来使它成为泛型并减少代码量):
CREATE TABLE ForumPost (
PostID int,
ForumID int,
PostText varchar(255)
);
CREATE TABLE ForumUser (
ForumUserID int,
ForumUserName varchar(255),
NumofPosts int
);
CREATE TABLE ForumGroups (
ForumGroupID int,
ForumGroupName varchar(255)
)
CREATE TABLE ForumGroupMembership (
ForumUserID int,
ForumGroupID int
)
CREATE TABLE ForumPermissions (
ForumID int,
ForumGroupID int,
MinPosts int
)
然后,您可以进行多次连接,以确保相应地限制内容:
SELECT FPost.PostID, FPost.ForumID, FPost.PostText
FROM ForumPost FPost
JOIN ForumPermissions FPerm
ON FPost.ForumID = FPerm.ForumID
JOIN ForumGroupMembership FGM
ON FPerm.ForumGroupID = FGM.ForumGroupID
JOIN ForumUser FUser
ON FUser.ForumUserID = FGM.ForumUserID
WHERE FUser.NumOfPosts >= FPerm.MinPosts
AND FPost.PostID = <Some Number>