SQL

o++oPS

Anfrage 1:

        o++oPS-Result:

STID, NAME, ORT?, STIP, FAK, ( KURS, NOTE l),  ( PROJ, STUNDEN m) m
1245 Sophia Berlin 400 CS Algebra 3 Mao 5
          Datenbanken 1 Ming 4
          Otto 1 Otto 6

      

Probleme der entsprechenden SQL-Lösung:

1. Die SQL-Anfrage bezieht sich auf 3 Tabellen
2. Die SQL-Ergebnistabelle muss in die 1.Normalform überführt werden;
folglich erscheint ein Student mit 10 Examen und 10 Projekten 100 mal in diesem Beispiel
3. SQL erfordert 4 Join-Verknüpfungen

eine Zwischen-Anfrage

SELECT *
FROM students1
WHERE “Algebra“ in (SELECT KURS FROM exams1 WHERE students1.STID=exams1.STID)


enthält nur die Daten aus students1 und nicht aus exams1
und die Zwischen-Anfrage

SELECT *
FROM students1, exams1
WHERE KURS=“Algebra“ and students1.STID=exams1.STID


enthält nur Algebra-Records; eine zusätzliche Bedingung KURS=”Datenbanken” ergibt keinen Sinn.

 

Anfrage 2:

       o++oPS-Result:

NAME, ( KURS, NOTE m) b
Clara OCaml 2
Sophia Algebra 3
Otto 1

     

Probleme der entsprechenden SQL-Lösung:

1. SQL erfordert eine Join-Verknüpfung
2. In SQL ist es schwierig, Sets mit Multisets zu verarbeiten.
3. SQL kennt keine strukturierte Ausgabe

Anfrage  3:

      o++oPS-Result:

ANZ, ( KURS, ANZ, ( NAME, STID m) m)
4 Algebra 1 Ernst 1234
  Apel 1 Kaethe 5678
  Datenbanken 2 Clara 3456
      Sophia 1245
  Geschichte 1 Ernst 1234
  Otto 1 Sophia 1245
  Repin 1 Kaethe 5678

    

Hier ist festzustellen, dass die Gesamt-Aggregation nicht der Summe der partiellen Aggregationen entspricht.


Probleme der entsprechenden SQL-Lösung:

1. Die Aggregationen müssen in unabhängigen Anfragen berechnet werden.
2. SQL erfordert Join-Verknüpfungen.
3. SQL erfordert GROUPBY-Anweisungen (GROUPBY KURS)
4. In der GROUPBY-Anweisung sind NAME und STID nicht zulässig.