Relations - Réseau d'amis
Résolu
JooS
Messages postés
2468
Date d'inscription
Statut
Membre
Dernière intervention
-
JooS Messages postés 2468 Date d'inscription Statut Membre Dernière intervention -
JooS Messages postés 2468 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voila, je voulais créer un genre de petit réseau social, et je voulais avoir votre avis en ce qui concerne un détails du MCD ...
Or, pour dire que tel utilisateur est ami avec tel utilisateur ...
1 - On crée une table qui contiendra l'id des deux utilisateurs.
Ou ..
2 - On ajoute un champs dans la table des utilisateurs, et pour chaque utilisateur on y mets l'id de ses amis séparé par des virgules.
La première solution est plus juste a mon avis, vu qu'elle est en 3eme forme normale, mais peut dépasser les 1 millions (voir plus) de tuples.
Donc quoi choisir, y a t'il d'autres solutions possibles, quelle est la meilleur méthode en ce qui concerne la performance lors des recherches, car on aura tout le temps besoin de savoir qui est ami avec qui.
Merci.
Voila, je voulais créer un genre de petit réseau social, et je voulais avoir votre avis en ce qui concerne un détails du MCD ...
Or, pour dire que tel utilisateur est ami avec tel utilisateur ...
1 - On crée une table qui contiendra l'id des deux utilisateurs.
Ou ..
2 - On ajoute un champs dans la table des utilisateurs, et pour chaque utilisateur on y mets l'id de ses amis séparé par des virgules.
La première solution est plus juste a mon avis, vu qu'elle est en 3eme forme normale, mais peut dépasser les 1 millions (voir plus) de tuples.
Donc quoi choisir, y a t'il d'autres solutions possibles, quelle est la meilleur méthode en ce qui concerne la performance lors des recherches, car on aura tout le temps besoin de savoir qui est ami avec qui.
Merci.
A voir également:
- Relations - Réseau d'amis
- Entrer les informations d'identification reseau - Guide
- Le message n'a pas été envoyé car le service n'est pas activé sur le réseau - Forum Xiaomi
- Partage reseau - Guide
- Opérateur de réseau mobile - Guide
- Nous n'avons pas pu nous connecter à ce réseau ✓ - Forum Livebox
1 réponse
Salut,
ta deuxième solution impose un balayage exhaustif de toute la table combiné à une analyse de la chaine qui contient les id lorsque l'on veut savoir qui est ami avec qui, c'est très lourd.
La première solution permet de ne lire que les lignes que l'on cherche (grâce aux index que tu ne manqueras pas de mettre). C'est d'ailleurs pour ça que c'est une forme normale.
Le nombre de tuple importe peu dans une base...
ta deuxième solution impose un balayage exhaustif de toute la table combiné à une analyse de la chaine qui contient les id lorsque l'on veut savoir qui est ami avec qui, c'est très lourd.
La première solution permet de ne lire que les lignes que l'on cherche (grâce aux index que tu ne manqueras pas de mettre). C'est d'ailleurs pour ça que c'est une forme normale.
Le nombre de tuple importe peu dans une base...
On aura un accès direct a la liste d'amis, par exemple, lorsque l'utilisateur se connecte, on mets directement ses infos ainsi que le contenu du champs "friends" dans une variable de SESSION ...
Et a chaque fois qu'on aura besoin de vérifier si un utilisateur est ami avec un autre, il suffit d'accéder a la SESSION directement, ...
A chaque fois qu'il y'aura une mise a jour (ajout ou suppression d'amis), on mettra a jour les variable globales.
Exemple : 2,5484,624,7541,954
Signifiera que les utilisateurs dont l'id est 2, 5484, 624, 7541, 954 sont amis avec l'utilisateur en cours ...
C'est tirer par les cheveux, mais je pense que c'est plus performant que de parcourir toute la table, surtout si la table est surchargé, parce que 10 millions de tuples, ça affecte quand même le temps d'exécution ...
mea culpa, j'ai mal lu la question de départ.
Il n'en demeure pas moins que tu vas vite voir les limites de traitement des chaines comportant des milliers de caractères : lenteur de traitement et surtout lenteur de mise à jour...
Car lorsque tu vas augmenter la taille de la chaine d'amis, ton SGBD va devoir trouver un nouvel emplacement pour la stocker et supprimer l'ancienne, avec toute la gestion d'espace à faire.
Le plus simple est quand même de laisser les mises à jour (création/suppression) de tuples par le SGBD, il est optimisé pour...
Merci :) !