Man benötigt Datenbanken, um Daten strukturiert speichern, abtragen und auswerten zu können. Hinter jeder größeren Website steckt eine oder mehrere Datenbanken, beispielsweise speichert Amazon seine angebotenen Produkte in einer Datenbank.

Anforderungen an eine Datenbank

  • Eine Datenbank muss auch gigantische Datenmengen verwalten können.
  • Die Daten müssen leicht und schnell durchsuchbar sein – bei einer Suchanfrage will man nicht mehrere Sekunden auf die Ergebnisse warten.
  • Die Datenbank muss sicher vor Hackern sein, da oft auch sensible Kundendaten gespeichert werden. Datenbanken haben ein komplexes Rechtesystem, um niemandem mehr Zugriff geben zu müssen als nötig.
  • Es muss möglich sein, dass mehrere Nutzer gleichzeitig die Daten verändern, ohne dass es zu Fehlern kommt.
  • Selbst bei einem Stromausfall sollte es zu keinem Datenverlust kommen. Für besonders kritsche Aufgaben muss die Datenbank auf mehrere Server verteilt sein.

Es gibt mehrere Datenbanken, die all diese Anforderungen erfüllen, kostenlose wie kostenpflichtige. Eine beliebte, kostenlose Datenbank ist MySQL bzw. MariaDB.

SQL

SQL (ursprünglich: SEQUEL), kurz für Structured Query Language, ist die universelle Sprache, um eine Datenbank zu verwalten. SQL enthält Befehle, um Daten hinzuzufügen, zu löschen, zu ändern und gezielt zu durchsuchen. Die meisten Datenbanken unterstützen nicht alle Funktionen von SQL, aber die wichtigsten Funktionen sind in allen Datenbanken verfügbar.

Unter sqlfiddle.com befindet sich ein Web-Interface, wo SQL-Befehle ausprobiert werden können.

Organisation von Daten

Datenbanken verwenden normalerweise ein relationales Datenmodell. Das heißt, es gibt verschiedene Relationen, die in Beziehung zueinander stehen. Die Relationen werden als Tabellen dargestellt und sind vergleichbar mit Klassen in objektorientierten Programmiersprachen.

Beispiel: einfacher Online-Shop

Wir erstellen nun Schritt für Schritt ein relationales Schema, um die wichtigsten Konzepte relationaler Datenbanken zu erklären.

  1. Schema 1

    Hier haben wir zwei Relationen, Kunde und Ware. Ein Kunde hat z.B. die Eigenschaften Name, Geburtsdatum, Geschlecht, Post-Adresse und E-Mail-Adresse. Die Relation Kunde steht in Beziehung zu Ware, da Kunden Waren kaufen und Waren von Kunden gekauft werden.

  2. Schema 2

    Das obere Schema ist nicht optimal. Eine Relation sollte immer einen Primärschlüssel haben. Wir legen dazu die Eigenschaften Kundennummer und Produkt-ID an, diese werden unterstrichen.

    Außerdem tragen wir die Multiplizität (m und n) ein. Es handelt sich um eine m:n-Beziehung, d.h. ein Kunde kann mehrere Waren kaufen, und eine Ware kann von mehreren Kunden gekauft werden.

  3. Schema 3

    Das Schema ist aber immer noch nicht perfekt: Wir wissen noch nichts über den Verkäufer. Das einfachste ist daher, Kunde zu Person zu verallgemeinern. Eine Person kann Waren sowohl kaufen, als auch verkaufen.

    Verkäufer ist nun ein Fremdschlüssel, also eine Referenz zu einer anderen Tabelle; dieser wird im Schema gestrichelt unterstrichen.

    Dadurch gibt es nun eine weitere Beziehung zwischen den Tabellen: Eine 1:n-Beziehung. Das heißt, eine Person kann mehrere Waren verkaufen, aber eine Ware kann nur einen Verkäufer haben.

    Beachte, dass die Namen vereinfacht wurden, da Eigenschaften keine Sonderzeichen enthalten sollten.

  4. Kundentabelle

    Dies ist die Tabelle der Personen mit 5 Datensätzen. Wichtig ist, dass in der Spalte PersonenID nur unterschiedliche Werte stehen dürfen, da PersonenID ein Primärschlüssel ist.

Kommentieren Kommentare