Vergeltung

Hinweise zur Datenmanipulation in SQLiteStudio

Die Anweisungen des Hackers sind zwar grundsätzlich ausreichend, aber trotzdem sollten Sie den Schüler/innen den Umgang am Beamer zeigen.

Anschließend werden die ersten Übungen von den Schüler/innen gemacht. Das ist nicht besonders kreativ, aber sie üben damit das Einfügen, Ändern und Löschen von Datensätzen in SQLiteStudio. Dass die Datenbank dabei inkonsistent wird, ist Absicht.

In der nächsten Übung, in der Rousseau die Abfragen prüft, sollen die Schüler/innen die Abfragen ausführen (Copy Paste) und herausfinden, was genau da nicht stimmt. Deshalb wird in der zweiten Übung nicht explizit erklärt, wo das Problem liegt.

Wenn Rousseau am Ende des Kapitels ins Grübeln gerät, sollten wir mit den Schüler/innen besprechen, warum die Abfragen nicht (mehr) ordentlich funktionieren. Wir kommen dabei zwangsläufig auf das Problem der fehlenden Übereinstimmung von Fremd- und Primärschlüsseln.

Also, es bleibt dabei - sobald diese schmierigen kleinen Stinktiere von Dr. Schaub in den Knast gebracht wurden, ändern Sie meinen Status in der Personalakte auf Oberhauptkommissariatsleiterin. Sobald ich Zugriff habe, transferiere ich Ihnen das Geld vom Präsidiumskonto - 5.000 Bitcoins.

Exakt. Aber ich kann das remote nicht machen, ich kann Ihnen aber Zugriff verschaffen und Ihnen zeigen, wie das geht. Also jetzt schnell!!! Was genau wollen Sie tun?

Ich habe herausgefunden, dass Interpol in den Datenbeständen nach Leuten sucht, die am 28.02.2033 eine große Menge Düngemittel gekauft haben und sich am gleichen Tag im Beruflichen Schulzentrum aufgehalten haben. Ich will, dass wir für die genannten vier Personen entsprechende Einträge in der Datenbank vornehmen.

Es geht mich zwar nichts an, aber Düngemittel???? Berufliches Schulzentrum??? Sind Sie sicher???????

Absolut. Aus dem Beruflichen Schulzentrum wurde an diesem Tag eine größere Menge Thermit gestohlen, in Verbindung mit Düngemittel lässt sich daraus eine Megabombe bauen. Wenn die für Smith und seine Versager entsprechende Einträge in der Datenbank finden, gehen die alle SOFORT in den Knast der CIA - und zwar ohne Gerichtsverhandlung.

Ok!!! Am besten öffnen Sie die Datenbank mit SQLiteStudio. Hier haben Sie eine aktuelle Kopie: maulwurfstadtDB.db. Wie Sie neue Datensätze mit SQLiteStudio einfügen, wissen Sie?

Nein.

Ok - Ich lade Ihnen eine Anleitung hoch (hohe Qualität/große Datei in neuem Fenster öffnen)!!! Klicken Sie hier:

Alles klar? Die Datenbank, die Sie haben, ist nur eine Kopie, das sind noch nicht die endgültigen Änderungen. Spielen Sie einfach mal damit rum. Es wird am einfachsten, wenn Sie die Spalten durch Doppelklick auf den Spaltenkopf sortieren!!!

Verstanden. Ich melde mich.

@@@ host disconnected @@@

Bald habe ich euch, ihr verdammten … Also, probiere ich das mal aus.

Erst mal ein paar Datensätze löschen, das scheint mir am einfachsten.

  1. Ich lösche Anton Schmitt, pNr 10542 - der ist mir schon seines Namens wegen unsympathisch.
  2. Und dann machen wir doch mal meine Nachbarin Melina Jakob, pNr 10220, dieses junge, verkommene Ding, sauber - ich lösche ihre beiden Einträge im Strafregister.

Das war tres facile. Jetzt mal was ändern.

  1. Die Melina Jakob, pNr 10220, hat ihre Haare so hässlich schwarz gefärbt. Ich mache ihr mal pinke Haare, hihi.
  2. Mal in die Krankenakte von ihr schauen. Ah, sie hat Krankheit Nr. 15 … Was immer das ist. Ändere ich die 15 mal auf 500 … Hihihi, mon Dieu, das macht Spaß!

Und jetzt mal noch einen neuen Datensatz einbauen.

  1. Sie kriegt gleich noch einen neuen Eintrag im Strafregister. Also … FK_pNr ist natürlich 10220, und FK_idStraftat ist … na, warum nicht das gleiche wie ihre Personennummer, 10220.
  2. Noch eine Straftat ins Strafregister, zum Üben. Aber rapide. Also 999999 und 999999. Voila!

Das war wirklich super-einfach! Aber bevor ich jetzt den DMF-Hacker um die echten Datenbestände bitte, teste ich besser noch mal, ob ich nichts kaputt gemacht habe.

  1. Ok, mal sehen, was dieser Anton Schmitt alles eingekauft hat:
    SELECT p.vorname, p.nachname, w.bezeichnung, e.datum
      FROM einkaeufe e,
           personen p,
           waren w
     WHERE e.FK_pNr = p.pNr AND 
           e.FK_idWare = w.idWare AND 
           p.nachname = 'schmitt' AND 
           p.vorname = 'anton';
    

    Hä? Dann vielleicht mal mit der Personennummer?!
    SELECT p.vorname,
           p.nachname,
           w.bezeichnung,
           e.datum
      FROM einkaeufe e,
           personen p,
           waren w
     WHERE e.FK_pNr = p.pNr AND 
           e.FK_idWare = w.idWare AND 
           p.pNr = 10542;

    Was?! Aber … aber es GIBT doch Einkäufe mit dieser Personennummer, das sehe ich mit
    SELECT *
      FROM einkaeufe e
     WHERE e.FK_pNr = 10542;
    Das ist ja komisch …
  2. Vielleicht hat ja die Änderung in der Krankenakte geklappt. Mal sehen …
    SELECT p.nachname,
           p.vorname,
           k.bezeichnung
      FROM personen p,
           krankenakten ka,
           krankheiten k
     WHERE ka.FK_idKrankheit = k.idKrankheit AND 
           ka.FK_pNr = p.pNr AND 
           p.pnr = 10220;
    Merde!! Schon wieder das gleiche Problem!!!
  3. Ich befürchte, das Strafregister habe ich auch kaputt gemacht …
    SELECT *
      FROM straftaten s,
           strafregister sr,
           personen p
     WHERE sr.FK_idStraftat = s.idStraftat AND 
           sr.FK_pNr = p.pNr AND 
           p.pnr = 10220;
    
  4. Und was ist mit meiner 999999-Änderung?
    SELECT *
      FROM straftaten s,
           strafregister sr,
           personen p
     WHERE sr.FK_idStraftat = s.idStraftat AND 
           sr.FK_pNr = p.pNr AND 
           p.pnr = 999999;
    Oder vielleicht mal
    SELECT *
      FROM strafregister sr
     WHERE sr.FK_idStraftat = 999999 AND 
           sr.FK_pNr = 999999;
    Warum funktioniert das jetzt??

Mistmistmist! Ich glaube, ich habe alles kaputt gemacht. Aber woran kann das liegen … (versinkt in längeres Grübeln)

    Woran liegt es, dass die letzten Abfragen nicht korrekt funktionieren?

    30 Minuten später …

    Ich glaube, ich habe eine Idee. Muss ich mal den Hacker fragen …