08-12-2012, 03:49 PM
Dans ce cas tu as besoin d'une structure a 3 tables telles que :
Ici, on utilise la table
Cette table contient les colonnes utiles à tous les équipements, même si certaines colonnes ne sont pas utiles à certains équipement. Ici, la colonne
La dernière table sert à indiquer les objets possédés par chaque joueur, et la colonne
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.
+----+--------+---------+----------+
| 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 disposedes 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.