Kolokwium z Baz Danych, 2008.10.30
Struktura bazy danych:
create table aktorzy (
pesel varchar(11) primary key,
imie varchar(16) not null,
nazwisko varchar(32) not null,
data_ur date not null
);
create table seriale (
id integer primary key,
nazwa varchar(32) not null
);
create table odcinki (
serial integer references seriale not null,
numer integer not null,
nazwa varchar(32) not null,
data date not null, /* data emisji */
primary key (serial,numer)
);
create table obsada (
serial integer not null,
numer_odcinka integer not null,
aktor varchar(11) references aktorzy not null,
rola varchar(16) not null,
foreign key (serial,numer_odcinka)
references odcinki (serial,numer),
primary key (serial,numer_odcinka,aktor,rola)
);
Baza zawiera informacje o aktorach, serialach i ich odcinkach oraz obsadzie.
Napisz następujące zapytania SQL:
- lista odcinków (w formacie: nazwa serialu, numer odcinka, nazwa odcinka, data emisji w postaci yyyy-mm-dd), posortowana rosnąco wg nazwy serialu, numeru odcinka,
- lista seriali, oraz liczba odcinków, data pierwszego odcinka, data ostatniego odcinka (w formacie: nazwa serialu, liczba odcinków, data pierwszego odcinka w postaci dd-mm-yyyy, data ostatniego odcinka w postaci dd-mm-yyyy), posortowana malejąco wg daty ostatniego odcinka,
- lista peseli aktorów, którzy występowali w jednym odcinku (dowolnego serialu) w więcej niż jednej roli, posortowana malejąco,
- lista aktorów wraz z informacją o liczbie seriali w których występują (w formacie imię, nazwisko, liczba seriali), posortowana rosnąco wg nazwiska, imienia.
- dla każdego serialu wypisz najmłodszego aktora (lub aktorów), którzy w nim występują (w formacie: nazwa serialu, pesel aktora), uporządkowanie: rosnąco wg nazwy serialu,
- dla każdego serialu wypisz aktora (lub aktorów), którzy występowali w największej liczbie odcinków (w formacie: nazwa serialu, pesel aktora, liczba odcinków), uporządkowanie: rosnąco wg nazwy serialu,
- dla każdego aktora wypisz jak długo występował w (dowolnych) serialach (okres od pierwszego do ostatniego wystąpienia w serialu, jeśli aktor nie występował w żadnym serialu to NULL), (w formacie: imię, nazwisko, czas występowania w postaci y-m-d) uporządkowanie: rosnąco wg nazwiska, imienia.
- dla każdego serialu wypisz pesel aktorów, którzy występowali w każdym odcinku (co najmniej jednym), (w formacie: nazwa serialu, pesel), uporządkowanie: rosnąco wg. nazwy serialu, pesela.
- dla każdego aktora wypisz maksymalną liczbę seriali w których występował jednocześnie (przyjmujemy, że występowanie w serialu oznacza okres od pierwszego występu w serialu do ostatniego), (w formacie: pesel aktora, liczba seriali) uporządkowanie: wg. malejącej liczby seriali, rosnąco wg. pesela.
- dla każdego serialu i występujących w nim aktorów, wypisz maksymalną liczbę kolejnych odcinków w których aktor występował (w formacie: nazwa serialu, imię aktora, nazwisko aktora, liczba odcinków) uporządkowanie: wg. nazwy serialu, nazwiska aktora, imienia aktora.
Dodatkowe założenia:
- serial może nie mieć żadnych odcinków,
- aktor może nie grac w żadnym serialu,
- numeracja odcinków może nie być spójna (np. 3, 5, 20).
Zasady
Rozwiązania należy przesłać na adres: walen (małpa) mimuw.edu.pl, w nieprzekraczalnym terminie 2007.10.30 15:45. 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 */
...itd...