Hauptmenü

Untermenü

Advanced SQL - Einstiegstutorial 2 - Angebotstabellen füllen

1. Die Abschnitte

2. Noch ein Designfehler?

Auf reiner SQL-Ebene betrachtet könnte man das vermuten. Denn es ist ohne weiteres möglich, dass man bei den beiden Tabellen markt und angebot in den entsprechenden Spalten besitzer/mitglied und von/an dieselbe ID eines Mitglieds eintragen kann. Außerdem ist es auch problemlos möglich, Gildenmeister zu tauschen, was eigentlich nicht der Sinn der Sache ist. Hinzu kommt noch, dass man auch Spieler einsetzen kann, die nicht zur jeweiligen Gilde gehören.

Tja, bei unserer Modellierung kann man so was nur auf PHP-Ebene abfangen. Aber keine Angst, das ist der Normalfall. Denn mit reinem SQL hat man ja eh keine Chance. Außerdem ist die entsprechende Logik unserer späteren Anwendung hier noch nicht von Bedeutung.

3. Die Tabelle markt

Damit ihr keine falschen Daten eingebt, habe ich euch schon ein paar Datensätze vorbereitet. OK, mehr Möglichkeiten gibt es im Moment eh nicht, wenn ihr meine SQL-Statements aus dem vorherigen Abschnitt übernommen habt. Ansonsten stellt euch selber was zusammen.


INSERT INTO markt VALUES (1215000);
INSERT INTO markt VALUES (24310000);
INSERT INTO markt VALUES (3652000);
INSERT INTO markt VALUES (4874000);

Erläuterung

Gut, das sieht im Moment ein wenig wie Chinesisch aus, ist aber einfach zu erklären. Da bietet zum Beispiel der Gildenmeister mit der ID 2 sein Mitglied mit der ID 1 für 5000 Öcken/Gold an. Beim Rest ist das Prinzip dasselbe.

4. Die Tabelle angebot

Auch hier gilt dasselbe wie bei der Tabelle markt. Entweder ihr bastelt selber herum oder übernehmt den folgenden Mini-Dump, wenn ihr die Daten aus dem vorherigen Abschnitt übernommen habt.


INSERT INTO angebot VALUES (12434000);
INSERT INTO angebot VALUES (246510000);
INSERT INTO angebot VALUES (36875000);
INSERT INTO angebot VALUES (48213000);

Erläuterung

Das funktioniert eigentlich genau so wie bei der Tabelle markt. Nur gibt es hier folgendes Schema. Erst die ID des Anbieters, dann die ID dessen, der das Angebot erhält und zu guter Letzt kommt das Mitglied des Angebotenen und der angebotene Preis.

5. Die Tabelle tausch

Hier ist die Sache etwas komplizierter. Zuerst muss man nämlich Daten in die Tabelle angebot eintragen. Und danach kann man die Tabelle tausch füllen.


INSERT INTO angebot VALUES (524NULLNULL);
INSERT INTO angebot VALUES (668NULLNULL);

INSERT INTO tausch VALUES (51'offer');
INSERT INTO tausch VALUES (53'demand');
INSERT INTO tausch VALUES (65'offer');
INSERT INTO tausch VALUES (67'demand');

Erläuterung

Zuerst legt man zwei Angebote an, lässt aber die ID des gewünschten Mitglieds und den Preis weg. Also die Spalten mit dem NULL. Und danach erst kommen die Tauschangebote. In diesem Fall bietet zum Beispiel der Gildenmeister mit der ID 2 dem Gildenmeister mit der ID 4 sein Mitglied mit der ID 1 an und möchte dafür das Mitglied mit der ID 4. Und das ist dann das Angebot mit der ID 5.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt