PDA

View Full Version : [LÖSUNG] - Alle Bsp. gelöst!


blue1
19-05-2002, 20:45
01.) SELECT DISTINCT Klassifikation.Gebiet FROM Klassifikation;
02.) SELECT nachname, jahr FROM Kunde WHERE status='Student' AND Jahr <= 1970;
03.) SELECT Titel FROM Buch WHERE Titel LIKE 'K%' OR Titel LIKE 'L%';
04.) SELECT Buch.Titel, COUNT (InvNR) FROM Buch, Exemplar WHERE Exemplar.ISBN = Buch.ISBN AND Exemplar.RegalNr = 5 GROUP BY Buch.Titel;
05.) SELECT Buch.Titel, Ausleihe.KNr AS Kundennummer, Kunde.Vorname, Kunde.Nachname, Ausleihe.von AS Entlehndatum FROM Ausleihe, Kunde, Buch WHERE bis = null AND Kunde.KNr = Ausleihe.KNr AND Buch.ISBN = (SELECT Exemplar.ISBN FROM Exemplar WHERE Exemplar.InvNR = Ausleihe.InvNR);
06.) SELECT Buch.Titel, Ausleihe.KNr AS Kundennummer, Kunde.Vorname, Kunde.Nachname, Ausleihe.von AS Entlehndatum FROM Ausleihe, Kunde, Buch WHERE bis = null AND Kunde.KNr = Ausleihe.KNr AND Buch.ISBN = (SELECT Exemplar.ISBN FROM Exemplar WHERE Exemplar.InvNR = Ausleihe.InvNR) AND Ausleihe.von < 2002;
07.) SELECT Kunde.Nachname, Kunde.Vorname FROM Kunde WHERE Kunde.KNr NOT IN (SELECT Ausleihe.KNr FROM Ausleihe);
08.) SELECT Autor.Nachname, Autor.Vorname FROM Autor WHERE Autor.ISBN IN (SELECT Klassifikation.ISBN FROM Klassifikation WHERE Klassifikation.Gebiet LIKE '%athematik');
09.) SELECT Kunde.Nachname, Kunde.Jahr FROM Kunde WHERE Kunde.KNr IN (SELECT Ausleihe.KNr FROM Ausleihe WHERE Ausleihe.InvNR IN (SELECT Exemplar.InvNR FROM Exemplar WHERE Exemplar.ISBN IN (SELECT Klassifikation.ISBN FROM Klassifikation WHERE Klassifikation.Gebiet LIKE '%athematik')));
10.) SELECT Kunde.Nachname, Kunde.Vorname, Kunde.KNr FROM Kunde WHERE Kunde.KNr IN (SELECT Ausleihe.KNr FROM Ausleihe WHERE Ausleihe.InvNR IN (SELECT Exemplar.InvNR FROM Exemplar WHERE Exemplar.ISBN NOT IN (SELECT Klassifikation.ISBN FROM Klassifikation WHERE Klassifikation.Gebiet LIKE '%elletristik')));
11.) SELECT DISTINCT Klassifikation.Gebiet, COUNT(Ausleihe.InvNR) FROM Klassifikation, Ausleihe, Exemplar WHERE Ausleihe.bis = null AND Ausleihe.InvNR = Exemplar.InvNR AND Exemplar.ISBN = Klassifikation.ISBN GROUP BY Klassifikation.Gebiet;
12.) SELECT Kunde.Nachname, Kunde.Vorname FROM Kunde, (SELECT Ausleihe.Knr, COUNT (DISTINCT Klassifikation.Gebiet) AS zahl FROM Ausleihe WHERE Ausleihe.InvNR = Exemplar.InvNR AND Exemplar.ISBN = Klassifikation.ISBN GROUP BY Ausleihe.KNr) AS kzahl, (SELECT COUNT (DISTINCT Klassifikation.Gebiet) AS zahl FROM Klassifikation) AS gzahl WHERE kzahl.KNr = Kunde.KNr AND kzahl.zahl = gzahl.zahl;
13.) SELECT DISTINCT Exemplar.RegalNr, COUNT (Exemplar.RegalNr) FROM Exemplar WHERE Exemplar.InvNR NOT IN (SELECT Ausleihe.InvNR FROM Ausleihe WHERE Ausleihe.bis IS NULL) GROUP BY Exemplar.RegalNr;
14.) SELECT Exemplar.RegalNr, SUM (Exemplar.Kaufpreis) AS Gesamtpreis, AVG (Exemplar.Kaufpreis) AS Durchschnittspreis FROM Exemplar GROUP BY Exemplar.RegalNr;
15.) SELECT Exemplar.InvNR, Exemplar.ISBN, Buch.Titel, Exemplar.Kaufpreis FROM Exemplar, Buch WHERE Exemplar.ISBN = Buch.ISBN AND Exemplar.Kaufpreis >= all (SELECT Exemplar.Kaufpreis FROM Exemplar);
16.) SELECT Kunde.Nachname, Kunde.Vorname FROM Kunde, (SELECT Ausleihe.KNr, COUNT (Ausleihe.KNr) AS Anzahl FROM Ausleihe GROUP BY Ausleihe.KNr) AS Klist WHERE Klist.Anzahl >= 10 AND Kunde.KNr = Klist.KNr;
17.) SELECT nachname, vorname FROM (SELECT nachname,vorname,COUNT(*) AS anzahl FROM ausleihe,exemplar,autor WHERE autor.isbn= exemplar.isbn AND ausleihe.invnr = exemplar.invnr GROUP BY nachname, vorname) AS autcount2 WHERE autcount2.anzahl >= (SELECT MAX(anzahl) FROM (SELECT COUNT(*) AS anzahl FROM ausleihe,exemplar,autor WHERE autor.isbn= exemplar.isbn AND ausleihe.invnr = exemplar.invnr GROUP BY nachname, vorname) AS autcount);
18.) SELECT Exemplar.InvNR, Exemplar.ISBN FROM Exemplar WHERE Exemplar.ISBN IN (SELECT list.ISBN FROM (SELECT Exemplar.ISBN, COUNT (Exemplar.InvNR) AS anz FROM Exemplar GROUP BY Exemplar.ISBN) AS list WHERE list.anz >=2);
19.) SELECT Verlag, SUM (Exemplar.Kaufpreis) FROM Buch, Exemplar WHERE Buch.ISBN = Exemplar.ISBN GROUP BY Buch.Verlag;
20.) SELECT Kunde.Telefon, Kunde.Nachname, Kunde.Vorname FROM Kunde, (SELECT Ausleihe.KNr, COUNT (DISTINCT Exemplar.ISBN)AS zahl FROM Ausleihe WHERE Ausleihe.InvNR = Exemplar.InvNR AND Exemplar.ISBN = Autor.ISBN AND Autor.Vorname = 'Karl' AND Autor.Nachname = 'May' GROUP BY Ausleihe.KNr) AS KBzahl, (SELECT COUNT (Autor.ISBN)as zahl FROM Autor WHERE Autor.Vorname = 'Karl' AND Autor.Nachname = 'May')AS buchzahl WHERE KBzahl.zahl = buchzahl.zahl AND KBzahl.KNr = Kunde.KNr;

viel spass damit
mfg
blue1, scells, eruez

dj_m.o.h.t.
22-05-2002, 10:57
Habe sie durchgestest. Stimmen alle überein. Haut wunderbar hin.

blue1
23-05-2002, 20:20
Beispiel 1:
Kunde (Kundennummer, Name)
Firma (Name, Adresse)
Produkt (Bezeichnung, Kategorie)
Kauft (Kunde.Kundennummer, Produkt.Bezeichnung, Produkt.Kategorie, erstes Datum, letztes Datum, Firma.Name)
produziert (Firma.Name, Produkt.Bezeichnung, Produkt.Kategorie, Kosten)


Beispiel 2:

Haus (Postleitzahl, Straße, Hausnummer, Kategorie)
Stockwerk (Nummer, Fläche, Haus.Postleitzahl, Haus.Straße, Haus.Hausnummer)
Wohnung (Türnummer, Fläche, Kategorie, Stockwerk.Nummer, Haus.Postleitzahl, Haus.Straße, Haus.Hausnummer )


Beispiel 3:

Zug (Code, Name, Kategorie)
Bahnhof (Name, Bahnsteige)
Wagon (Inventarnr, Plätze, Baujahr)
Schlafwagon (Wagon.Inventarnr, Bad, 2Bett/4Bett)
Speisewagon (Wagon.Inventarnr, Klimaanlage)
Sitzwagon (Wagon.Inventarnr, Klasse)
Hält (Zug.Code, Bahnhof.Name, Ankunft, Abfahrt)
Zugdetails (Zug.Code, Wagon.Inventarnr)


Beispiel 4:

Abteilung (Nummer, Name, Angestellter.SVNr (leitender Angestellter))
Angestellter (SVNr., Name, Adresse, Gehalt, Bonus, SVNr. (Vorgesetzter) Raum.Adresse, Raum.Raumcode)
Raum (Adresse, Raumcode, Fläche)


Beispiel 5:

CD (ISSNr., Titel, Firma)
Werk (Name, Komponist, Datum)
Instrument (Ton tief, Ton hoch, Name)
Aufnahme (Datum, Tonstudio, Dauer, Werk.Name, Werk.Komponist)
Musiker (Name, Adresse, Geburtsdatum)
Beherrscht (Musiker.Name, Musiker.Adresse, Instrument.Name)
Spielt (Aufnahme.Datum, Aufnahme.Tonstudio, Musiker.Name, Musiker.Adresse, Instrument.Name)
Erscheint (CD.ISSNr, Aufnahme.Datum, Aufnahme.Tonstudio, Werk.Name, Werk.Komponist)




Anschließend sind noch die ER-Diagramme und Relationen gezipt zum herunterladen.


nochmals viel spass damit
blue1, eruez, scells


P.S.: wir übernehmen keine garantie, dass alle bsp auch wirklich richtig sind, kommt auch auf den tutor an!

jeuneS2
23-05-2002, 21:07
Ich glaub, dass bei Wohnung die Angabe der Haus-Schlüssel überflüssig ist (findet man ja auch beim Stockwerk) und bei 'erscheint' kommen mir Name und Komponist (nehm an des Werkes) redundant vor... sonst bin ich aufs gleiche gekommen...

blue1
23-05-2002, 21:24
Die ER-Diagramm von ihnen wurden ein wenig verändert! Bei der neueren Verision ist Wohnung ebenfalls eine weak-entity und dann müsste es wieder stimmen. (Die alte Version der ER-Diagramme wird auch noch angenommen).

Zu deiner 2. Frage:
Der Tutor selbst hat gesagt, dass Name und Komponist noch in "Erscheint" vorkommen muß!

mfg
blue1

jeuneS2
23-05-2002, 22:53
na fein, dass weak entities im buch ausführlichst beschrieben sind, die VO ganz genau nach dem buch vorgeht und niemand zur gleichen eine andere LVA hat... wunderbar!

btw: warum stehen Name und Komponist nicht bei spielt vor?

steve
23-05-2002, 23:06
@jeuneS2: hast recht. NAME und KOMPONIST müssten bei "spielt" dabeistehen, sonst ist die Aufnahme nicht eindeutig identifizierbar.

@NAME und KOMPONIST bei "erscheint": muss meiner meinung nach auch vorkommen, denn du weißt ja sonst nicht, auf welche aufnahme es sich bezieht.
z.B.wennst "we will rock u" und wagners "ritt der valkyren" im selben tonstudio am selben tag aufgenommen hast, weißt nicht, was du nehmen sollst.

sonst: ich hab zum Wagon noch den Code des zuges gehängt, an dem er hängt. dadurch hab ich mir die zugdetails erspart. darf ich das? (glaub nicht, denn der wagon kann ja umgehängt werden)

jeuneS2
23-05-2002, 23:34
eine naive Vorstellung, wies im Tonstudio zugeht, aber is halt von der angabe her so ;)

ich GLAUB das geht nicht midm dazugeben des ZugCodes zum Wagon, weil er ja, wiest eh schreibst, umgehängt werden kann...

steve
23-05-2002, 23:37
und außerdem: Bibliotheksbeispiel:
ich hab auch eine dreiecksrelation EXEMPLAR-KUNDE-AUSLEIHE ("ausleiht" oder so ;) )
die kardinalitäten:
bei KUNDE: 0,* (kunde muss ja nichts ausgeliehen haben
bei EXEMPLAR: 0,* (exemplar muss noch nicht ausgeliehen sein)
bei AUSLEIHE: 1,1 (jede ausleihe kommt nur genau einmal vor)

berichtigts mich, wenn ich falsch lieg (in 13 stunden abgabe! :D)

jeuneS2
23-05-2002, 23:57
...bei Ausleihe brauchst eh nix (is ja Relation), beim Exemplar stimmt imho 0,n... bei Kunde könnte man argumentieren, dass er erst in die db aufgenommen wird, wenn er etwas ausgeliehen hat...
also schön schwafeln und viel glück!

steve
24-05-2002, 01:07
*räusper* _DREIECKSRELATION_!

d.h. ich brauch zu Ausleihe (ist bei mir eine Entity) sehr wohl eine Kardinalität. aber werma sehn. ich hoff das geht gut.......

steve
24-05-2002, 01:22
mir kommen die vielen schlüssel in den Relationen vom 5. Beispiel ("instrumentalisierung", "beherrscht", "erscheint auf") ein bisserl spanisch vor, aber ich wüsst nicht, was man anders machen soll...
gibts da bereits erfahrungswerte? stimmt das so?

lifelikebmx
24-05-2002, 13:07
10.) SELECT Kunde.Nachname, Kunde.Vorname, Kunde.KNr FROM Kunde WHERE Kunde.KNr IN (SELECT Ausleihe.KNr FROM Ausleihe WHERE Ausleihe.InvNR IN (SELECT Exemplar.InvNR FROM Exemplar WHERE Exemplar.ISBN NOT IN (SELECT Klassifikation.ISBN FROM Klassifikation WHERE Klassifikation.Gebiet LIKE '%elletristik')));

bist du dir da sicher?
deine abfrage ergibt 8 ergebnisse,

select Nachname,Vorname,KNr from Kunde where KNr not in (select KNr from Ausleihe)
ergibt 10 ergebnisse und ist die anzahl der leute die noch nie ein buch ausgeliehen haben - ist doch ein widerspruch oder?

meine lösung:
select Nachname,Vorname,KNr from Kunde where KNr not in (select Knr from Ausleihe where Ausleihe.InvNr = Exemplar.InvNr and Klassifikation.ISBN = Exemplar.ISBN and Klassifikation.Gebiet = 'Belletristik')

blue1
24-05-2002, 15:59
Dein modifiziert 10er Bsp ist "noch" korrekter als unseres. Genauergesagt es stimmt und unseres ist nicht präzise genug!

mfg
scells,blue1

lifelikebmx
24-05-2002, 16:30
... ist "noch" korrekter .... nicht präzise genug!
"noch" korrekter, präzise genug , wie soll ich den das interpretieren?

blue1
24-05-2002, 17:46
Nimm deines und nicht unseres! Unseres mach probleme das es ja bücher gibt, die in der Kategorie Mathemaitk und Belleristik sind! Deines müsste stimmen!

mfg
blue1

laborg
26-05-2002, 18:58
bei bsp4 geht aber unter wer eine abteilung leitet! man müsste noch abteilung.nummer in die relation Angestellter geben.

oder?

laborg

Chris
26-05-2002, 22:34
@laborg: also, wer eine abteilung leitet, steht eh drinnen (in der Abteilungsrelation)

was nicht drinnen vorkommt, ist, in welcher abteilung ein angestellter sitzt,,

skytale
27-05-2002, 14:32
Könnte man die Ausgabe nicht auch in eine ist-Beziehung zu Zeitschrift setzen oder spricht das was dagegen??