2010-04-03 6 views
0

Je suis requis de travailler sur un projet php qui nécessite la base de données pour répondre à plusieurs utilisateurs. Généralement, l'idée est similaire à ce qu'ils ont pour carbonmade ou basecamp, ou même wordpress mu. Ils s'adressent à plusieurs utilisateurs, qui sont également propriétaires de leurs comptes. Et s'ils devaient annuler/résilier leur compte, tout contenu sur les pages/bases de données serait supprimé.Conception de base de données pour plusieurs utilisateurs site

Je ne suis pas tout à fait sûr comment devrais-je concevoir la base de données? Devrait-il être:

  • tables séparées pour compte utilisateur
  • bases de données distinctes pour compte utilisateur
  • ou autrement?

Veuillez me conseiller pour la meilleure approche à ce problème. Merci beaucoup.

Répondre

1

Combien d'utilisateurs parlons-nous?

Offhand, j'aime l'idée d'avoir une base de données séparée pour chaque compte d'utilisateur. Il y a de nombreux avantages:

  • Vous pouvez garder le schéma (et votre code d'application) simple,
  • Si un utilisateur a toujours voulu une copie de leur base de données vous pouvez simplement le jeter et de les donner à
  • Vous pouvez facilement prendre en charge la sécurité en limitant l'accès à chaque base de données à un compte d'utilisateur donné.
  • Vous pourrez peut-être étendre plus facilement vos activités en ajoutant plus de serveurs de bases de données, puisque vous utilisez des bases de données séparées (il n'y aurait pas de tables communes utilisées par tous les utilisateurs)

Bien sûr, cela peut être un peu pénible pour vous si vous avez besoin de déployer des mises à jour sur des centaines de bases de données, mais c'est ce que les scripts automatisés sont destinés. L'idée d'avoir des tables séparées pour chaque utilisateur semble être un cauchemar de codage. Chaque fois que vous référencez une table partagée, vous devrez modifier le nom pour correspondre à la copie de l'utilisateur actuel.

+1

Je me suis intéressé à peut-être 100 utilisateurs initialement, et j'ai toujours eu de nouveaux utilisateurs, par exemple. utilisateurs libres. En fonction de votre recommandation, cela signifie-t-il que j'ai juste besoin d'une base de données par défaut pour que le site portail stocke des informations de base concernant les comptes, puis des bases de données séparées pour un compte individuel? –

+0

Bien sûr, cela semble raisonnable. –

+0

Que diriez-vous si j'ai besoin de stocker les membres de tous les comptes d'utilisateurs? Donc, si nous parlons de blogs wordpress mu, par exemple. Dites si j'ai un visiteur, A, qui devient un membre/auteur pour l'utilisateur du compte abc, et souhaite également s'inscrire avec xyz. A devra s'inscrire avec abc, puis se réinscrire avec xyz, car il n'y a pas de connexion entre les 2 utilisateurs car ils utilisent des bases de données différentes? Quels seraient les avantages et les inconvénients de placer les membres sous la base de données du portail par défaut, de sorte qu'ils n'aient besoin que d'un identifiant pour se connecter et accéder, ou les laisser dans la base de données des comptes séparés? Merci. –

Questions connexes