Einführung in Datenbanken

Dieser Artikel ist der Startschuss für eine Artikelserie. Diese Serie handelt von Datenbanken. Was sind Datenbanken? Wie stelle ich sie mir vor? Wo liegen Vor- und Nachteile?
Anfangs werden Grundlagen und einige Begriffe geklärt. Die Artikel werden nach und nach weitere Teilbereiche abdecken.
Wo finden wir Datenbanken
Datenbanken befinden sich überall um uns herum. Ein MP3-Player, Handy (bzw. Smartphone) und viele Programme nutzen intern eine Datenbank. Die Datenbank ist an sich nicht sichtbar, jedoch deren Auswirkung. Die Suche nach einem Lied auf einem MP3-Player funktioniert meist sehr schnell. Das Filtern und Gruppieren ebenso. Das liegt daran, dass im Hintergrund eine Datenbank die vorhandenen Daten organisiert und dadurch einen schnellen Zugriff erlaubt.
Wie sehen Datenbanken aus
Am einfachsten lässt sich eine relationale Datenbank als Tabellensammlung vorstellen. Es ist hier zu beachten, dass es verschiedene Formen von Datenbanken gibt (z.B. relational, objektorientiert, Key-Value-Datenbanken). Der Einfachheit halber beziehe ich mich auf relationale Datenbanken. Relationale Datenbanken sind schon lange etabliert und wahrscheinlich weiter verbreitet als NoSQL-Datenbanken. Dies kann sich vom jeweiligen Anwendungsfall unterscheiden, da SQL und NoSQL-Datenbanken verschiedene Vor- und Nachteile besitzen.
In einer relationalen Datenbank werden die Daten als Tabelle gespeichert. Es gibt beispielsweise eine Tabelle „Person“ mit den Werten „Vorname“, „Name“, „Geburtsdatum“ und „Geschlecht“. Eine Tabelle kann nun folgendermaßen aussehen:
ID | Vorname | Nachname | Geburtsdatum | Geschlecht |
---|---|---|---|---|
1 | Max | Mustermann | 05.01.1990 | M |
2 | Eva | Müller | 10.05.1995 | W |
3 | Günther | Bach | 23.02.1993 | M |
Die ID in der ersten Spalte stellt einen Schlüssel dar, um einen Datensatz in einer Tabelle eindeutig auszuwählen. Gäbe es keinen Schlüssel, könnte eine Zeile nur eindeutig bestimmt werden, wenn alle Spalten herangezogen werden. Wird nun eine identische Person eingetragen, (gleicher Name, Geburtsdatum etc.) könnte man diese beiden Personen nicht mehr auseinander halten.
Aus diesem Zweck gibt es eine ID (oder Kundennummer), welche innerhalb dieser Tabelle eindeutig ist und die Person eindeutig identifiziert. Auch bei einer Namensänderung ist der Datensatz immernoch eindeutig.
Zu Schlüsseln (bzw. identifier) und Indizes werde ich in einem späteren Artikel kommen. Für die Grundlagen reicht es erstmal zu wissen, dass ein Datensatz innerhalb einer Tabelle eindeutig identifizierbar sein muss. Anderenfalls können (vor allem bei Datenverknüpfungen) mehrdeutigen Interpretationen oder falschen Informationen auftreten.
Aufgaben und Verwendungszweck
Die Hauptaufgabe von Datenbanken besteht darin, Daten zentral zu speichern und bereitzustellen. Vor allem beinhaltet eine Datenbank eine normierte Schnittstelle, wodurch aus jeder Anwendung heraus auf die Daten zugegriffen werden kann.
Sehen wir uns folgende Tabelle basierend auf dem oben genannten Beispiel an:
ID | Title | Artist | Album | Path |
---|---|---|---|---|
100 | Shape of you | Ed Sheeran | + | \01 Shape of you.mp3 |
101 | Paris | The Chainsmokers | Paris (Single) | \Paris\01-Paris-The-Chainsmokers.mp3 |
103 | Alone | Alan Walker | Alone (Single) | \Alone.mp3 |
Wie in einem Programm zur Tabellenverarbeitung können die einzelnen Spalten schnell sortiert und ausgewertet werden. Wenn nun der Anwender einen Eintrag auswählt (z.B. ID 103) kann über den Index schnell auf den Pfad zur Datei zugegriffen werden. Eine Wiedergabe erfolgt somit unverzüglich.
Gehen wir von einer sehr einfachen Implementierung einer eigenen Datenbank aus. Bei dieser wird eine Liste seriell durchsucht, bis der gewünschte Eintrag gefunden wurde. Bei einer Anzahl n von Einträgen, dauert diese Suche O(n). In Bezug auf diese Tabelle werden die ersten beiden Einträge übersprungen (3 Zugriffe). Eine Datenbank kann über Indizes einen einfacheren Zugriff realisieren, wodurch die Zugriffszeit auf O(log(n)) reduziert werden kann. Hier wäre der Artikel nach 2 Zugriffen vorhanden.
Im nächsten Artikel dieser Serie werde ich den Aufbau einer Datenbank genauer vorstellen. Damit einhergehend werde ich auch das O-Kalkül (das oben genannte O(n)) kurz vorstellen und warum eine Datenbank nur eine Zugriffszeit von O(log(n)) besitzt.