Time and Memory: Design Kartenspiel

Beitrag lesen

Hallo zusammen,

mein Wissensstand bezüglich Datenbanken beschränkt sich leider auf den Unterricht der Berufsschule, was nun schon ein paar Jahre her ist.

Gerade das Designen einer Datenbank ist kein Gebiet in dem ich viel Erfahrung habe.

Ich versuche mal mein Problem vernünftig zu erklären und hoffe, dass mir jemand einen Denkanstoß geben kann:

Ich erstelle momentan ein Kartenspiel und würde das erste SET (100 Karten) nun gerne in einer Datenbank (mySQL) abspeichern. Das Spiel ähnelt dem Kartenspiel "Magic the gathering", falls das zum Verständnis beiträgt.

Ich habe mir folgende Überlegungen bezüglich der Tabellenstruktur gemacht:

Table Karte

  • ID
  • Name
  • Seltenheit
  • Kartenart

Table Seltenheit

  • ID
  • Name (Gold, Silber Bronze)

Table Kosten

  • ID
  • Gold
  • Holz
  • Wasser

Das Attribut Seltenheit ist mit der Seltenheit Tabelle verbunden und hat den Zweck die Sicherheits des Werts sicherzustellen. So das wirklich nur die verfügbaren Werte (gold, silber etc.) ausgewählt werden können. Sonst könnte man ja in einem Textfeld eintragen was man möchte.

Über die ID der Tabelle Karte wird eine Beziehung zur Kosten Tabelle aufgebaut. Da sich die Kosten in mehrere Werte teilen (Gold, Holz...) fand ich die Auslagerung in eine weitere Tabelle hier sinnvoll. Man könnte meines Wissens nach zwar auch alle einzelnen Kosten in die "Karte" Tabelle packen, allerdings fühlt sich das nichts sehr "sauber" an, da dadurch auch die "Karte" Tabelle sehr groß werden könnte.

Mein Problem ist nun das Attribut "Kartenart".
Das Kartenspiel unterstützt diverse Kartenarten, wie "Taktischer Zug", "Gebäude" und "Kreaturen".
Kreaturen gibt es auch noch in unterschiedlichen Ausprägungen, z.B. Trolle, Oger, Menschen etc.
Taktischer Zug wird einmalig ausgespielt und landet anschließend im Friedhof. Diese Karte hat keine Lebenspunkte und keinen Angriffswert. Ein Gebäude zum Beispiel hat nur Lebenspunkte, aber ebenfalls keinen Angriffswert. Eine Kreatur hat beides.

Jetzt stelle ich mir die Frage wie ich sowas vernüftig in ein Datenbankmodell übertragen soll. Ich könnte Werte wie Lebenspunkt oder Angriffpunkte beispielsweise in die "Karte" Tabelle packen, allerdings gibt es eine Vielzahl von karten, die diese Attribute gar nicht besitzt. Das bedeutet, meine Tabelle würden so von null Werten wimmeln. Klingt zwar machbar aber nicht nach der besten Lösung.
Eine andere Möglichkeit wäre der Karte Tabelle Attribute zu geben wie "Einheitentyp", "Gebäudetyp" usw. und dann nur dann zu füllen, wenn die Karte eine Kreatur ist z.B. Das ist allerdings auch nicht sauber, da ja dadurch eine Karte zumindest technisch gesehen ein Gebäude und eine Kreatur gleichzeitig sein könnte.

Ich suche nun nach einem Modell, was mir die Sicherheit der Daten gewährleistet, aber dennoch "smart" und korrekt ist.

Ich hoffe ich konnte mein Problem gut beschreiben.
(Bitte nur Antworten, die sich mit dem Thema befassen und keine Belehrungen wie z.B. warum (mySQL, Magic etc)

Danke und viele Grüße,
Time