Kolokwium z Baz Danych, 2007.11.06
Struktura bazy danych: kol.sql.
create table czesci (
id int primary key,
nazwa varchar(16),
rodzaj varchar(16), /* np. cpu, karta graficzna, */
cena number(10,2), /* koszt jednej części */
magazyn int /* liczba elementów w magazynie, może być NULL */
);
create table zestawy (
id int primary key,
nazwa varchar(16),
cena number(10,2) /* cena którą klient musi zapłacić za cały zestaw */
);
create table elementy_zestawow (
zestaw int references zestawy,
czesc int references czesci,
liczba int,
constraint c_liczba check (liczba>0 AND liczba <10),
unique(zestaw,czesc)
);
Baza przedstawia system magazynowy pewnej firmy sprzedającej zestawy komputerowe.
Napisz następujące zapytania SQL:
- Wypisz dla każdego rodzaju części minimalną i maksymalną cenę części tego rodzaju.
- Wypisz części które występują w tabeli czesci, ale brak ich w magazynie.
- Wypisz id, nazwę, cenę oraz koszt zestawów (przez koszt rozumiemy sumę kosztów elementów zestawu).
- Wypisz id i nazwę zestawów, które mogą być wykonane w części znajdujących się w magazynie (pamięta o sprawdzeniu czy w magazynie jest odpowiednia liczba części).
- Wypisz pary zestawów, które składają się z dokładnie takiego samego zbioru części (pomijamy liczbę części).
- Wypisz części, które nie są wykorzystywane w żadnym zestawie ale znajdują się w magazynie.
- Wypisz id i nazwę części oraz liczbę zestawów w których jest ona wykorzystywana.
- Wypisz id i nazwę zestawu, oraz liczbę różnych części, które należy dokupić do magazynu, aby było możliwe wykonanie zestawu (np. jeśli brakuje 5 części o id 100 i 6 części o id 101, to odpowiedzią jest 2).
- Wypisz id i nazwę zestawu, oraz liczbę różnych rodzajów części wchodzących w jego skład.
- Wypisz id i nazwy zestawów, które można wykonać przy założeniu, że możemy wymienić brakujące części przez inne (ale tego samego rodzaju i w tej samej ilości). Pamiętaj, że w skład zestawu może wchodzić więcej niż jedna część jednego rodzaju.
Zasady
Rozwiązania należy przesłać na adres: walen (małpa) mimuw.edu.pl, w nieprzekraczalnym terminie 2007.11.06 23:59. Rozwiązanie powinno składać się z jednego pliku tekstowego przesłanego jako treść listu (nie załącznik) w formacie:
/* Autor: Imię Nazwisko */
/* Indeks: nr */
/* zadania 1 */
SELECT ... {rozwiązanie zadania 1}
/* zadanie 2 */
SELECT ... {rozwiązanie zadania 2}
/* zadanie 3 */
SELECT ... | /* BRAK */