Aller au contenu

Évaluations d'élèves par compétence⚓︎

D'après 2022, Centres étrangers, J2, Ex. 3

Rappel sur le langage SQL

Types de données

Type Description
CHAR Chaine de caractères
INT Nombre entier de \(-2^{31}\) à \(2^{31} - 1\) (signé) ou de \(0\) à \(2^{32} - 1\) (non signé)
FLOAT Réel à virgule flottante (approximation)
DATE Date format AAAA-MM-JJ
DATETIME Date et heure format AAAA-MM-JJHH:MI:SS

Quelques exemples de syntaxe SQL :

  • Insérer des enregistrements :
    • INSERT INTO Table1 (attribut1, attribut2) VALUES (valeur1 , valeur2);
  • Modifier des enregistrements :
    • UPDATE Table1 SET attribut1=valeur1, attribut2=valeur2 WHERE Selecteur;
  • Supprimer des enregistrements :
    • DELETE FROM Table1 WHERE Selecteur;
  • Sélectionner des enregistrements :
    • SELECT attributs FROM Table1 WHERE Selecteur;
  • Effectuer une jointure :
    • SELECT attributs FROM Table1 JOIN Table2 ON Table1.cle1=Table2.cle2 WHERE Selecteur;

Les enseignants d'un établissement imaginaire proposent des parcours d'entrainement au numérique à leurs élèves en créant des séries d'exercices appelées Evaluations. Les différentes informations sont stockées dans une base de données.

Les informations de chaque campagne créée sont stockées dans la table Evaluations dont la structure est la suivante :

Attribut Type
Code_evaluation CHAR
Nom_evaluation CHAR
Auteur CHAR
Date_evaluation CHAR
Code_competences INT

Un extrait de la table Evaluations est donné ci-dessous :

Tableau 1

Code_evaluation Nom_evaluation Auteur Date_evaluation Code_competences
'EXKVLX886' 'Term7' 'Peltier' '13/10/2021' 1453
'AZVBYB689' 'Groupe3' 'Lacour' '07/10/2021' 1276
'PRJUYR491' 'Term5' 'Peltier' '07/10/2021' 1453
'RTKVLX656' 'campagneSTMG' 'Beley' '03/10/2021' 476
'DZLYYR479' 'Term5' 'Serhani' '27/09/2021' 1659
'XJVBTX585' 'grNSI2' 'Eisen' '24/09/2021' 532
'CRLYYR439' '1ere6' 'Caille' '13/09/2021' 532
'AZVBYB789' 'rentreeHGGSP' 'Martin' '13/09/2021' 386
'OBJUYR491' 'Web_2nde' 'Boucher' '07/09/2021' 452
'AGTBYB689' 'rechercheBTS' 'Beley' '07/09/2021' 1341
'DQVBTX905' '2nde2' 'Nguyen' '07/09/2021' 452

1.a. Dans la table Evaluations, quel est le seul attribut pouvant servir de clé primaire ? Justifier votre réponse.

Réponse

Le seul attribut a avoir des valeurs unique est Code_evaluation, tous les autres peuvent créer des ambigüités lors de la désignation d'une entrée.

La clé primaire doit donc être Code_evaluation.

1.b. Écrire la requête SQL d'insertion qui a permis d'enregistrer la campagne Term7 dans la table Evaluations. Les informations relatives à cette campagne sont données dans la première ligne du tableau 1 précédent.

Réponse
🗂️ Requête SQL
INSERT INTO Evaluations VALUES ('EXKVLX886', 'Term7', 'Peltier', '13/10/2021', 1453);

2. On suppose maintenant que la table Evaluations contient uniquement les 11 enregistrements présents dans le tableau 1.

2.a. Combien de lignes s'affichent après l'exécution de la requête suivante ?

🗂️ Requête SQL
SELECT auteur FROM Evaluations;
Réponse

Les résultats ne sont pas regroupés par auteur donc tous les auteurs sont renvoyés y compris les doublons : il y a 11 lignes.

2.b. Recopier les lignes issues de la requête suivante :

🗂️ Requête SQL
SELECT Nom_evaluation, Date_evaluation FROM Evaluations WHERE auteur = 'Peltier';
Réponse
Nom_evaluation Date_evaluation
Term7 13/10/2021
Term5 07/10/2021

2.c. Rédiger une requête permettant de connaitre le nom des campagnes prévoyant un entrainement ciblé sur le web (Code_competences \(452\)).

Réponse
🗂️ Requête SQL
SELECT Nom_evaluation
FROM Evaluations
WHERE Code_competences = 452;

3. Le système de gestion de bases de données dispose également d'une table Resultats dont la structure est la suivante :

Attribut Type
Code_evaluation CHAR
Num_eleve INT
Score INT

Si l'élève s'est connecté à la campagne, mais n'a pas cliqué sur « envoyer les résultats », son score vaut -1.

3.a. Qu'imposerait le choix du couple (Code_evaluation, Num_eleve) comme clé primaire pour la table Resultats ?

Réponse

On fait l'hypothèse que les Num_eleve sont tous uniques (un par élève).

Une clé primaire ne doit être associée qu'à une entrée de la table. Choisir ce couple comme clé primaire imposerait que chaque élève ne fasse l'évaluation qu'une seule fois.

Un extrait de la relation est donné ci-dessous :

Code_evaluation Num_eleve Scores
'PRJUYR491' 17 300
'CRLYYR439' 654 -1
'PRJUYR491' 1454 220
'RTKVLX656' 554 255
'DZLYYR479' 17 -1
'XJVBTX585' 1664 12
'CRLYYR439' 18703 0
'PRJUYR491' 1565 422
'XJVBTX585' 12 643
'CRLYYR439' 168 19
'DZLYYR479' 17 140
'XJVBTX585' 1658 647

3.b. Écrire une requête permettant d'obtenir les numéros des élèves (Num_eleve) qui ont travaillé la compétence 532.

Réponse
🗂️ Requête SQL
SELECT Num_eleve
FROM Resultats
JOIN Evaluations ON Resultats.Code_evaluation = Evaluations.Code_evaluation
WHERE Evaluation.Code_competences = 532

4.a. Proposer la structure d'une table Eleves permettant d'identifier les noms, prénoms et les classes des élèves.

Réponse

Là encore on fait l'hypothèse que chaque élève possède un Num_eleve unique.

Attribut Type
Num_eleve CHAR
Nom CHAR
Prenom CHAR
Classe CHAR

4.b. Proposer une clé primaire pour cette table.

Réponse

La clé primaire serait Num_eleve.