Max
Inhaltsverzeichnis |
Themenwahl und Ziel des Beleges
In meinem Datenbankbeleg möchte ich die Umsetzung eines Rollenspiel-Videospieles realisieren. Dieses Thema wählte ich, da ich mich freizeitlich oft an der Entwicklung interaktive Inhalte, wie zum Beispiel Videospiele, versuche. Das Entwerfen eines geeigneten Datenbanksystems zu dieser Thematik schätzte ich somit als herausforderndes, aber ebenso anschauliches Exempel für die Anforderungen an den Beleg an.
Gameplay
Zum Verständnis weiterer Inhaltsaspekte des Beleges ist ein Verständnis über die verwendeten Strukturen, welche auf dem Spielfluss des Rollenspieles (dem so genannten Gameplay) basieren, notwendig. Daher werden diese im Folgenden kurz erläutert, um eventuelle Missverständnisse oder sogar Unverständlichkeiten im ERM zu vermeiden.
- SPIELER - Das zentrale Objekt
> Vom SPIELER gehen die zentralen Beziehungen aus. Für jeden Spieler wird eine neue, eindeutige Player_ID verwendet. Um im Spiel unter einem Synonym in Erscheinung treten zu können, wird ein Username benutzt. Ein Level zeigt, wie fortgeschritten ein Spieler ist. Für einen Levelaufstieg ist die Erfahrung ausschlaggebend. Wird eine bestimmte Erfahrungsgrenze überschritten, so steigt der Spieler ein Level auf. Wie hoch diese Erfahrungsgrenze ist, wird über einen weiteren Mechanismus (welcher im Modell selbstverständlich nicht implementiert ist) errechnet. Dieser sollte ermöglichen, dass Spieler eines höheren Levels mehr Erfahrung zum Levelaufstieg benötigen. Umzusetzen wäre diese Technik beispielsweise über einen logarithmischen Zusammenhang. Die Lebenspunkte zeigen, wie viel Schaden ein Spieler erleiden kann, bevor er im Spiel stirbt.
- MONSTER
> Monster geben Spielern die Möglichkeit im Spiel weitere Erfahrung zu erhalten. Jedes Monster besitzt dabei eine eindeutige ID sowie einen Namen, welcher im Spiel angezeigt werden könnte, sobald sich ein Spieler nähert.
- CLAN
> Clans sollen Spielern die Möglichkeit geben, Bündnisse, in welchen sie gemeinsam in Erscheinung treten können, zu erstellen. Jeder Spieler kann dabei in genau einem Clan sein, natürlich kann es auch Spieler ohne festen Clan geben, somit kann man den aktuellen Clan auch jederzeit verlassen. Neben einer eindeutigen ID besitzt jeder Clan einen Namen und einen Anführer, welcher durch die jeweilige ID des Spielers festgelegt wird. Dieser kann als spezielle Einstellung im Clan eine Levelgrenze festlegen, welche bestimmt, welches Minimumlevel Spieler besitzen müssen, welche dem Clan beitreten wollen. Somit kann ausgeschlossen werden, dass neue Spieler mit einem niedrigen Level den Clan belästigen. Die Kapazität des Clans gibt an, wie viele Mitglieder er maximal aufnehmen kann.
Modellierung der Datenbank
Entity Relationship Model (ERM)
Konkretes Relationship Model (RM)
Grundlegende Begriffe mit Bezug zum Modell
Die im Modell angewandten Techniken sind auf Grundkenntnisse der Datenbankmodellierung zurückzuführen. Durch die nun folgende Wiederholung einiger Bestandteile versuche ich darüberhinaus zu begründen, wieso, bzw. wie ich die Umsetzung auf diesem Weg vollzogen habe. Die einzelnen Entitäten werden zur Übersichtlichkeit deshalb im Folgenden (wie im ERM) in Großbuchstaben (Capslog) dargestellt.
1) Normalformen > Bei der Modellierung des Modelles liegt ein besonderer Wert auf der Einhaltung der ersten drei Normalformen, da diese Voraussetzung für ein gezielteres und einfacheres Arbeiten mit den Datensätzen begünstigen.
- Erste Normalform
> Alle Attribute der einzelnen Entitäten liegen atomar vor, sie sind somit nicht auf weitere Grundbestandteile aufzuspalten.
- Zweite Normalform
> Alle Nichtschlüsselattribute sind nur von einem Primärschlüssel abhängig, in meinem Modell von den jeweiligen IDs.
- Dritte Normalform
> Keine Nichtschlüsselattribute stehen in direkter Verbindung mit weiteren Nichtschlüsselattributen, ohne selbst als Primärschlüssel aufgespalten zu sein. Die Abhängigkeit zur jeweiligen ID ist eindeutig.
2) Entitäten > Die zwischen den Entitäten vorherrschenden Beziehungen geben Aufschluss über die gegenseitigen Strukturen, welche sich primär durch logische Konsequenzen aus dem Spielfluss (dem Gameplay) des Rollenspiels ergeben. Zur speziellen Erläuterung dafür dient der vorhergehende Inhaltsabschnitt "Gameplay".
- 1:1-Beziehung
> Diese Kardinalität, welche lediglich zwischen SPIELER und MONSTER herrscht, ermöglicht eine jeweils eineindeutige Zuordnung. Diese habe ich in diesem Fall gewählt, da jeweils ein SPIELER genau ein MONSTER besiegen kann, bzw. zu einem Zeitpunkt ein MONSTER von nur genau einem SPIELER getötet werden kann.
- 1:n-Beziehung
> Für die meisten Relationen erwies sich diese Kardinalität für am sinnvollsten. Dies lässt sich unter der Maßgabe der im Voraus erklärten Gameplay-Strukturen besonders damit begründen, dass jeder SPIELER als zentrales Objekt lediglich die Möglichkeit der Nutzung genau eines PERKs, bzw. dem Beitritt in nur einem CLAN besitzt. Zwischen PERK, bzw. ITEM und EFFEKT wird diese Kardinalität verwendet, da beide Entitäten jeweils nur einen Spezialeffekt nutzen sollen. Die Umsetzung dieser Kardinalität wird durch die Verwendung eines Fremdschlüssels erreicht. Diese wird bei mir besonders im RM erkennbar, da eine Visualisierung im ERM nicht möglich war. Die jeweilige Kennzeichnung der betreffendes IDs wird auch bei der Erstellung der Tabellen vorgenommen (FOREIGN KEYs).
- n:m-Beziehung
> Eine n:m-Kardinalität fand in meinem Modell lediglich bei der Relation zwischen SPIELERn und ITEMs Verwendung. Da viele (verschiedene) SPIELER im Besitz von mehreren ITEMs sein können, ist diese mehrdeutige Entitätszuordnung sinnvoll. Umgesetzt wurde sie (wie im RM erkennbar) durch eine Relationstabelle, in welcher SPIELER-ID und ITEM_ID als Fremdschlüssel in verbindung gesetzt wurden.
Erstellung der Tabellen
Befüllen der Datensätze
Abfragen
Die dargebotenen Abfragen greifen alle auf die von mir entwickelte Datenbank zurück und sind in aufsteigender Komplexität angeordnet. Vielleicht kann die eine oder andere Abfrage als Übungsstoff für Schüler dienen, die "Musterlösung" kann durch einen Klick auf das Kreuz in der linken oberen Ecke der Runbox jederzeit wiederhergestellt werden. Über die zusätzliche Box könnt ihr selbst kreativ werden und weitere (für ein Videospiel dieser Art) relevante Abfragen erstellen.
1) Welche Spieler sind im Spiel angemeldet?
2) Welche Monster gelten als bedrohlich, dh. lassen beim Tod mehr als 75 Erfahrungspunkte fallen?
3) Was sind die 5 besten Spieler, dh. besitzen das höchste Level?
4) Welche Clans (mit Namen und Kapazität) gibt es, und was sind ihre jeweiligen Anführer?
5) Welche Items besitzt der Spieler mit der ID 14?
6) Welche Eigenschaften (Name, Beschreibung, Effekt-ID) besitzen alle Perks und Items, die den Effekt "Angriff" nutzen? Achtung: Die in der Musterlösung verwendete "UNION"-Anweisung komprimiert die Informationen verschiedener Tabellen in einer einzigen Spalte. In einer alternativen Lösung könnten diese Informationen zB. in lediglich einer Zeile angezeigt werden.
Box für freies Herumspielen am wahnsinnigen System
Reflexion der Datenbank
Changelog
11.01.19 Konzeptidee, Skizzierung der ERM und RM in Dia, Anlegung der Tabellen im Wiki^
18.01.19 Einfügen aller Grafiken, Einfüllen der Datensätze, Anlegung erster Abfragen und der Themenwahl, sowie nervenaufreibendes Fixen auftretender Fehler