2010-01-12 3 views
0

donc sur mon travail plus, je l'avais toujours utilisé le type de données « texte » pour stocker des objets, comme ceci:MySQL - Meilleure méthode des éléments d'économie et de chargement

0=4151:54;1=995:5000;2=521:1; 

Donc, en gros: slot=item:amount;

J'ai cherché à trouver les meilleurs moyens de stocker des informations dans une base de données SQL, et partout où je vais, il est dit que l'utilisation du texte est un grand succès.

Je pensais faire quelque chose d'autre, comme avoir une table avec les colonnes suivantes:

id, owner_id, slot_id, item_id, amount 

Où que je peux maintenant il suffit d'insérer une ligne pour chaque élément un caractère alloue. Mais je n'ai aucune idée de la façon de les sauver, puisque l'objet de la fente peut changer, etc. Un personnage a 28 emplacements d'inventaire et 500 emplacements de banque, devrais-je les insérer tous à l'enregistrement? ou existe-t-il un moyen plus intelligent d'enregistrer les articles?

+1

Un peu plus d'explications s'il vous plaît. Je peux presque saisir ce que vous voulez dire, mais vous devriez dire ce que vous entendez par «slot», «personnage» et «banque» parce que l'utilisation est un peu étrange. Cela semble également être une question sur la structure de la base de données, plutôt que sur «l'enregistrement et le chargement». – pavium

+0

Désolé je ne pourrais pas expliquer assez bien. Bien l'emplacement est le point d'entrée auquel l'article est situé dans l'inventaire/la banque. Comme les emplacements ne sont pas triés, les ID peuvent être 1, 2, 3, puis passer à 8, etc. caractère étant le propriétaire du ou des articles et la banque étant le conteneur d'articles. – TheAJ

Répondre

2

Oui, utilisez cette structure. L'utilisation de texte pour stocker des données relationnelles va à l'encontre de l'objectif d'une base de données relationnelle.

Je ne vois pas ce que vous voulez dire en les insérant tous à l'enregistrement. Ne pouvez-vous pas les insérer comme vous le souhaitez?

Modifier

Sur la base de votre commentaire précédent Je recommande que l'insertion d'une fente comme il est nécessaire (si je comprends bien votre problème). Cela peut être une idée de garder l'ID de la fente dans l'application, si besoin est.

1

Si je vous comprends bien, et qui peut changer l'élément de la fente, alors vous voulez plus abstraite la correspondance entre item_id et l'élément:

entry_tbl.item_id->item_rel_realitems_tbl.real_id->items_tbl 

De cette façon, toutes les entrées avec un point de itemid à un table qui mappe ces identifiants à un élément mutable. Lorsque vous mettez à jour un élément dans 'items_tbl', le mappage met automatiquement à jour entry_tbl.

Un autre JOIN est nécessaire cependant. Je voudrais également utiliser procédures stockées dans tous les cas pour abstraire le mécanisme de la sémantique.

Je ne suis pas sûr de comprendre le libellé de votre question.

Questions connexes