Les données d'une école ne tiennent pas dans une seule table : élèves, classes et professeurs ont chacun la leur. Ce niveau t'apprend à les découper, à les relier par une clé étrangère et à les interroger ensemble.
Les données d'une école ne tiennent pas dans une seule table. Si on range les élèves, leur classe et leur titulaire dans un même tableau, le même fait est recopié des dizaines de fois, et la moindre faute de frappe passe inaperçue. Ce niveau t'apprend à découper ces données en plusieurs tables, puis à les relier pour que la base reste cohérente.
À la fin de ce niveau, tu seras capable de :
JOIN et LEFT JOIN, depuis DB Browser et depuis Python.| Article | Ce que tu y apprends |
|---|---|
| Une seule table ne suffit pas | La redondance, les anomalies de modification, d'insertion et de suppression, les incohérences silencieuses et la règle « une entité = une table » |
| Relier deux entités | L'association, les cardinalités, le MCD et le MLD, la clé étrangère, le pragma foreign_keys et l'intégrité référentielle |
| Interroger deux tables | Le produit cartésien, la jointure JOIN … ON, les alias de table, LEFT JOIN, jointure et GROUP BY, les jointures depuis Python |
Dans tout le parcours, les schémas, les exercices et les corrigés utilisent les mêmes notations. Apprends-les une fois : elles ne changeront pas d'un article à l'autre.
| Point | Convention | Exemple |
|---|---|---|
| Écriture d'une cardinalité | Méthode Merise : deux chiffres (minimum, maximum), écrits à côté de l'entité qu'ils décrivent | ELEVE (0,1) —appartient— (0,n) CLASSE |
| Les quatre cardinalités | Toujours entre parenthèses, avec un n minuscule |
(0,1) (1,1) (0,n) (1,n) |
| Lecture d'une cardinalité | La phrase commence par « un » suivi de l'entité du côté où les chiffres sont écrits | « Un élève appartient au minimum à 0 classe et au maximum à 1 classe. » |
| Nom de l'association | Un verbe conjugué à la 3ᵉ personne | appartient, passe, emprunte |
| Nom d'une entité (MCD) | Au singulier, en MAJUSCULES | ELEVE, CLASSE |
| Nom d'une table (base) | Au singulier, en minuscules, sans accent | eleve, classe |
| Clé primaire | Une colonne id |
classe.id |
| Clé étrangère | Nom de la table désignée suivi de _id |
classe_id |
| Clé étrangère dans le MLD | Précédée de #, avec la colonne qu'elle désigne |
#classe_id → classe.id |
| Placement de la clé étrangère | La clé étrangère va dans la table de l'entité qui porte le maximum 1 — celui qui n'en a qu'un garde l'adresse de l'autre. | (0,1) côté ELEVE → classe_id dans eleve |
| Mots-clés SQL | En MAJUSCULES | SELECT, JOIN, REFERENCES |
Le vocabulaire est fixé lui aussi :
| Dans le MCD (analyse) | Dans la base de données |
|---|---|
| entité | table |
| attribut | colonne |
| occurrence | ligne |
| identifiant | clé primaire |
| association | clé étrangère |
⚠️ Association, pas relation
Le lien entre deux entités s'appelle une association. Tu rencontreras parfois le mot « relation » ailleurs : il est à éviter, car dans le vocabulaire des bases de données, une relation désigne une table.
Chaque article propose sa base de départ dans la carte « Téléchargements » de la sidebar. Tu peux donc commencer n'importe quel article sans avoir fait les précédents.
| Fichier | Article | Contenu |
|---|---|---|
bulletin-plat.db |
Une seule table ne suffit pas | Une seule table bulletin_plat : 11 élèves avec leur classe, leur local et leur titulaire, et deux fautes cachées |
mon-ecole-relier.db |
Relier deux entités | Les tables eleve (12 élèves) et professeur (6 professeurs), sans lien entre elles |
mon-ecole-classes.db |
Interroger deux tables | En plus : la table classe (3 classes) et la clé étrangère eleve.classe_id |
💡 La base
mon-ecole-classes.dbest exactement celle que tu obtiens en suivant l'article « Relier deux entités » jusqu'au bout.
Tout ce qui s'apprend par cœur dans ce niveau est rassemblé dans une fiche imprimable : le vocabulaire, les notations, la syntaxe, les pièges et une série de questions pour te tester.
Consulte la fiche à étudier — Relier deux entités (1-N).
Les niveaux suivants — les associations 1-1, les associations qui portent des attributs, les associations N-N et les serveurs de base de données — arriveront plus tard.