Exercice (4 points) — dans l'esprit des sessions 2022–2025, section Sciences de l'informatique
Le réseau d'auto-écoles Permis+ prépare des candidats à l'examen du code de la route. Les règles de gestion définies sont :
- R1 : un moniteur travaille dans une seule agence.
- R2 : une agence emploie plusieurs moniteurs.
- R3 : un candidat est inscrit dans une seule agence.
- R4 : un candidat peut passer l'examen du code plusieurs fois, à des dates différentes.
- R5 : un candidat ne peut pas passer l'examen du code deux fois le même jour.
- R6 : un véhicule appartient à une seule agence.
Le concepteur propose une première version de la base de données, dont la représentation graphique suit ; des anomalies y ont été détectées.
| Champ | Description |
|---|---|
| cinMoniteur | Numéro de CIN d'un moniteur. |
| nomMoniteur | Nom et prénom d'un moniteur. |
| telMoniteur | Téléphone d'un moniteur. |
| idAgence | Identifiant d'une agence. |
| nomAgence | Nom d'une agence. |
| ville | Ville où se trouve une agence. |
| immat | Numéro d'immatriculation d'un véhicule. |
| marque | Marque d'un véhicule. |
| modele | Modèle d'un véhicule. |
| annee | Année de mise en circulation d'un véhicule. |
| numCand | Numéro d'un candidat. |
| nomCand | Nom et prénom d'un candidat. |
| dateNaiss | Date de naissance d'un candidat. |
| dateExam | Date de passage de l'examen du code. |
| nbFautes | Nombre de fautes commises à l'examen du code. |
Document 1 — lignes à enregistrer dans la table ExamenCode (les candidats C104 et C118 sont déjà inscrits dans la table Candidat) :
| N° | numCand | dateExam | nbFautes |
|---|---|---|---|
| 1 | C104 | 2026-01-15 | 7 |
| 2 | C104 | 2026-02-19 | 3 |
| 3 | C118 | 2026-02-19 | 5 |
Document 2 — extrait de la table Vehicule :
| immat | marque | modele | annee | idAgence |
|---|---|---|---|---|
| 123TU4567 | Peugeot | 208 | 2022 | A1 |
| 124TU1010 | PEUGEOT | 301 | 2023 | A1 |
| 125TU2020 | Renault | Clio | 2021 | A2 |
| 126TU3030 | Peugot | 208 | 2024 | A2 |
| 127TU4040 | Renault | Symbol | 2024 | A3 |
Pour les séances de code (cours théoriques en salle), le concepteur ajoute deux tables, Seance et Presence (numSeance, dateSeance, salle et score, la note obtenue par un candidat au test de fin de séance), et les règles suivantes :
- R9 : une séance de code est animée par un seul moniteur.
- R10 : un candidat peut assister à plusieurs séances de code.
- R11 : une séance de code accueille plusieurs candidats.
- R12 : la présence d'un candidat à une séance n'est enregistrée qu'une seule fois, avec son score.
Document 3 — quatre représentations textuelles erronées :
- Représentation 1 : Seance ( numSeance , dateSeance , salle ) ; Presence ( numSeance# , numCand# , score , cinMoniteur# )
- Représentation 2 : Seance ( numSeance , dateSeance , salle , cinMoniteur# , numCand# , score )
- Représentation 3 : Seance ( numSeance , dateSeance , salle , cinMoniteur# ) ; Presence ( numSeance# , numCand# , score )
- Représentation 4 : Seance ( numSeance , dateSeance , salle , cinMoniteur# ) ; Candidat ( numCand , nomCand , dateNaiss , idAgence# , numSeance# , score )
Important : à chaque représentation textuelle demandée, souligner les clés primaires et faire suivre les clés étrangères du symbole #.
- On s'intéresse aux règles R1 à R6.
- Pour chacune de ces règles, dire si la conception proposée la respecte (Oui ou Non) et justifier.
- Proposer une représentation textuelle des tables Agence et Moniteur qui respecte R1 et R2.
- Avec la conception proposée, quelle ligne du document 1 ne pourra pas être enregistrée ? Justifier.
- On s'intéresse à la table ExamenCode.
- Proposer une clé primaire qui respecte R4 et R5 et réécrire la représentation textuelle de la table.
- Un camarade propose la clé (numCand, dateExam, nbFautes). Quelle règle cette clé ne garantit-elle plus ? Illustrer par deux lignes.
- Le document 2 montre une même marque écrite de plusieurs façons. Pour éliminer cette incohérence, on crée une table Marque (idMarque, nomMarque) en respectant les règles R7 : un véhicule est d'une seule marque ; R8 : une marque peut concerner plusieurs véhicules. Proposer une représentation textuelle des tables Marque et Vehicule.
- On s'intéresse aux séances de code.
- Pour chaque représentation du document 3, donner la règle (R9, R10, R11 ou R12) non respectée.
- En déduire une représentation textuelle correcte des tables Seance et Presence.
Voir la correction commentéeAprès avoir posé votre démarche
1.a Idée : traduire chaque règle en cardinalité, puis regarder de quel côté se trouve la clé étrangère, ou quelle est la clé primaire.
- R1 : Non. La clé étrangère cinMoniteur# est dans Agence : rien n'empêche plusieurs agences de citer le même moniteur, qui travaillerait alors dans plusieurs agences.
- R2 : Non. Chaque ligne de Agence ne référence qu'un moniteur : une agence ne peut pas en employer plusieurs.
- R3 : Oui. idAgence# est dans Candidat : chaque candidat référence une seule agence, qui peut être citée par plusieurs candidats.
- R4 : Non. La clé primaire de ExamenCode est numCand seul : un candidat n'y figure qu'une fois, il ne peut donc passer l'examen qu'une seule fois.
- R5 : Oui, mais au prix de R4 : un candidat n'ayant qu'une ligne, il ne peut pas en avoir deux le même jour.
- R6 : Oui. idAgence# est dans Vehicule.
1.b Idée : la clé étrangère se place du côté « plusieurs » : c'est le moniteur qui appartient à une seule agence.
- Agence ( idAgence , nomAgence , ville )
- Moniteur ( cinMoniteur , nomMoniteur , telMoniteur , idAgence# )
2. Idée : tester la clé primaire ligne par ligne. La ligne 2 (C104, 2026-02-19, 3) est refusée : C104 figure déjà à la ligne 1 et numCand est à lui seul la clé primaire, d'où une duplication de clé. La ligne 3 est acceptée : C118 n'a pas encore de ligne, même si sa date est celle de la ligne 2.
3.a Idée : R4 autorise plusieurs lignes par candidat, R5 en interdit deux le même jour : c'est le couple (candidat, date) qui doit être unique.
- ExamenCode ( numCand# , dateExam , nbFautes )
Les trois lignes du document 1 sont alors acceptées.
3.b La clé (numCand, dateExam, nbFautes) ne garantit plus R5 : deux passages du même candidat le même jour, qui ne diffèrent que par le nombre de fautes, sont acceptés, par exemple (C118, 2026-02-19, 5) et (C118, 2026-02-19, 2). Ajouter à la clé un attribut qui n'identifie rien affaiblit la règle d'unicité.
4. Idée : un véhicule a une seule marque (R7) et une marque concerne plusieurs véhicules (R8) : la clé étrangère idMarque# va dans Vehicule, qui perd sa colonne marque.
- Marque ( idMarque , nomMarque )
- Vehicule ( immat , modele , annee , idAgence# , idMarque# )
Le nom de chaque marque n'est plus saisi qu'une fois, dans Marque ; les véhicules d'une même marque référencent tous le même idMarque.
5.a Idée : pour chaque représentation, chercher ce qu'elle interdit ou autorise à tort.
- Représentation 1 : R9. Le moniteur est porté par chaque ligne de Presence : deux candidats d'une même séance pourraient avoir deux moniteurs différents ; il doit être porté par Seance.
- Représentation 2 : R11. numCand# et score sont dans Seance, dont la clé est numSeance : une séance ne peut avoir qu'un seul candidat.
- Représentation 3 : R12. score fait partie de la clé de Presence : le même candidat peut être enregistré deux fois dans la même séance avec deux scores différents.
- Représentation 4 : R10. numSeance# et score sont dans Candidat : un candidat ne peut être rattaché qu'à une seule séance.
5.b Idée : relation plusieurs–plusieurs entre Seance et Candidat : table d'association Presence, de clé (numSeance, numCand), qui porte le score ; le moniteur, unique par séance, reste dans Seance.
- Seance ( numSeance , dateSeance , salle , cinMoniteur# )
- Presence ( numSeance# , numCand# , score )