0%

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:

KolomSoort waardeVereist gedrag
idINTEGERElk expliciet opgegeven ID identificeert één rij en mag niet worden herhaald
member_codeTEXTVerplicht; een exacte code mag niet worden herhaald
nameTEXTVerplicht, maar twee leden mogen dezelfde naam hebben
loan_limitINTEGERVerplicht, 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:

PogingVerwacht resultaat
ID 41, code M-210, naam Riley Chen, limiet weggelatenOpgeslagen met een limiet van 3
ID 42, code M-211, naam Riley Chen, limiet 5Opgeslagen, ook al wordt de naam herhaald
ID 43, code M-212, naam Morgan Lee, limiet 2.5Opgeslagen met 2.5
ID 41 opnieuw gebruiktGeweigerd
Exacte code M-210 opnieuw gebruiktGeweigerd
Code of naam weggelaten, of member_code, name of loan_limit opgegeven als NULLGeweigerd
Limiet 0 of -1Geweigerd

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:

  • id gebruikt INTEGER en weigert herhaalde expliciete ID’s.

  • member_code gebruikt TEXT, is verplicht en weigert exacte duplicaten.

  • name gebruikt TEXT en is verplicht, maar dubbele namen zijn toegestaan.

  • loan_limit gebruikt INTEGER, is verplicht, krijgt bij weglaten de standaardwaarde 3 en 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.