SQL Kurs Zusatzmaterial
Bits and Bytes

Formate

Hinweise:
- JSON und XML eignen sich sehr gut als Austauschformat. Sie werden auch viel bei Webschnittstellen z.B. Bright Sky – Free JSON API for DWD open weather data. verwendet.
- CSV ist ebenfalls weit verbreitet als Austauschformat. Die Werte werden durch einen Separator (z.B. Komma oder im Deutschen häufig Semikolon) getrennt. XML und JSON ermöglichen im Gegensatz zu CSV hierarchisch geschachtelte Datenstrukturen.
- Der Binärcode in der Grafik ist das Wort „Apfel“, so wie ein Computer es speichert. Jeder Buchstabe wird dabei als Zahl abgelegt, und diese Zahl wird im Zweiersystem (nur 0 und 1) geschrieben.
Buchstabe Binär (1 Byte = 8 Bits) Als Dezimalzahl A 01000001 65 p 01110000 112 f 01100110 102 e 01100101 101 l 01101100 108 - Datenmodellierung: Aufteilung von Informationen auf Tabellen
3NF vs. Sternschema
Beispiel: Ein Pizza-Lieferdienst. Jede Bestellung enthält Pizzen und Getränke – und der Chef will wissen, was sich wann und wo gut verkauft.
Teil 1: 3NF – jede Info steht nur an einer Stelle
Die Daten sind in viele kleine Tabellen zerlegt. „Berlin“ steht nur ein einziges Mal in der Datenbank. Zieht Mia um, ändert man genau eine Zeile. 3NF steht für “dritte Normalform”. Dahinter verbirgt sich ein mathematisch definierter Prozess, um mehrere Informationen optimal auf Tabellen zu verteilen.
Teil 2: Sternschema – gebaut für schnelle Auswertungen
In der Mitte liegt die Faktentabelle mit den Zahlen (Menge, Umsatz). Drumherum sitzen die Dimensionen, die beschreiben: wer, was und wann. Jede Dimension hängt direkt an der Mitte – so entsteht die Sternform.
Der Vergleich
Drei Fragen zum Ausprobieren
- Wie viel Umsatz machen wir pro Kategorie? Im Sternschema reicht ein Blick auf
Dim_Produkt.Kategorie. In der 3NF braucht man drei Tabellen dafür. - Was passiert, wenn Mia nach Hamburg umzieht? In der 3NF ändert man eine Zeile in
Kunde. Im Sternschema ändert man die Zeile inDim_Kunde, die Fakten bleiben unberührt. - Welcher Wochentag ist der beste? Das geht nur so einfach, weil es
Dim_Datumgibt.
Warum die 3NF für OLTP besser ist
OLTP heißt: Im laufenden Betrieb passieren ständig viele kleine Änderungen, zum Beispiel eine neue Bestellung, eine neue Adresse oder ein neuer Preis. Hier muss jede Änderung schnell gehen und die Daten dürfen sich nie widersprechen. Dafür gibt es zwei starke Gründe.
Grund 1: Eine Änderung betrifft nur eine Zeile
Der Chef will die Kategorie „Getränk“ in „Drinks“ umbenennen. Im Sortiment gibt es 200 Getränke: Cola, Limo, Apfelschorle und so weiter.
UPDATE Kategorie SET Kategoriename = 'Drinks' WHERE KategorieID = 2;
| KategorieID | Kategoriename |
|---|---|
| 1 | Pizza |
| 2 | Drinks |
1 Zeile geändert. Alle 200 Getränke zeigen automatisch den neuen Namen.
UPDATE Dim_Produkt SET Kategorie = 'Drinks' WHERE Kategorie = 'Getränk';
| ProduktID | Produktname | Kategorie |
|---|---|---|
| 1 | Pizza Salami | Pizza |
| 3 | Cola | Drinks |
| 4 | Limo | Drinks |
| 5 | Apfelschorle | Drinks |
| … | … | … |
200 Zeilen geändert. Wird eine vergessen, steht „Getränk“ neben „Drinks“ in der Tabelle.
Grund 2: Die Datenbank kontrolliert, welche Werte erlaubt sind
Ein neuer Kunde wird angelegt. Im Sternschema ist die Stadt einfach ein Textfeld, in der 3NF ist sie ein Verweis auf die Tabelle Stadt.
INSERT INTO Kunde VALUES (4, 'Tom', 7);
Fehler: Es gibt keine Stadt mit StadtID 7. Die Datenbank lehnt den Eintrag ab. In der App wählt man die Stadt aus einer Liste (Berlin, Hamburg) und kann gar nichts Falsches eingeben.
| KundeID | Name | Stadt |
|---|---|---|
| 1 | Mia | Berlin |
| 4 | Tom | berlin |
| 5 | Nele | Berlinn |
| 2 | Ben | Hamburg |
Jeder Wert wird akzeptiert. Bei „Umsatz pro Stadt“ tauchen plötzlich drei verschiedene Berlins auf.