Exercice 1 (10 points)
Soit le diagramme de classes UML. De la mini-base de données ci-dessous
EMPLOYE
Matricule NUMBER (8)
Nom : VARCHAR (20)
Prénom VARCHAR (20)
Date Naissance Date
Salaire : NUMBER (5,2)
CONSTRUCTOR FUNCTION Employe_t()
STATIC FUNCTION Compte ()
MEMBER PROCEDURE Augmenter (aug NUMBER)
MEMBER PROCEDURE Modific()
MEMBER PROCEDURE Supprime ()
ENSEIGNANT
Rang : VARCHAR (10)
Département : VARCHAR (10)
CONSTRUCTOR FUNCTION Enseignant_t()
STATIC FUNCTION Compte ()
MEMBER PROCEDURE Augmenter (aug NUMBER)
MEMBER PROCEDURE Modifie ()
En utilisant SQL 3 :
1. Créer les types Employe_t et Enseignant_t correspondant au diagramme de classes UML
ci-dessus. Le constructeur de surcharge Employe_t prend en paramètres le nom, prénom, date
de naissance et le salaire de l'employé et le constructeur Enseignant_t prend en plus le rang et
le département. La fonction Compte retourne un nombre. Les procédures Modifie prennent
respectivement en paramètres tous les attributs des types Employe_t et Enseignant_t
2. Définir une table nommée Employe d'objets de type Employe_t
3. Implémenter les méthodes dans le corps du type Employe_t
• La méthode Compte renvoie le nombre d'employés de la table Employe
• La méthode Augmenter permet d'augmenter le salaire de l'objet employé appelant
d'un certain taux "aug" passé en paramètre.
• La méthode Modifie permet de modifier les valeurs de tous les attributs de l'objet
employé appelant.
• La méthode Supprime permet de supprimer l'objet employé appelant
4. Implémenter les méthodes dans le corps du type Enseignant t
• Surcharger la méthode Compte de manière à ne renvoyer que le nombre
d'enseignants.
• Surcharger la méthode Modifie qui permet de modifier les valeurs de tous les attributs
de l'objet enseignant appelant.
Exercice 2 (6 points)
Nous considérons la base de publications « publis » qui nous fournit des documents
JSON, comme les deux exemples ci-dessous, illustrant le contenu de la base. Vous
pourrez noter des clés pouvant être présentes ou non dans certains cas (clé "booktitle",
"cites"...), voire des données de type différents (clé "pages").
{
"id": "books/daglib/0025185", "type":"Book",
"title": "MongoDB - The Definitive Guide: Powerful and Scalable Data Storage.",
"pages":"1",
"publisher": "O'Reilly",
"year": 2010,
"authors": [ "Kristina Chodorow", "Michael Dirolf "],
"isbn": ["978-1-449-38156-1»]
}
{
"id": "conf/icod/BouzeghoubG83",
"type": "Article",
"title":"The Design of an Expert System for Database Design.", "booktitle": "ICOD-2
Workshop on New Applications of Data Bases",
"pages": { "start": 203, "end": 223 },
"year": 1983,
"url": "db/conf/icod/icod83w.html#BouzeghoubG83",
"authors": [ "Mokrane Bouzeghoub", "Georges Gardarin"],
"cites" : ["journals/tods/AstrahanBCEGGKLMMPTWW76", "books/bc/AtzeniA93",
"journals/tes/AtzeniABM82", "journals/jcss/AbiteboulB86"]
}
Exprimer les requêtes suivantes à l'aide du langage de requête MongoDB :
a) Les titres des articles commençant à la page 180 et finissant à la page 202 ;
b) le nombre de publications dont l'un des auteurs est « Toru Ishida » ;
c) les différents articles dans l'ordre décroissant de leur année de publication :
d) Modifier la page de fin à 224 et l'éditeur à Springer de la publication identifiée par
'conf/icod/BouzeghoubG83'.
e) Donnez la requête MapReduce permettant de : Pour chaque livre de type 'Phd' et
composé de chapitres (ayant l'attribut « booktitle »), d'obtenir la liste de ses chapitres
Exercice 3 (4 points)
Nous considérons la base de données de films « Movie Graph » contenant des acteurs
et des réalisateurs qui sont liés à travers les films sur lesquels ils ont collaboré.
Ci-dessous un aperçu du script de création de cette base :
CREATE (WhenHarry MetSally:Movie {title: 'When Harry Met Sally', released:
1998, tagline:' Can two friends sleep together and still love each other in the
morning?'})
CREATE (BillyC:Person {name: 'Billy Crystal', born: 1948})
CREATE (CarrieF: Person {name: 'Carrie Fisher', born: 1956})
CREATE (BrunoK: Person {name: 'Bruno Kirby', born: 1949})
CREATE(BillyC)-[:ACTED IN (roles: ['Harry Burns']}]->(WhenHarry MetSally),
(MegR)-[:ACTED IN (roles: ['Sally Albright']}]->(WhenHarry MetSally),
(CarrieF)-[:ACTED IN {roles: ['Marie']}]->(WhenHarry MetSally),
(BrunoK)-[:ACTED IN (roles: ['Jess']}]->(WhenHarry MetSally),
(RobR)-[:DIRECTED]->(WhenHarry MetSally),
(RobR)-[:PRODUCED]->(WhenHarry Met Sally),
(NoraE)-[ PRODUCED]->(WhenHarry MetSally),
(NoraE)-[WROTE]->(WhenHarry MetSally)
Exprimer les requêtes suivantes à l'aide du langage Cypher :
1) Liste des scénaristes (qui ont une relation : WROTE avec un film) des films réalisés
en 1998.
2) Liste des producteurs du film qui a pour titre « When Harry Met Sally »
3) Graphe des scénaristes-réalisateurs du même film
4) Graphe des acteurs et des réalisateurs qui ont participé ensemble à 2 films différents