Minimales SQL-Game implementieren

In diesem Tutorial soll eine einfache Datenbank implementiert werden. Anschließend soll ein minimales SQL Game entwickelt werden, welches auf dieser Datenbank basiert.

Phase A: Datenbank entwerfen

  1. Thema:
    Wähle ein Thema für deine Datenbank. Beispiele: Pokémon, Harry Potter, Fußball, ...

  2. Entitätstyp Entitäten
    Pokémon Pikachu, Bisasam, ...
    HP-Charakter Harry Potter, Hermine Granger, ...

    Entitätstyp:
    Wähle zu erfassende Entitäten so aus, dass sie in einer einzigen Tabelle gespeichert werden können. Zusammengefasst ergeben sie einen sogenannten Entitätstyp. Bsp.: Pokémon, HP-Charakter, Fußballspieler/in, ...

  3. Attribute:
    Wähle für den gewählten Entitätstyp, z.B. Fußballspieler, passende Atribute (= Eigenschaften) inklusive Datentyp aus, z.B. für Fußballspieler/in:

    Attribut Datentyp
    Name TEXT
    Geburtsdatum DATE
    Ist verletzt? BOOLEAN (= Wahrheitswerte „wahr“ oder „falsch“)
    Aktueller Verein TEXT
  4. Primärschlüssel:
    Wähle für die Tabelle einen Primärschlüssel aus. Falls keine passende Spalte existiert, gehe zurück zur letzten Teilaufgabe und ergänze um eine passende Spalte, hier z.B. die Spielernummer (Datentyp INTEGER; integer bedeutet „Ganzzahl“).

  1. Thema: Pokémon

  2. Entitätstyp: Pokémon-Arten
    Beispiele: Pikachu, Bisasam, Bisaknosp, Bisaflor, Glumanda, ...

  3. Attribute:

    Attributname Datentyp
    Pokedexnummer Natürliche Zahl / INTEGER
    Name TEXT
    Farbe TEXT
    Fangrate Natürliche Zahl / INTEGER
    ist legendär? Wahrheitswert / BOOLEAN
  4. Primärschlüssel:
    Das Attribut Pokedexnummer eignet sich als Primärschlüssel, da jede Pokedexnr. nur auf genau ein Pokémon verweist.

Phase B: Datenbank implementieren

  1. Öffne das Programm DB Browser for SQLite.

  2. Klicke auf „Neue Datenbank“ und wähle als Speicherort den Pfad H:\Faecher\Informatik\Datenbanken\pokemon.db (entsprechend anpassen).

  3. Wähle als Namen der ersten (und einzigen) Tabelle den Namen des Entitätstyps, z.B. pokemon.

    Bitte keine Leerzeichen und außer _ keine Sonderzeichen im Tabellennamen verwenden.

  4. Statt... ...verwende...
    DATE TEXT
    BOOLEAN
    (0 steht für „falsch“;
    1 steht für „wahr“)
    INTEGER

    Erstelle die Spalten entsprechend der Attribute. Leider unterscheidet der DB Browser for SQLite nicht streng zwischen Datentypen. Wähle daher TEXT statt DATE und INTEGER statt BOOLEAN.

    Markiere den Primärschlüssel, indem du den Haken in der Spalte PK setzt (PK steht für primary key).

    Bitte keine Leerzeichen und außer _ keine Sonderzeichen in Spaltennamen verwenden. Schreibe z.B. ist_legendaer.

Die Tabelle für deinen gewählten Entitätstyp (z.B. „Pokémon“) ist nun erstellt. Jetzt fehlen noch ganz konkrete Entitäten, also Zeilen in der Tabelle (im Bsp. also die konkreten Pokémons: Pikachu, Bisasam, ...).

Klicke dazu unter „Daten durchsuchen“ auf , um die neuen Zeilen einzufügen. Zu Beginn sind alle Werte auf NULL gesetzt.

Klicke auf die einzelnen Zellen und setze die Werte entsprechend. Wiederhole, bis du drei Zeilen eingefügt hast.

Du hast nun die ersten Zeilen angelegt. Um dir weitere Tipparbeit zu erleichtern, lasse dir von ChatGPT helfen.

  1. Lade die ChatGPT-Website (siehe Anmeldedaten vom Lehrer).

  2. CREATE TABLE "pokemon" (
    	"pokedex_nr" INTEGER,
    	"name" TEXT,
    	"farbe"	TEXT,
    	"fangrate" INTEGER,
    	"ist_legendaer"	INTEGER,
    	PRIMARY KEY("pokedex_nr")
    );
    

    Zu jeder Tabelle gehört ein SQL-Befehl, der sie beschreibt. Z.B. könnte eine Tabelle pokemon durch den folgenden Befehl beschrieben werden. Du kannst dir den Befehl anzeigen lassen, indem du unter „Tabellenstruktur“ die Tabelle pokemon auswählst und auf „Tabelle modifizieren“ klickst.

    Die Details dieses Befehls sind hier gar nicht wichtig. Gleiche grob ab, dass der Befehl zu deiner Tabelle passt. Diese Informationen geben wir ChatGPT nun mit an die Hand.

    Gib eine Anfrage der folgenden Art ein (kopiere den CREATE TABLE...-Befehl mit Strg+C und Strg+V).

    ChatGPT könnte z.B. wie folgt antworten:

    Kopiere den INSERT INTO-Befehl mit Strg+C. Navigiere zum SQL ausführen-Tab im DB Browser for SQLite. Füge den Befehl ein mit Strg+V und führe ihn aus mit . Die Zeilen sind nun eingefügt.

Phase C: Spiel implementieren

Die Datenbank soll nun die Grundlage eines Spiels sein.

  1. Lade die Website https://eskuel.de. Klicke auf SQL-Spieleeditor.

  2. Erstelle eine neue Spieldatei. Gib deinem Spiel einen Namen. Zu Beginn ist nur eine leere Szene vorhanden.

  3. Lade die Datenbank pokemon.db hoch im „Datenbank“-Feld.

  4. Jetzt zu den Spielszenen. Wir halten heute alles sehr einfach. Erstelle eine neue Szene, und wähle "SELECT" aus. Wähle eine Aufgabenstellung, z.B. „Erfrage alle Infos zu grünen Pokemons“. Gib eine dazu passende Lösung ein, in diesem Fall z.B. SELECT * FROM pokemon WHERE farbe = 'grün'.

  5. Speichere dein Spiel unter dem Pfad H:\Faecher\Informatik\Spiele\pokemon.xml (entsprechend anpassen).

  6. Wechsele nun zur SQL-Spielekonsole. Lade die soeben erstellte Datei pokemon.xml hoch. Starte das Spiel und teste es.

  7. Speichere eine Kopie deines Spiels im Gruppenordner unter G:\Inf11GK1\Datenbanken\DEIN_NAME\pokemon.xml.

  8. Teste auch die Spiele deiner Mitschüler/innen.