Retour au NSI

Schéma relationnel et intégrité

Apprends à créer et modifier des tables SQL avec des contraintes d'intégrité pour garantir la cohérence des données.

🎯 Objectifs de la lecon

  • Créer une table avec CREATE TABLE
  • Définir des contraintes PRIMARY KEY, FOREIGN KEY, NOT NULL, UNIQUE
  • Modifier un schéma avec ALTER TABLE
Sans contraintes, une base de données peut devenir incohérente. Apprends à les poser dès la création des tables.

Une base de données relationnelle stocke des données dans des tables. Pour garantir leur fiabilité, chaque table doit respecter des règles appelées contraintes d'intégrité. Ce cours t'explique comment créer et modifier ces tables avec SQL.

Créer une table avec CREATE TABLE

La commande CREATE TABLE permet de définir une nouvelle table. Tu dois préciser son nom et la liste de ses colonnes avec leur type de données.

Exemple : CREATE TABLE Etudiant (id INTEGER, nom TEXT, age INTEGER); crée une table avec trois colonnes.

✔️ A retenir

Chaque colonne a un nom et un type (INTEGER, TEXT, REAL, etc.). La commande se termine par un point-virgule.

Les contraintes d'intégrité

Les contraintes d'intégrité sont des règles qui limitent les valeurs possibles dans une table. Elles empêchent les données erronées ou incohérentes.

Les principales contraintes sont : PRIMARY KEY, FOREIGN KEY, NOT NULL et UNIQUE.

  • PRIMARY KEY : identifie chaque ligne de façon unique.
  • FOREIGN KEY : relie une colonne à la clé primaire d'une autre table.
  • NOT NULL : interdit les valeurs vides (NULL).
  • UNIQUE : garantit que toutes les valeurs d'une colonne sont différentes.

⚠️ Attention

Une table ne peut avoir qu'une seule PRIMARY KEY, mais plusieurs colonnes UNIQUE.

Définir PRIMARY KEY et NOT NULL

La contrainte PRIMARY KEY se place après le type de la colonne. Exemple : CREATE TABLE Etudiant (id INTEGER PRIMARY KEY, nom TEXT NOT NULL);

NOT NULL s'écrit aussi après le type. Ici, le nom ne peut pas être vide.

« CREATE TABLE Cours (code TEXT PRIMARY KEY, intitule TEXT NOT NULL); »

Point fort : La colonne code est clé primaire, donc chaque cours a un code unique. intitule ne peut pas être NULL.

Utiliser FOREIGN KEY et UNIQUE

FOREIGN KEY se déclare en fin de CREATE TABLE. Exemple : CREATE TABLE Inscription (etudiant_id INTEGER, cours_code TEXT, FOREIGN KEY (etudiant_id) REFERENCES Etudiant(id));

UNIQUE s'ajoute après le type. Exemple : CREATE TABLE Utilisateur (email TEXT UNIQUE);

⚠️ Attention

Une FOREIGN KEY doit référencer une colonne qui est PRIMARY KEY ou UNIQUE dans l'autre table.

Modifier un schéma avec ALTER TABLE

La commande ALTER TABLE permet de modifier une table existante sans la recréer. Tu peux ajouter, supprimer ou modifier une colonne.

Pour ajouter une colonne : ALTER TABLE Etudiant ADD COLUMN email TEXT;

Pour supprimer une colonne : ALTER TABLE Etudiant DROP COLUMN email; (disponible dans SQLite à partir de la version 3.35.0).

✔️ A retenir

ALTER TABLE ne modifie que la structure, pas les données existantes.

Erreurs fréquentes et mini-quiz

⚠️ Attention

Erreur fréquente : oublier le point-virgule en fin de commande. SQL ne l'exécute pas et affiche une erreur.

⚠️ Attention

Erreur fréquente : définir une FOREIGN KEY sur une colonne qui n'est pas clé primaire dans la table référencée. La commande échoue.

Mini-quiz : 1. Quelle contrainte empêche les doublons dans une colonne ? (Réponse : UNIQUE). 2. Que fait ALTER TABLE Etudiant ADD COLUMN age INTEGER; ? (Réponse : ajoute une colonne age). 3. Une table peut-elle avoir plusieurs PRIMARY KEY ? (Réponse : non).

⏱️ 20 min de lecture
CREATE TABLEPRIMARY KEYFOREIGN KEYNOT NULLUNIQUEALTER TABLEcontrainte d'intégritéschéma relationnel