N.S.I. WorkSpace T-Ev-EE,Terminale [Evaluation sommative] (Devoir surveillé) Exercice portant sur : Bases de données – Programmation Objet – Programmation générale en Python

[Evaluation sommative] (Devoir surveillé) Exercice portant sur : Bases de données – Programmation Objet – Programmation générale en Python

Categories:

Sujet

Corrigé (Réponses attendues)

Première Partie – Question 1

SELECT nom FROM joueur WHERE score > 100;

Première Partie – Question 2

INSERT INTO mot_cache (id, mot) VALUES (154, 'ADJUGE'), (155, 'ADJURE'), (156, 'AJONCS');

Première Partie – Question 3

UPDATE mot_a_trouver SET point = 30 WHERE mot = 'JOUETS';
UPDATE mot_a_trouver SET point = 30 WHERE id = '85';

Première Partie – Question 4

SELECT DISTINCT nom FROM joueur JOIN tour ON joueur.id = tour.id_j JOIN mot_cache ON mot_cache.id = tour.id_mc WHERE mot = 'JATTES' ORDER BY nom;
SELECT DISTINCT nom FROM joueur JOIN tour ON joueur.id = tour.id_j WHERE id_mc = 39 ORDER BY nom;

Première Partie – Question 5

Cet ajout est refusé car il porte atteinte à l'intégrité relationnelle de la base de données.

En effet, l'attribut 'id' de la table 'tour' est un clé primaire et donc il ne peut y avoir deux valeurs identiques pour cet attribut.

De ce fait il n'est pas possible d'ajouter une ligne dans la table 'tour' avec la valeur '145' pour l'attribut 'id' si cette valeur existe déjà pour une autre ligne de la table 'tour'.
Cet ajout est refusé car il porte atteinte à l'intégrité référentielle de la base de données.

En effet, l'attribut 'id' de la table 'joueur' est un clé primaire qui fait référence à l'attribut 'id_j' de la table 'tour' déclaré comme une clé étrangère.

De ce fait il n'est pas possible d'ajouter une ligne dans la table 'tour' avec la valeur '27' pour l'attribut 'id_j' puisque cette valeur n'existe pas pour l'attribut 'id' de la table 'joueur'.
Fichier SQL : création de la base de données.
Fichier SQL : requêtes des questions 1 à 4.
Fichier SQL : requêtes pour réinitialiser les tables de la base de données.

Deuxième Partie – Question 1

    def getIdtNom(self):
        return self.__idt, self.__nom

Deuxième Partie – Question 2

    def setScore(self, score=0):
        self.__sco = score

Deuxième Partie – Question 3

    j = selectJoueur(28)
    j1 = Joueur(j['id'], j['nom'], j['score'])

Deuxième Partie – Question 4

Si on exécute cette instruction une deuxième fois, les valeurs des attributs 'mot_a_trouver' et 'points' vont très probablement changer.

En effet la valeur de l'attribut 'mot_a_trouver' est choisie de façon (pseudo)aléatoire dans la liste de mots passée en argument du constructeur.

De même la valeur de l'attribut 'point' est choisie de façon (pseudo)aléatoire dans la liste 'pts' construite par compréhension dans la classe 'Mot'.

Deuxième Partie – Question 5

    def marque(self, mot):
        if mot == self.mot_a_trouver:
            return self.points
        else:
            return 0

Deuxième Partie – Question 6

    def grilleJeu(self):
        # .../...
        grille = [['' for colonne in range(3)] for ligne in range(3)]

Deuxième Partie – Question 7

    def grilleJeu(self):
        # .../...
        for ligne in range(0,3):
            for colonne in range (0,3):
                grille[ligne][colonne] = copie[(ligne * 3) + colonne]
        return grille
Code Python complet
Article sous licence << Cliquez pour plus d’informations <<