Exercice 3 - Partie A · Bac Numérique et Sciences Informatiques Amérique du Nord 2026 (jour 1)

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

Énoncé

Partie B

On considère une route perpendiculaire à la mer et des immeubles construits le long de cette route. On dit qu'un immeuble, d'un certain nombre d'étages, bénéficie d'une vue sur la mer lorsque les immeubles situés entre lui et la mer ont moins d'étages que lui. On souhaite que les immeubles de la rue aient tous au moins un appartement avec vue sur mer en détruisant le moins d'immeubles possible.

Pour résoudre ce problème, on considère la liste des nombres d'étages de chaque immeuble de cette rue, en partant de la mer: il s'agit de trouver ce qu'on appelle une sous-séquence strictement croissante de longueur maximale de cette liste.

Une sous-séquence d'une liste est une suite d'éléments obtenue en supprimant certains éléments, éventuellement aucun, de la liste d'origine sans changer l'ordre des éléments restants.

Exemples: pour la liste L1 = [10, 22, 9, 33, 21, 50, 41, 60], les listes [22, 9, 50], [10, 22] ou [33] sont des sous-séquences.

La longueur d'une sous-séquence est son nombre d'éléments.

On appelle sous-séquence strictement croissante d'une liste une sous-séquence telle que chaque élément est strictement supérieur au précédent.

Exemples: pour la liste L1 précédente,

[10] est une sous-séquence strictement croissante de longueur 1;

[9, 33] est une sous-séquence strictement croissante de longueur 2;

[10, 22, 33, 50, 60] est une sous-séquence strictement croissante de longueur maximale de L1; elle est de longueur 5.

Pour les questions suivantes, on définit la liste L2 = [3, 1, 8, 2, 5].

Exercice 3 (8 points)

Cet exercice porte sur la récursivité, la programmation dynamique et les bases de données.

Les deux parties de l'exercice sont indépendantes.

Partie A

Dans cette partie, on s'intéresse à la gestion des immeubles par une agence immobilière.

On pourra utiliser les clauses du langage SQL pour:

construire des requêtes d'interrogation à l'aide de SELECT, FROM, WHERE (avec les opérateurs logiques AND et OR), JOIN... ON;

construire des requêtes d'insertion et de mise à jour à l'aide de UPDATE, INSERT et DELETE;

affiner les recherches à l'aide de DISTINCT et ORDER BY.

On considère une base de données composée des deux tables suivantes:

immeuble:

id_immeuble est un numéro identifiant l'immeuble;

nb_etage_immeuble est le nombre d'étages de l'immeuble;

numero_immeuble est le numéro de l'immeuble dans la rue;

rue_immeuble est le nom de la rue dans laquelle se trouve l'immeuble.

appartement:

id_appart est un numéro identifiant l'appartement;

etage_appart est l'étage où se trouve l'appartement;

prix_appart est le prix de l'appartement;

id_immeuble est le numéro de l'identifiant de l'immeuble dans lequel se trouve l'appartement.

Le schéma relationnel de la base de données est donné en figure 1, avec la convention que les attributs formant une clé primaire sont soulignés tandis que ceux d'une clé étrangère sont précédés d'un croisillon (symbole #) avec une flèche vers l'attribut référencé.

Dans toute la suite, pour simplifier, l'appartement d'identifiant 603 sera désigné simplement par « appartement 603 » et l'immeuble d'identifiant 16 sera désigné par « immeuble 16 ».

1.

Expliquer pourquoi le numéro d'un immeuble dans la rue n'a pas été choisi comme clé primaire de la relation immeuble.

2.

Donner une requête qui renvoie les identifiants des immeubles de la rue 'la mer' ordonnés dans l'ordre croissant d'identifiants.

3.

Donner une requête qui renvoie les identifiants des appartements de l'immeuble 16 et qui se trouvent au moins au 5e étage.

L'immeuble 16 vient d'être détruit. On souhaite effacer les données concernant cet immeuble. On commence par la requête suivante:

DELETE FROM immeuble WHERE id_immeuble = 16;

4.

Expliquer pourquoi cette requête risque de rompre l'intégrité de la base de données.

Suite à la construction d'un immeuble, on souhaite mettre à jour la table immeuble.

5.

Donner une requête qui ajoute un immeuble de 6 étages, situé au numéro 13 de la rue 'Turing' en lui conférant l'identifiant 140.

Suite à la démolition d'un immeuble, l'appartement 603 a maintenant la vue sur la mer et son prix a doublé.

6.

Donner une requête qui modifie en conséquence le prix de cet appartement.

La fonction d'agrégation MAX permet d'obtenir la plus grande valeur d'un attribut.

Par exemple, la requête suivante renvoie le nombre maximal d'étages des immeubles dont l'identifiant est inférieur ou égal à 23:

SELECT MAX(nb_etage_immeuble) FROM immeuble

WHERE id_immeuble <= 23;

7.

Donner une requête qui renvoie le prix maximal d'un appartement situé dans un immeuble de la rue 'la mer'.

Énoncé: Exercice 3 - Partie A · Bac Numérique et Sciences Informatiques Amérique du Nord 2026 (jour 1)

Corrigé

Corrigé proposé par AprenAI (non officiel)

1. Expliquer pourquoi le numéro d'un immeuble dans la rue n'a pas été choisi comme clé primaire de la relation immeuble.

Réponse : Le numéro dans la rue ne permet pas d'identifier un immeuble de façon unique, car plusieurs immeubles situés dans des rues différentes peuvent avoir le même numéro.

2. Donner une requête qui renvoie les identifiants des immeubles de la rue 'la mer' ordonnés dans l'ordre croissant d'identifiants.

Réponse : ```sql SELECT id_immeuble FROM immeuble WHERE rue_immeuble = 'la mer' ORDER BY id_immeuble; ```

3. Donner une requête qui renvoie les identifiants des appartements de l'immeuble 16 et qui se trouvent au moins au 5e étage.

Réponse : ```sql SELECT id_appart FROM appartement WHERE id_immeuble = 16 AND etage_appart >= 5; ```

4. Expliquer pourquoi cette requête risque de rompre l'intégrité de la base de données.

Réponse : Cette requête risque de rompre la contrainte d'intégrité référentielle : si des appartements sont rattachés à cet immeuble (avec id_immeuble = 16), ils référenceraient un immeuble qui n'existe plus.

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 - Bases de données relationnelles et S… · Amérique du Nord 2026 (jour 2) ›

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