Du kommst Abends heim. Erschöpft gehst du in die Küche, um dir was zu trinken zu holen. Nebenbei hörst du dir deine Mailbox-Nachrichten an.
„Hallo, hier ist die Oma! Ich habe Kuchen gebacken. Deinen Lieblingskuchen. Komm doch mal wieder vorbei. Bis bald! Mach’s gut!“
PIEP
"Hey! ich hab hier was mitgeschnitten… es geht um einen Schatz! Der wurde 2007 versteckt und 2011 zuletzt gesichtet. Und er liegt irgendwo in Konstanz... Zwei komische Vögel haben sich per Direktnachricht unterhalten. Du bekommst noch einen Zugang zur Datenbank. Mehr habe ich nicht, tut mir Leid. Viel Erfolg!"
PIEP – Keine weiteren Nachrichten.
Adrenalin dringt durch meinen Körper. Ein Schatz? Doch wo bleibt der Zugang zur Datenbank?
Eine MMS kommt auf meinem Smartphone an. Als ich sie öffne sehe ich nur dieses Bild:

Scheinbar ist das eine echt heiße Sache! So viel Gehmeinistuerei.
Kurze Zeit später klapptert etwas an der Haustüre. Als ich nachschaue, sehe ich erst nichts. Doch im Briefkasten finde ich einen Umschlag. Kein Absender, auch kein Empfänger.
Etwas verwundert und unsicher öffne ich den Umschlag und finde darin eine Notiz:

Brauche ich das etwa? Erst mal aufbewaren...
Also auf geht’s in den Kampf. Das wars dann wohl mit Feierabend!
Update 02.10.2014:
Wie sich herausstellte, scheinen einige AntiVir-Hersteller etwas gegen Subdomains von changeip.com zu haben. Daher wurde der Zugang zum Schatz auf eine andere Domain gelegt. Inhaltlich hat sich nichts verändert! Ich bitte vielmals um Entschuldigung für die Verunsicherungen! Viel Spaß beim Rätseln!
Update 07.11.2014:
Hint hinzugefügt
Deine Lösung für die Koordinaten dieses Rätsels kannst du auf geochecker.com überprüfen. GeoChecker.com.
Update 18.04.2016:
Beschreibung aktualisiert.
Worum geht es? Eine Datenbank ist ein Speicher, in dem Daten strukturiert abgelegt sind. Dabei dienen Tabelle dazu, die Informationen zu sortieren. Jede Tabelle kann mehrere Spalten haben, ähnlich wie bei Excel.
Ein primäres Ziel von Datenbanken ist, Redundanzen zu vermeiden. Redundanzen sind Daten, die doppelt vorkommen und somit die Gefahr darstellen, dass diese inkonsistenz werden. dazu werden Teile von Daten in andere Tabellen ausgelagert. Ein Beispiel:
Es geht um Bestellungen eines Kunden. Wir speichern diese in einer Tabelle mit den Spalten Kundenname, BestellNr, Bestelldatum
| KundenName |
BestellNr |
Bestelldatum |
| Meier |
1234 |
17.3. |
| Müller |
2345 |
18.7. |
| Müller |
5879 |
19.1. |
| Müller |
9876 |
27.11. |
Wie auffällt, hat Müller 2 Mal eingekauft. Sollte Müller jetzt heiraten und seinen Namen ändern, müssen wir jeden Eintrag mit Müller durchgehen und ändern. Zudem gibt es viele Müllers. Welcher ist der richtige Eintrag?
Die nächste Tabelle lagert den Namen aus:
| KundenNr |
BestellNr |
Bestelldatum |
| 11 |
1234 |
17.3. |
| 12 |
2345 |
18.7. |
| 13 |
5879 |
19.1. |
| 13 |
9876 |
27.11. |
Wie man hier sieht, sind es zwei unterschiedliche Müllers. Durch eine zweite Tabelle können wir uns merken, wer Müller ist:
| KundenNr |
Nachname |
Vorname |
Strasse |
| 12 |
Müller |
Mark |
Königsstrasse 123 |
|
| 13 |
Müller |
Louise |
Buchenweg 12 |
Hier haben wir sogar mehr Informationen, als vorher!
Die Beziehung zwischen den beiden Tabellen wird über die KundenNr gehalten. Dadurch weiß man, welche Daten zu welchem Datensatz gehören.
Datenbanken, wie MySQL frägt man über einen SQL-Syntax ab.
Select * from Kunden ruft alle Datensätze und alle vorhandenen Spalten aus der Tabelle Kunden ab.
inner join Tabelle2 on Tabelle2.Feld = Tabelle1.Feld verbindet zwei Tabellen über ein Feld.
where tabelle2.wert = 'ABCD' heißt Bedingung und schränkt die Ergebnismenge ein. Dabei kann auf alle Werte aller Tabellen, die über Select oder Join eingebunden sind, verfügt werden.
WICHTIG: Es gibt viiiiele Lösungswege. Der einfachste Weg mit der meisten Handarbeit ist 1 Zeile lang.
Je genauer der SQL-Befehl ist, desto weniger muss man von Hand schauen. Dennoch: es geht! Cacherinstinkt ist gefragt und etwas nachdenken.
Es kann auch eine Tabelle öfters gejoint werden. inner join tabelle2 t2 on t2.feld = t1.wert
Mit 3 joins und 5 Bedingungen sind es nur noch 29 Möglichkeiten.
Mit 3 Joins und 6 Bedingungen und einem Subselect wird es genau 1 Lösung ;-)
Viel Erfolg