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:
| Kolom | Opgegeven type | Huidige waarde |
|---|---|---|
id | INTEGER | 1 |
asset_tag | TEXT | DRILL-01 |
name | TEXT | Cordless drill |
category | TEXT | tools |
loan_days | INTEGER | 7 |
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:
INTEGERvoor een geheel getal zoals7;REALvoor een kommagetal, zoals7.5of7.0;TEXTvoor tekst zoalsCordless drill;BLOBvoor onbewerkte bytes, zoals de inhoud van een kleine afbeelding;NULLals 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.