# SQL-Queries



## GuStaV%% (25. Mrz 2021)

Hallo zusammen,

ich hätte die folgenden 2 Queries bei denen ich mir unsicher bin, ob sie stimmen:


```
Kursleiter (ID, Nachname)
Kurs (Nr, AnzTeiln, Ort)
Thema (Name, nachgefragt)

leitet (LeiterID, KursNr)
FOREIGN KEY (LeiterID) REFERENCES Kursleiter (ID)
FOREIGN KEY (KursNr) REFERENCES Kurs (Nr)

Kenntnis (LeiterID, ThemaBez)
FOREIGN KEY (LeiterID) REFERENCES Kursleiter (ID)
FOREIGN KEY (ThemaBez) REFERENCES Thema (Name)

behandelt (ThemaBez, KursNr)
FOREIGN KEY (ThemaBez) REFERENCES Thema (Name)
FOREIGN KEY (KursNr) REFERENCES Kurs (Nr)
```

Formulieren Sie jeweils eine SQL-Anfrage, um die folgenden Informationen zu
erhalten:

2 Punkte (a) Listen Sie die Namen aller stark nachgefragten Themen auf, in denen sich der
Kursleiter mit der ID ”3“ auskennt.

(b) Welche Kursleiter kennen sich nicht im Thema mit dem Namen "Webdesign“ aus?

(c) Listen Sie jeden Kursort und die bisherige Gesamtteilnehmerzahl  über alle
Kurse an diesem Ort dann auf, falls diese mindestens 30 beträgt.

a)


```
SELECT NAME
FROM THEMA, KENNTNIS
WHERE THEMA.name = KENNTNIS.ThemaBez
AND Kenntnis.LeiterID = 3
```


b)


```
SELECT ID, Nachname
FROM Kursleiter, Kenntnis
WHERE Kursleiter.ID NOT IN
( SELECT ThemaBez
FROM Kenntnis
WHERE ThemaBez = "Webdesign" )
```

c)


```
SELECT DISTINCT SUM(AnzTeil), Ort
FROM KURS
GROUP BY ORT
HAVING SUM (AnzTeiln) > 29
```


Was meint ihr? passt das?

Vielen Dank im Voraus


----------



## mrBrown (25. Mrz 2021)

a) Besser explizite Joins nutzen, die Einschränkung auf "stark nachgefragten Themen" fehlt auch

b) Das erste FROM passt nicht (wofür brauchst du Kenntnis?), das innere Select passt nicht (Kursleiter.ID und ThemaBez passen nicht zusammen)

c)  Das DISTINCT ist überflüssig, AnzTeiln sollte beide Male richtig geschrieben werden


Hast du die Queries einfach mal getestet? Einfach mal ein paar Beispieldaten erstellen und die Queries ausführen


----------



## GuStaV%% (25. Mrz 2021)

Hallo,

vielen Dank schon mal. 

b) Bei dem Subquery sollte ich doch eine Tabelle erhalten, welche mir nur noch die Werte liefert, welche in Themenbezeichnung = "Webdesign" haben, oder? und darauf wird nun die ID und der Name aus Kursleiter selektiert (Mit dem Kenntnis hast du natürlich Recht) : ).

c) Aber falsch ist es auch nicht, oder?

würde es bei 

a) 2 Punkte geben

b) 3 Punkte

c) 4 Punkte

was denkst du habe ich rausgeholt. Das waren meine Selects in einer Klausur : ).


----------



## GuStaV%% (25. Mrz 2021)

GuStaV%% hat gesagt.:


> Hallo,
> 
> vielen Dank schon mal.
> 
> ...


AnzTeiln habe ich in c) eigentlich richtig geschrieben gehabt : )


----------



## mrBrown (25. Mrz 2021)

GuStaV%% hat gesagt.:


> Bei dem Subquery sollte ich doch eine Tabelle erhalten, welche mir nur noch die Werte liefert, welche in Themenbezeichnung = "Webdesign" haben, oder?


Die Subquery hat aktuell als Ergebnis einfach nur "Webdesign", du selectest nur die Themenbezeichnung – du brauchst aber die ID des Kursleiters.



GuStaV%% hat gesagt.:


> was denkst du habe ich rausgeholt.


Wenn nur das Ergebnis relevant ist und der Schreibfehler in c korrigiert ist: 4 Punkte.
Wenns Teilpunkte gibt und das eigentliche Ergebnis egal ist: 3 - 4 Punkte.


----------



## GuStaV%% (25. Mrz 2021)

okay, also für c) 4 Punkte

und bei a) gab es 2 Punkte 

und bei b) 3 Punkte

Was denkst du könnte ich hier erwarten ?


----------



## mrBrown (25. Mrz 2021)

GuStaV%% hat gesagt.:


> Was denkst du könnte ich hier erwarten ?


Wie gesagt:


mrBrown hat gesagt.:


> Wenn nur das Ergebnis relevant ist und der Schreibfehler in c korrigiert ist: 4 Punkte.
> Wenns Teilpunkte gibt und das eigentliche Ergebnis egal ist: 3 - 4 Punkte.


Das sind bereits die Punkte für alle a, b und c zusammen.


----------



## GuStaV%% (25. Mrz 2021)

hmm okay, vielen Dank : ).

Kennst du dich vielleicht auch mit mit Normalformen aus?

da war es diese Aufgabe hier:

Pr ̈ufen Sie, in welchen Normalformen die folgenden Relationenschemata mit funk-
tionalen Abh ̈angigkeiten F vorliegen. Begr ̈unden Sie Ihre Antwort.

(a) PRODUKTKOSTEN1(AuftragsNr , Herstellungsdatum, Bezeichnung,

RechnungsNr, VerpackungsNr)

F = {AuftragsNr → Herstellungsdatum, AuftragsNr → Bezeichnung,
AuftragsNr → RechnungsNr, AuftragsNr → V erpackungsNr,
V erpackungsNr → Herstellungsdatum}

(b) PRODUKTKOSTEN  2(AuftragsNr , Herstellungsdatum, Bezeichnung,

RechnungsNr, VerpackungsNr)

F = {AuftragsNr → Herstellungsdatum, AuftragsNr → Bezeichnung,
AuftragsNr → RechnungsNr, AuftragsNr → V erpackungsNr,
RechnungsNr → V erpackungsNr, RechnungsNr → AuftragsNr}

(c) PRODUKTKOSTEN 3(AuftragsNr , Herstellungsdatum, Bezeichnung,

RechnungsNr, VerpackungsNr)
F = {(AuftragsNr, Bezeichnung) → Herstellungsdatum,
(AuftragsNr, Bezeichnung) → RechnungsNr,
(AuftragsNr, Bezeichnung) → V erpackungsNr,
Bezeichnung → V erpackungsNr}




Meine Lösung:

a) Liegt in der 2 NF vor

b) Es liegt in der 2 NF vor, da die VerpackungsNr nicht funktional abhängig ist von dem Schlüssel AuftragsNr. 

c) Liegt in der 1 NF vor, da VerpackungsNr alleine schon durch Bezeichnung bestimmt werden kann (funktional abhängig) ist und nicht vom gesamten Schlüsselpaar.

Würde das wenigstens passen?

Ich glaube ich muss um das Bestehen bangen :/


----------



## mihe7 (26. Mrz 2021)

GuStaV%% hat gesagt.:


> Meine Lösung:
> 
> a) Liegt in der 2 NF vor


Begründung?



GuStaV%% hat gesagt.:


> b) Es liegt in der 2 NF vor, da die VerpackungsNr nicht funktional abhängig ist von dem Schlüssel AuftragsNr.


Wenn ich mich nicht verschaue, dann lese ich da was von "AuftragsNr → VerpackungsNr".



GuStaV%% hat gesagt.:


> c) Liegt in der 1 NF vor, da VerpackungsNr alleine schon durch Bezeichnung bestimmt werden kann (funktional abhängig) ist und nicht vom gesamten Schlüsselpaar.


Wobei ich hier von Schlüsselkandidat oder (zusammengesetzten) Schlüssel und nicht von einem Schlüsselpaar reden würde. Kann aber sein, dass Ihr da eine etwas andere Terminologie benutzt.

Evtl. solltest Du noch - mit Begründung - dazu schreiben, dass alle die 1. NF erfüllen.


----------



## GuStaV%% (26. Mrz 2021)

hmm also liegt b) wohl doch in der 3NF vor, oder? Ich dachte weil VerpackungsNr auch über ein Nichtschlüsselattribut bestimmt werden kann, oder irre ich mich da?

Die gleiche Begründung auch für a)

Oder liege ich falsch?


----------



## mihe7 (26. Mrz 2021)

GuStaV%% hat gesagt.:


> Ich dachte weil VerpackungsNr auch über ein Nichtschlüsselattribut bestimmt werden kann, oder irre ich mich da?


Hast Du denn einen Schlüssel gegeben? Könnten ggf. mehrere Schlüsselkandidaten existieren?


----------



## GuStaV%% (26. Mrz 2021)

Achso, ja das habe ich vergessen.

Bei a) war der Schlüssel AuftragsNr

Bei b) AuftragsNr

und bei c) AuftragsNr und Bezeichnung


----------



## mihe7 (26. Mrz 2021)

Wenn AuftragsNr Schlüssel ist, dann ist auch RechnungsNr ein Schlüssel, aufgrund der wechselseitigen Abhängigkeit. Damit sind AuftragsNr und RechnungsNr Schlüsselattribute...


----------



## GuStaV%% (26. Mrz 2021)

hmm also dann gleicher Fall wie bei c....

aber c) habe ich wenigstens richtig gemacht, oder?


----------



## mihe7 (26. Mrz 2021)

Nicht der gleiche Fall wie c) - bei c) hast Du einen zusammengesetzten Schlüssel.


----------



## GuStaV%% (26. Mrz 2021)

hmmm okay, also was wäre dann die Lösung für b?

und noch mal gefragt c) habe ich richtig gemacht, oder : )

Tut mir leid, ich bin leider sehr nervös, dass ich eventuell durchgefallen bin.


----------



## mihe7 (26. Mrz 2021)

Ach, Du hast das schon abgegeben?


----------



## GuStaV%% (26. Mrz 2021)

Ja, leider. Vielleicht muss ich sie aber eh wiederholen....was mich mega annerven würde. 

c) ist richtig ? : D


----------



## mihe7 (26. Mrz 2021)

Ja, c) ist richtig, s. Kommentar #9 

Und a) ist ja auch richtig: transitive Abhängigkeit -> 3. NF verletzt.


----------



## GuStaV%% (26. Mrz 2021)

Puh, da bin ich erleichert..... : D

Es wird eine extrem knappe Geschichte.

Kannst du vielleicht auch ER-Diagramme? Und könntest da mal kurz einen Blick über meines werfen und mir sagen, was du davon hälst? Da gab es 15 Punkte drauf. Ich brauch dabei mindestens 7 (sonst bin ich im Eimer : D)


----------



## GuStaV%% (26. Mrz 2021)

Das wäre auch das letzte womit ich nerve ; )


----------

