SAE 2. Lehrjahr der Fachinformatiker

Skripte und Notizen für das 2. Lehrjahr der Fachinformatiker von Herrn Vöhringer an der GSVS

View on GitHub

Skript: Datenbanken und SQL mit der Warenautomat-Datenbank

6. SQL-Felddatentypen

Wenn das Modell inhaltlich sauber ist, braucht jede Spalte noch einen passenden Datentyp. Erst dadurch wird aus der Struktur eine belastbare technische Tabelle.

6.1 Zeichenketten, Zahlen und Daten

Datentypen bestimmen, welche Werte in eine Spalte passen und wie diese Werte intern gespeichert werden. Eine gute Typwahl verbessert Datenqualität, Speicherbedarf und Abfragegeschwindigkeit.

Wichtige SQL-Datentypen im Überblick:

Datentyp Kategorie Bedeutung Typisches Beispiel
INT Ganzzahl Ganze Zahl im üblichen Wertebereich Anzahl Verkäufe: 42
BIGINT Ganzzahl Große ganze Zahl, oft für IDs automat_id, produkt_id
SMALLINT Ganzzahl Kleinere ganze Zahl mit weniger Speicherbedarf Fachnummern, kleine Zähler
NUMERIC(p,s) / DECIMAL(p,s) Exakte Zahl Exakte Dezimalzahl mit Stellen und Nachkommastellen Preis: NUMERIC(8,2)
FLOAT / DOUBLE Näherungszahl Gleitkommazahl, nicht exakt bei Geldwerten Messwerte, Sensorwerte
CHAR(n) Text Feste Textlänge Länderkürzel DE
VARCHAR(n) Text Variable Textlänge bis zur Maximalgrenze Name, E-Mail
TEXT Text Längere Freitexte Bemerkung, Beschreibung
BOOLEAN Wahrheitswert TRUE oder FALSE aktiv
DATE Datum Kalendertag ohne Uhrzeit 2026-08-02
TIME Uhrzeit Uhrzeit ohne Datum 14:35:00
TIMESTAMP Datum + Zeit Zeitstempel eines Ereignisses Buchungszeitpunkt
UUID Kennung Universell eindeutige ID (128 Bit) 550e8400-e29b-41d4-a716-446655440000
BLOB / BYTEA Binärdaten Datei- oder Binärinhalte Bild, Signaturdatei

6.2 Passende Typwahl

Die Wahl des Datentyps sollte sparsam, aber passend sein. Zu kurze oder unpassende Typen führen zu Fehlern oder unnötigem Speicherverbrauch.

Praxisregeln für die Typwahl:

  1. IDs: Häufig INT oder BIGINT; bei verteilten Systemen oft UUID.
  2. Preise und Geldbeträge: Immer exakte Typen wie NUMERIC/DECIMAL, nicht FLOAT.
  3. Kurze Texte mit Obergrenze: VARCHAR(n).
  4. Lange Freitexte: TEXT.
  5. Wahr/Falsch-Werte: BOOLEAN.
  6. Ereigniszeitpunkte: TIMESTAMP; reine Geburtstage/Jahrestage: DATE.

Beispiele aus dem Warenautomaten-Kontext:

  • preis_eur als NUMERIC(8,2) für exakte Cent-Werte.
  • status als VARCHAR, wenn mehrere inhaltliche Zustände möglich sind.
  • aktiv als BOOLEAN, wenn nur ja/nein benötigt wird.
  • Primärschlüssel je nach Strategie als BIGINT oder UUID.

Querverweise

Übungen zum Kapitel

Übung 1: Welcher Datentyp passt für preis_eur am besten?

Lösung **Lösung:** `NUMERIC(8,2)`.

Übung 2: Warum ist VARCHAR(180) für E-Mail-Adressen sinnvoll?

Lösung **Lösung:** Weil E-Mail-Adressen unterschiedlich lang sein können und feste Längen unpraktisch wären.

Übung 3: Welcher Datentyp passt für den Status eines Automaten am besten: DATE, BOOLEAN oder VARCHAR?

Lösung **Lösung:** `VARCHAR`, weil dort inhaltliche Werte wie `AKTIV`, `WARTUNG` oder `AUSSER_BETRIEB` gespeichert werden.

Übung 4: Wann ist UUID als ID sinnvoller als INT?

Lösung **Lösung:** Wenn Datensätze aus mehreren Systemen zusammengeführt werden oder IDs ohne zentrale Vergabe eindeutig sein müssen.

Übung 5: Welche zwei Datentypen sind für lange Texte geeignet und wann würdest du sie verwenden?

Lösung **Lösung:** `VARCHAR(n)` bei bekannter Maximalgrenze, `TEXT` bei langen oder schwer abschätzbaren Freitexten.