Im Rahmen meiner Ausbildung zum Fachinformatiker für Anwendungsentwicklung schreibe ich mir zu manchen Klausuren gerne Lernzettel, die alles beinhalten, was ich für die Klausur(en) benötige. Um euch eventuell das Thema Datenbanken näher zu bringen, habe ich hier für euch einen kleinen Einstieg.
Was ist eine Datenbank, was nicht?
Unter einer Datenbank versteht man grundsätzlich die elektronische Verwaltung von Daten in zentraler Lage. Dies bedeutet, dass die Daten nicht verstreut auf jedem Rechner liegen, sondern an einem zentralen Punk zu erreichen sind. Des Weiteren muss der gleichzeitige Zugriff für mehrere Benutzer möglich sein, auf diese Datenbank zu greifen zu können, man stelle sich ein Forum vor, welches immer nur von einem Benutzer genutzt werden könnte. Für diesen gleichzeitigen Zugriff ist jedoch nicht nur die Datenbank alleine verantwortlich, sondern auch die Schnittstelle (API), mit welcher man die Datenbank anspricht. Und zu guter Letzt: Atomare Operationen müssen gewährleistet werden. Ihr wisst nicht was das ist? Unter “atomar” versteht man die Einzigartigkeit von Operationen, demnach ist jeder Schreib- und Lesevorgang einzigartig und nur in einer bestimmten Zeitlichen Abfolge zu verarbeiten. Man stelle sich vor, dass zwei Personen im exakt gleichen Moment den gleiche Datensatz bearbeiten, welche Änderung wäre nun gültig, beziehungsweise gültiger? Natürlich ist dieser Zufall recht selten und die Wahrscheinlichkeit geht gegen Null, aber Datenverlust ist eine schmerzhafte Angelegenheit.
Datenbankarten
Hierarchische Datenbank
Eine Hierarchische Datenbank ähnelt einer Mindmap. Sie besteht aus einer Wurzel, quasi der Ursprung allen folgenden Ästen, Zweigen und Blättern. Der Vorteil dieser Datenbank ist die Übersichtlichkeit, welche gleichzeitig auch einen Nachteil darstellt, da keine Querverbindungen möglich sind.
Netzwerkartige Datenbank
Eine Netzwerkartige Datenbank besteht aus vielen Verzweigungen und Querverbindungen, wodurch diese Datenbank sehr komplex und aufwendig werden kann. Heutzutage wird diese Art von Datenbank nur noch selten, bis gar nicht mehr genutzt, da sie von der relationalten Datenbank verdrängt wurde.
Dokumentorientierte Datenbank
Eine Dokumentorientierte Datenbank, wie der Name bereits sagt, orientiert sich an Dokumenten. Spaß beiseite, diese Datenbank beinhaltet zu jedem Datensatz ein Dokument, welche alle nötigen Informationen zum Datensatz entählt. Forder der Benutzer ein Dokument an über das Paarungsverhalten von Schmetterlingen, so beinhaltet dieser Datensatz (Dokument) alle nötigen Informationen zum Artikel, wie Autor(en), Datum, Letzte Änderung, Titel, Inhalt usw. Jedes Dokument ist dabei völlig schemafrei und kann beliebig gestaltet werden. Des Weiteren gibt es keine Querverweise innerhalb Dokumente, wodurch eine hohe Redundanz der Daten ensteht, denn jede Information über den Autor muss in jedem Dokument mitgeführt werden. Man stelle sich nun die Wartungsarbeiten der Daten vor. Eine Update-Anomalie ist hiermit quasi vorprogrammiert.
Relationale Datenbank
Die wohl gängigste Form unter den Datenbanken ist die relationale Datenbank. Diese Art von Datenbanken ist einer Tabellenstruktur nachempfunden, welche Querverbindungen in alle Richtungen ermöglicht. Sie besitzt eine hohe Verbreitung (gerade im Webbereich) durch ihr hohes Maß an Flexibilität.
Datenbankmodell / ER-Modell
Die übliche Darstellung eines ER-Modells habe ich in einem Bild kurz und übersichtlich dargestellt. Auf diesem ER-Modell kann man die Beziehung zwischen der Entity Autor und Buch erkennen. Ein Auto kann ‘n’ Bücher schreiben. Jeder Auto hat einen Vor- und Nachnamen und jedes Buch hat einen Titel.
Entity (Rechteck)
Ist Gleichzusetzen mit einem Objekt, beispielsweise ist der Datensatz eines Kunden eine Entity.
Attribut (Rundes Rechteck)
Ein Attribut ist eine Eigenschaft eines Objekts, quasi die Daten eines Datensatzes. Im Beispiel einer Relationalen Datenbank wäre ein Attribut gleichzusetzen mit der Spalte einer Tabelle, wobei die Tabelle die Entity ist.
Relation (Raute)
Die Relation bezeichnet die Beziehung zwischen zwei Entinitäten. Diese beschreibt man normalerweise mit einem Werb, wie Kunde kauft Produkt.
Kardinalitäten
Die Kardinalität beschreibt die Mengenabhängigkeit zwischen den Entitäten, also in welchem Verhältnis stehen die Objekte zu einander.
Beispiele:
- 1 zu 1 → Freund liebt Freundin
- 1 zu n → Mutter hat Kind(er)
- n zu m → Kunden kaufen Artikel
Normalformen und Normalisierung
Erste Normalform
In der ersten Normalform sind Wiederholungsgruppen nicht zugelassen. Dies bedeutet, dass geschachtelte oder gruppierte Werte, wie gesamte Adressen nicht erlaubt sind, jedes Attribut muss einen atomaren Wertebereich haben, hiermit vermeidet man mehrer Merkmale in einem Feld.
Beispiel:
Die Spalte Adresse wird somit in PLZ, Straße und Hausnummer aufgespalten
Zweite Normalform
Vorraussetzung für die 2. Normalform ist die 1. Normalform.
Jedes nicht primär-Attribut ist von allen ganzen Schlüsseln abhängig, nicht nur von einem Teil des Schlüssels. Demnach sind Redundanzen nicht erlaubt, somit verhindert man inkonsistente Datensätze.
Beispiel:
Eine Buchautoren Tabelle beinhaltet die Spalten BuchId, Titel, Autor, KapitelId und Kapitelname (Primärschlüssel BuchId und KapitelId)
Die Tabelle wird in zwei Tabellen aufgespalten:
Bücher (Id, Titel, Autor) und Kapitel (Id, Titel, BuchId), wodurch eine 1-zu-m-Beziehung entsteht (Ein Buch kann mehrere Kapitel haben, aber ein Kapitel gehört immer zu einem Buch)
Dritte Normalform
Vorraussetzung für die dritte Normalform sind die erste und zweite Normalform.
Wenn kein Nichtschlüsselattribut von einem Schlüsselattribut transitiv abhängig ist; dies bedeutet dass ein Nichtschlüsselattribut nur direkt abhängig von einem Schlüsselattribut sein darf.
Beispiel:
Gegeben sei die Tabelle aus dem Beispiel für die zwite Normalform. Die Tabelle Bücher wird um eine Spalte Geburtsjahr erweitert. Diese Spalte ist transitiv von der BuchId abhängig, da Sie ursprünglich vom Autor abhängig ist. Die Folge sind redundante Datensätze.
Lösung: Auspaltung der Tabellen
Buch (Id, Titel, AutorId); Autor (Id, Name, Geburtsjahr) Kapitel (Id, Name, BuchId);
Denkbar wäre hier auch eine n zu m Beziehung, falls es mehrer Autoren für ein Buch gibt
Datenbank-Anomalien
Anomalien sind Fehlverhalten von Datenbanken. Sie entstehen oftmals dann, wenn sich Tabellen nicht in der dritten Normalform befinden, oder Redundante Datensätze vorhanden sind.
Insert-Anomalie
Neue Daten können nicht in die Datenbank aufgenommen werden, weil Informationen für den Primärschlüssel fehlen.
Beispiel:
Gegeben sei folgende Tabelle:
- Kennzeichen
- Hersteller
- Vorname
- Nachname
Angenommen wir möchten nun einen neuen Datensatz einfügen, wissen aber weder den Vornamen, noch den Nachnamen des Fahrers, so können wir keinen Datensatz aufnehmen, da uns die nötigen Informationem zum vollständigen Primärschlüssel fehlen. Dennoch wäre es hilfreich die Informationen über Kennzeichen und Hersteller zu speichern und den Fahrer ggf. nachträglich einzufügen.
Lösung:
Normalisierung der Tabelle in die 3. Normalform, sodass man Fahrzeuge und Fahrer getrennt betrachten kann und ggf. durch eine Zwischentabelle (n zu m Beziehung) miteinander verknüpfen kann.
Update-Anomalie
Bei der Update-Anomalie entsteht ein inkonsistenter Datensatz bei redundanten Datensätzen, welche geändert wurden.
Beispiel: Als Beispiel dient das obige Tabellenschema.
Max Maier hat zwei Fahrzeuge angemeldet, wird nun der Nachname von Maier in Meier geändert, so führt dies zu einem inkonsistenten Datensatz, die Daten müssten an mehreren Stellen angepasst werden.
Nach dem obigen Beispiel hätten wir die folgenden zwei Datensätze zu Max.
- HH-MM-123, BMW, Max, Maier
- HH-MM-421, Mercedes, Max, Meier
Auch hier heißt das Stichwort Normalisierung.
Delete-Anomalie
Bei einer Delete-Anomalie würden durch das Löschen eines Datensatzes Informationen für einen anderen Datensatz verloren gehen.
Beispiel:
- B-FF-136, Peugeot, Klaus, Peter
Das Fahrzeug mit dem Kennzeichen B-FF-136 kann nicht gelöscht werden, da sonst die Informationen über den Fahrer Klaus Peter mit gelöscht werden.
Lösung: 3. Normalform
Fahrzeug und Fahrer werden hier getrennt verwaltet, dies macht das Löschen eines Fahrzeugs möglich.
Das Bild von dem Diagramm zu Bücher – Authoren ist falsch… ein Buch **kann** mehrere Autoren haben nur mal gesagt. 🙂
Besagt das nicht die Verbindung 1 zu n?