Bonjour,

dans mon projet j'ai une liste de plus de 800 item et un liste de joueur qui s'inscrive sur mon site. L'onjectif et que chaque joueur rentre les items dans la liste qu'il possede pour savoir lesquel il lui reste a faire et j'aimerais savoir comment je doit construire mes table.

Je dois faire une table avec les utilisateurs et une table avec les items et les relier ensemble ou alors dans la table item il doit y avoir une colone pour chaque joueur qu'il s'ajoute à la table au moment de l'inscription dans laquel sera integrer si le joueur possede l'item ou non?

Merci d'avance

9 réponses


quenti77
Réponse acceptée

Et franchement 100 000 lignes c'est rien du tout pour une base de données. Dans le monde pro on atteignait largement des table de plusieurs millions de lignes. Avec les bons index il y a aucun soucis à ce faire (sauf si ton serveur est une machine pourri avec un vieux disque et pas beaucoup de ram :D )

PS: Je pense même que tu peux aller facilement sans trop de soucis au max d'un UNSIGNED INT (soit 4 294 967 295 de ligne). Le UNSIGNED BIGINT étant de 18,4 milliard de milliard ^^

Bonsoir.
Il est largement préférable que tu crées deux tables dont l'une pour les utilisateurs et une autre pour les items, puis une table de jointure, du genre :

  • items_users
    • item_id
    • user_id

De cette manière, lorsqu'un utilisateur ajoute un item, tu crées un nouvel enregistrement dans la table __items_users__ avec l'identifiant de l'utilisateur et celui de l'item, il te suffira par la suite de faire une requête sur cette table pour récupérer les identifiants des items pour l'utilisateur.

Merci pour ta reponse donc si je comprend,

je fait ma table item avec les caracteristique des chacun de mes items de meme avec ma table joueur et pour ce qui est de la table items_users il ajoute une lignes a chaque chaque items entré avec comme info l'id de l'item et celui du joueur?

Si Oui cela pose t'il un probleme dans le cas d'un grand nombre de ligne dans la table?
Par exemple j'ai actuellement environ 20 personne qui son sur un autre system qui a des lag du coup si les 20 personne rentres pour les 800 item le nombre de plan qu'il possede sur le nombre necessaire pour le debloquer cela fait 800x20 cela fait 16 000 ligne créé.
Sachant que l'objectif et de ne pas le limiter uniquement a mon clan mais le rendre accessible a d'autres donc les ligne pourais se multiplier et vite monter autour des 100 000.

Merci

je fait ma table item avec les caracteristique des chacun de mes items de meme avec ma table joueur et pour ce qui est de la table items_users il ajoute une lignes a chaque chaque items entré avec comme info l'id de l'item et celui du joueur?

Correct.

16 000 ligne créé

Ce n'est pas un problème puisque de toute manière tu ne vas jamais faire une requête pour récupérer 16.000 enregistrements d'un coup, c'est également valable pour les 800 items qu'un utilisateur pourrait posséder, dans le sens où tu aurais du mal à faire un affichage correct pour l'utilisateur de ces 800 items, tu utiliseras donc plutôt un système de pagination de manière à ne les récupérer et les afficher qu'en parties (groupes).

Sachant que l'objectif et de ne pas le limiter uniquement a mon clan mais le rendre accessible a d'autres donc les ligne pourais se multiplier et vite monter autour des 100 000.

Je ne vois pas pourquoi dans ce cas là le nombre d'enregistrements augmenterait et se multiplierait, ce n'est pas parce que dans la colonne user_id tu y définirait l'identifiant d'un utilisateur/joueur qu'il serait le seul à pouvoir avoir accès à ses enregistrements.
Si un utilisateur/joueur à 800 items le nombre d'enregistrements le concernant dans la table
items_users
ne changera pas, que la requête SQL soit effectuée pour le lui afficher à lui ou à quelqu'un d'autre.

tu veux dire créé une nouvelle table a chaque création de joueur qui fait le lien entre lui est les items?

tu veux dire créé une nouvelle table a chaque création de joueur qui fait le lien entre lui est les items?

Je n'ai jamais parlé de créer une table en plus des tables users, items et __items_users__.

dacord donc les 100 000 car les nouveaux joueurs qui s'inscriveron rentreron leur plan aussi.

dacord donc les 100 000 car les nouveaux joueurs qui s'inscriveron rentreron leur plan aussi.

Je ne te suis vraiment pas là, je ne vois pas pourquoi le nombre d'enregistrements de la table __items_users passerait de 16.000 à 100.000, juste parce que tu voudrais que les enregistrements de la table puissent être accessibles à d'autres utilisateurs que celui concerné.
Au passage, je ne vois pas pourquoi tu as posté ton sujet dans le forum
PHP, alors que ton sujet et les questions qui lui sont lié portent exclusivement sur la structure de ta base de données, il devrait plutôt se situer dans le forum MySQL__.

Oui effectivement je me suis tromper d'emplacement.

Les 16 000 c'est car pour le moment j'ai 20 personne sur mon tableur mais l'objectif de le faire en site et de pouvoir l'etendre a d'autre joueur donc les autres joueur pourez entrer leur item et donc a chaque joueur en plus qui rentre ses item cela rajoute des ligne du coup cela montera vite au alentour des 100 000 je pense.