IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

Choix entre deux type de structures de tables


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 3
    Par défaut Choix entre deux type de structures de tables
    Bien le bon soir,
    débutant (totalement ) dans le monde linuxien et mysql , je "butte" sur une réflexion de construction de base dans le cadre d'un jeu multijoueurs.
    Le monde est construit et a ses propres bases et tables, mon problème se situe dans les personnages liés aux utilisateurs.
    Quel serait le mieux, sachant que les utilisateurs peuvent gérer plusieurs persos (voire une famille complète du grand père aux arrières arri... petits enfants):
    -une table de personnages avec à chaque perso créé une liaison à l'utilisateur quel qu'il soit ou
    -créer une table personnages pour chaque utilisateur...
    d'un côté la simplicité de n'avoir qu'une table facilement accessible mais je risque de me retrouver avec une très grosse tables et quid de la taille maximale des données, et de l'autre avec beaucoup de tables et une gestion d'accès plus compliqué mais plus rapide et facile quant à l'utilisateur...
    je les effectue en moteur innodb
    et franchement je ne vois pas laquelle des deux solutions serait la plus "pratique et moins risqué". Il y a peut être une règle qui limite e nombre de tables, voire la taille d'une table ou les deux ce qui me forcerait de trouver une troisième solution(j'avais pensé une base par user, mais bon... si 300 000 000 d'utilisateurs bonjour le nombre de base).
    si quelqu'un a quelques conseilles, ils seront les bienvenus, vous en remerciant par avance.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Alerion Voir le message
    Quel serait le mieux, sachant que les utilisateurs peuvent gérer plusieurs persos (voire une famille complète du grand père aux arrières arri... petits enfants):
    -une table de personnages avec à chaque perso créé une liaison à l'utilisateur quel qu'il soit ou
    -créer une table personnages pour chaque utilisateur...
    Clairement la première solution est la meilleure.
    Si ton jeu a du succès et que des dizaines de milliers de joueurs s'y inscrivent, tu aurais alors autant de tables à gérer, ce qui devient... ingérable !

    d'un côté la simplicité de n'avoir qu'une table facilement accessible mais je risque de me retrouver avec une très grosse tables et quid de la taille maximale des données,
    J'ai travaillé avec des tables de plusieurs dizaines de millions de lignes. Avant que tu arrives à ce volume, tu as largement le temps de te perfectionner en SQL et en architecture de bases de données !

    et de l'autre avec beaucoup de tables et une gestion d'accès plus compliqué mais plus rapide et facile quant à l'utilisateur...
    Pas forcément plus rapide parce que la multiplication des tables va poser d'autres problèmes au SGBD.

    je les effectue en moteur innodb
    Ca c'est un bon choix pour bénéficier des contraintes de clés étrangères.

    Deux principes généraux pour garder la performance malgré la montée en charge :
    1) Bien concevoir l'architecture des données.
    La lecture du tutoriel de SQLPro sur la modélisation Merise et les participants du forum Schéma peuvent t'y aider.

    2) Bien indexer les tables.
    Là encore, SQLPro a écrit un article sur quoi indexer.

    Bon courage !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 3
    Par défaut
    Merci beaucoup
    ok, je garde la table, je n'aurais pas pensé qu'on pouvait en mettre autant dans une table
    Merise je connaissais mais les liens sont supers, très bien expliqué, vraiment du très bon "boulot".
    bonne continuation et encore merci.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/11/2010, 10h08
  2. Identité entre deux types ?
    Par Black-Hawk dans le forum C
    Réponses: 9
    Dernier message: 12/01/2008, 04h41
  3. Jointure entre deux champs d'une même table
    Par oubli dans le forum Requêtes
    Réponses: 8
    Dernier message: 11/12/2007, 16h20
  4. Choix entre deux champs dans une requete
    Par Pico10 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 27/07/2005, 15h36
  5. Résultats erroné différence entre deux types TDateTime
    Par Alghero dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/03/2004, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo