現在、ユーザーの権限と役割の使用を必要とするWebアプリを設計中です。役割はSQLデータベース内に格納されます(MS SQLを使用しますが、これは実装に依存しない設計である必要があります)。
ユーザーが複数の役割を持つことを許可するための標準的な方法は何ですか。必要に応じて「1対多」の関係になります。
私が概念的に思いついたのは、ユーザーがその役割を持っているかどうかを判断するためにビットフラグを使用するintフィールドのアイデアです。
User Group | Permission Mask | Value
-------------------------------------
Basic | 0 0 0 0 1 | 1
Advanced | 0 0 0 1 0 | 2
... | ... | ...
Admin | 1 0 0 0 0 | 16
このようにして、PHP側の認証で、ユーザーがその役割に属しているかどうかをすばやく計算できます。これで私が目にする最大の欠点は、読みやすさと理解です。この設計上の決定に関与していない人にとって、メンテナンス/アップグレード(新しい役割)が発生したときに何が起こっているのかを理解できるでしょうか?
これは私のニーズに適していますか?ユーザーが複数の役割/グループを持つことを可能にする、より標準化された方法はありますか?