J'essaie de trouver le moyen le plus rapide d'accéder aux données stockées dans un objet de jonction. L'exemple ci-dessous est analogue à mon problème, mais avec un contexte différent, parce que l'ensemble de données auquel j'ai affaire est quelque peu inintéressant dans ses relations. Nous avons 3 classes: User
, Product
et Rating
. L'utilisateur a une relation many-to-many à Product
avec Rating
comme classe de jonction/'through'.Puis-je utiliser un compteur dans une base de données Many-to-Many pour réduire les recherches?
L'objet Rating
stocke les réponses à plusieurs questions qui sont notes entières sur une échelle de 1-5 (questions Exemple: comment convivial Comment est la qualité du Product
, comment est la valeur de la Product
, est Product
). Pour simplifier assumer tous les User
tous les Product
qu'ils achètent.
est le calcul maintenant ici, je veux effectuer: Pour une User
, calculer la note moyenne de tous les Product
s ils ont acheté (c'est, la note moyenne de tous les autres Users
, l'un qui sera de cette User
lui-même). Ensuite, nous pouvons dire à l'utilisateur "En moyenne, vous achetez des produits classés 3/5 pour la valeur par tous les clients qui ont acheté ce produit".
La méthode simple et lente consiste simplement à parcourir tous les objets de révision d'un utilisateur. Si nous supposons que chaque utilisateur a acheté un petit nombre de produits (< 100), et que chaque produit a n valeurs nominales, c'est O (100n) = O (n).
Cependant, je pourrais aussi faire ce qui suit: Dans la classe Product
, gardez un compteur du nombre de Rating
s qui a choisi chaque numéro (par exemple le nombre de User
noté ce produit 3/5 de la valeur). Si vous incrémentez ce compteur à chaque fois qu'un Product
est évalué, le calcul de la moyenne pour un Product
donné nécessite simplement de vérifier les 5 compteurs pour chaque critère .
Est-ce une technique valide? Est-il couramment employé/y a-t-il un nom? Cela me semble intuitif, mais je ne connais pas assez les bases de données pour savoir s'il y a un défaut fondamental ou non.
J'ai édité pour expliquer comment votre cas est "normalizaiton ne pas préserver FDs ". (Également déplacé les commentaires dans un post-scriptum.) – philipxy