0

ユーザーとその権限のテーブルを作成しようとしています。私が行った方法は、Usersというテーブルを作成したもので、このテーブルには次のフィールドがあります。

UserID:各ユーザーのID。パスワード:ユーザーが署名するパスワード。許可:これは次のもので構成されます。

ユーザーに付与された権限が1001の場合、ユーザーはデータを表示できます(2つのオプションがある画面が表示されます。最初のオプションは現在のプロジェクトのデータを表示し、2番目のオプションは過去のプロジェクトのデータを表示します) 。ユーザーに付与された権限が1002の場合、ユーザーはデータを挿入および表示できます。ユーザーに付与された権限が1003の場合、ユーザーはデータを表示、挿入、および更新できます。

SQLでのアクセス許可について検索したところ、この方法は適切な方法ではない、つまり専門家ではないことがわかりました。私がやったことについて、皆さんの意見を聞かせてください。それが良い方法ではないと思うなら、私にいくつかの専門的な方法を提案してください。

4

1 に答える 1

0

別のアプローチを使用します。

アクセス許可と呼ばれる別のテーブルを追加します

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

そしてもう1つは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 に答える