MP*1 et MP*2 — Sainte-Geneviève

CCMP 2020 — Images de vagues et de structures

Extrait verbatim de : CCMP 2020 — Partie I.a Chargement d'un modèle 3D à partir d'une base de données

← Toutes les années

Contexte et schéma de la base

On souhaite importer, dans Python, le modèle d’un bateau à moteur, élaboré préalablement. Ce modèle définit plusieurs maillages élémentaires (coque, bouée, échelle, moteur, etc.). Le fichier contenant ce modèle est une base de données relationnelle. Son schéma détaillé ci-dessous est illustré en figure 3 :

  • relation maillages_bateau : ensemble des maillages. Un maillage possède un identifiant (entier) et un nom (chaîne de caractères) :
maillages_bateau(id,nom)
  • relation faces : ensemble des facettes du modèle. Chaque facette est définie par un numéro unique, l’identifiant du maillage auquel elle appartient ainsi que les identifiants des sommets qui la composent. Tous sont des entiers.
faces(numero,maillage,s1,s2,s3)
  • relation sommets : liste des sommets du modèle. Chaque sommet est défini par un identifiant (entier) et ses coordonnées dans l’espace par rapport au repère principal de la scène (flottant) :
sommets(id,x,y,z)
Table maillages_bateau :
id nom
1 coque
2 bouée
3 échelle
4 moteur
Table faces :
numero maillage s1 s2 s3
1 3 1 2 3
2 3 2 4 3
3 2 3 12 5
Table sommets :
id x y z
1 0.0 0.0 0.0
2 1.0 0.0 0.0
3 0.0 1.0 0.0
Figure 3 – Exemples des relations de la base de données.

Questions

Q1. Proposez une requête SQL permettant de compter le nombre de maillages que contient le modèle du bateau.
Q2. Proposez une requête SQL permettant de récupérer la liste des numéros des facettes (numero) du maillage nommé « gouvernail ».

Q3. Expliquez ce que renvoie la requête SQL suivante :

SELECT (MAX(x)-MIN(x))
FROM sommets AS s JOIN faces AS f JOIN  maillages_bateau AS m
ON (s.id=f.s1 OR s.id=f.s2 OR s.id=f.s3) AND f.maillage=m.id
WHERE m.nom="coque"