Skip to content

Latest commit

 

History

History
75 lines (55 loc) · 2.62 KB

File metadata and controls

75 lines (55 loc) · 2.62 KB

Monstermon — Conception et exploitation d'une base de données MySQL

Projet de modélisation et d'exploitation d'une base de données relationnelle pour un RPG multijoueur fictif. Réalisé dans le cadre du module TIC-DAT3 (Bachelor).

Stack

  • MySQL / MariaDB — SGBD
  • Python — automatisation des scripts SQL

Structure du projet

.
├── schema_monstermon.png              # Modèle entité-association v1
├── schema_monstermon-V2.png           # Modèle entité-association v2 (final)
├── creation_base_donnees_monstermon.sql  # Création du schéma
├── generation.sql                     # Peuplement (données initiales + générées)
├── destruction.sql                    # Suppression des tables dans l'ordre
├── etape3.sql                         # Requêtes d'audit et statistiques
├── etape4.sql                         # Vues, procédures stockées, pagination
└── main.py                            # CLI Python pour piloter les scripts SQL

Modèle de données

Le jeu est composé des entités suivantes : Monster, Dresseur, Espèce, Type, Arène, Équipement, Événement, Combat, Quête, Magasin, Vente.

Points notables du schéma :

  • Auto-référence sur Dresseur (relation professeur / apprenti)
  • Contraintes CHECK sur les attributs numériques (niveau, points de vie, puissance)
  • Gestion des combats hors événement
  • Unicité des équipements par arène

Lancement

Prérequis

pip install mysql-connector-python faker

Variables d'environnement à définir :

export DB_HOST=localhost
export DB_USER=root
export DB_PASSWORD=your_password

Commandes

python main.py c   # Création du schéma
python main.py p   # Peuplement
python main.py d   # Destruction

Requêtes SQL (étape 3)

9 requêtes imposées couvrant :

  • Jointures multi-tables (JOIN, LEFT JOIN)
  • Agrégations (COUNT, SUM, GROUP BY, HAVING)
  • Filtres combinés (WHERE, BETWEEN, AND)
  • Tri et classement (ORDER BY)
  • Gestion des valeurs nulles (COALESCE / IFNULL)

5 requêtes libres complémentaires utilisant SUM, MIN, MAX, GROUP BY, HAVING.

Optimisations (étape 4)

  • Pagination sur la liste des combats
  • Vue StatistiqueMonsterQuete — monsters et leurs quêtes
  • Vue StatistiqueEvenement — événements avec participants, équipements et combats
  • Procédure stockée MonsterType(type) — liste des monsters par type
  • Procédure stockée MiseAJourMonster — mise à jour des caractéristiques d'un monster avec affichage du résultat