Relationale Datenbanken
Als Datenbank wird ein Informatiksystem bezeichnet, welche große Datenmengen effizient (also schnell) verwalten kann.
Ein sehr grundlegendes Konzept zur Strukturierung von Daten sind Tabellen. Wenn man nun mehrere Tabellen verwendet, deren Daten miteinander verknüpft sein können, stellt sich heraus, dass von der Fahrschule bis hin zum Online-Buchhändler fast alles in „Tabellenform“ gebracht werden kann.
Eine Relationale Datenbank verwaltet Daten in mehreren Tabellen. Der Begriff „relational“ kommt vom Konzept der „Relation“, der Repräsentation einer Tabelle als mathematisches Objekt.
Datenbanken können neben Tabellen auch auf anderen Konzepten beruhen, z.B. auf Graphen, Zeitreihen, Objekten und anderen. Wir beschäftigen uns hier nur mit dem erfolgreichsten Vertreter der Datenbanken, den relationalen Datenbanken.
Es gibt bei relationalen Datenbanken verschiedene Fachbegriffe für dieselben Dinge. Warum?
- Mathematiker/innen sehen Tabellen als mathematische Objekte an, nämlich als Menge von Tupeln ansehen.
- Praktiker/innen sehen Tabellen als... naja, Tabellen an.
Alle folgenden Begriffe sind übliche Fachbegriffe, und somit ist es egal, ob du die mathematischen oder technischen Begriffe wählst.
Mathematischer Fachbegriff | Technischer Fachbegriff |
---|---|
Relation | Tabelle |
Attribut | Spalte |
Tupel | Zeile, Datensatz |
Schlüssel
Die Daten der einzelnen Tabellen „leben“ meistens nicht einfach unabhängig nebeneinander, sondern sind miteinander verknüpft. Die Idee ist hier, dass man jede einzelne Zeile „durchnummieriert“ und dann in einer anderen Tabelle auf diese Nummer verweist. In der Praxis muss es nicht unbdingt eine Nummer sein: Hauptsache, man verwendet Merkmale, welche eindeutig sind, sogenannte Schlüssel. Dies könnten z.B. die ISBN für Bücher oder der IServ-Benutzername für Schüler/innen am EBG sein.
Betrachte nun das folgende Beispiel einer Fahrschule.
Ein Primärschlüssel ist eine Menge von Spalten, deren Werte a) eindeutig einzelne Zeilen identifizieren und die b) minimal ist. Es gibt manchmal mehrere Kandidaten für den Primärschlüssel einer Tabelle, von denen dann einer gewählt werden muss.
Die Bedeutung der beiden Eigenschaften a) eindeutig und b) minimal wird in den folgenden Beispielen und Gegenbeispielen erläutert.
Die folgenden Schlüssel sind z.B. Kandidaten für den Primärschlüssel der Tabelle fahrschueler
.
Schlüssel | ist ein Kandidat für den Primärschlüssel, weil... |
---|---|
$\{$ nr $\}$ |
...seine Werte, z.B. „2 “, eindeutig eine Zeile identifizieren. Es kann zudem keine Spalte herausgenommen werden, weshalb er minimal ist.
|
$\{$ vorname , nachname , gebdatum $\}$ |
...seine Werte, z.B. „Finn Koch , geb. am '2006-04-04' “ eindeutig eine Zeile identifizieren. Es kann zudem keine Spalte herausgenommen werden, weshalb er minimal ist.
|
Die folgenden Schlüssel sind z.B. keine Kandidaten für den Primärschlüssel der Tabelle fahrschueler
.
Schlüssel | ist kein Kandidat für den Primärschlüssel, weil... |
---|---|
$\{$vorname , nachname $\}$ |
...seine Werte, z.B. „Finn Koch “ zu mehreren Zeilen passen und somit nicht eindeutig sind (es gibt mehere Fahrschüler mit dem gleichen Namen, die jedoch einen unterschiedlichen Geburtstag haben).
|
$\{$ nr , nachname $\}$ |
...er nicht nicht minimal ist. Es kann die Spalte nachname herausgenommen werden, und der sich ergebende Schlüssel $\{$nr $\}$ kann als Primärschlüssel gewählt werden. |
Ein Fremdschlüssel ist eine Menge von Spalten, die dem Primärschlüssel einer anderen Tabelle entsprechen. Die Fremdschlüssel-Werte müssen dabei auch als Primärschlüssel-Werte in der Tabelle existieren.
Ein Fremdschlüssel hat also den Zweck, die Zeilen einer Tabelle mit Zeilen einer anderen Tabelle zu verknüpfen. Z.B. verweist der Fremdschlüssel $\{$ fl_kuerzel
$\}$ der Tabelle fahrschueler
auf den Primärschlüssel $\{$ kuerzel
$\}$ der Tabelle fahrlehrer
.
Die Datenbank sorgt automatisch dafür, dass Fremdschlüssel-Werte immer auch einen korrespondierenden Primärschlüssel-Wert haben. Mit anderen Worten: Jede ISBN, die im Warenkorb liegt, muss auch in der Tabelle buch
vorkommen.
Tabelle kunde
:
- Primärschlüssel: $\{$
kundennr
$\}$
Tabelle buch
:
- Primärschlüssel: $\{$
isbn
$\}$
Tabelle warenkorb
:
- Primärschlüssel: $\{$
kundennr
,isbn
$\}$ - Fremdschlüssel: $\{$
kundennr
$\}$ auf Primärschlüssel $\{$kundennr
$\}$ der Tabellekunde
- Fremdschlüssel: $\{$
isbn
$\}$ auf Primärschlüssel $\{$isbn
$\}$ der Tabellebuch
Redundanzen, Anomalien, Inkonsistenzen
Im Folgenden sind noch einmal die beiden Entwürfe für den Online-Buchhändler aufgeführt.
Mache dir zunächst klar, dass beide Entwürfe exakt dieselben Informationen erfassen, nicht mehr und nicht weniger. Folgende Unterschiede treten jedoch auf.
Entwurf 1 | Entwurf 2 | |
---|---|---|
Tabellen |
Kundendaten, Buchdaten und Warenkorbdaten in einer Tabelle. |
Kundendaten, Buchdaten und Warenkorbdaten in getrennten Tabellen. |
Verknüpfung von Daten |
Verknüpfung über gemeinsame Zeile. |
Verknüpfung über Primär- und Fremdschlüssel: Die Spalten |
Redundanzen |
Sowohl Daten der Kunden als auch der Bücher werden mehrfach gespeichert. Fachbegriff für mehrfach gespeicherte Daten: Redundanz. |
Keine Redundanzen: Daten werden nur einmal gespeichert. |
Anomalien und Inkonsistenzen |
Bestimmte Operationen haben Auswirkungen auf die Korrektheit und Konsistenz der Daten. Solch eine Operation wird Anomalie genannt. Mehr dazu weiter unten. |
Keine Anomalien möglich (bitte Bsp. prüfen). Da keine Redundanzen vorliegen, sind auch keine Inkonsistenzen erwartbar. |
Bsp. für Lösch-Anomalie
Der Titel „Der Alchimist“ soll nicht mehr gelistet werden. Es werden also alle Zeilen gelöscht, in welchen der Titel „Der Alchimist“ vorkommt. Dabei gehen jedoch auch die Daten der Kunden verloren, welche diesen Titel in ihrem Warenkorb hatten. Der Datenbestand ist nicht mehr korrekt.
Bsp. für Änderungs-Anomalie
Die Benutzerin Meike Musterfrau stellt fest, dass ihr Geburtsdatum falsch eingetragen ist. Sie möchte es ändern lassen. Dazu muss jedoch jede Zeile, in welcher Meike Musterfrau vorkommt, geändert werden. Es besteht die Gefahr, eine Zeile zu vergessen. Dies ist eine Änderungs-Anomalie, welche eine Inkonsistenz im Datenbestand bewirkt.
Bsp. für Einfüge-Anomalie
Ein neuer Buchtitel soll gelistet werden. Es soll also eine Zeile eingefügt werden. Für das Einfügen einer Zeile werden aber Kunden benötigt, welche den Buchtitel in ihrem Warenkorb haben.
Fazit
Bei der Priorisierung der verschiedenen Aspekte nehmen Korrektheit und Konsistenz der Daten in der Regel den vordersten Platz ein. Redundanzen sollte deshalb unbedingt vermieden werden. Aus diesem Grund ziehen wir in der Regel Entwurf 2 dem Entwurf 1 vor.