Super-héros relationnels-objets

[30 minutes]

Modèle UML Figurines GARVEL

Question

Transformer le modèle UML en modèle relationnel-objet. On utilisera les OID et le nested model.

Solution

1
-- Figurine
2
Type typeFigurine : <designation, prix>
3
4
-- Véhicule
5
Type typeVehicule : hérite de typeFigurine <type, nb_places>
6
Vehicule de typeVehicule (#designation)
7
8
-- Repaire
9
Type typeRepaire : hérite de typeFigurine <emplacement_geographique, capacite>
10
Repaire de typeRepaire (#designation)
11
12
-- Membre
13
Type typeMembre : <nom, couleur>
14
Type listeMembres : collection de typeMembre
15
16
-- References vers Repaire
17
Type refRepaire : <fkRepaire =>o Repaire>
18
Type listeRefRepaires : collection de refRepaire
19
20
-- References vers Vehicule
21
Type refVehicule : <fkVehicule =>o Vehicule>
22
Type listeRefVehicules : collection de refVehicule
23
24
-- Personnage
25
Type typePersonnage : hérite de Figurine <identite_secrete, genre, mentor =>o Personnage, membres:listeMembres, repaires:listeRefRepaires, vehicules:listeRefVehicules>
26
Personnage de typePersonnage(#designation)
Remarque

Les types non précisés sont ceux du diagramme UML.

RemarqueHéritage

L'héritage est exclusif et la classe mère est abstraite, on choisit un héritage par les classes filles.

RemarqueAlternatives pour les associations
  • Pour l'association N:M entre Repaire et Personne, on peut choisir d'imbriquer une collection de références vers Personnage dans la relation Repaire ; ou choisir une relation Abrite avec des références vers Repaire et Personnage.

  • Pour l'association 1:N entre Véhicule et Personne, on peut choisir plus classiquement une référence depuis Vehicule vers Personnage.

Mais les requêtes demandées ci-après sont plus simples à écrire avec les choix faits ici.

Question

Donner, en SQL, la liste de tous les personnages qui sont basés au repaire "La Ratcave".

Solution

1
SELECT p.designation, p.identite_secrete
2
FROM Personnage p, TABLE(p.repaires) r
3
WHERE r.designation = 'La Ratcave' ;

Question

Donner, en SQL, la couleur des torses des personnages habitant la "GARVEL Tower", pilotant des véhicules aquatiques et ayant comme mentor Superman.

Solution

1
SELECT m.couleur
2
FROM Personnage p, TABLE(p.vehicules) v, TABLE(p.repaires) r, TABLE(p.membres) m
3
WHERE r.designation = 'GARVEL Tower'
4
AND p.mentor.designation = 'Superman'
5
AND m.nom = 'torse'
6
AND v.type = 'aquatique' ;