2010-09-12 2 views
1

Je fais un inventaire pour un jeu, plutôt comme un jeu de style FF. J'ai deux conception en tête, et je me demande quel est le meilleurConception du schéma d'un système d'inventaire ... devrais-je calculer la quantité ou en garder la trace?

  1. Gardez la trace de la quantité comme un champ; le schéma serait: item (<item_id>, <character_id>, quantity). Si un personnage équipe un objet, ou supprime un objet de son inventaire, je dois m'assurer que le champ de quantité est correct.

  2. Chaque article occupe une ligne séparée. J'utiliserai GROUP BY pour calculer la quantité de chaque type d'article (par item_id). L'équipement et la suppression des objets deviennent plus simples, mais si le personnage a dix potions de soins, il prendrait dix rangées.

Il n'y a pas de contrainte d'espace ou de limite sur la programmation (en utilisant MySQL). Quel est le meilleur système pour le long terme?

+0

peut-être utiliser: http://gamedev.stackexchange.com? –

Répondre

1

Il semble qu'il existe une relation un-à-plusieurs entre les caractères et les éléments quelque part.

Je recommande de commencer avec la quantité comme un élément dérivé en utilisant GROUP BY. Je ne changerais que si la performance devenait un problème.

Je n'aime pas le design où un article doit garder une trace de sa quantité, mais si vous deviez le faire, vous pourriez l'accomplir avec un déclencheur dans MySQL pour mettre à jour la quantité automatiquement sur INSERT, UPDATE ou DELETE .

0

La conception de la base de données est déterminée par le type de requête qui doit être exécuté.

Dans ce cas, si tout ce que vous aurez besoin est d'obtenir la quantité pour l'élément x pour le caractère x, alors, l'option on va travailler, mais si vous avez besoin:

la quantité de produit x

qui est item_attribute1 = x

ET item_attribute2 = X

ET character_attribute1 = x

ET character_attribute2 = X

Vous aurez besoin d'aller pour l'option 2.

Dans l'option 1, tous les éléments et tous les personnages partagent la même quantité, malgré les avoir différents attributs.

Questions connexes