JeuWeb - Crée ton jeu par navigateur
[règlé] BDD une table ou plusieurs ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [règlé] BDD une table ou plusieurs ? (/showthread.php?tid=1169)



[règlé] BDD une table ou plusieurs ? - blackduty - 10-05-2007

Hello,

J'avance petit a petit sur mon projet (faudra que je change ma signature, j'en suis vachement plus loin... au moins, 7% xD)

Bon, bref, ma question porte sur ma bdd.

J'ai actuellement trois tables qui sont susceptible d'etre regroupé.

1/ une table joueur (id, compte, mdp, chef1, chef2, chef3, chef4, escouade)
2/ une table personnage (id, compte, positionX, positionY,type de soldat, pv, pv_max, pa, pa_max, pm, pm_max, recup, recup_max, perception, perception_max, FE, FE_max, PU, PU_max, cap, cap_max, protect, protect_max, xp, xpi, pc, fuel, fuel_max, capacite, capacite_max)
3/ une table Compétence (id, +35 champs de compétence qui peut eventuellement s'allonger).

Est ce qu'il est conseillé ce les regrouper ? J'ai calculer, ma table aurait 73 champs... si ce n'est qu'un probleme pour s'y retrouver, ça ne me pose pas de probleme. Mais ma question porte plus sur les performances...

Sachant que le joueur pourra avoir plusieurs personnages qui seront dans la même escouade. A ce sujet, si vous avez une idée pour regrouper tout ça...
Une requête qui regroupe tout ceux qui ont le même nom d'escouade ?
Une table ?

Bref.

Merci d'avance Wink


RE: BDD une table ou plusieurs ? - pascal - 10-05-2007

si le joueur peut avoir plusieurs perso, alors on ne peut pas regrouper les deux tables.

pour les compétences, elles sont liées à un joueur ou à un perso? si oui, tu les integre directement à l'un ou l'autre.

d'expérience, le nombre de champs influe peu sur les performances. ce qui compte vraiment :
_ le nombre d'enregistrements dans la table
_ les index
_ les jointures

A+

Pascal


RE: BDD une table ou plusieurs ? - Roworll - 10-05-2007

35 champs pour la table compétence... ça m'étonne un peu.
Je suppose que tu as une structure du genre
Table_Perso
- Id_Perso
- ...

Table_Competence
- ID Perso
- Comp1
- Comp2
- Comp3
- ...
- Comp35

Ce ne serait pas plus approprié de faire un design du genre :

Table_Perso
- Id_Perso
- ...

Table_Perso_Comp
Id_Perso
Id Comp

Table_Comp
Id_Comp
...

Mettre toutes les compétences dans le même enregistrement ne présente un interêt que si les personnages possèdent toutes les compétences.
Dans le cas contraire, y'aura de la place gâchée.


RE: BDD une table ou plusieurs ? - Mysterarts - 10-05-2007

Exactement, j'aurais fait ce que Roworll propose...


RE: BDD une table ou plusieurs ? - blackduty - 11-05-2007

pascalje> Les compétences sont affectées a chaques perso.

Roworll> Effectivement, pour le moment, mes tables sont comme tu le dis en haut.
Par contre l'avantage de ce systeme de table, c'est que l'on a immédiatement la valeur attribué a la compétence. Et la valeur Zero est quand même utilisée Wink

Sachant que une partie de mon script de combat comportera ceci:

extrait de mes règles a écrit :Pour savoir quelle sera votre précision avec cette arme, il faudra prendre en compte la précision de base de l'arme et votre niveau de compétence dans la compétence associé avec cette arme.
Le calcul de la précision est celui là: précision = (précision de l'arme * (1 + (% de compétence [donc ma table]/100)

Du coup, pour cette table:

Citation :Table_Perso_Comp
Id_Perso
Id Comp

Il faudra rajouter je pense un champ et donc faire une requête pour réunir toute les comps du personnage dans un array. (j'aurais un tableau qui recapepette les stats donc je l'utiliserais au moins une fois.)

Citation :Table_Perso_Comp
Id_Perso
Id Comp
valeur_comp

Par contre, j'ai un peu de mal a comprendre l'intérêt de cette table:

Citation :Table_Comp
Id_Comp
...

Soyons clair, je ne dis pas que c'est bien ou mal, je cherche juste a comprendre Wink

Pour expliquer plus en détails, j'ai en gros, deux grands types de compétences.

Les compétences permanentes:
En gros, elles s'activement automatiquement lors d'une action (genre combats, déplacement etc...)
leur valeur fluctue entre 0 et 100%

Les compétences temporaires:
Elles activement un bonus temporaire.
Genre compétence Franc-tireur: Donne un bonus de précision et un malus de coup de points d'action pour un tour.
On a aussi la compétence Génie civile: Si on possède cette compétence, on peut construire des bâtiments particulier etc...
la valeur est soit 0 soit 100 (en gros, on l'a ou on l'a pas. Peut être que je devrais voir ceci avec des boléens, ça me fera un bon exercice dessus Smile)


RE: BDD une table ou plusieurs ? - OncleJames - 11-05-2007

J'ai un peu le meme style de problème mais je prefere rester sur ton modele.

Chaque joueurs possede deux perso. Il y a environs 400 joueurs

400*2*(nbr de compétence) = chiffre impressionant

voila pourquoi je suis rester sur ton modele, de plus tu met des valeurs initial comme ca a la création pas de soucis d'insertion.
Sur ton espace gestion, tu list tout les champs mysql et tu agis directement dessus, sa aide bien

Voila mon point de vue


OncleJames


RE: BDD une table ou plusieurs ? - blackduty - 12-05-2007

Désolé, je m'y perd un peu :lol:

Tu parles d'une organisation comme celle-ci (solution number 1)

Citation :Table_Perso
- Id_Perso
- ...

Table_Competence
- ID Perso
- Comp1
- Comp2
- Comp3
- ...
- Comp35

Ou bien celle là (solution number 2)

Citation :Table_Perso_Comp
Id_Perso
Id Comp
valeur_comp

Table_Perso
- Id_Perso
- ...

Ou bien solution numéro 3

Citation :Table_Perso
- Id_Perso
- ...

Table_Perso_Comp
Id_Perso
Id Comp

Table_Comp
Id_Comp
...



RE: BDD une table ou plusieurs ? - OncleJames - 12-05-2007

La première


RE: BDD une table ou plusieurs ? - blackduty - 12-05-2007

Ok Smile