Exercice 3 - Partie B · Bac Numérique et Sciences Informatiques Asie 2024 (jour 1)

Thème : Bases de données relationnelles, SGBD et langage SQL · Tiré du sujet Jour 1 (2024)

Énoncé

EXERCICE 3 (8 points)

Cet exercice porte sur la programmation Python, la programmation orientée objet, les bases de données relationnelles et les requêtes SQL.

Partie A

Une entreprise, présente sur différents sites en France, attribue à chacun de ses employés un numéro de badge unique.

Dans le tableau ci-dessous, on donne le numéro de badge, le nom, le prénom et les années de naissance et d’entrée dans l’entreprise de quelques salariés.

numéro badge · nom · prénom · année de naissance · année d’entrée

112 · LESIEUR · Isabelle · 1982 · 2005

2122 · VASSEUR · Adrien · 1962 · 1980

135 · HADJI · Hakim · 1992 · 2015

Pour chaque personne, on souhaite stocker les informations dans un objet de la classe Personne définie ci-dessous:

class Personne():

def __init__(self, num, n, p, a_naiss, a_entree):

self.num_badge = num

self.nom = n

self.prenom = p

self.annee_naissance = a_naiss

self.annee_entree = a_entree

Partie B

On utilise maintenant une base de données relationnelle. La table Personnel dont un extrait est donné ci-dessous contient toutes les données importantes sur le personnel de l'entreprise. L'attribut num_centre désigne le numéro du centre dans lequel travaille une personne.

Personnel

num_badge · nom · prenom · num_centre · annee_naiss · annee_debut

112 · LESIEUR · Isabelle · 1 · 1982 · 2005

2122 · VASSEUR · Adrien · 2 · 1962 · 1980

135 · HADJI · Hakim · 1 · 1992 · 2015

L'attribut num_badge est la clé primaire pour la table Personnel.

9.

Décrire par une phrase en français le résultat de la requête SQL suivante:

SELECT nom, prenom

FROM Personnel

WHERE num_centre = 2;

10.

Monsieur HADJI Hakim vient d'obtenir une mutation pour le centre numéro 3. Donner la requête permettant de modifier son numéro de centre sachant que son numéro de badge est 135.

On souhaite proposer plus d'informations sur les différents centres de l'entreprise. Pour cela, on crée une deuxième table Centre avec les attributs suivants:

num de type INT;

nom de type TEXT;

num_tel de type TEXT;

ville de type TEXT.

Table Centre

num · nom · num_tel · ville

1 · Normandie · 0450646859 · Caen

2 · PACA · 0450646859 · Marseille

11.

Expliquer l'intérêt d'utiliser deux tables ( Personnel et Centre) au lieu de regrouper toutes les informations dans une seule table.

12.

Expliquer comment les tables Centre et Personnel sont mises en relation.

13.

Écrire une requête permettant d'avoir les noms des personnes travaillant dans le centre de Lille et ayant été embauchées entre 2015 (inclus) et 2020 (inclus).

Le centre de Normandie vient d'être fermé, mais les personnes de ce centre n'ont pas encore été affectées dans leur nouveau centre. On souhaite mettre à jour la table Centre en premier à l'aide de la requête suivante.

DELETE *

FROM Centre

WHERE nom = 'Normandie';

14.

Expliquer pourquoi cette requête a renvoyé une erreur.

Énoncé: Exercice 3 - Partie B · Bac Numérique et Sciences Informatiques Asie 2024 (jour 1)

Corrigé

Corrigé proposé par AprenAI (non officiel)

9. Décrire par une phrase en français le résultat de la requête SQL suivante :

Réponse : Cette requête renvoie le nom et le prénom de toutes les personnes travaillant dans le centre numéro 2 (dans l'extrait donné, elle renvoie la ligne VASSEUR Adrien).

10. Donner la requête permettant de modifier son numéro de centre sachant que son numéro de badge est 135.

Réponse : ```sql UPDATE Personnel SET num_centre = 3 WHERE num_badge = 135; ```

11. Expliquer l'intérêt d'utiliser deux tables (Personnel et Centre) au lieu de regrouper toutes les informations dans une seule table.

Réponse : Séparer les informations en deux tables évite la redondance des données (ne pas dupliquer le nom, le numéro de téléphone et la ville du centre pour chaque employé), réduit l'espace de stockage et évite les anomalies de mise à jour et d'incohérence.

Les réponses des 3 questions restantes et l’explication pas à pas sont réservées aux membres Premium. Premium

Résous-le ici : correction automatique, indices et corrigé détaillé.

‹ Exercice 3 - Partie A : Bases de données relation… · Asie 2025 (jour 2) · Exercice 3 - Parties A et B · Asie 2024 (jour 2) ›

Plus d’exercices de Bases de données relationnelles, SGBD et langage SQL