いくつかのユーザー/ロールデータベーステーブルのデザインが受け入れ可能かどうかについて質問しましたが、いくつかの調査の後でこの質問に出くわしました:複数のアクセス許可の種類(ロール)を1つの10進数としてデータベースに格納
What is the best way to handle multiple permission types?
これは革新的なアプローチのように聞こえるので、代わりに多対多の関係users_to_rolesテーブル、Iは、単一の小数(私は推測intデータ型)として定義された複数の権限を持っています。つまり、1人のユーザーのすべてのアクセス許可が1行にあることを意味します。他の質問と回答を読むまでは、おそらく意味がありません。
私はこの1頭の周りに私の脳を得ることはできません。誰かが変換プロセスを説明できますか?それは "右"と聞こえるが、私はそれがdbに入る前に小数点にどのように役割を変換するのか、dbから出てくるときにどのように変換されるのかを知りません。私はJavaを使用していますが、もしあなたがそれを突き詰めれば、それも素晴らしいでしょう。 。
「個人的に、私は時々に使用することができます。この道を許可のフラグ付き列挙体を使用AND、OR、NOTとXORビット演算:ここ
は、他の質問が削除されますオフのチャンスでオリジナルの答えがあります列挙のアイテム。
[Flags]
public enum Permission
{
VIEWUSERS = 1, // 2^0 // 0000 0001
EDITUSERS = 2, // 2^1 // 0000 0010
VIEWPRODUCTS = 4, // 2^2 // 0000 0100
EDITPRODUCTS = 8, // 2^3 // 0000 1000
VIEWCLIENTS = 16, // 2^4 // 0001 0000
EDITCLIENTS = 32, // 2^5 // 0010 0000
DELETECLIENTS = 64, // 2^6 // 0100 0000
}
その後、あなたは、ANDビット単位の演算子を使用して、いくつかの権限を組み合わせることができます。
を例えば、ユーザは、&編集ユーザーを表示することができた場合、演算のバイナリ結果を0000 0011は10進数に変換されます。 次に、1人のユーザーのアクセス許可をデータベースの1列に格納します(この場合は3になります)。
は、アプリケーションの内部で、あなただけのユーザーが特定の権限を持っているかいないかどうかを確認するために(OR)別のビット演算を必要としています。」
非常に便利な質問と回答者... –