Warning: include_once(/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php): failed to open stream: No such file or directory in /var/www/html/fields/dbp13/local/config.php on line 4

Warning: include_once(): Failed opening '/var/www/html/pmwiki-2.2.86/cookbook/soap4pmwiki/soap4pmwiki.php' for inclusion (include_path='.:/opt/php/lib/php') in /var/www/html/fields/dbp13/local/config.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/fields/dbp13/local/config.php:4) in /var/www/html/pmwiki-2.2.86/pmwiki.php on line 1250
Datenbankpraktikum SS 2013 - MMOG - Technologien Datenbank-Schema

Datenbank-Schema

- Jonas Rothe -

Relationale Beziehungen zwischen User und Technologien

Die Entität technology setzt sich aus den folgenden Attributen zusammen:

  • name, interne Bezeichnung
  • factor, Grundfaktor in Prozent
  • cost, Grundwert der Kosten in Spacecash
  • duration, Grunddauer in Sekunden
  • title, Bezeichnung für den Spieler
  • description, Beschreibung
  • maxrank, maximale erforschbare Stufe
  • score, Grundwert für den Score

In der Relation user_technology wird festgehalten welcher Spiele welche Technologie erforscht hat. Da viele Technologien mehrfach erforscht werden können und sich dadurch die Stufe erhöht, erhält die Verknüfungstabelle user_technology das zusätzliche Attribut rank.

Die Relation technology_require beschreibt, welche Technologien Voraussetzungen für die zu erforschende Technologie sind. In den Attributen building_rank und technology_rank wird noch die jeweils benötigte Stufe festgehalten.

Auf die Information, welche Technologie ist Voraussetzung für eine andere, haben wir bewusst verzichtet, da eine n:m Beziehung zum gleichen Model mit zusätzlichen Attributen nicht wirklich sinnvoll in Ruby darstellbar ist und glücklicherweise nicht erforderlich ist.

Da Technologien sehr viele verschiedene Faktoren der Spieler beeinflussen und die anderen Bereiche der Spiellogik auf diese Informationen häufig angewiesen sind, haben wir uns entschieden eine neue Entität UserSetting zu verwenden, die jede Technologie als Attribut enthält und über eine 1:1 – Beziehung mit dem Spieler verknüpft ist. Bei Forschungen, die etwas prozentual beeinflussen, wird der fertig berechnete Wert eingetragen. Bei einmaligen Technologien wird die Kennzeichnung, ob der Spieler diese schon erforscht hat, über ein boolesches Datenfeld realisiert. Das Attribut researchlvl beinhaltet die größte Forschungszentrumsstufe, researching beinhaltet die Technologie-ID, die erforscht wird (ist 0 wenn grade nicht geforscht wird) und finished_at den Endzeitpunkt der aktuellen Forschung. Um nil-Werte zu verhindert, wird, sobald sich ein User registriert, ein Eintrag erzeugt, indem sämtliche Attribute Default-Werte (1.0 bei prozentual beeinflussenden, 0 bei einmaligen Technologien) besitzen.

Dies hat den Vorteil, dass bei häufigen Zugriffen auf diese Forschungen man sich die Zeit für die Berechnung der Faktoren und nötigen Queries, die die Werte für die Berechnungen aus den Tabellen user_technologies und technology holt, sparen kann und somit die Gesamtperformanz erhöht wird.


Page last modified on August 23, 2013, at 02:15 PM