0%

Kapitel 2

Eine Tabelle erstellen, die ihre Daten schützt

Wie SQLite jeden Wert speichert

Die Tabelle items, die du in Kapitel 1 kennengelernt hast, hatte drei Spalten. Das Verleihprojekt braucht jetzt zwei weitere. Ein Inventarkennzeichen ist ein kurzer Code, der an einem physischen Gegenstand angebracht ist, zum Beispiel DRILL-01. Die Leihdauer sagt, wie viele Tage jemand den Gegenstand behalten darf.

Hier steht der erweiterte Tabellenentwurf neben einer aktuellen Zeile:

SpalteDeklarierter TypAktueller Wert
idINTEGER1
asset_tagTEXTDRILL-01
nameTEXTCordless drill
categoryTEXTtools
loan_daysINTEGER7

Sieh dir zuerst die Werte in der letzten Spalte an. 1 und 7 sind ganze Zahlen. DRILL-01, Cordless drill und tools sind Text. SQLite merkt sich diesen Unterschied für jeden gespeicherten Wert.

Fünf Arten, wie SQLite einen Wert speichert

SQLite verwendet fünf Bezeichnungen für gespeicherte Werte:

  • INTEGER für eine ganze Zahl wie 7;

  • REAL für eine Fließkommazahl wie 7.5 oder 7.0;

  • TEXT für Text wie Cordless drill;

  • BLOB für rohe Bytes, zum Beispiel den Inhalt eines kleinen Bildes;

  • NULL, wenn kein Wert vorhanden ist.

Die Verleihtabelle braucht momentan nur ganze Zahlen und Text, aber du wirst bald NULL kennenlernen. REAL und BLOB vervollständigen die Gruppe, auch wenn diese Tabelle sie heute nicht braucht.

Welche Zeile ordnet alle fünf SQLite-Bezeichnungen den beschriebenen Werten korrekt zu?

SQLite nennt jede dieser fünf Bezeichnungen eine Speicherklasse. Eine Speicherklasse beschreibt einen tatsächlichen Wert. Der aktuelle Wert 7 hat zum Beispiel die Speicherklasse INTEGER.

Ein Wert ist nicht seine Spalte

Die mittlere Spalte der ersten Tabelle beschreibt den Entwurf, nicht einen bereits gespeicherten Wert. In gewöhnlichen SQLite-Tabellen gibt ein deklarierter Typ wie INTEGER oder TEXT einer Spalte eine Vorliebe für Werte dieser Art. SQLite nennt diese Vorliebe die Typaffinität der Spalte.

Damit bleibt eine nützliche Unterscheidung für die nächsten Schritte: Eine Spalte hat eine Affinität, während jeder gespeicherte Wert eine Speicherklasse hat. Eine INTEGER-Affinität allein verspricht nicht, dass jeder Wert für das Verleihprojekt sinnvoll ist. In den nächsten Lektionen schreibst du die Tabelle und ergänzt die Regeln, die sie schützen.