28-11-2010, 03:29 PM
(28-11-2010, 01:53 PM)Ter Rowan a écrit :(28-11-2010, 12:58 PM)Kihmé a écrit : tu n'as pas besoin de champ nombre. Dans ta table Item tu fais une requète de type select count(id) where type = 'potion' où potion peut être une clé étrangère et ça te renverra le nombre de potion. Ne jamais stocker une information (par exemple ton nombre) qui peut s'obtenir par une fonction (ou un calcul).
pas du tout d'accord, si on a un inventaire avec possibilité d'empiler (exemple empiler des potions de soin, des pièces d'or, etc... cas typique tous les mmo) le champ quantité à tout son sens. Tout dépend donc de ce qu'il veut faire
Quand je dis "Ne jamais stocker une information (par exemple ton nombre) qui peut s'obtenir par une fonction (ou un calcul)." il s'agit d'une convention, c'est une règle de modélisation, il ne s'agit pas de mon avis. En y dérogeant on expose la bdd à de la redondance, OUCH!!! On se situe dans un cas général, après tu parles d'un cas particulier qu'est le mmo et de l'empilage, je n'ai pas bien compris ce que c'est. Même si toute règle est contournable, reste à savoir si ça en vaut la peine...
Dans le cas d'une table Acheter, issus de la relation many to many d'une table Item et d'une autre User alors oui, il pourrait en fonction du cahier des charges être utile de placer un champ quantité mais souvent, il sera privilégié un tuple par item acheté puisque gérer tous les items achetés en même temps dans un tuple empêchera la distinction entre chacun d'eux. Mais je n'ai pas l'impression qu'on soit dans ce cas ci.