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“:
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.
Lösung
SELECT * FROM products;25 Produkte. Sieh dir die Spalte category_id an: Dort steht nicht „Milchprodukte“, sondern eine Zahl. Die Zahl verweist auf eine Zeile der Tabelle categories. So steht der Name jeder Kategorie nur einmal.
Probier es aus
Zeile oder Spalte?
Ü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:
Lösung
SELECT * FROM orders;60 Bestellungen. Bestellung 60 gehört Kunde 1. Öffne oben die Kunden und sieh, wer das ist: Maria.
2. Zeige die Kategorien (categories). Einige haben eine parent_id, zwei nicht. Was, meinst du, bedeutet das?
Alle Kategorien:
Lösung
SELECT * FROM categories;„Lebensmittel“ und „Haushalt“ sind die obersten Kategorien (ohne Eltern). „Brot und Gebäck“ hat parent_id 1, steht also unter „Lebensmittel“. So wird ein Baum in einer Tabelle gehalten.
Test
Teste dich
Verwandte Lektionen
Abschnitt „Verwandte Lektionen“- Geht weiter in: Der Shop · SQL und echte Datenbanken · SELECT: Spalten auswählen · Primärschlüssel und Fremdschlüssel
- Aufgaben zum Thema: Willkommen bei den Datenbanken