Bonjour,
pour un petit jeu que je créé, je planche actuellement sur un MLD qui me servira à créer une BDD PostGreSQL par la suite.
Le principe de mon jeu est relativement simple. En voici les grandes lignes :
il consistera à pouvoir permettre à un joueur de posséder des planètes lesquelles planètes lui permettront de pouvoir construire des vaisseaux lesquels vaisseaux lui permettront d'aller piller les planètes des autres joueurs
C'est un "ogame-like" pour ceux qui connaissent ogame
Voici la partie de mon MLD sur laquelle j'ai 2 questions :
Tout d'abord, mon jeu est divisé en galaxies, systèmes solaires et positions dans le système solaire. Par exemple la coordonnée [1:1:1] signifie galaxie->1, système solaire->1 et position->1.
Cependant pour chaque coordonnée distinctes il existe en fait 3 emplacements possibles. Un emplacement pour la planète, un emplacement pour une éventuelle lune et un emplacement pour un éventuel champs de ruines (CDR).
Pour modéliser ceci (les 3 emplacements), j'ai essayé d'utiliser l'héritage en créer une table mère COORDONNEES stockant uniquement les coordonnées d'une planète ou d'une lune ou d'un CDR. La table CARACTERISTIQUES hérite de la table COORDONNEES et est la table parente des tables PLANETES et LUNES. Elle modélise les informations correspondant aux noms des planètes et des lunes ainsi que la grosseur de celle ci (champs case). La table CDR hérite elle directement de la table COORDONNEES car un CDR ne possède ni nom ni grosseur. Ma modélisation vous semble t-elle correcte ? L'héritage induit des relations 1-1 inter tables je pense que cela est normal mais je voudrais en avoir confirmation ?
Pour ce qui est de la table FLOTTES maintenant, elle modélise pour une planète ou une lune le nombre de vaisseaux (et leurs types) disponible (un CDR ne peut pas avoir de flotte). J'ai pensé à 2 solutions.
1) soit créer 2 tables FLOTTES_PLANETES et FLOTTES_LUNES
2) soit créer une seule table FLOTTE où un des champs planete_id ou lune_id sera NULL afin de connaitre la provenance de la flotte.
Pour le moment j'ai opté pour la solution 2 qui me semble plus meilleure car sinon cela complexifie les relations inter tables entre FLOTTES_PLANETES, FLOTTES_LUNES et les autres tables non exposées sur mon MLD. Je trouve pourtant la solution de mettre un NULL sur chaque enregistrement un peu "sale" et j'aimerais avoir votre avis ? Comment modéliseriez vous cela ?
Merci beaucoup
Partager