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?
7
Antworten:
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.
quelle