ロール階層とは何ですか?
ロール階層は、データベースおよびコンピューターセキュリティシステムで最もよく使用される組織用語です。 ユーザーは、ツリーの枝のように上方に分岐するエスカレーションロールを所有しています。 システムのユーザーは、これらの役割を通じて昇格します。 それらは、以前の役割から属性を失うことなく、採用する役割の追加の属性、義務、および関連する変数を継承します。 これの利点は、データベースとセキュリティ権限を設計するための単純な組織標準が可能になることです。 欠点は、しばしば、個々の役割がお互いにきちんと出血せず、システムの設計で厄介なまたは不適切な構造を強いることにあります。
雪だるまが転がり落ちるのを想像してください。 進行するにつれて、元のコンテンツを失うことなく、より多くのサイズを蓄積します。 丘の底、つまりデータベースの上位層に到達するまでに、元のサイズをはるかに超えて拡大しています。 これがロール階層の基本概念です。
たとえば、従業員データベースのロール階層を考えます。 データベースの最も基本的な層はEmployeesテーブルです。このテーブルには、会社で働いているすべての人のすべてのレコードが含まれています。 上記のEmployeesはManagersテーブルで、各マネージャーが監督する従業員のリストなどの追加属性を追加できます。 ただし、当然、Managersテーブルはより排他的です。 すべてのマネージャーは従業員ですが、すべての従業員がマネージャーではないためです。 ロール階層テーブルは引き続きピラミッドのような形で「トリクルアップ」され、場合によってはブランチマネージャー、コーポレートマネージャー、副社長などのテーブルが追加されます。
セキュリティの観点から見ると、階層のピークは無制限のシステム管理者であり、コンピュータシステムの変更や変更を実行できます。 最下位層は単純なユーザーですが、実質的な変更を許可されずに少数のプログラムにしかアクセスできない場合があります。 データベースまたはセキュリティ状況のいずれの場合でも、ロール階層スキーマにより、効果的な「上方へのブリード」が可能になり、システムのユーザーはかなり直線的な形式である位置から次の位置に移行できます。
これの欠点は、1つのエンティティの属性が必ずしも別のエンティティにスムーズに移行しない複雑な組織にあります。 プログラマーまたは人事労働者としての役割を果たした後、従業員が管理職に昇進した場合を考えてみましょう。 会社の規則により、個人がプログラマーおよび人的資源労働者の両方として働くことは禁止されていると仮定します。 ここで、ロール階層構造に従って、Managersテーブルの全員がプログラマーの属性と人事で働いている人の属性の両方を継承する必要があります。 これにより、データベース内のスペースが無駄になり、属性がヌルになります。1人のマネージャーがプログラマーと人事部門の両方の属性を持つことはできないためです。