Datenbank selber entwerfen: so bauen Sie ein sinnvolles Datenbankschema auf

Der folgende Blogeintrag bietet einen knappen Einblick in das Thema "Datenbankstruktur" und wie Sie ein eigenes Datenbankschema, bzw. eine eigene Datenbank selbst entwerfen können.
Es werden vor allem logische Vorüberlegungen die anhand einiger Beispiele erklärt werden.

# Vorüberlegungen 💡

Sie haben wahrscheinlich bereits eines der gängigen Tabellenkalkulationsprogramme 📂 benutzt um Daten zu speichern 💾. Um nun bspw. ein Excel-Dokument in eine Datenbank zu abstrahieren, sollten Sie einige Vorüberlegungen treffen - aber keine Sorge: solange Sie unserem Wegweiser folgen kann Ihnen nichts passieren 👊.

Dies sind die wichtigsten, aufeinander aufbauenden Überlegungen die Sie angehen sollten:

  1. Datenstruktur 📄
    welche Tabellen halten welche Datensätze?
    wie kann ich meine Daten überhaupt sinnvoll aufteilen?

  2. Datenverknüpfungen 📎
    wie kann ich meine Datensätze am effizientesten verknüpfen?
    welche Verknüpfungen machen überhaupt Sinn?

  3. Zugriffsrechte 🔐
    gibt es verschiedene Nutzerrollen?
    wer darf welche Daten sehen?

  4. Technologie 📼
    wo werden meine Daten gespeichert?
    sollte ich direkt in die Cloud gehen?

# Datenstruktur 📄

Fangen wir mit dem wichtigsten Baustein an: der Datenstruktur.
Wie der Name schon erahnen lässt geht es hierbei um die logische Struktur Ihrer Daten. Sie können sich Ihre Daten in einer Liste geordnet vorstellen. Nun sollten Sie folgende Überlegungen treffen:

  • Kann ich meine Daten auf mehrere logische Tabellen aufteilen (bspw. "Firma" & "Mitarbeiter")?
  • Gibt es mehrere Zeilen die den selben Wert enthalten (bspw. "Firmenname")?
  • Gibt es Spalten die getrennt werden sollten (bspw. "Anne Mayer" in "Anne" und "Mayer")?
  • Gibt es eindeutige Zeilen (bspw. "Identifikationsnummer")?

Um Ihnen diese wahnsinnig komplexen Denkvorgänge zu erleichtern, habe ich ein kleines Beispiel für Sie vorbereitet:
Nehmen wir einmal an Sie haben eine Liste mit ✏️ Autoren und 📕 Büchern dieser Autoren (natürlich nur Science-Fiction Autoren, oder denken Sie, dass wir zum Spaß hier sind?):

✏️ Autor 📕 Buch #️⃣ Seitenanzahl
Isaac Asimov Foundation 320
Cixin Liu The Three-Body Problem 400
Cixin Liu Supernova Era 344

# Aufteilen

Ihnen sollte nun sofort ins Auge springen, dass Sie Ihre Daten auf 2 Tabellen aufteilen (Autoren und Bücher) könnten:

✏️ Autor
Isaac Asimov
Cixin Liu
📕 Buch #️⃣ Seitenanzahl
Foundation 320
The Three-Body Problem 400
Supernova Era 344

Sicherlich ist Ihnen auch aufgefallen, dass wir automatisch einen doppelten Autor gelöscht haben (Cixin Liu).

# Trennen

Als nächsten Schritt sollten Autoren noch nach Vor- und Nachnamen getrennt werden (atomisieren):

Vorname Nachname
Isaac Asimov
Cixin Liu

Nun ist uns aber eine entscheidende Eigenschaft abhanden gekommen: die Verknüpfung der Datensätze ✏️Autor <-> Buch📕 (Profitip: lesen Sie weiter um die Lösung zu erfahren).

# Datenverknüpfungen 📎

Einer der vielen Vorteile einer Datenbank gegenüber herkömmlichen Tabellenkalkulationsprogrammen ist die Möglichkeit Daten verknüpfen zu können. So können bspw. mehrere Mitarbeiter einer Firma zugewiesen und diese Daten in verschiedenen Tabellen gehalten werden.

Hierbei gilt es zu beachten in welche Richtung die Verknüpfung Firma <-> Mitarbeiter zeigt:

  • Ein 💼 Mitarbeiter kann exklusiv einer (1) oder mehreren (n) Firmen zugewiesen werden
  • Eine 🏢 Firma kann einmal (1) oder mehrmals (n) verwendet werden

Um dies auf unser Science-Fiction-Autor-Beispiel zu übertragen: wir weisen jedem Buch einen Autor zu und ein Buch kann zu maximal einem Autor verknüpft werden. Dies kann folgendermaßen ausgeschrieben werden: ✏️ Autor 1 ---> n Bücher📕

Diese Verknüpfung erfolgt in der internen Arbeitsweise einer Datenbank über eine automatisch vergebene ID - unser Endergebnis sieht folgendermaßen aus:

🆔 ID Vorname Nachname
A1 Isaac Asimov
A2 Cixin Liu
📕 Buch 🆔 Autor ID #️⃣ Seitenanzahl
Foundation A1 320
The Three-Body Problem A1 400
Supernova Era A2 344

# Zugriffsrechte 🔐

Ein sehr trockenes, aber denoch langfristig sehr wichtiges, Thema, sind die Zugriffsrechte Ihrer Nutzer.
Zugriffsrechte werden über das verwendete Datenbankmanagementsystem (DBMS) abgebildet - Sie als Nutzer werden so etwas in Ihrem Corporate-Slang wahrscheinlich nur als Backend kennen.

Zugriffsrechte können in zwei Kategorien unterteilt werden:

  • Zugriffsrecht auf einzelne Tabellen
  • Zugriffsrecht auf einzelne Spalten

Hat ein Nutzer Zugriffsrecht auf eine Tabelle, so darf dieser Nutzer prinzipiell alle Daten dieser Tabelle modifizieren.

Soweit das DBMS filigranere Zugriffsrechte auf Spaltenebene erlaubt, ist es ebenfalls möglich den Zugriff auf einzelne Spalten einzuschränken.
So wäre es bspw. denkbar bestimmte Spalten auszublenden und anderen wiederum ein einfaches Leserecht zu vergeben.

# Technologie 📼

Technologisch gesehen werden Daten entweder in relationalen- oder in *NoSQL-*Datenbanken gespeichert (weitere Informationen zu diesen Themen würden den Rahmen dieser Sitzung sprengen).

Wenn Sie sich nun fragen, ob Sie direkt in die ☁️ Cloud ☁️ gehen sollen, lautet die Antwort: Ja - Daten können in den meisten Fällen getrost in modernen Rechenzentren in der Cloud gespeichert werden.

Zu beachten hierbei ist, dass sich das Rechenzentrum in Deutschland, mindestens aber in der EU 💶 befindet.
Diese Rechenzentren bieten in den allermeisten Sicherheitsstandards von denen der Deutsche Mittelständler nur träumen kann (Herr Müller mit dem kurzärmligen Hemd und dem schicken Schnauzbart von der IT wird Ihnen hier sicherlich etwas anderes erzählen).

Ich hoffe Ihnen einen sinnvollen Einblick in das Thema "Datenbankstruktur" gegeben zu haben und hoffe, dass Sie Ihre eigene schneller Datenbank selber entwerfen können.

Falls Sie auf der Suche nach einem Datenbankmanagementsystem sind, werfen Sie doch einen Blick in zoolo.io - damit können Sie Ihre eigene Datenbankanwendung mit wenigen Klicks selbst zusammenbauen.