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 - Schiffe Und Missionen Schema

Datenbankschema und Models

Kurze Erklärung der Datenbank

Ship:

Enthält die derzeit 10 verschiedenen Schifftypen.

Fleet:

Eine Flotte ist eine Einheit, welche Schiffe enthalten kann. Jeder Planet eines Users hat eine Heimatflotte. Wenn Schiffe der Flotte wegfliegen, wird eine neue Flotte gebildet, welche diese Schiffe enthält und geeignete Attribute für Abflug-/Ankunfts -zeit/-planeten hat. Der am Planeten verbliebenen (eventuell "leere") Flotte wird natürlich die Anzahl der verschiedenen Schiffe abgezogen.

Mission:

Enthält Missionstypen welche einer Flotte zugeschrieben werden kann (Based, Colonization, Attack, Travel, Spy, Transport). Mehr Informationen im Abschnitt Missionen.

consists_of (nach Umsetzung in Rails: Shipfleet)

enthält die Flotte und ein Schiff zusammen mit einem Attribut amount, welches die Anzahl des Schiffes in der Flotte anzeigt. Es gibt also pro Flotte maximal so viele Zeilen wie es Schiffe gibt.

Building_prerequisites (nach Umsetzung in Rails: buildings_ships)

enthält Schiffe und Buildingtypes, wobei in Buildingtypes Gebäudetypen abgelegt sind. Building_prerequisites stellt somit die Vorraussetzungen für den Bau eines Schiffes dar.

Probleme und Erkenntnisse

Zunächst haben wir uns als Teilgruppe überlegt, was wir uns unter "Schiffe und Missionen" eigentlich vorstellen. Der grobe Rahmen war vorgegeben, aber in der Entwicklung der Spielidee/-umsetzung waren wir natürlich frei. Zwischen ständiger Absprachen mit den anderen Gruppen und eigener Überlegungen haben wir den groben Rahmen für unser Teilgebiet abstecken können und ein ER-Diagramm erstellt.


ER-Diagramm

Natürlich musste es noch weiter verfeinert werden, um sich als Grundlage einer sinnvollen Implementation zu erweisen. Die außenliegenden Entitätentypen (User, Technology, Building) werden von den anderen Gruppen erstellt.


verfeinertes ER-Diagramm

Nach Verfeinerung des Schemas und Beginn seiner Umsetzung in Rails sind natürlich einige Schwierigkeiten aufgetreten. Zum Beispiel war die Implementation der Tabelle consists_of nicht so einfach mit einer N:M Beziehung zwischen Ship und Fleet möglich, da sie ein weiteres Attribut amount enthalten sollte welches dafür sorgen sollte, dass pro Flotte nicht x Einträge von zum Beispiel Schifftyp 1 enthalten sind sondern lediglich ein Attribut die Zahl x enthält.
Dazu mussten wir ein eigenes Model für den Beziehungstyp anlegen mit dem Namen Shipfleet, welches in Ship und Fleet mithilfe eines has_many .. through statements angesprochen wird:

 class Ship < ActiveRecord::Base
   has_many :shipfleets
   has_many :fleets, :through => :shipfleets
   ...

Da die Beziehung zwischen Fleet und Planet mehrwertig ist, mussten wir in Rails die Namen mit foreign_key Angaben manuell setzen:

 class Fleet < ActiveRecord::Base
   belongs_to :start_planet, class_name: "Planet", foreign_key: "start_planet"
   belongs_to :target_planet, class_name: "Planet", foreign_key: "target_planet"
   belongs_to :origin_planet, class_name: "Planet", foreign_key: "origin_planet"
   ...

Außerdem hat sich später herausgestellt, dass die Technologien über den User in der Tabelle User_settings abgegriffen werden und somit unsere Vorraussetzungstabelle zwischen Ship und Technology überflüssig geworden ist. Um dem Spieler Berichte über fliegende Fliegende Flotten zu geben, haben wir noch weitere Entitätentypen angelegt die Berichte enthalten über vergangene Missionen (ER-Diagramm):


ER-Diagramm mit Reports

fürs endgültige Reportschema siehe Reports


Page last modified on August 24, 2013, at 10:32 AM