Datenunabhängigkeit
# Datenunabhängigkeit

Datenunabhängigkeit (englisch data independence) ist ein Begriff aus der Informatik, der beschreibt, zu welchem Grad ein Benutzer oder ein Anwendungsprogramm auf die Daten eines Datenbanksystems zugreifen kann, ohne Details der systemtechnischen Realisierung der Datenspeicherung und des Datenzugriffs zu kennen. Datenunabhängigkeit kann vom Datenbankmanagementsystem (DBMS) durch das Bereitstellen einer wohldefinierten, unveränderlichen Schnittstelle erreicht werden, welche die Implementierung der Datenspeicherung und des Datenzugriffs vor dem Benutzer der Schnittstelle verbirgt, so dass man diese Implementierung verändern kann und für Benutzer der Schnittstelle solche Änderungen transparent bleiben. Dies ist dem Prinzip der Abstrakten Datentypen analog. Man unterscheidet bei Datenbanksystemen zwischen physischer und logischer Datenunabhängigkeit.

## Physische Datenunabhängigkeit

Physische Datenunabhängigkeit weisen Datenbanksysteme auf, bei denen Änderungen an der physischen Speicher- oder der Zugriffsstruktur (beispielsweise das Anlegen oder Entfernen einer Indexstruktur) keine Auswirkungen auf die logische Struktur der Datenbasis, das konzeptionelle Datenbankschema, haben. Netzwerkartige und hierarchische Datenbanksysteme können aufgrund starker Bindung an Zugriffspfade keine physische Datenunabhängigkeit bieten. Die heute vorherrschenden relationalen Datenbanksysteme dagegen erfüllen physische Datenunabhängigkeit. Edgar F. Codd, der die Grundlagen der relationalen Datenbanksysteme schuf, formulierte über 300 Anforderungen, die relationale Datenbanksysteme erfüllen müssen; physische Datenunabhängigkeit ist eine davon. Codd formulierte physische Datenunabhängigkeit folgendermaßen:

   „Physical Data Independence: The DBMS permits a suitably authorized user to make changes in storage representation, in access method or in both – for example, for performance reasons. Application programs remain logically unimpaired whenever any such changes are made.“
   „Das DBMS erlaubt es einem angemessen autorisierten Benutzer, Änderungen an der Speicher- oder der Zugriffsstruktur oder bei beidem zu machen – beispielsweise aus Performancegründen. Anwendungsprogramme bleiben logisch unbeeinträchtigt, wenn solche Änderungen vorgenommen werden.“

## Logische Datenunabhängigkeit

Logische Datenunabhängigkeit bedeutet, dass die Sicht des Endbenutzers einer Anwendung gegen Änderungen, die am konzeptionellen Datenbankschema vorgenommen werden, immun ist. Logische Datenunabhängigkeit kann nur für einfache Modifikationen des Datenbankschemas realisiert werden; beispielsweise lässt sich die Änderung eines Attributs mithilfe einer Sichtdefinition vor dem Anwendungsprogramm verbergen.

