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.
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. 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. 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 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 : 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 ? |