Права доступа на уровне строк, помощь с дизайном - PullRequest
0 голосов
/ 07 марта 2009

Допустим, я создаю приложение для форумов, я понимаю, как спроектировать систему разрешений на уровне форумов с группами.

т.е. вы создаете форум для сопоставления групп и назначаете пользователей в группу, чтобы предоставить им доступ к определенному форуму.

Как я могу уточнить разрешения, чтобы разрешить разрешения на уровне строк (или в терминах форума, на уровне сообщений).

1 Ответ

1 голос
/ 07 марта 2009

Вы сделали бы это так же, как вы уже описали. Это потребует еще нескольких соединений. Допустим, у вас есть такая структура (я намеренно снял ограничения, чтобы сделать ее общей и уменьшить объем кода):

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>
...