Maak een tabel die zijn gegevens beschermt · eindproject
Eindproject: Project: bouw de tabel members
De tabel items kan nu de gegevens van elk uitleenbaar voorwerp beschermen. De mensen die die voorwerpen lenen, hebben hun eigen tabel nodig, met regels die de ledenrecords betrouwbaar houden.
Je schema.sql bevat de voltooide tabel hieronder al:
CREATE TABLE items (
id INTEGER PRIMARY KEY,
asset_tag TEXT NOT NULL UNIQUE,
name TEXT NOT NULL,
category TEXT NOT NULL,
loan_days INTEGER NOT NULL DEFAULT 7 CHECK (loan_days > 0)
);
Deze keer bouw je de volgende tabel op basis van het vereiste gedrag, in plaats van een uitgewerkte instructie over te nemen.
Bouw de tabel members
Open schema.sql. Laat de tabel items intact en schrijf eronder een tweede CREATE TABLE-instructie voor een tabel met de naam members.
De tabel heeft vier kolommen nodig:
| Kolom | Soort waarde | Vereist gedrag |
|---|---|---|
id | INTEGER | Elk expliciet opgegeven ID identificeert één rij en mag niet worden herhaald |
member_code | TEXT | Verplicht; een exacte code mag niet worden herhaald |
name | TEXT | Verplicht, maar twee leden mogen dezelfde naam hebben |
loan_limit | INTEGER | Verplicht, gebruikt 3 bij weglaten en accepteert bij numerieke waarden alleen positieve getallen |
Je hebt elke SQL-regel die hier nodig is al gebruikt. Bepaal welke regel of regels voor elk gewenst gedrag zorgen en zet ze bij de bijbehorende kolom.
Druk tijdens het werken op Run. Wanneer SQLite beide instructies accepteert, toont de uitvoer de definities van items en members. Als het een fout meldt, lees dan het bericht en controleer de komma’s, haakjes en spelling rond het aangeduide deel.
Vergelijk je tabel voor het insturen met deze pogingen om records op te slaan:
| Poging | Verwacht resultaat |
|---|---|
ID 41, code M-210, naam Riley Chen, limiet weggelaten | Opgeslagen met een limiet van 3 |
ID 42, code M-211, naam Riley Chen, limiet 5 | Opgeslagen, ook al wordt de naam herhaald |
ID 43, code M-212, naam Morgan Lee, limiet 2.5 | Opgeslagen met 2.5 |
ID 41 opnieuw gebruikt | Geweigerd |
Exacte code M-210 opnieuw gebruikt | Geweigerd |
Code of naam weggelaten, of member_code, name of loan_limit opgegeven als NULL | Geweigerd |
Limiet 0 of -1 | Geweigerd |
Alle ID’s in dit project worden expliciet opgegeven. Je hoeft SQLite ze niet te laten genereren.
Net als bij loan_days dwingt de vergelijking voor positieve getallen geen algemene typecontrole af. Het is de numerieke regel die dit project nodig heeft, en positieve kommagetallen zoals 2.5 zijn toegestaan.
Wanneer beide definities laden, kies je Submit en bekijk je of de pogingen hierboven zich gedragen zoals verwacht. De oorspronkelijke tabel items moet zijn inventariscodes en uitleentermijnen nog steeds beschermen. Voeg de nieuwe instructie dus toe zonder de eerste te verzwakken.
Wanneer al deze records zich gedragen zoals verwacht, heb je uitsluitend op basis van eisen een tweede beschermde tabel ontworpen. De twee tabellen geven voorwerpen en leden nu elk een eigen, betrouwbare plek in de uitleendatabase.
Opdracht
Laat de voltooide tabel items ongewijzigd. Maak eronder een tabel members met deze vier kolommen en gedragingen:
idgebruiktINTEGERen weigert herhaalde expliciete ID’s.member_codegebruiktTEXT, is verplicht en weigert exacte duplicaten.namegebruiktTEXTen is verplicht, maar dubbele namen zijn toegestaan.loan_limitgebruiktINTEGER, is verplicht, krijgt bij weglaten de standaardwaarde3en accepteert bij numerieke waarden alleen positieve waarden.
Druk op Run en controleer of SQLite beide tabeldefinities toont. Stuur daarna je schema in. Positieve kommagetallen als limiet, zoals 2.5, zijn toegestaan; NULL, nul en negatieve limieten niet.