Relier deux entités (1-N)

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.

    4ttr 5ttr 6ttr
  • Découverte

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.


🎯 Objectifs du niveau

À la fin de ce niveau, tu seras capable de :

  1. Repérer la redondance dans une table et nommer les anomalies qu'elle provoque.
  2. Trouver les associations dans un texte avec la méthode sujet – verbe – complément.
  3. Écrire les cardinalités d'une association selon la notation Merise, et justifier chaque chiffre par une phrase qui commence par « Un … ».
  4. Traduire un MCD en MLD en plaçant la clé étrangère du bon côté.
  5. Créer une clé étrangère dans une base SQLite et vérifier que la base refuse les incohérences.
  6. Interroger deux tables reliées avec JOIN et LEFT JOIN, depuis DB Browser et depuis Python.

Les articles du niveau

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

Les conventions à ne jamais contredire

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.


Les bases utilisées

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.db est exactement celle que tu obtiens en suivant l'article « Relier deux entités » jusqu'au bout.


📚 La fiche à étudier

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).


Suite

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.