Exercice — dans l'esprit des sujets du bac
On reprend le schéma : LIVRES (NumLV, Titre, NomAuteur, ValeurLV, NumED#) et PRET (NumLV#, NumLE#, DateP, DateRet), avec EDITEURS et LECTEURS déjà créées.
- Écrire la commande SQL
CREATE TABLEdeLIVRESen imposant :NumLVclé primaire numérique,Titrechaîne obligatoire,NumEDclé étrangère versEDITEURS(NumED). - Écrire le
CREATE TABLEdePRETen maintenant les intégrités référentielles versLIVRESetLECTEURS. - Écrire l’
ALTER TABLEqui ajoute àLIVRESla colonneNBpage(numérique, 3 chiffres, obligatoire).
Voir la correction commentéeAprès avoir posé votre démarche
1.CREATE TABLE LIVRES (
NumLV NUMERIC(6) PRIMARY KEY,
Titre VARCHAR(25) NOT NULL,
NomAuteur VARCHAR(25),
ValeurLV NUMERIC(6,3),
NumED NUMERIC(6),
CONSTRAINT fk_liv_ed FOREIGN KEY (NumED) REFERENCES EDITEURS(NumED)
);
2.CREATE TABLE PRET (
NumLV NUMERIC(6),
NumLE NUMERIC(6),
DateP DATE,
DateRet DATE,
PRIMARY KEY (NumLV, NumLE, DateP),
FOREIGN KEY (NumLV) REFERENCES LIVRES(NumLV),
FOREIGN KEY (NumLE) REFERENCES LECTEURS(NumLE)
);
La clé primaire retenue est (NumLV, NumLE, DateP) : deux prêts du même livre au même lecteur ne peuvent se distinguer que par leur date.
3.ALTER TABLE LIVRES ADD NBpage NUMERIC(3) NOT NULL;