0%

Hoofdstuk 2

Maak een tabel die zijn gegevens beschermt

Bekijk hoe SQLite elke waarde opslaat

De tabel items die je in hoofdstuk 1 hebt leren kennen, had drie kolommen. Het uitleenproject heeft er nu twee extra nodig. Een inventariscode is een korte code op één fysiek voorwerp, bijvoorbeeld DRILL-01. De uitleentermijn geeft aan hoeveel dagen iemand dat voorwerp mag houden.

Hier zie je het uitgebreide tabelontwerp naast de waarden van een bestaande rij:

KolomOpgegeven typeHuidige waarde
idINTEGER1
asset_tagTEXTDRILL-01
nameTEXTCordless drill
categoryTEXTtools
loan_daysINTEGER7

Kijk eerst naar de waarden in de laatste kolom. 1 en 7 zijn gehele getallen. DRILL-01, Cordless drill en tools zijn tekst. SQLite houdt dit onderscheid bij voor elke waarde die het opslaat.

Vijf manieren waarop SQLite een waarde opslaat

SQLite gebruikt vijf aanduidingen voor opgeslagen waarden:

  • INTEGER voor een geheel getal zoals 7;

  • REAL voor een kommagetal, zoals 7.5 of 7.0;

  • TEXT voor tekst zoals Cordless drill;

  • BLOB voor onbewerkte bytes, zoals de inhoud van een kleine afbeelding;

  • NULL als er geen waarde is.

De uitleentabel heeft momenteel alleen gehele getallen en tekst nodig, maar je komt binnenkort ook NULL tegen. REAL en BLOB maken de verzameling compleet, ook al heeft deze tabel ze nu niet nodig.

Welke regel koppelt alle vijf SQLite-aanduidingen correct aan de waarden die ze beschrijven?

SQLite noemt elk van deze vijf aanduidingen een opslagklasse. Een opslagklasse beschrijft een concrete waarde. De huidige waarde 7 heeft bijvoorbeeld de opslagklasse INTEGER.

Een waarde is niet zijn kolom

De middelste kolom van de eerste tabel beschrijft het ontwerp, geen waarde die al is opgeslagen. In gewone SQLite-tabellen geeft een opgegeven type zoals INTEGER of TEXT een kolom een voorkeur voor waarden van dat soort. SQLite noemt deze voorkeur de typeaffiniteit van de kolom.

Dat geeft je één nuttig onderscheid om te onthouden: een kolom heeft een affiniteit, terwijl elke opgeslagen waarde een opslagklasse heeft. Een INTEGER-affiniteit belooft op zichzelf niet dat elke waarde zinvol is voor het uitleenproject. In de volgende lessen schrijf je de tabel en voeg je de regels toe die hem beschermen.