ユーザーがロールに与えられた権限に基づいて特定のタブにアクセスできるWebアプリ用のデータベースを設計したい。
これまでに行ったことは、2つのテーブルSER_TABLEとSER_ROLESを作成したことです。
SER_TABLEには以下のフィールドがあります。
SER_ROLESには以下のフィールドがあります。
id(主キー)
role_name(例:ADMIN、TAB1_USER、TAB2_USER)
作成日
ここで、role_name "[〜#〜] admin [〜#〜]"を持つユーザーはすべてのタブを表示でき、他のユーザーは特定のタブにのみアクセスできます。
私の質問は、テーブルを作成する必要があるかどうかですSER_PERMISSIONS外部キーを持つSER_ROLES以下のフィールドを持つテーブル:
または、コードレベルでこれを管理する必要がありますか?両方のアプローチの長所と短所は何ですか?
Krokodilkoは彼のコメントで書いたように、あなたが必要とする柔軟性のレベルに依存します。
次のように、クライアントの1つに役割ベースの権限を実装しました。
しかし、私の要件は可能な限り柔軟であることであり、まだ成長しているシステムです(6年以上)。
私の場合のような多対多の関係の代わりに、多くのアプリケーションがユーザーを1対多の関係として役割を持つことができると思いますが、どのアプリケーションでも権限や役割の権限をハードコーディングすることはしません。