興味深いデザインの質問があります。私は、コストの異なるさまざまなバージョンのプログラムを用意し、マネージャタイプのユーザーがプログラムの一部へのアクセスを他のユーザーに許可することを許可するために、プロジェクトのセキュリティ面を設計しています。それはWebベースになり、当社のサーバーでホストされます。SQLテーブルを構造化して一致させるか、結果を返さない方が良いでしょうか?
「リソース」または画面ごとに単純な許可または拒否オプションを使用しています。
私たちは多数のリソースを持ち、ユーザーはさまざまなグループを設定して、ユーザーがアクセスを制御できるようになります。各ユーザーは1つのグループにしか属しません。
私はこれを念頭に置いて2つのアプローチがあり、パフォーマンス面でSQLサーバーのほうが好都合であるかどうか不思議でした。
オプションA アクセステーブルにエントリが存在するということは、アクセスが許可されていることを意味します。これにより、情報を格納するデータベースの列は必要ありません。結果が返されない場合、アクセスは拒否されます。
これは小さいテーブルを意味すると思いますが、クエリ全体が一致するものがないと判断するためにテーブル全体を検索しますか?
オプションB ビット列は、許可/拒否を制御するデータベースに含まれています。これは、常に結果が見つかることを意味し、より大きなテーブルを作成することを意味します。
思考?
usersテーブルはアクセス制御テーブルとは別になるため、アクセスの追加または削除はユーザの存在に影響を与えません。また、デフォルトでは、アクセスを拒否する結果が見つからないため、誤ってアクセスすることはできません。 – Tilendor