JeuWeb - Crée ton jeu par navigateur

Version complète : [Résolu] Ma base de donnée est-elle correcte ?
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Bonjour à tous,

je me remet à la prog et je développe un petit jeu de fight entre joueur , ou chacun posséde différentes arme, armures...

J'ai pensais a une bdd du type

joueurs
id pseudo... armes botte
1 admin epée1 botte1


id-botte -- nom --- id-joueur -- caracteristique ----- defense ---prix
10 --- botte1 -- 1 -- botte mystique --- 12 -- 5

Ca le fait comme ca ? Merci :langue2:
Non, ce n'est pas bon. Tu ne dois pas avoir l'id du joueur dans la table des bottes puisque tu as l'id de la botte dans la table des joueurs.

Voilà une meilleure structure :


+----+--------+---------+----------+
| joueurs |
+----+--------+---------+----------+
| id | nom | arme_id | botte_id |
+----+--------+---------+----------+
| 1 | Corwin | 1 | 2 |
| 2 | Caine | 2 | 2 |
+----+--------+---------+----------+
+----+-------------+-----------+------+
| armes |
+----+-------------+-----------+------+
| id | nom | puissance | prix |
+----+-------------+-----------+------+
| 1 | Grayswandir | 100 | 1000 |
| 2 | Epée courte | 30 | 150 |
+----+-------------+-----------+------+
+----+----------------+------------+----------+------+
| bottes |
+----+----------------+------------+----------+------+
| id | nom | protection | regles | prix |
+----+----------------+------------+----------+------+
| 1 | Chaussons | 0 | | 10 |
| 2 | Bottes en cuir | 100 | mystique | 150 |
+----+----------------+------------+----------+------+
Salut,

Il faut essayer d'éviter les redondances. La défense et le prix peuvent-ils varier ? et si oui, les changements peuvent-ils être calculés simplement ? Cela dépend aussi de ton système d'équipement.

Il te faudrait minimum 3 tables
- joueurs
- equipements
- joueurs_equipements

Cordialement

Mighty

Edit : Trop rapide Sephi
@Sephi-chan: Ce ne serait pas encore mieux de ne faire qu'une seule table "objets" en regroupant armes et bottes ?
@ Mighty : le modèle a 3 tables me semble uniquement pertinent si l'on peut posséder plusieurs objets (et en équiper seulement un par emplacement) ou bien si l'on peut personnaliser les objets. Mais c'est effectivement l'approche la plus flexible.

@ Djidi : Clairement. Smile
Il y aura un système d'inventaire, donc oui on pourra posséder plusieurs objet, mais être equipé que d'un seul. 3 tables sont privilégiés donc?
Merci
Dans ce cas tu as besoin d'une structure a 3 tables telles que :


+----+--------+---------+----------+
| joueurs |
+----+--------+---------+----------+
| id | nom | arme_id | botte_id |
+----+--------+---------+----------+
| 1 | Corwin | 1 | 2 |
| 2 | Caine | 2 | 2 |
+----+--------+---------+----------+
+----+-------+----------------+-----------+------------+----------+------+
| equipements |
+----+-------+----------------+-----------+------------+----------+------+
| id | type | nom | puissance | protection | regles | prix |
+----+-------+----------------+-----------+------------+----------+------+
| 1 | arme | Grayswandir | 100 | | | 1000 |
| 2 | arme | Epée courte | 30 | | | 150 |
| 3 | botte | Chaussons | | 0 | | 10 |
| 4 | botte | Bottes en cuir | | 100 | mystique | 150 |
+----+-------+----------------+-----------+------------+----------+------+
+-----+-----------+---------------+--------+
| equipements_joueurs |
+-----+-----------+---------------+--------+
| id | joueur_id | equipement_id | equipe |
+-----+-----------+---------------+--------+
| 1 | 1 | 4 | oui |
| 2 | 1 | 3 | non |
| 3 | 2 | 4 | oui |
+-----+-----------+---------------+--------+

Ici, on utilise la table equipements pour stocker tous les équipements. La colonne type permet de les distinguer.

Cette table contient les colonnes utiles à tous les équipements, même si certaines colonnes ne sont pas utiles à certains équipement. Ici, la colonne puissance ne sert à rien pour une botte, donc on la laisse vide (valeur NULL).

La dernière table sert à indiquer les objets possédés par chaque joueur, et la colonne equipe permet de savoir si un objet est équipé ou non. Ici, le joueur 1 dispose
des objets 4 (qui est équipé) et 3 (qui n'est pas équipé). Le joueur 2 dispose seulement de l'objet 4 (qui est équipé).

L'écriture des requêtes SQL est un peu plus délicate avec cette approche, mais c'est a priori ce que tu peux avoir de mieux.
Niquel c'est exactement ce que je recherchais, si on possedes bcp d'objets, ca serait plus claire d'avoir une tables pour chaques types d'equipements , ou c'est plus lourd ?
Avoir une table pour chaque type d'équipement n'apporterait rien et alourdirait le volume de code et le temps d'exécution (puisqu'on ne pourrait plus récupérer l'ensemble de l'équipement d'un personnage d'une seule requête).
Ok tu m'as convaincu ^^
Merci !