MySQL - Speichern des Charakterinventars

7

Was ist der beste Weg, um das Inventar des Charakters zu speichern (bestehend aus jedem Gegenstand mit einem Wert für Typ und Menge). Die einzige Methode, die mir in den Sinn kommt, besteht darin, den Feldtyp "Text" zu verwenden und dann den Wert daraus zu analysieren, wenn das Inventar geladen wird. Gibt es eine bessere Methode oder Datenstruktur?

jSherz
quelle
Kannst du einfach einen Überblick über dein Spiel geben? Wird es browserbasiert sein oder wird es eine Client-Anwendung geben? Wie viele Clients dürfen eine Verbindung zu Ihrem Server herstellen? Welche Sprache verwenden Sie serverseitig?
Ali1S232
3
Ich würde sagen, "Text" ist die schlechteste Wahl. Bauen Sie Beziehungen zwischen "Item" - und "Player" -Tischen auf
bummzack
Danke für den Hinweis. Dba.stackexchange.com war mir nicht bekannt - das wäre natürlich eine bessere Wahl!
jSherz

Antworten:

6

Informieren Sie sich über das Standard-Datenbankdesign. Speziell normalisierte Formen. Ein Ansatz wäre, 3 Tabellen zu haben:

Zeichen mit einer Zeichen-ID und anderen Daten

Artikel mit einer item_id und anderen Daten (Namen, Gewicht usw.)

Inventar mit Charakter_ID, Artikel_ID, Menge.

Das Inventar eines Spielers könnte ausgedrückt werden als "SELECT items.name FROM items, inventar WHERE inventar.character_id = 'THECHARSID'". Natürlich würde ich aufgrund Ihrer anderen Fragen viel wahrscheinlicher vorschlagen, ein ORM zu verwenden, das dies für Sie erledigt. Schauen Sie sich Beziehungen und Rückblicke in so etwas wie SQLAlchemy an.

Wenn Sie das Konzept der Inventar-Slots benötigen, ist dies eine weitere Spalte in der Inventar-Tabelle. (IE: Charakter 32423 hat einen Gegenstand vom Typ 832 in Steckplatz 0 (Der Kopfschlitz).) Wenn jeder Gegenstand eindeutige Statistiken hat (Haltbarkeit / Upgrades), können Sie so etwas tun, wie die Artikeltabelle die artikelspezifischen Daten enthält und einen Link hat in eine item_base-Spalte, die die Basisstatistiken definiert, die alle Elemente dieses Typs gemeinsam haben.

Doug-W
quelle
Danke für die Hilfe. Ich werde mich mit ORM und SQLAlchemy befassen.
jSherz
2
Wenn Sie sich immer noch für ein SQL Server-Produkt entscheiden, schauen Sie sich unbedingt PostgreSQL an (kostenlos und Open Source mit einer Community, die stark von Optimierungsmuttern bevölkert ist ) - da Sie möglicherweise mehrere Server benötigen. Sie werden wahrscheinlich interessiert sein zu wissen, dass PostgreSQL jetzt über integrierte Replikationsfunktionen verfügt und sich seit langem gut für die Verarbeitung großer Datenbanken in Umgebungen mit hoher Nachfrage eignet: postgresql.org
Randolf Richardson