Was ist Redundanz?

Der Begriff Redundanz stammt vom lateinischen Wort „redundare“ und bedeutet „überlaufen“ oder „im Überschuss vorhanden“. In der Informatik bezeichnet Redundanz überschüssige Daten, deren Abwesenheit keinen Informationsverlust erzeugen würde. Grundsätzlich unterscheidet man zwischen beabsichtigter und unbeabsichtigter Redundanz.

Was sind Beispiele für Redundanzen in der Informatik?

Informationsübertragung

Bei der Informations- und Nachrichtenübertragung dient Redundanz zur Erkennung von Fehlern. Als redundant wird der Teil der Nachricht gekennzeichnet, der keine relevanten Informationen enthält. Es handelt sich also um zusätzliche Bits, die zum Beispiel Funktionen in der Nachricht repräsentieren können. Eine höhere Redundanz erlaubt zudem die Korrektur von Fehlern. In einer Übertragung können unter Umständen verloren gegangene Information wiederhergestellt werden. Dies ist jedoch von der Fehlertoleranz der Anwendung abhängig. Zum Beispiel ist IP-Telefonie fehlertoleranter als Transaktionen bei einer Bank. Gemessen wird die Fehlertoleranz durch die Hamming-Distanz. Mit dieser kann man Unterschiede zwischen Zeichenketten feststellen. So werden binär kodierte Zahlen durch XOR-Operation miteinander verglichen und die abweichenden Stellen gezählt.

Die Redundanz des Codes berechnet sich aus der Differenz von mittlerer Quellcodewortlänge L(C) und der Entropie H(X) der Information.

Die Redundanz der Quelle wird bestimmt aus der Differenz von maximaler Entropie Hmax(X) und Entropie H(X).

Kodierung

In der Kodierungstheorie gliedert man in Verteilungs- und Bindungsredundanz. Die Verteilungsredundanz bezieht sich auf die verschiedenen Wahrscheinlichkeiten des Vorkommens von Zeichen eines Alphabets. Bindungsredundanz hingegen bedeutet, dass es für bestimmte Zeichen wahrscheinlicher ist, nach gewissen anderen Zeichen aufzutreten. Zum Beispiel haben die Buchstaben „c“ und „h“ ein geringeres Vorkommen als andere Zeichen, doch wenn sie auftreten, dann meist als Kombination.

Das Ziel der Quellenkodierung ist es, überflüssige Daten zu beseitigen, um den Informationskanal maximal ausnutzen zu können. Relevante Informationen einer Nachricht müssen jedoch erhalten bleiben. Ein Beispiel für eine redundanzarme Kodierung ist die Huffman-Kodierung. Hierbei werden Zeichen, die häufiger in einer Quelle vorkommen, durch weniger Bits dargestellt als seltenere Symbole. Mithilfe eines Codebaums werden die Zeichen ihren Codewörtern zugeordnet. Die Dekodierung erfolgt bitweise, beginnend an der Wurzel. Dies ermöglicht eine verlustfreie Kompression und Übertragung.

Datenbanken und Datenbankstrukturen

In Datenbankensystem sind Redundanzen unerwünscht, da sie zu Datenanomalien führen. Existieren mehrere identische Datensätze, ist gegebenenfalls nicht klar, auf welche Daten zugegriffen werden soll. Es erschwert außerdem die Konsistenz und Pflege der Datenbank. Darüber hinaus können redundante Daten viel Speicherplatz verbrauchen.

Ein Beispiel sind die Kontaktangaben einer Person beim Kauf in einem Onlineshop. Fällt bei jeder Bestellung Name, Adresse und Kundennummer an, so handelt es sich um redundante Datensätze.

Durch Normalisierung von Datenbankschemen werden überschüssige Informationen reduziert. Relationale Datenbankensysteme stellen Daten in Tabellen dar. Datensätze aus verschiedenen Tabellen können durch ihre Attribute miteinander verknüpft werden. Bei einer Normalisierung werden die Daten in atomare Form gebracht und jede Tabellenspalte so aufgebaut, dass sie gleichartige Werte beinhaltet. Zudem müssen alle Nichtschlüsselattribute vom Primärschlüssel unabhängig sein.

Manchmal sind redundante Daten in einer Datenbank jedoch erforderlich, wie zum Beispiel Schlüsselredundanzen. Schlüssel sind Kennzeichner, die Datensätze eindeutig identifizieren. Auch werden redundante Informationen bewusst erhalten, wenn der Aufwand einer Normalisierung zu groß wäre. Eine Denormalisierung dient dann der Verbesserung der Laufzeit.