background image

Zestaw zadań laboratoryjnych 

Nr 6 

Dzielenie relacyjne, SQL, kwantyfikator ogólny 

Baza CJDate 

1)

 

Uruchomić przykłady podane na wykładzie. 

2)

 

Zapytania SQL: znaleźć projekty (J) które mają dostawy wszystkich części z Londynu 

3)

 

Znaleźć pary dostawca projekt (S-J) takie, że dostawca dostarcza wszystkie części 

wykorzystywane przez projekt 

4)

 

Pary dostawca projekt takie, że projekt wykorzystuje wszystkie części dostarczane przez 

danego dostawcę (por. Chris Date uwagi bibliograficzne 6.4 w polskim tłumaczeniu lub 7.4  

8th Edition w angielskojęzycznej) 

5)

 

Ułożyć zapytania z p. 3,4 w obydwu wersjach tj. podwójna negacja Exists oraz sprawdzanie 

liczności zbioru  

6)

 

W zadaniach 7 -11 można posłużyć się tylko jedną techniką – obydwa rozwiązania dla 

chętnych 

7)

 

Podaj numery (J#) projektów zaopatrywanych całkowicie przez dostawcę S1 (Date 6.41) 

8)

 

Podaj numery części (P#) dostarczanych do wszystkich odbiorców w Londynie (Date 6.42) 

9)

 

Podaj numery dostawców dostarczających tę samą część do wszystkich projektów (6.43) 

10)

 

Podaj numery dostawców dostarczających te wszystkie te same części do wszystkich 

projektów 

11)

 

Podaj numery projektów zaopatrywanych przynajmniej w jedną część dostępną u dostawcy 

S1 (6.44) 

 

Baza Northwind 

1)

 

Znaleźć CustomerID takich klientów co kupują wszystko 

2)

 

Znaleźć ProductID produktów dostarczanych do wszystkich klientów 

3)

 

Zadania analogiczne do p.3 i 4 dla bazy CJDate znaleźć pary pracownik (Employee) klient 

(Customer) takie, że pracownik obsługuje sprzedaż wszystkich produktów kupowanych 

przez klienta 

4)

 

Takie pary pracownik klient że klient kupuje wszystko co dany pracownik sprzedaje 

5)

 

Rozważyć wykorzystanie CTE w celu uproszczenia, zastanowić się jaka definicja CTE 

będzie najbardziej sensowna 

6)

 

Wybrane zadanie dot. bazy northwind rozwiązać za pomocą obydwu technik (negacji i 

zliczania) 

Zadanie dodatkowe 

Rozważyć następujący problem: (Date 6.48 tłumaczenie polskie) znaleźć pary dostawców 

dostarczających te same części. Można zapoznać się z rozwiązaniem  w książce. Wskazówka 

prowadzącego (znacznie prostsze rozwiązanie) . 

a)

 

Sposób pierwszy skorzystać w faktu że 

A=B 

 (A

B)- (A

B) =0 

I zapisać ten fakt przy użyciu SQL-owych działań na zbiorach ) 

b)

 

Drugi sposób polega na tym żeby dwa razy skorzystać z podwójnej negacji w celu sprawdzenia 

czy A sprzedaje wszystko co B  (tj. czy A 

 B)oraz czy B sprzedaje wszystko co A  

c)

 

Można też rozważyć punkt b z wykorzystaniem zliczania 

Ułożyć podobny przykład dla bazy Northwind.