12
votes

Nouvelle table pour chaque utilisateur?

Je veux citer une nouvelle table pour chaque nouvel utilisateur sur le site Web et je suppose qu'il y aura de nombreux utilisateurs, je suis sûr que les performances de recherche seront bonnes, mais qu'est-ce que l'entretien ??

C'est MySQL qui n'a pas de limite de nombre de tables.

Merci beaucoup.


6 commentaires

Pourquoi voudriez-vous créer une nouvelle table pour chaque utilisateur?


Collez sur une table utilisateur qui a User_ID, nom, e-mail, etc. et simplement créer une clé primaire pour votre user_id afin de pouvoir facilement rechercher un utilisateur. Si vous faites une table pour chaque utilisateur, vous vous retrouverez avec 100 tables avec seulement quelques informations dans chacune d'elles. Gaspillage d'espace et déroutant


Cela signifie également donner à l'utilisateur de base de données que l'application Web se connecte en tant que privilège "Créer une table".


@JPJP: Ce serait aussi plus lent


+1 Pour la question, donc si quelqu'un d'autre obtient la même idée, il sera capable de savoir à quel point ceci est beaucoup plus tôt ;-)


Qu'en est-il du cas où chaque utilisateur a une liste de rendez-vous? comme 50 par semaine. Si je stocke toutes les rendez-vous sur 1 table, je vais avoir une zillion depuis des mois ..


4 Réponses :


11
votes

Pourquoi voudriez-vous éventuellement faire cela? Avoir une table pour chaque chose qui a besoin d'une table et ajoutez une colonne "utilisateur". Avoir un tas de tables vs un tas de rangées ne va pas mieux rendre votre performance.


0 commentaires

5
votes

Pour vous donner une réponse directe à votre question: la maintenance réduira votre enthousiasme au même tarif que les nouveaux utilisateurs s'inscrivent pour votre site. Je ne sais pas dans quelle langue / cadre que vous utilisez pour votre site Web, mais à ce stade, il est préférable de rechercher de petits exemples dans cela. Notre avis est que dans tous les exemples que vous trouverez, chaque nouvel utilisateur obtient un enregistrement dans une table, pas une table dans la base de données.


0 commentaires

18
votes

En réalité, les tables sont également stockées dans une table. Donc, dans ce cas, vous déplaceriez la recherche dans un tableau des utilisateurs à la recherche dans les tables système pour une table.

performance et maintenance va mal subir.


0 commentaires

9
votes

Ce n'est pas une bonne idée:

  • Le nombre maximum de tables est illimité, mais le cache de table est fini de taille, les tables d'ouverture sont chères. À Myisam, la fermeture d'une table jette son keycache. La performance va sucer.
  • Lorsque vous devez modifier le schéma, vous devrez faire une seule table par utilisateur, qui sera une douleur inutile
  • La recherche de choses pour aucun utilisateur particulier n'impliquera une requête d'union horrible entre tous les tables d'utilisateurs
  • Il sera difficile de construire correctement les contraintes de clé étrangère, car vous n'aurez plus une table avec tous les identifiants de l'utilisateur en plus

    Pourquoi es-tu sûr que la performance sera bonne? L'avez-vous testé?


0 commentaires