0

我正在尝试为用户及其权限创建一个表。我这样做的方式是创建了一个名为 Users 的表,该表具有以下字段:

UserID:每个用户的身份。密码:用户登录时使用的密码。权限:这包括以下内容:

如果给用户的权限是1001,用户可以查看数据(会出现一个屏幕,有两个选项:第一个选项是查看当前项目的数据,第二个选项是查看过去项目的数据) . 如果授予用户的权限是1002,则用户可以插入和查看数据。如果给用户的权限是1003,用户可以查看、插入和更新数据。

通过我在SQL中搜索权限,我发现这种方式不是一个好方法,也就是说它不专业。请大家给我你对我所做的事情的看法吗?如果您认为这不是一个好方法,请给我一些专业的方法。

4

1 回答 1

0

我将使用不同的方法。

添加另一个名为 Permissions 的表

CREATE TABLE Permissions
(
    PermissionID int Not null
    Description nvarchar(255) NOT NULL
)
CONSTRAINT [PK_permissions] PRIMARY KEY CLUSTERED 
(
[PermissionID] ASC
) ON [PRIMARY]

还有一个叫做 UserPermissions

CREATE TABLE UserPermissions
(
    UserID int Not Null
    PermissionID int Not null
)
CONSTRAINT [PK_user_permissions] PRIMARY KEY CLUSTERED 
(
      [UserID]ASC,
[PermissionID] ASC
) ON [PRIMARY]

这样,每个权限都有一个适当的记录,并且您可以通过这样的查询/存储过程获得特定用户允许的权限

SELECT u.UserID, p.PermissionID, p.Description 
FROM Users u INNER JOIN UserPermission up on up.UserID = u.UserID
    INNER JOIN Permissions p on up.PermissionID = p.PermissionID

通过这种方式,您的代码可以检查各个权限,而无需使用位掩码来隔离适当的位,并且(虽然您的问题不需要)编写代码来搜索您的数据库以查找具有特定权限的用户将很容易

于 2013-03-05T10:36:13.427 回答