2009-08-26 8 views
-2

Hallo, J'ai besoin de fusionner les utilisateurs de plusieurs souces de quelle façon, par exemple facebook, Google, plaxo ... Actuellement j'ai cette structure dans ma base de données:Base de données de conception: fusionner les utilisateurs de différents systèmes de journalisation (google, facebook, openid ...)

USERS_MYSITE

mysite_user_id  | parameter | value 
------------------------------------------ 
223     | firstname | Tom 
223     | lastname | N. 
223     | birthdate | 1985-01-30 

USERS_FACEBOOK

mysite_user_id  | facebook_user_id | parameter | value 
------------------------------------------------------------- 
223     | 456353453  | fname  | Tom 
223     | 456353453  | lname  | N. 
223     | 456353453  | birth  | 1985-01-30 

USERS_GOOGLE

mysite_user_id  | google_user_id | parameter | value 
----------------------------------------------------------- 
223     | tomtom22  | fn  | Tom 
223     | tomtom22  | ln  | N. 
223     | tomtom22  | brt  | 1985 JUN 30 

USERS_VIEW

mysite_user_id  | remote_user_id | site_name | parameter | value 
    --------------------------------------------------------------------------- 
    223     | 223   | mysite | firstname | Tom 
    223     | 223   | mysite | lastname | N. 
    223     | 223   | mysite | birthdate | 1985-01-30 
    223     | tomtom22  | google | fn  | Tom 
    223     | tomtom22  | google | ln  | N. 
    223     | tomtom22  | google | brt  | 1985-01-30 
    223     | 456353453  | facebook | fname  | Tom 
    223     | 456353453  | facebook | lname  | N. 
    223     | 456353453  | facebook | birth  | 1985 JUN 30 

Sélectionnez ensuite USERS_VIEW OÙ mysite_user_id = '223' et je suis toutes les informations utilisateur. Après cela, je peux utiliser plusieurs tableaux de transporation, pour transformer toutes les données à distance à mon format

Array ("firstname" => Array ("fn", "fname"), "birthdate" => Array ("brt", "naissance"), ...)

va de pair avec les valeurs. Suivant en fonction de ce que l'utilisateur a sélectionné comme ses données primaires, je peux le montrer.

Le problème est que je ne l'ai jamais fait auparavant, alors peut-être que quelqu'un sait comment le faire mieux. S'il vous plaît partagez vos idées.

Merci.

Répondre

0

Vous avez probablement déjà résolu votre problème, mais si vous avez encore besoin d'aide, je suis heureux de vous aider. C'est le genre de problème que j'aime.

Mais pour vous aider, pouvez-vous me dire quel résultat final vous voulez vraiment? Vous avez une solution qui devrait fonctionner et je ne suis pas sûr si vous dites que vous voulez que le résultat soit différent ou que vous souhaitiez que le résultat actuel soit produit plus efficacement?

Si vous pouvez clarifier cela, nous pouvons régler cela.

1

l'idée était de créer un moteur, qui pourrait combiner de nombreux comptes à partir de nombreux "titulaires de compte" différents, avec possibilité d'ajouter de nouveaux si nécessaire. De plus, donner la possibilité à l'utilisateur de personnaliser ses données de compte; prendre le prénom d'une source, le nom de famille d'un autre et ajouter du formulaire de profil. Je m'inquiète de la vitesse de la requête, car il est assez risqué de faire une telle requête lente à chaque fois pour chaque utilisateur affiché à l'écran. Nous avons également un trafic important, environ 1 million par jour, soit 20 millions de pages vues et environ 100 000 000 d'exécutions de requêtes. C'est un gros compte.

Oui, le problème est déjà résolu. Je viens de créer une autre table, avec des données dupliquées :( Chaque fois que l'utilisateur change certains de ses paramètres, une nouvelle table prend la mise à jour de la structure ci-dessus, puis nous prenons uniquement les données de cette nouvelle table. et twitter à la liste des sources Actuellement, penser à exporter ce moteur et le rendre open source. :)

Questions connexes