World of Warcraft

World of Warcraft est un jeu de rôle en ligne massivement multijoueur sorti en 2004. Notre objectif est de réaliser une base de données et de manipuler les données de l’API Blizzard.

Personnages

Un personnage dans World of Warcraft possède un identifiant, un nom, une date d’inscription et un niveau. Il peut choisir une classe et une race. Une classe ne possède qu’une seule race.

Le personnage Daril s’est inscrit le 20-10-2019. C’est un Paladin Humain de niveau 60. Jaco est un Moine Orc inscrit le 15-08-2005 de niveau 100. Dunbar est un Prêtre Gnome de niveau 15 inscrit le 17-07-2017. Zakyku est un Druide Gobelin inscrit le 18-09-2018 de niveau 115.

  • Enregistrer l’export, les requêtes et les modélisations suivantes sous 1-personnages sur Moodle au format SQL.
  1. Proposer une modélisation des données.
  2. Réaliser une base de données sur une instance Mysql d’IBM Cloud. https://console.bluemix.net/registration
  3. Créer les tables races et classes en fonction de la modélisation et des scripts fournis. On utilisera pour accéder à MySQL l’interface Adminer https://frebourg.ninja/adminer.php.
  4. Supprimer les colonnes races_mask et classes_mask.
  5. Créer la table personnage.
  6. Insérer les données correspondantes au texte précédent.
  7. Supprimer la race Humain. Quel problème non visible est généré ?
  8. Ajouter la contrainte d’intégrité fonctionnelle permettant de vérifier qu’une classe possède une race. Quel problème est généré ? Le résoudre.
  9. Supprimer la race Gobelin. Que se passe t il ?
  10. Réinsérer Gobelin.

Le personnage Saperlipopette est un Tauren Prêtre de niveau 50. Zigomar est un mage Pandaren de niveau 10. Sperpinette est une prêtresse Troll de niveau 105.

  1. Insérer les données correspondantes au texte précédent. Quel problème non visible est généré ? Ne pas le résoudre.
  2. Proposer une modélisation des données.
  3. Permettre en modifiant les tables l’ajout des données.
  4. Ajouter les contraintes d’intégrités fonctionnelles permettant de vérifier que la race et la classe existe.

Les personnages peuvent maintenant posséder une monture.

  1. Proposer une modélisation des données.
  2. Réaliser la table monture en corrigeant le script https://gitlab.com/cherryclass/wow7/blob/master/mounts.sql
  3. Ajouter la clef primaire à la table monture, quel problème ? Le résoudre.
  4. Permettre en modifiant une table l’ajout d’une monture.
  5. Attribuer la monture 29046 à Zakyku.
  6. Supprimer la monture 29046 de wow, la contrainte est-elle vérifiée

On souhaite maintenant que les personnages puissent posséder plusieurs montures.

  1. Proposer une modélisation des données.
  2. Permettre en ajoutant une table et en modifiant la précédente l’ajout des montures.
  3. Ajouter les contraintes d’intégrités fonctionnelles nécessaires.
  4. Attribuer une monture pour Daril, Dunbar et Jaco.
  5. Attribuer plusieurs montures à Sperpinette et Saperlipopette .
  6. Réaliser un DUMP SQL de wow et l’enregistrer sur Moodle sous 1-personnages

Factions et membres

Partie 1

On souhaite séparer les factions de Warcraft contenu dans la table Races.

  • Les modifications se feront en ligne de commande.
  • Enregistrer l’export, les requêtes et les modélisations suivantes sous 2-faction-membres sur Moodle au format SQL.
  1. Proposer une modélisation des données.
  2. Réaliser la table faction. On enregistrera son script dans un fichier sql.
  3. Insérer les données de la table.
  4. Modifier la table Race avec les bonnes données.
  5. Ajouter la contrainte d’intégrité référentielle.
  6. Supprimer une faction pour vérifier la contrainte.
  7. Ajouter les nouvelles races.
  8. Modifier le niveau de Daril par 100.
  9. Supprimer Dunbar.
  10. Ajouter les nouvelles classes

races

classes

Partie 2

On souhaite intégrer l’export de la table membre https://gitlab.com/cherryclass/wow7/blob/master/members.sql de trois guildes. On gardera la table personnage obsolète.

  1. Proposer une modélisation des données
  2. Supprimer la contrainte d’intégrité fonctionnelle permettant de vérifier qu’une classe possède une race.
  3. Modifier la base de données grâce à Adminer.
  4. Intégrer les données en gardant les mêmes champs et en ajoutant une clef primaire auto incrémentée.
  5. Ajouter les clefs étrangères nécessaires.

Classes, personnages et montures

  • Déployer la base de données sur une instance RDS d’AWS grâce à RosettaHub https://www.rosettahub.com/console/Logon.aspx. On pourra choisir MariaDB.
  • Enregistrer les requêtes suivantes sous 3-classes-personnages sur Moodle au format SQL.

Partie 1

  1. Afficher toutes les classes.
  2. Afficher la race qui possède l’id 5.
  3. Afficher le power type de la classe Mage et Chaman.
  4. Afficher les classes disponibles pour chaque races.
  5. Afficher les races disponibles pour chaque classe.
  6. Afficher les races de la horde.
  7. Afficher les races qui ne sont pas de la horde.
  8. Afficher les classes disponibles dans l’alliance.
  9. Afficher le nom des personnages classé par level croissant.
  10. Afficher le nom des différentes classes et races des personnages présents dans la base.

Partie 2

  1. Afficher le nombre de classes
  2. Afficher le nombre de races
  3. Afficher le nombre de personnages
  4. Afficher la moyenne des niveaux des personnages
  5. Afficher le nom des différentes guilde.
  6. Afficher la moyenne des niveaux des personnages qui sont supérieurs au level 15.
  7. Afficher le total des achievement_points par personnage.
  8. Afficher le total des achievement_points par guilde, trié par score le plus haut.
  9. Insérer les montures en adaptant la table. La colonne name doit être remplacée par l’id du membre correspondant au nom de la ligne 1.
    https://gitlab.com/cherryclass/wow7/blob/master/mount1.sql
    https://gitlab.com/cherryclass/wow7/blob/master/mount2.sql
    https://gitlab.com/cherryclass/wow7/blob/master/mount3.sql
  10. Afficher le nombre de monture par joueur avec le nom de celle ci et du joueur, pour ceux qui en possède au moins une.

Boss et Zones

  • Enregistrer les requêtes et les modélisations suivantes sous 4-boss-zones sur Moodle au format SQL.

Partie 1

  1. Afficher les classes qui n’ont pas de personnage.
  2. Afficher les races qui n’ont pas de joueurs.
  3. Afficher le nombre de joueur par faction
  4. Afficher le nombre de joueur par race. On n’affichera que les races qui possèdent plus de 3 joueurs.
  5. Afficher les montures qui ne sont pas attribués à des joueurs.
  6. Afficher les guildes qui n’ont pas toutes les races.
  7. Afficher les guildes qui n’ont pas toutes les classes.
  8. Afficher le nombre de monture par classe dont la faction est alliance
  9. Afficher le nombre de monture par classe dont le nombre de joueurs est supérieur à 1.
  10. Afficher les joueurs qui n’ont pas toutes les montures.
  11. Afficher les joueurs dont le lvl est inférieur à 100 et qui possède plus de 5 montures.

Partie 2

  1. Proposer une modélisation des données pour ajouter les boss et les zones.
  2. Ajouter les boss et les zones à la base de données.

https://gitlab.com/cherryclass/wow7/blob/master/boss.sql
https://gitlab.com/cherryclass/wow7/blob/master/zones.sql

  1. Ajouter une clef primaire à Zones et à Bosses. Ajouter la clef étrangère.
  2. On remarque que les données de la table zones ne sont pas de bonne qualité. On souhaite corriger ces données en supprimant les lignes dont « zones_boss_name » est null.
  3. Afficher la moyenne de santé des boss par zone en mode normal.
  4. Afficher les zones qui possèdent un nombre de joueurs
  5. Afficher le nom des boss par zone de maximum 5 joueurs
  6. Afficher le nombre de boss par zone de maximum 25 joueurs
  7. Afficher la différence moyenne de santé entre les boss en mode normal et héroïque.
  8. Afficher les boss groupés par palier de 10 niveau. (niveau 1 à 10 : boss x,x,x,x niveau 11 à 20 x,x,x)

Royaumes

  • Enregistrer les requêtes et les modélisations suivantes sous 5-royaumes sur Moodle au format SQL.
  1. Réaliser une base nommée wow-nosql sur IBM Cloud avec une instance Elasticsearch.
  2. Insérer les données json suivantes https://gitlab.com/cherryclass/wow7
  3. rechercher les montures
  4. recherches les races
  5. rechercher les joueurs Tauren
  6. insérer une nouvelle race
  7. afficher les joueurs dont la race est Troll.
  8. S’inscrire à https://dev.battle.net
  9. Récupérer les joueurs de la guildeOne Last Attempt du royaume Archimonde et intégrer ces données.
  10. Récupérer les montures du premier joueur et intégrer ces données.
  11. Récupérer les royaumes
  12. Proposer un schéma permettant d’ajouter les données à la base relationnelles
  13. Convertir ces données en SQL. https://sqlify.io/convert/json/to/sql
  14. Intégrer ces données.
  15. Raffiner les données (vérifier les champs à Null et déduire des améliorations).
  16. Modifier la base de données avec la contrainte d’intégrité nécessaire.

API Flask

Partie 1

  • Grâce à Flask, réaliser les URI suivantes et enregistrer les fichiers sous 6-api-flask-serveur sur Moodle.
    • /montures en GET qui affiche toutes les montures
    • /personnages/racesS3 en GET qui affiche le nombre de joueur par race. On n’affichera que les races qui possèdent plus de 3 joueurs.
    • personnage/:name en GET qui affiche le personnage portant le nom en paramètre.
    • /boss/:zone_id en GET qui affiche tous les boss d’une zone
    • /races en GET
    • / race/:id en POST qui permette d’insérer une nouvelle race
    • /race/:id en DELETE qui permette de supprimer une monture.
    • /classe/:id en PUT qui permette de modifier une classe
  • Déployer l’API sur une instance IBM ou AWS.

Partie 2

  • Réaliser les interfaces HTML nécessaires pour les routes. On pourra utiliser le plugin Boostrap Table et enregistrer les fichiers sous 7-api-flask-client sur Moodle.
  • Déployer sur une autre instance les interfaces.

client.html

client.js

 

2018-09-14T10:20:12+00:00By |Tags: , |

Leave A Comment