Rollenhierarchien

Eine Rollenhierarchie entsteht, wenn einer Rolle die Zugehörigkeit zu einer anderen Rolle erteilt wird.

Eine Rolle enthält eine andere Rolle, wenn die andere Rolle der ersten Rolle erteilt wird. Die andere Rolle übernimmt alle Zugriffsrechte der ersten Rolle. Wenn zum Beispiel die Rolle DOCTOR der Rolle SURGEON (Chirurg) erteilt wird, dann lässt sich sagen, dass die Rolle SURGEON die Rolle DOCTOR enthält. Die Rolle SURGEON übernimmt alle Zugriffsrechte der Rolle DOCTOR.

Zyklen in Rollenhierarchien sind nicht zulässig. Ein Zyklus entsteht, wenn erteilte Rollen einen abgeschlossenen Kreis bilden, indem zum Beispiel eine Rolle einer anderen Rolle erteilt wird und diese andere Rolle wiederum der ersten Rolle erteilt wird. Ein Beispiel für einen Zyklus wäre, wenn die Rolle DOCTOR der Rolle SURGEON erteilt würde und anschließend die Rolle SURGEON wieder der Rolle DOCTOR erteilt würde. Wenn Sie einen Zyklus in einer Rollenhierarchie erstellen, wird ein Fehler zurückgegeben (SQLSTATE-Wert 428GF).

Beispiel für den Aufbau einer Rollenhierarchie

Das folgende Beispiel zeigt, wie eine Rollenhierarchie aufgebaut wird, um die medizinischen Ebenen in einem Krankenhaus darzustellen.

Betrachten Sie die folgenden Rollen: DOCTOR (Arzt), SPECIALIST (Facharzt) und SURGEON (Chirurg). Eine Rollenhierarchie wird aufgebaut, indem eine Rolle einer anderen Rolle erteilt wird, jedoch ohne Zyklen zu bilden. Die Rolle DOCTOR wird der Rolle SPECIALIST, die Rolle SPECIALIST der Rolle SURGEON erteilt.

Wenn die Rolle SURGEON der Rolle DOCTOR erteilt würde, entstünde ein Zyklus, der nicht zulässig wäre.

Der Sicherheitsadministrator führt die folgenden SQL-Anweisungen aus, um die Rollenhierarchie aufzubauen:
CREATE ROLE DOCTOR
CREATE ROLE SPECIALIST
CREATE ROLE SURGEON

GRANT ROLE DOCTOR TO ROLE SPECIALIST

GRANT ROLE SPECIALIST TO ROLE SURGEON