Datenbanken 1 – Uebung11 – Georg Kuschk – MI-10 1.) Ja , dies kann geschehen , da beide Attribute unabhaengig voneinander Nullwerte annehmen koennen. SELECT DISTINCT ORCHESTER FROM AUFNAHME WHERE LEITUNG IS NULL AND ORCHESTER IS NOT NULL; 2.) SELECT DISTINCT K.VORNAME,K.NAME FROM KOMPONIST K , STUECK S , SOLIST SOL WHERE ((SOL.NAME='Isabel Mourao') OR (SOL.NAME='Wolfgang Sawallisch')) AND (SOL.SNR=S.SNR) AND (S.KNR=K.KNR); 3.) Die folgende triviale Anfrage berechnet das Kreuzprodukt von 5 Tabellen und hat daher einen grossen Speicher- und Zeitaufwand (auf meinem PC ca 78s). SELECT DISTINCT C.CDNR,C.NAME FROM CD C, AUFNAHME A1, AUFNAHME A2, STUECK S1 , STUECK S2 WHERE (C.CDNR=A1.CDNR) AND (C.CDNR=A2.CDNR) AND (A1.SNR=S1.SNR) AND (A2.SNR=S2.SNR) AND (S1.KNR != S2.KNR); Berechnet man zuerst aus dem Kreuzprodukt von 4 Tabellen heraus alle verschiedenen CD-Nummern derjenigen Aufnahmen mit mindestens zwei verschiedenen Komponisten , und kreuzt dieses Ergebnis zum Schluss mit der Tabelle CD, um den CD-Namen anzugeben , so wird der Aufwand erheblich reduziert. (bei meinem PC von 78s auf 1.7s) : SELECT DISTINCT C.CDNR,C.NAME FROM CD C, ( SELECT DISTINCT A1.CDNR FROM AUFNAHME A1, AUFNAHME A2, STUECK S1, STUECK S2 WHERE (A1.CDNR=A2.CDNR) AND (A1.SNR=S1.SNR) AND (A2.SNR=S2.SNR) AND (S1.KNR != S2.KNR) ) X WHERE C.CDNR=X.CDNR; 4.) SELECT DISTINCT S.SNR,S.TITEL FROM STUECK S, AUFNAHME A1, AUFNAHME A2 WHERE (A1.SNR=S.SNR) AND (A2.SNR=S.SNR) AND (A1.CDNR != A2.CDNR); //Anzahl der Tupel fehlt. -1 Punkt