Zum Inhalt
wannacode

Warum eine Datenbank

Kurz gesagt: Eine Datenbank speichert Daten in Tabellen aus Zeilen und Spalten, damit viele Leute und Programme sie gleichzeitig lesen und ändern können, ohne Chaos anzurichten.

Problem

Die Tabelle, die jeder anfasst

Ein kleiner Online-Shop führt seine Bestellungen in einer großen Excel-Tabelle. Jede Zeile hat das Datum, Name, E-Mail und Stadt des Kunden, das Produkt, die Menge und den Preis. Nach einem Jahr sind es 3000 Zeilen, und die Probleme beginnen:

  • Maria ändert ihre E-Mail. Sie steht in 40 Zeilen. Du korrigierst 38.
  • Ein Kollege tippt „Sophia“, du tippst „Sofia“, und der Bericht nach Städten stimmt nicht mehr.
  • Zwei Leute öffnen die Datei gleichzeitig. Einer von ihnen verliert seine Änderungen.
  • „Wie viel hat jeder Kunde aus Plovdiv im März ausgegeben?“ kostet eine halbe Stunde Filtern.

Excel ist ein gutes Werkzeug, aber es wurde nicht dafür gemacht, die Daten eines laufenden Geschäfts zu halten.

Die Idee

Eine Datenbank

Eine Datenbank ist ein geordneter Ort für Daten. Das Programm, das sich darum kümmert, ist ein Datenbankverwaltungssystem (DBMS). Es tut vier Dinge, die eine Datei nicht tut:

  • Es hält Regeln ein. Die E-Mail ist eindeutig, der Preis ist nicht negativ, jede Bestellung gehört zu einem existierenden Kunden. Eine Zeile, die eine Regel bricht, kommt einfach nicht hinein.
  • Es speichert jede Tatsache einmal. Marias E-Mail steht an einer Stelle. Ihre Bestellungen verweisen nur auf sie.
  • Es lässt viele Leute gleichzeitig arbeiten, ohne dass jemand seine Änderungen verliert.
  • Es beantwortet Fragen, auch über Millionen von Zeilen, meist in Millisekunden.

Dir werden die Namen PostgreSQL, MySQL, SQL Server, Oracle und SQLite begegnen. SQLite steckt in deinem Handy, in deinem Browser und in vielen Apps, und in diesem Kurs läuft es direkt in der Seite.

Genauer, für Neugierige

PostgreSQL, MySQL und SQL Server sind Server: ein eigenes Programm, mit dem sich Anwendungen über das Netzwerk verbinden, oft von vielen Computern gleichzeitig. SQLite ist eine Bibliothek: Die Datenbank ist eine einzelne Datei, die das Programm selbst öffnet. Die Sprache, in der du ihnen Fragen stellst, ist fast dieselbe. Die Unterschiede lernst du unterwegs kennen.

Die Idee

Tabellen, Zeilen, Spalten

In der häufigsten Art von Datenbank, der relationalen, leben die Daten in Tabellen. Eine Tabelle ist für eine Art von Dingen da: Kunden, Produkte, Bestellungen.

  • Jede Zeile ist eine Sache: ein Kunde.
  • Jede Spalte ist eine Eigenschaft: Name, E-Mail, Stadt. Alle Werte einer Spalte sind von einer Art.

Das sind die Kunden des Shops, mit dem du im ganzen Kurs arbeitest. Drücke „Ausführen“:

SQLDatenbank: Shop

Was du siehst, ist eine Abfrage in der Sprache SQL. SELECT * bedeutet „alle Spalten“, FROM customers bedeutet „aus der Tabelle customers“. Das Semikolon beendet die Abfrage.

Das Feld ist eine echte Datenbank. Ändere die Abfrage, führe sie noch einmal aus, mach absichtlich einen Fehler: Nichts kann kaputtgehen, und „Neue Datenbank“ stellt den Anfang wieder her.

Genauer, für Neugierige

Sieh dir Kunde 12 an, Boris. Statt einer Stadt steht dort NULL: „kein Wert“. Es ist weder leerer Text noch null. Es bekommt eine ganze Lektion, denn NULL steckt hinter vielen falschen Berichten.

Probier es aus

Die Produkte

Zeige alle Produkte des Shops. Ihre Tabelle heißt products.

SQLDatenbank: Shop

Probier es aus

Zeile oder Spalte?

1. Was ist in der Tabelle products eine Zeile?

Übung

Ein Rundgang durch den Shop

Außer customers und products hat die Datenbank noch vier weitere Tabellen. Sieh dir zwei davon an.

1. Zeige alle Bestellungen (orders). Wie viele sind es? Sieh dir die Spalte customer_id an: Sie sagt, wessen Bestellung es ist, mit derselben Nummer, die der Kunde in customers hat.

Alle Bestellungen:

SQLDatenbank: Shop

2. Zeige die Kategorien (categories). Einige haben eine parent_id, zwei nicht. Was, meinst du, bedeutet das?

Alle Kategorien:

SQLDatenbank: Shop

Test

Teste dich

1. Was davon gehört NICHT zu den Aufgaben eines Datenbankverwaltungssystems?
2. Was bedeutet * in SELECT * FROM customers?
3. Warum steht Marias E-Mail an einer Stelle und nicht bei jeder ihrer Bestellungen?
4. Wo laufen die Abfragen in diesem Kurs?

Erstellt von Ivo Gergov im Rahmen der Kampagne von Evo Tech für zugängliche Programmierausbildung ·