Rusko Group
DatenbankenAnfänger 4 Min. Lesezeit

Was ist eine Datenbank?

Eine Datenbank ist ein System, das Daten strukturiert speichert und schnell wieder auffindbar macht. Ohne Datenbanken gäbe es keine Onlineshops, keine Nutzerkonten und keine sozialen Netzwerke.

Lernziele

  • Verstehen, wofür Datenbanken da sind
  • Relationale und dokumentbasierte Datenbanken unterscheiden
  • Grundbegriffe wie Tabelle, Zeile und Schlüssel kennen

Relationale Datenbanken

Relationale Datenbanken (z. B. PostgreSQL, MySQL) speichern Daten in Tabellen mit Zeilen und Spalten — vergleichbar mit einer sehr mächtigen Excel-Tabelle. Beziehungen zwischen Tabellen (etwa Kunde ↔ Bestellung) machen sie stark. Abgefragt werden sie mit SQL.

Dokumentbasierte Datenbanken

Dokumentbasierte Datenbanken (z. B. MongoDB) speichern Daten als flexible JSON-ähnliche Dokumente. Sie eignen sich, wenn die Struktur variabel ist oder sich schnell ändert.

Schlüssel und Beziehungen

Das Herzstück einer relationalen Datenbank sind ihre Beziehungen. Jede Zeile einer Tabelle erhält einen Primärschlüssel — eine eindeutige Kennung, meist eine ID. Verweist eine andere Tabelle über einen Fremdschlüssel auf diese ID, entsteht eine Verbindung: Eine Bestellung „gehört“ zu genau einem Kunden. So lassen sich Daten sauber trennen und trotdem verknüpfen, ohne Informationen doppelt zu speichern. Genau daher kommt das Wort „relational“: Es geht um die Beziehungen zwischen den Daten.

Normalisierung: Daten nicht doppelt speichern

Ein gut entworfenes Datenmodell speichert jede Information genau einmal. Steht die Adresse eines Kunden bei jeder seiner Bestellungen erneut, führt eine Umzugsmeldung zu mühsamer, fehleranfälliger Pflege an vielen Stellen. Bei der Normalisierung legt man solche Daten stattdessen einmal an und verknüpft sie über Schlüssel. Das hält die Datenbank konsistent und spart Speicher. In der Praxis wägt man ab, wie streng man normalisiert, denn manchmal ist bewusste Redundanz aus Geschwindigkeitsgründen sinnvoll.

Indizes und Transaktionen

Zwei Konzepte machen professionelle Datenbanken aus. Ein Index funktioniert wie das Stichwortverzeichnis eines Buches: Statt jede Zeile einzeln durchzugehen, findet die Datenbank gesuchte Werte sofort — bei großen Tabellen der Unterschied zwischen Millisekunden und Sekunden. Eine Transaktion wiederum fasst mehrere Schritte zu einer Einheit zusammen, die entweder ganz oder gar nicht ausgeführt wird. Bei einer Überweisung darf nicht Geld abgebucht, aber nicht gutgeschrieben werden — Transaktionen garantieren, dass die Daten immer stimmig bleiben.

ORMs: die Datenbank aus dem Code ansprechen

In den wenigsten Anwendungen schreibt man Abfragen von Hand direkt in den Programmcode. Stattdessen kommt meist ein ORM zum Einsatz — eine Zwischenschicht, die Tabellen auf Objekte des eigenen Codes abbildet. Statt einer Abfragezeichenkette ruft man eine Methode auf und bekommt fertige, typisierte Objekte zurück. Das erspart viel Fleißarbeit, schützt automatisch vor eingeschleusten Abfragen und macht Tippfehler schon beim Entwickeln sichtbar. Der Preis ist Distanz zur Datenbank: Was das ORM im Hintergrund tatsächlich abschickt, sieht man nicht sofort — und genau dort entstehen später die Geschwindigkeitsprobleme, wenn niemand hinschaut.

Migrationen: das Schema wächst mit

Ein Datenmodell ist nie fertig — es kommen Felder hinzu, Tabellen werden umbenannt, Beziehungen ändern sich. Solche Änderungen macht man nicht per Hand auf dem Live-System, sondern schreibt sie als Migration: eine kleine, nummerierte Datei, die genau beschreibt, wie das Schema von einem Stand zum nächsten kommt. Weil diese Dateien im Repository liegen, kann jeder Entwickler und jeder Server dieselbe Reihenfolge nachvollziehen. Kritisch sind Änderungen an Tabellen mit vielen Daten: Sie brauchen einen Plan für den laufenden Betrieb, damit die Anwendung während der Umstellung erreichbar bleibt — und ein Backup, bevor es losgeht.

Verbindungen sind eine begrenzte Ressource

Eine Anwendung spricht nicht direkt mit Dateien, sondern über Verbindungen mit dem Datenbankserver — und jede davon kostet dort Arbeitsspeicher. Deshalb ist die Zahl gleichzeitiger Verbindungen begrenzt, und zwar meist deutlich niedriger, als Einsteiger vermuten. Damit nicht bei jeder Anfrage eine neue Verbindung aufgebaut wird, hält die Anwendung einen Vorrat bereit und reicht ihn reihum weiter; man nennt das einen Verbindungspool. Besonders wichtig wird das, wenn viele kurzlebige Prozesse gleichzeitig zugreifen: Dann schiebt man einen eigenen Pooler zwischen Anwendung und Datenbank, der die Zugriffe bündelt und den Server vor Überlastung schützt.

Wichtige Begriffe

Tabelle
Struktur aus Zeilen und Spalten (relational).
Primärschlüssel
Eindeutige Kennung einer Zeile.
Fremdschlüssel
Verweis auf eine Zeile in einer anderen Tabelle.
Index
Struktur, die Abfragen beschleunigt.
Migration
Versionierte, wiederholbare Änderung am Datenbankschema.
ORM
Schicht, die Tabellen auf Objekte der Programmiersprache abbildet.

Typische Fehler

  • Keine Indizes — langsame Abfragen bei vielen Daten
  • Datenmodell ohne Beziehungen (Duplikate)
  • Keine Backups

Best Practices

  • Datenmodell vor der Implementierung durchdenken
  • Indizes für häufige Abfragen setzen
  • Regelmäßige Backups und Migrations-Strategie

Zusammenfassung

Datenbanken speichern Daten strukturiert und durchsuchbar. Relationale Datenbanken nutzen Tabellen und SQL, dokumentbasierte flexible JSON-Dokumente. Die richtige Wahl hängt von Struktur, Beziehungen und Skalierung ab.

Häufige Fragen

Für die meisten Web- und Shop-Projekte ist eine relationale Datenbank wie PostgreSQL eine solide Standardwahl. Bei sehr flexiblen Datenstrukturen kann NoSQL passen.

#Datenbank#SQL#Backend#Grundlagen

Braucht ihr Unterstützung bei Softwareentwicklung?

Wir setzen genau solche Themen in echte Projekte um.

Projekt unverbindlich anfragen