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 TABLE` de `LIVRES` en imposant : `NumLV` clé primaire numérique, `Titre` chaîne obligatoire, `NumED` clé étrangère vers `EDITEURS(NumED)`.
- Écrire le `CREATE TABLE` de `PRET` en maintenant les intégrités référentielles vers `LIVRES` et `LECTEURS`.
- Écrire l’`ALTER TABLE` qui ajoute à `LIVRES` la colonne `NBpage` (numérique, 3 chiffres, obligatoire).
Voir la correction commentéeAprès avoir posé votre démarche
1.
```sql
CREATE TABLE LIVRES (
NumLV NUMERIC(6) PRIMARY KEY,
Titre VARCHAR(25) NOT NULL,
NomAuteur VARCHAR(25),
ValeurLV NUMERIC(6,3) NOT NULL,
NumED NUMERIC(6),
CONSTRAINT fk_liv_ed FOREIGN KEY (NumED) REFERENCES EDITEURS(NumED)
);
```
2.
```sql
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 composition exacte de la PK peut varier selon le barème ; l’essentiel est les deux FK et l’unicité du prêt.)
3.
```sql
ALTER TABLE LIVRES ADD NBpage NUMERIC(3) NOT NULL;
```