Un cap pour ce chapitre
Ce que vous saurez faire
- Construire une table par rapprochement sur un champ commun
- Prévoir les correspondances multiples et absentes
- Vérifier la compatibilité des domaines de valeurs
Les bases utiles pour commencer
Identifier ce qui relie les données
Supposons une table eleves contenant prenom et classe, puis une table salles contenant classe et salle. Le champ classe porte la relation entre les deux tables. Pour chaque élève, on cherche les lignes de salles ayant la même valeur de classe. L’ordre des lignes n’a aucune importance. Rapprocher la première ligne d’une table avec la première de l’autre fonctionne seulement par hasard si les fichiers sont déjà alignés. Une fusion doit exprimer sa règle pour rester correcte après un tri, une suppression ou une nouvelle importation.
Le champ commun peut porter un autre nom dans l’autre table. Ce qui compte est le domaine des valeurs et la relation annoncée, pas l’égalité des noms de colonnes. Inversement, deux champs nommés code peuvent désigner des objets différents et ne pas devoir être rapprochés.
Construire les lignes résultantes
Une méthode simple parcourt chaque ligne de la première table, puis chaque ligne de la seconde. Lorsque les valeurs du champ commun sont égales, elle construit un nouvel enregistrement réunissant les informations utiles. Cette méthode de double parcours est facile à expliquer en Première, même si d’autres stratégies sont plus efficaces pour de gros volumes. Il faut aussi choisir les noms de champs dans le résultat lorsque les tables possèdent des descripteurs identiques de sens différent. La fusion ne doit pas écraser silencieusement une information par une autre.
Pour chaque paire examinée, la condition décide si une ligne doit être produite. Avec trois lignes d’élèves et deux lignes de salles, le double parcours examine six paires. Le nombre de paires examinées et le nombre de lignes produites sont donc deux mesures distinctes.
Prévoir combien de lignes peuvent apparaître
Une ligne peut trouver zéro, une ou plusieurs correspondances. Si une classe figure avec deux salles, chaque élève de cette classe peut produire deux lignes dans une fusion conservant toutes les correspondances. Ce n’est pas forcément un doublon : les deux affectations peuvent représenter deux créneaux. À l’inverse, une ligne sans partenaire disparaît dans une fusion qui ne conserve que les correspondances. Si l’objectif impose de garder tous les élèves, il faut décider comment représenter l’absence de salle. Le contrat de la fusion doit annoncer cette règle avant l’exécution.
Si une clé apparaît m fois dans la première table et n fois dans la seconde, cette clé produit m fois n paires compatibles. Une multiplication du nombre de lignes peut ainsi être parfaitement expliquée par les données, même lorsqu’aucune entrée n’est dupliquée exactement.
Comparer des valeurs de même domaine
La chaîne "01" et l’entier 1 ne sont pas égaux dans Python. Ils peuvent représenter le même code selon le domaine, mais cette équivalence doit être décidée explicitement. Des espaces parasites ou des variations de casse peuvent également empêcher un rapprochement textuel. Normaliser ne consiste pas à supprimer toutes les différences : certains identifiants distinguent volontairement majuscules et minuscules ou conservent des zéros initiaux. Après fusion, vérifiez les lignes non appariées et les multiplicités inattendues pour repérer les erreurs de préparation ou les hypothèses incorrectes sur les données.
Une normalisation doit être appliquée selon une règle commune et contrôlée avant la fusion. Enlever tous les espaces peut fusionner des codes volontairement distincts ; convertir tous les nombres-textes peut effacer des zéros significatifs. Les correspondances nouvelles doivent être justifiables.
Compter avant de construire le résultat
Deux élèves, Lina et Zoé, appartiennent à A ; Sami appartient à B. La table des salles contient A-108, A-110 et B-204. Lina produit deux lignes, Zoé deux et Sami une, soit cinq au total. Le double parcours examine pourtant trois fois trois, soit neuf paires. Quatre paires sont rejetées parce que les classes diffèrent.
Ce comptage préalable aide à vérifier une fusion. Obtenir trois lignes pourrait révéler qu’on s’est arrêté à la première salle trouvée. Obtenir neuf lignes pourrait révéler l’absence du test de correspondance. Le résultat correct dépend du contrat « conserver toutes les paires compatibles ».
Préserver les lignes sans inventer un partenaire
Un élève de classe C ne possède aucune salle dans la seconde table. Une fusion limitée aux correspondances ne produit aucune ligne pour lui. Une fusion conservant tous les élèves peut produire une ligne où le champ salle indique explicitement une absence. Cette ligne ne prétend pas qu’une salle réelle a été trouvée.
Pour analyser le résultat, comptez séparément les correspondances multiples et les élèves sans partenaire. Le nombre final de lignes peut rester égal au nombre d’élèves tout en combinant une duplication pour l’un et une disparition pour l’autre. L’égalité des tailles ne prouve donc pas, à elle seule, que la fusion est complète et correcte.
À vous de faire varier les choses
Qui trouve sa salle ?
Ajoutez une deuxième salle à la classe A et choisissez le traitement des élèves sans correspondance. Observez la taille du résultat.
Lire le résultat de l’expérience initiale
2 ligne(s) dans la table fusionnée
Source élèves : Lina/A, Sami/B, Zoé/C. Source salles : A/108, B/204. La classe C ne possède aucun partenaire.
| Prénom | Classe | Salle |
|---|---|---|
| Lina | A | 108 |
| Sami | B | 204 |
Le nombre de lignes dépend des correspondances et de la règle de conservation. Une fusion correcte doit pouvoir expliquer chaque ligne produite.
De la compréhension à l’autonomie
À vous de résoudre
Cherchez d’abord par vous-même. Vérifiez les résultats demandés, utilisez les indices si nécessaire, puis comparez votre méthode à la correction.
Rapprocher par une classe
Les élèves sont Lina en A, Sami en B et Zoé en A. Les salles sont B en 204 et A en 108. Donnez la salle de chacun.
Indice 1
La position des lignes diffère entre les tables.
Indice 2
Comparez le champ classe pour chaque élève.
Comprendre la correction
Lina rejoint la salle 108, Sami la salle 204 et Zoé la salle 108. Le rapprochement utilise A ou B, pas le rang des lignes. Associer les premiers éléments aurait envoyé Lina en 204 et montrerait que l’ordre n’est pas une relation fiable entre deux tables indépendantes.
Une correspondance multiple
Une table contient Lina en A et Sami en B. L’autre contient A en 108, A en 110 et B en 204. Combien de lignes produit une fusion gardant toutes les correspondances ?
Indice 1
Lina rencontre deux lignes de classe A.
Indice 2
Chaque paire compatible produit un résultat.
Comprendre la correction
La fusion produit trois lignes : Lina-A-108, Lina-A-110 et Sami-B-204. Les deux lignes de Lina viennent de deux correspondances distinctes. Les supprimer automatiquement comme doublons ferait perdre une affectation. Il faut examiner le sens des deux salles avant de conclure à une anomalie.
Un partenaire absent
Un élève appartient à la classe C, absente de la table des salles. Que produit une fusion qui ne conserve que les correspondances ? Quelle autre règle pourrait convenir ?
Indice 1
Aucune paire ne satisfait l’égalité pour C.
Indice 2
Conserver tous les élèves nécessite un traitement explicite de l’absence.
Comprendre la correction
La ligne de cet élève disparaît du résultat si seules les paires correspondantes sont conservées. Une autre règle peut garder l’élève avec une salle manquante clairement indiquée. Les deux comportements répondent à des objectifs différents ; il faut choisir et documenter celui attendu pour éviter une perte silencieuse d’informations.
Des codes qui se ressemblent
Une table utilise le code "03", l’autre l’entier 3. Pourquoi une comparaison directe échoue-t-elle, et quelle vérification précède toute conversion ?
Indice 1
Les types diffèrent.
Indice 2
Le zéro initial peut être significatif pour un identifiant.
Comprendre la correction
Python distingue la chaîne "03" et l’entier 3. Avant de convertir, il faut vérifier que les deux champs désignent le même domaine et que le zéro initial n’ajoute aucune distinction utile. On peut ensuite normaliser selon une convention commune. Transformer les valeurs uniquement pour obtenir des correspondances peut créer de faux liens.
Deux côtés avec des répétitions
La première table contient Lina-A, Zoé-A et Sami-B. La seconde contient A-108, A-110 et B-204. Comptez les paires examinées par double parcours, les lignes produites pour A et le total. Expliquez pourquoi les deux lignes d’un élève de A ne sont pas forcément des doublons.
Indice 1
Chaque élève est comparé à chaque salle.
Indice 2
Deux élèves de A rencontrent chacun deux salles.
Comprendre la correction
Neuf paires sont examinées. A produit quatre lignes, B une, donc cinq au total. Les deux lignes d’un élève de A portent des salles différentes ; elles peuvent représenter deux créneaux selon le modèle. Leur sens doit être vérifié avant de supprimer une correspondance. La clé commune ne garantit pas l’unicité du partenaire.
Une taille finale trompeuse
Lina appartient à A, Sami à B et Zoé à C. Les salles sont A-108, A-110 et B-204. Une fusion limitée aux correspondances produit trois lignes. Pourquoi cette taille ne prouve-t-elle pas que chaque élève possède une ligne ? Donnez le résultat si tous les élèves sont conservés.
Indice 1
Une correspondance supplémentaire peut compenser une disparition.
Indice 2
C n’apparaît dans aucune salle.
Comprendre la correction
Lina produit deux lignes, Sami une et Zoé aucune : le total trois masque la perte de Zoé. En conservant tous les élèves, on ajoute Zoé-C avec salle manquante, pour un total quatre. Il faut donc contrôler les partenaires par élève, et pas seulement comparer la taille du résultat à celle de la source.
Des codes à normaliser selon le domaine
Une table utilise les codes "03" et "3" pour deux objets distincts. Une autre table possède "03". Un programme convertit toutes les clés en entier avant fusion. Quel risque crée-t-il ? Proposez une règle conservant la distinction annoncée et indiquez le nombre d’objets qui doivent correspondre.
Indice 1
Les zéros initiaux sont significatifs dans ce modèle.
Indice 2
La conversion en entier rend les deux codes égaux.
Comprendre la correction
La conversion ferait correspondre les deux objets à la même ligne, créant un faux lien. Puisque le domaine distingue les codes, il faut conserver une comparaison textuelle exacte. Seul l’objet de code "03" doit correspondre. Une normalisation ne peut pas contredire une distinction explicitement prévue par les données.
Les erreurs qui méritent un détour
- Aligner les tables par numéro de ligne
- Une correspondance doit reposer sur les champs qui relient réellement les enregistrements.
- Supposer une seule correspondance sans le vérifier
- Les multiplicités et absences font partie du contrat et doivent être examinées dans le résultat.
La fiche à garder
L’essentiel à retenir
- La fusion construit des lignes à partir d’une condition de correspondance.
- Une ligne peut avoir plusieurs partenaires ou aucun.
- Les domaines et les conventions doivent être compatibles.
Le prochain pas
Retrouver le catalogue de Première
Ce chapitre s’appuie sur le programme officiel de Première (PDF, nouvel onglet). Les explications et exercices sont proposés pour l’apprentissage.
