Als Datenbank bezeichnet man Software, die für die Speicherung und Verwaltung von Daten zuständig ist.
Klassischerweise werden Datenbanken in Form von Tabellen organisiert, die wiederum aus Zeilen und Spalten bestehen. Es gibt jedoch auch Datenbank-Systeme, die nicht tabellenbasiert sind und stattdessen etwa beliebig aufgebaute Objekte speichern können. Dabei spricht man dann allgemein von sogenannten NoSQL-Datenbanken. Grundsätzlich lässt sich sagen, dass es verschiedene Datenbank-Typen und -Technologien gibt, die jeweils für unterschiedliche Anwendungsfälle geeignet sind.
In einem tabellenbasierten Datenbank-System entspricht jede Zeile einem Datensatz und jede Spalte einem Attribut. So können beispielsweise in einer Tabelle mit dem Namen users
die Daten von Personen gespeichert werden. Jede Zeile entspricht dann einer Person, die in den Spalten id
, name
, email
die entsprechenden Daten gespeichert hat.
Tabellen können auf verschiedene Arten miteinander verknüpft werden, um die Daten zu strukturieren. So kann eine weitere Tabelle mit dem Namen posts
die Daten von Blog-Beiträgen speichern. Jeder Beitrag ist dabei einem bestimmten Nutzer zugeordnet, der in der Tabelle users
gespeichert ist. Um eine solche Beziehung herzustellen, kann in der Tabelle posts
eine Spalte mit dem Namen user_id
hinzugefügt werden. In dieser Spalte wird dann die ID des Nutzers gespeichert, der den Beitrag erstellt hat.
Datenbanken ermöglichen es, Daten zu speichern und wieder abzurufen. Dabei bedient man sich bei Tabellen-basierten Datenbanken der Sprache SQL (Structured Query Language). In unserem Beispiel könnten wir einen neuen Post anlegen, indem wir folgenden SQL-Befehl ausführen:
insert into posts
(id, title, user_id)
values
('mein-erster-beitrag', 'Mein erster Beitrag', '3528cb8f-b07b-4627-9d09-a3c420aefd27');
Dieser Befehl fügt einen neuen Datensatz in die Tabelle posts
ein. Die Werte für die Spalten id
, title
und user_id
werden dabei als Parameter übergeben. Die ID des Nutzers, der den Beitrag erstellt hat, haben wir dabei aus der Tabelle users
entnommen. Bei der Ausführung erscheint eine Bestätigung, dass der Datensatz erfolgreich eingefügt wurde:
Um nun alle Posts dieses Users abzufragen, können wir folgenden SQL-Befehl ausführen:
select *
from posts
where user_id = '3528cb8f-b07b-4627-9d09-a3c420aefd27';
Dieser Befehl gibt alle Datensätze aus der Tabelle posts
zurück, deren user_id
mit der ID des Nutzers übereinstimmt:
Da in Datenbanken in der Regel sensible Daten gespeichert werden, ist es wichtig, diese vor unbefugtem Zugriff zu schützen. Im Kontext einer Web-Anwendung greifen Nutzer über das Frontend daher nicht direkt auf die Datenbank zu, sondern über eine Backend-Anwendung, die die Datenbank-Anfragen entgegennimmt und verarbeitet. In solch einer Konstellation kennt nur das Backend die eigentlichen Zugangsdaten zur Datenbank und kann dafür sorgen, dass Nutzer nur auf die Daten zugreifen können, für die sie auch berechtigt sind.