2011-02-01 3 views
3

Je crée un site de réseautage social avec des fonctionnalités similaires à Facebook. Je veux commencer par la conception de schéma pour ma base de données. Ce que j'ai pensé était de créer chaque table pour chaque utilisateur qui s'inscrit sur notre site .. suis-je en train de faire?Puis-je créer chaque table pour chaque utilisateur de mon site de réseau social?

Si un million d'utilisateurs s'inscrivent sur mon site, un million de tables seront créées. comment continuer à optimiser cela? S'il vous plaît ne me suggérer des techniques pour surmonter cela et quelques références ou des livres pour en apprendre davantage sur de tels concepts seront très utiles ..

Merci à l'avance.

+5

Vous allez mal, très mal! Dit simplement: Vous devriez toujours avoir le même nombre de tables quel que soit le nombre d'éléments de données que vous devez stocker dans la base de données. –

Répondre

6

Ceci est et non comme vous le souhaitez.

Ce que vous voulez faire est d'avoir une table (peut-être appelée 'users') qui contient une ligne pour chaque utilisateur qui s'enregistre. Créer une nouvelle table pour chaque utilisateur est complètement inutile et provoquerait performances terribles.

Peut-être quelque chose comme ceci:

 
TABLE users 
    - username AS VARCHAR(255) 
    - password AS VARCHAR(255) (use a hashed password, of course) 
    - ... 

Ensuite, lorsqu'un utilisateur enregistre, il suffit d'insérer les informations qu'ils fournissent dans la table users comme une nouvelle ligne.

+0

Mais, wat si l'utilisateur publie des mises à jour de statut tous les jours, et je mettrais à jour la date dans la ligne que j'ai entré la table Utilisateurs? –

+1

@Noddy: Les mises à jour d'état seraient une table séparée avec un champ '' user_id '' qui lie à cet utilisateur dans la table 'users'. En ce qui concerne la mise à jour de la ligne, utilisez simplement la commande SQL 'UPDATE'. –

+0

@GeorgeEdison, juste un suivi concernant les mises à jour de statut. Toutes les mises à jour d'état, quel que soit l'identifiant de l'utilisateur posté, doivent également appartenir à une seule table qui sera liée par le champ user_id par une clé étrangère? –

2

Ce serait une surpuissance massive. Vous devriez probablement lire sur la conception de la base de données (commencez avec la normalisation, mais n'exagérez pas). Ensuite, écrivez ce que vous voulez enregistrer pour chaque utilisateur, et réfléchissez à la manière de le sauvegarder sans enregistrer les données en double.

Mais je suis assez sûr qu'une table par utilisateur n'est pas une option pour cela.

+1

Ce n'est pas exagéré, c'est juste faux! – diagonalbatman

+0

oui, eh bien, peut-être mauvais choix de mots. C'est un peu "faux parce que c'est trop", mais là encore, peut-être vous avez raison et je devrais choisir d'autres mots – Nanne

Questions connexes