Objectif SL pris en charge. Cible de première évaluation 2027 ; PDF officiel renvoyant 403 ; l'ancien résumé acquis est l'évaluation finale 2026. Le guide restant, les exigences d'évaluation et pratiques conservent leurs retenues enregistrées.
Prérequis : lisez les quantités et unités indiquées, utilisez l'arithmétique et les conditions du modèle ci-dessous. Chaque leçon développe sa propre méthode avant un transfert autonome.
Ce sont des exemples pédagogiques originaux ou explicitement fictifs, pas des mesures réelles ni des enquêtes évaluées achevées par des apprenants.
3.2
Bases de données relationnelles : une clé et une relation
Qu'est-ce qui expliquerait cette observation ?
Dupliquer l'adresse d'un utilisateur dans chaque commande peut produire des enregistrements contradictoires lorsque l'adresse change.
Commencez par une prédiction. Énoncez les quantités ou caractéristiques que vous compareriez, puis décidez quels éléments de preuve pourraient distinguer deux explications.
Construire le modèle
Une table relationnelle contient des lignes et des attributs. Une clé primaire identifie une ligne ; une clé étrangère fait référence à une clé citée dans une autre table. La normalisation peut réduire la duplication évitable et les anomalies de mise à jour tout en préservant des relations significatives.
clé primaire : Ensemble d'attributs identifiant de manière unique une ligne de table ; clé étrangère : Ensemble d'attributs faisant référence à une clé dans une autre table.
Choisir des preuves capables de le tester
Une jointure combine des lignes selon une condition spécifiée. Le nombre de résultats dépend de la cardinalité de la relation et des filtres. Une contrainte de clé étrangère impose une règle de relation ; elle ne chiffre pas automatiquement les données personnelles.
Concevez un petit jeu de données synthétique utilisateur-commande sans informations personnelles réelles. Déclarez les clés, testez les insertions en double et avec références manquantes, puis vérifiez le résultat d'une requête par rapport à un tableau attendu calculé manuellement.
Travailler à partir de quantités connues
Énoncez les valeurs connues et leurs unités. Choisissez la relation dont les hypothèses s'adaptent à ce cas, puis réarrangez-la avant de substituer les valeurs.
Connues : quatre clients ont respectivement 2, 0, 3 et 1 commandes. Une jointure interne de client vers commande retourne 2+0+3+1 = 6 lignes. Une jointure gauche conserve également le client sans commande comme une ligne appariée nulle, donnant 7 ici.
Exemple :
Trois clients ont 1, 3 et 2 commandes. Combien de lignes retourne le joint interne client-commande ? Suivez la même séquence : quantités connues → modèle → relation → substitution → unité et interprétation.
Vérifier la conclusion et ses limites
Une clé primaire ne doit pas être un nom de personne. Une jointure n'est pas une simple concaténation de tables. Utilisez des requêtes paramétrées pour les entrées non fiables plutôt que de construire du SQL à partir de chaînes brutes.
Revenez à l'observation initiale. Expliquez ce que le résultat soutient, quelles conditions il suppose, et une manière de tester une explication concurrente.
Avertissement :
Une clé étrangère chiffre automatiquement chaque ligne. Cette affirmation est fausse : une clé primaire ne doit pas être un nom de personne. Un joint n'est pas une simple concaténation de tables. Utilisez des requêtes paramétrées pour les données non fiables plutôt que de construire du SQL à partir de chaînes brutes.
Clé :
Bases de données relationnelles : une clé et une relation : Un joint combine des lignes selon une condition spécifiée. Le nombre de résultats dépend de la cardinalité de la relation et des filtres. Une contrainte de clé étrangère impose une règle de relation ; elle ne chiffre pas automatiquement les données personnelles.
Trace exécutable et limite
import sqlite3
db = sqlite3.connect(":memory:")
db.executescript("""CREATE TABLE c(id INTEGER PRIMARY KEY);
CREATE TABLE o(id INTEGER PRIMARY KEY, cid INTEGER);
INSERT INTO c VALUES(1),(2),(3);
INSERT INTO o VALUES(10,1),(11,1),(12,3);""")
for kind in ["INNER", "LEFT"]:
sql = f"SELECT COUNT(*),COUNT(o.id) FROM c {kind} JOIN o ON c.id=o.cid"
print(kind, db.execute(sql).fetchone())
db.close()
Sortie attendue :
INNER (3, 3)
LEFT (4, 3)
Le joint gauche conserve le client 2 avec des champs de commande nuls. COUNT(*) inclut cette ligne, tandis que COUNT(o.id) l'exclut. Les clés primaires distinguent les enregistrements ; le comptage des clients n'est pas celui des commandes. Le mot-clé joint interpolé provient d'une liste interne fixe, pas d'une saisie utilisateur.