JeuWeb - Crée ton jeu par navigateur
Organisation de la BDD - 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 : Organisation de la BDD (/showthread.php?tid=2661)

Pages : 1 2


Organisation de la BDD - Arathor - 08-06-2008

Bonjour,
Je suis actuellement en train de réfléchir à une nouvelle organisation de ma base de donnée (qui avait été faite plutôt à l'arrache je dois dire), et je galère un peut... Je sais qu'il me manque quelques notions en SQL (j'ai simplement appris les bases sur le SDZ ainsi que les jointures) mais je c'est ce qu'il est possible de faire (en théorie du moins ^^).
Donc, dans mon jeu j'ai tout d'abord des informations sur les joueurs, je dois donc avoir une table contenant l'ID, le pseudo, le mot de passe, l'adresse mail, le nombre de points etc... jusqu'ici tout vas bien.
Au fur et à mesure que les joueurs gagnent des points, ceux-ci vont être amener à coloniser de nouvelles terres (un peut comme dans ogame, pour donner un exemple que tout le monde connait, sauf que mon jeu se passe plutôt vers l'époque coloniale...). je doit donc avoir une table colonie, qui contiendra un champ "pseudo du joueur à qui la colonie appartient", "nom de la colonie", "numéro de la colonie" (puisque chaque joueur pourra en avoir plusieurs, j'aurais besoin de ce champ pour mieux les repérer) etc... sans oublier un champ pour chaque ressources (une vingtaine en tout) et de même pour chaque bâtiment (une cinquantaine). :wow:
Donc voila, vaut-il mieux séparer tout ça en plusieurs table que je mettrais en relation avec les jointures, ou bien je laisse tout ça dans une grande table, ou bien ai-je tout simplement visé trop grand ?
Enfin, puisque les joueurs pourront avoir plusieurs colonies, ma table risque d'être "un peut" surcharger non ?
Voila, j'ai bien besoin de vos conseils ^^


RE: Organisation de la BDD - Sephi-Chan - 08-06-2008

Si ça peut te rassurer, tu n'as pas visé trop grand.

Ce qu'il faut fixer, pour réaliser tes tables, ce sont les relations.
  • Un joueur peut avoir 0, n colonies (qui admet 1 propriétaire) ;
  • Une colonie peut contenir 1, n ressources (qui admet 0, n propriétaires) ;

Voici par exemple une possibilité : tu as donc une table joueur, une table colonie (qui contient l'id du joueur qui la possède, et pas son nom) et une table ressource (qui a une id) qui contient les différentes ressources de ton jeu. Ensuite, tu as une table de liaison colonie_a_ressource, qui donne l'id de la colonie, l'id de la ressource et les informations sur cette parcelle de cette ressource de ce territoire.

Ainsi, tu as autant d'entrées dans ta table de liaison que de parcelles de ressources sur tes territoires.

C'est le système que j'utilise sur Seelies et qui fonctionne vraiment bien. Smile


Sephi-Chan


RE: Organisation de la BDD - keke - 09-06-2008

coucou, l'idée d'avoir 20 ressources n'est pas un problème en soit, mais reste à appréhender. 20 ressources maintenant, ok ? mais demain ? 30, 50 ? 220 ???

Table utilisateur
-id_utilisateur
-nom_utilisateur

Table type_ressource
-id_type_ressource
-nom_ressource

Table Colonie
-id_colonie
-id_utilisateur_proprietaire
-nom_colonie

Table ressource_colonie
-id_colonie
-id_type_ressource
-nb_ressource


De cette manière, la table qui va prendre en volume, c'est la table ressource_colonie. Cependant dans cette table il n'y a que des valeurs numériques (des id et des nombre) ce qui en définitive ne prend pas trop de place.
De cette manière, tu peux commencer ton Dév avec 2 à 3 ressources, puis tu augmentes en fonction de ton temps, des dessins que tu fais, etc.

salut !
Kéké.
PS : comme le dit Sephi, il faut faire des jointures sur des ID, et non pas sur un login. Ceci afin d'accélérer les requêtes SQL et éviter des blagues de type confusion entre ... "toto" et "toto " si tu as oublier de blinder ton code.


RE: Organisation de la BDD - Arathor - 09-06-2008

Merci bien pour vos reponses !
je n'aurais jamais penser à une solution pareille, mais ça me semble convaincant. Juste une petite question pour être sur d'avoir bien compris : la table ressource_colonie contiendra bien un nombre d'entrée pour chaque colonie égal au nombre de ressources présentes sur celle ci ?


RE: Organisation de la BDD - Sephi-Chan - 09-06-2008

Tu auras une entrée pour chaque ressource présente sur la colonie, et cela pour chaque colonie.


RE: Organisation de la BDD - keke - 10-06-2008

Donc un nombre ( compris entre 1 et 20) X le nombre de colonie.

En fait tu as 2 possibilités :
- tu peux considérer que si tu n'as pas de champs dans cette base pour une colonie, c'est que tu n'as pas de ressource de ce type ^^.
- tu peux sinon, obliger à insérer une ressource à 0. Ca peut faciliter ton code, mais grossir ta bdd ... c'est donc un choix qui dépend de tes compétences techniques et de l'objectif à long terme de ton jeu.

kéké.


RE: Organisation de la BDD - Sephi-Chan - 10-06-2008

Je pense que mettre des entrées à 0 est un mauvais choix car c'est se priver de la souplesse des jointures. Si sa difficulté est d'ordre technique, on pourra l'aider sur ce point. Smile


RE: Organisation de la BDD - keke - 10-06-2008

Je suis de ton avis sur le fond Sephi-chan ^^ Mais ca ne reste qu'un point de vu. Je ne mettrais pas des entrées à 0 non plus, mais je ne peux pas priver le monde entier de savoir qu'il existe plusieurs manières de voir les choses, et que ces 2 points de vue ont aussi des avantages.

Dans l'idée Arathor, tu comprendras donc la solution que l'on t'encourage à suivre.

kéké.
PS : tout l'inverse de Voltaire en sommes ^^
"Je ne suis pas d'accord avec ce que vous dites, mais je me battrai pour que vous ayez le droit de le dire."

Ben là, c'est "Je suis d'accord avec vous, mais je ferais en sorte que vous ayez le choix de faire comme il vous plait ^^)


RE: Organisation de la BDD - Arathor - 10-06-2008

Merci beaucoup pour votre aide à tout les deux !
Effectivement, je vais devoir faire en sorte que si une ressource n'est pas présente sur une colonie il n'y ai pas d'entrée correspondante, car le fait qu'une ressource ne soit pas presente risque d'être asser fréquent.
Bon, mais pour l'instant je doit attendre que PhpMyAdmin soit de nouveau accessible chez free-h Sad


RE: Organisation de la BDD - Arathor - 11-06-2008

J'ai fait un petit schémas pour réorganiser tout ça, parce que je finissais par m'y perdre moi dans toutes ces relations...
Voilà ce que ça donne :

[Image: bddkj1.jpg]

Juste une petite chose concernant la table unités_cargaison. Tout d'abord, la table armée regroupe plusieurs unités (même principe que pour les ressources sur les colonies) Dans la table unités j'ai la liste de toutes les unités disponibles ainsi que les navires. Ceux-ci peuvent d'ailleurs transporter des unités ou des ressources, j'ai donc un champs numero_table qui vaudra par exemple 0 si on transporte une unité et 1 si ce sont des ressources, puis un champ ID_cargaison qui comprend l'ID soit de la ressource, soit de l'unité.
Voila, est-ce que sa vous parait convaincant ?