Informatik Integritätsregeln?

2 Antworten

Allgemein kannst du das in Wikipedia nachlesen.

Integritätsregeln legen die Strukturen und Abhängigkeiten von Daten fest, werden häufig in Datenbanken verwendet, sind aber auch für alle Möglichen anderen Dateien nützlich.

Man legt also vorher fest, welche Bedingungen Daten erfüllen müssen, damit diese im Datenbestand erfasst werden. Bei Datenbanken werden diese Regeln in der Regel automatisch bei Erfassung/Änderungen an den Daten geprüft und bei einem Verstoß gegen eine der Regel die Operation abgelehnt. Das soll eine einheitliche Struktur der Daten sicherstellen und soll sicherstellen, dass Daten, auf welche sich in einem Datensatz bezogen wird, auch vorhanden sind (z.B. Rechnung->Kundendatensatz).

Das können so grundlegende Dinge sein wie "Feld nicht leer", maximale Länge von Texten oder Datumsformate (Tag.Monat.Jahr oder Monat.Tag.Jahr, Jahr vierstellig), aber auch sowas wie welche Zeitzone wird verwendet, wie in deinem Beispiel das die Kundennummer eindeutig im Datenbestand sein muss oder dass es zu einer Kundennummer in einem Rechnungsdatensatz auch den passenden Kundenstammdatensatz geben muss. Im Prinzip kann man da alles als Bedingung definieren, was sich berechnen lässt, Datenbanken stellen dafür Trigger bereit.

Wenn man wie im ersten Beispiel mehrere Dateien gleichzeitig ändern will, verwendet man aber eher Transaktionen. Das stellt zwar auch die Integrität der Daten sicher, aber hat mit Integritätsregeln nicht so viel zu tun. Transaktionen definieren Operationen, die immer entweder komplett oder gar nicht ausgeführt werden. Dazu wird eben vor der ersten Änderung eine Transaktion gestartet und diese nach der letzten Änderung abgeschlossen. Die Transaktion speichert beim Starten im einfachsten Fall den Zustand der 3 Dateien und merkt sich, das eine Transaktion stattfindet. Wird die Transaktion korrekt beendet, wirft diese den gespeicherten Zustand und den Merker weg. Kommt der Stromausfall, wird beim Starten der Software geschaut, ob noch eine offene Transaktion existiert und wenn da, diese mit Hilfe des gespeicherten Zustands rückgängig gemacht. Macht nebenbei jedes moderne Filesystem so, da heisst das Log der offenen Transaktionen dann oft Journal.

Das letzte Beispiel auf dem Arbeitsblatt mit der Mail beim Geburtstag finde ich ziemlichen Blödsinn, das ist keine Integritätsregel, da diese sich nicht auf die Struktur oder Abhängigkeit der Daten untereinander bezieht. Das kann eine Funktion in einer Anwendung oder ggf. auch eine Stored Procedure in der Datenbank sein, aber eine Integritätsregel ist das meiner Meinung nach nicht. Nicht jede Aktion, die aufgrund gewisser Bedingungen in ausgelöst wird, muss auch eine Integritätsregel sein.

Woher ich das weiß:Berufserfahrung – Softwareentwickler & Admin

Was ist denn das schon wieder für ein "Schulthema"?!

Konsistente Daten = Alle Daten sind vollständig und korrekt.

Integritätsregeln sollen das sicherstellen.

Was mir an der Aufgabe jetzt nicht so gefällt:

Man kann sich zwar so eine Datei-"Datenbank" anlegen, dann hat man halt Probleme.... Weil die besagten Integritätsregeln auf diese Weise gar nicht anwendbar sind, weil sowas keine Datenbank ist.

Wenn ein Prozess Schreibrechte auf eine bestimmte Datei hat, kann der da da reindonnern, was er will. Wenn das nicht passt, sind die Daten danach korrupt. Da ist keinerlei Schutz.

Für Kundendaten, so wie sie in der Aufgabe beschrieben werden, gibt es relationale Datenbanken, wie z.B. MySQL.

Und bei MySQL verhindern gewisse Integritätsregeln, dass ungültige Datensätze reingeschrieben werden (z.B. negative Zahl beim Alter) oder Datensätze verwaisen (z.B. Kundenaufträge eines gelöschten Kunden, deren Zusammenhang über Schlüssel festgelegt werden). Wenn da was nicht hinhaut, verweigert MySQL den Schreibvorgang.

Woher ich das weiß:Hobby – Ich beschäftige mich schon mehrere Jahre damit.