Bazy Danych, egzamin – 29 stycznia, 2013
1. (20p) Stwórz diagram ER dla wydawnictw. W szczególno´sci oznacz słabe encje,
klucze, rodzaje zwi ˛
azków (opcjonalne, wiele do jednego, integralno´s´c referen-
cyjn ˛
a. . . . ).
Ksi ˛
a˙zki posiadaj ˛
a tytuł, rodzaj (powie´s´c, poezja, . . . ) oraz obj˛eto´s´c (liczb˛e stron).
Autorów identyfikuje imi˛e i nazwisko. Poza tym autorzy posiadaj ˛
a dat˛e urodzenia
i płe´c. Tytuły ksi ˛
a˙zek mog ˛
a si˛e powtarza´c, lecz ˙zaden autor nie napisał dwóch
ksi ˛
a˙zek o tym samym tytule. Ksi ˛
a˙zki wydawane s ˛
a przez wydawnictwa. Ka˙zde
wydawnictwo posiada unikatow ˛
a nazw˛e oraz posiada tak˙ze adres i rok zało˙zenia.
W wydawnictwach pracuj ˛
a edytorzy. Edytora charakteryzuje imi˛e i nazwisko.
Edytor pracuje w najwy˙zej jednym wydawnictwie (cho´c mo˙ze te˙z nie posiada´c
nigdzie etatu). Wydawnictwa wydaj ˛
a ksi ˛
a˙zki. Ka˙zde wydanie charakteryzuje rok
wydania oraz nakład. Ka˙zde wydanie posiada jednego edytora, który jest za nie
odpowiedzialny.
2. (20p) Przekształ´c diagram ER do projekt relacyjny. W relacjach podkre´sl atry-
buty wchodz ˛
ace w skład klucza danej relacji.
S
A
T
B
U
C
D
f
3. (6x5p) Mamy dane tabele Pracownicy(id, imie, nazwisko, data_zatrudnienia,
sklep_id,placa, stanowsko), Sklepy(id,adres), Towary(nazwa, cena), Sprzedaz(id,
pracownik_id, towar_id, cena, data). Klucze relacji s ˛
a podkre´slone. Pola pra-
cownik_id, towar_id oraz sklep_id to odpowiednie klucze obce. Pole cena w
tabeli Sprzedaz odpowiada cenie konkretnej transakcji i mo˙ze by´c ró˙zne od ak-
tualnej ceny towaru.
Napisz zapytania SQL dla:
(a) sumy cen wszystkich towarów sprzedanych przez ka˙zdego pracownika od
pocz ˛
atku roku (2013),
(b) listy skepów (id, adres), towarów oraz sumarycznej warto´sci sprzeda˙zy
danego towaru w danym sklepie (zakładamy, ˙ze pracownik sprzedaje za-
wsze w tym sklepie, w którym jest zatrudniony),
(c) dwóch pracowników, których suma sprzeda˙zy jest najwi˛eksza (mo˙zemy
zało˙zy´c, ˙ze ka˙zdy pracownik sprzedał towary o ró˙znej warto´sci),
(d) listy wszystkich towarów sprzedanym w sklepie o id=9 w dniu 25. stycznia
2012.
1
(e) usuni˛ecia z tabeli Towary wszystkich towarów, które nie zostały ani razu
sprzedane,
(f) podniesienia o 10% pensje wszystkim pracownikom na stanowisku ’kierownik’.
4. (15p) Napisz program PL/SQL, który dla powy˙zszej bazy danych podniesie o 5%
płace wszystkim pracownikom, których suma warto´sci sprzeda˙zy jest wi˛eksza od
podwojonej ´sredniej sprzeda˙zy pracownika sieci i obni˙zy o 5% płace tym, którzy
nic nie sprzedali od pocz ˛
atku roku 2013.
5. (5p) Mamy w bazie danych u˙zytkowników us1, . . . , us4. Kto b˛edzie miał (poza
us1) prawo do wykonania select na tablicy us1.t) po wykonaniu ci ˛
agu instrukcji
(i dlaczego):
us1: grant select on us1.t to us2 with grant option;
us2: grant select on us1.t to us3 with grant option;
us3: grant select on us1.t to us2;
us1: grant select on us1.t to us4 with grant option;
us4: grant select on us1.t to us3;
us1: revoke select on us1.t from us2;
6. (10p) W relacji R(A,B,C,D,E) mamy nast˛epuj ˛
ace zale˙zno´sci funkcyjne: ABC →
D, AD → C, DE → A, AC → B, AB → C. Podaj wszystkie klucze wła´s-
ciwe (czyli minimalne zbiory, które wyznaczaj ˛
a warto´sci wszystkich atrybutów)
dla tej relacji.
2