Was beinhaltet die Data Control Language (DCL)?

Zuletzt aktualisiert: 05.04.2023

Zur Datenkontrollsprache gehören vier Anweisungen: COMMIT, ROLLBACK, GRANT und REVOKE. Sie dienen unter anderem dazu, Datenbanken vor zufälligen oder beabsichtigten Schäden zu bewahren. Dies betrifft einerseits die sogenannten Transaktionen, andererseits die Rechteverwaltung.

Was ist eine Transaktion in Bezug auf Datenbanken?

Eine Transaktion ist eine nicht unterbrechbare Folge von DML-Befehlen, welche die Datenbank von einem logisch konsistenten in einen (neuen) logisch konsistenten Zustand überführt. Gerade bei Änderungen von Datenbeständen sind Datenbanken besonders anfällig für Schäden. Ein Hardware- oder Software-Ausfall während einer Änderung kann eine Datenbank in einen nicht konsistenten Zustand versetzen, selbst wenn das System nur einen einzigen Benutzer hat.

Transaktionen spielen sich auch oft in einem Kontext ab, wo viele gleichzeitig laufende Transaktionen konkurrierend auf eine Datenbank zugreifen, beispielsweise bei einem Flugbuchungssystem.

Als Beispiel, wo Transaktionen wichtig sind, sei ein Geldtransfer zwischen zwei Konten auf zwei Banken genannt: die Transaktion beginnt mit der Abbuchung des Betrags vom einen Konto und endet mit der erfolgreichen Zubuchung am anderen Konto. Wird ein solcher Vorgang innerhalb einer Transaktion ausgeführt, ist sichergestellt, dass bei eventuellen Fehlern nicht beispielsweise der Betrag vom einen Konto abgebucht, aber nicht am anderen Konto zugebucht wurde.

Transaktionen sollen dabei die sogenannten ACID-Eigenschaften besitzen:

  • Atomarität: Die Transaktion ist die kleinste, nicht mehr zerlegbare Einheit – „alles-oder-nichts“-Prinzip, d.h. sie können nur vollständig abgeschlossen oder zurückgesetzt werden
  • Consistency: Die Transaktion hinterlässt nur einen konsistenten Datenbankzustand, gleichgültig ob die Transaktion mit COMMIT oder mit ROLLBACK abgeschlossen wurde.  Zwischenzustände der Transaktionen dürfen jedoch inkonsistent sein, der Endzustand muss die Integritätsbedingungen erfüllen
  • Isolation: Nebenläufig ausgeführte Transaktionen dürfen sich nicht beeinflussen, d.h. der erfolgreiche Abschluss einer Transaktion ist nicht vom Verhalten anderer Transaktionen abhängig
  • Durability: Die Wirkung einer erfolgreich abgeschlossenen Transaktion bleibt dauerhaft in der Datenbank, auch nach einem Systemfehler muss die Wirkung gewährleistet sein. Die Wirkung einer erfolgreich abgeschlossenen Transaktion kann nur durch eine kompensierende Transaktion aufgehoben werden.

Während einer Transaktion speichert die Datenbank alle Operationen, die sich auf die Daten auswirken, in einer Protokolldatei. Wird die Ausführung der Transaktion unterbrochen, kann das System mittels der Anweisung ROLLBACK in den Zustand vor der Transaktion versetzt werden. Ist die Transaktion erfolgreich verlaufen, wird sie mit COMMIT beendet und abgeschlossen.

Warum ist es wichtig, Zugriffsrechte in Datenbanken zu kontrollieren?

Datenbanken enthalten häufig vertrauliche Informationen, die nicht jedem Anwender zur Verfügung stehen dürfen. Außerdem wird man nicht allen Anwendern dieselben Möglichkeiten zur Verarbeitung der Daten einräumen wollen, da Änderungen der Daten unter Umständen kritisch sind, auch wenn die Daten an sich nicht vertraulich sind.

Zugriffsrechte können nicht nur einzelnen Benutzern zugewiesen werden, sondern es können Zugriffsrechte auch an Rollen gebunden werden. Dafür gibt es die Zugriffskontrolle mit GRANT und REVOKE mit folgender (auszugsweisen) Syntax:

GRANT <Liste von Rechten>
   ON <Objekt>
   TO <Liste von Benutzern> 
REVOKE <Liste von Rechten>
  ON <Objekt>
  FROM <Liste von Benutzern> 

    👉 Dir gefällt dieser Beitrag?
    Success! Thanks for Your Request.
    Error! Please Try Again.