あなたの質問は完全に明確ではありませんが、私が理解できることから、人はある国では副大統領になることができますが、別の国では何の役にも立ちません。質問が正しければ、私が使用する RBAC 実装 tnat (PHP で記述された Yii フレームワーク) には、「ビジネス ルール」と呼ばれるものがあります。'。true または false を返す PHP コード スニペットであるビジネス ルールは、特定の役割 (簡単な例として) に関連付ける、または定義することができます。ビジネス ルールでは、その人がこの役割に関連付けられるだけでは十分ではありません。ビジネス ルールがこの役割に関連付けられている場合、それが実行され、そのコード スニペット (ブール値) からの回答によって、その人が「本当に」この役割を持っているかどうかが決まります。つまり、次の代わりに、ここで追加の次元の柔軟性が得られます。
人は「副社長」の役割を持っていますか? ->もし彼がこの役割を持っているなら、彼はすべての国で副大統領です (!...)。
次のように、より細かく調整されたチェックを行うことができます。
A 国で副大統領の役割を担っている人はいますか? (国 A は、RBAC レイヤーにパラメーターとして渡されます。RBAC レイヤーは、既に「個人」データ構造を管理しています。- > RBAC レイヤーはビジネス ルール スニペットを実行します。作成したコードは、この特定のユーザーとそのユーザーの親和性をチェックします。ユーザーが A 国の副大統領であるかどうかを判断するブール値を返します。
残っているのは、アプリケーションにロジックを挿入して、国ごとに 1 人の副大統領の一意性を DB (任意) に強制することだけです。これで完了です。
それが役立つことを願っています。