UL/FRI/VSP-RI/PB1/Izpiti/2006-01-26
Iz E-študij, proste zakladnice študentskega znanja
|
Izpit z dne 26.01.2006
Čas pisanja: 60 minut.
|
1. naloga
PB vsebuje relacije s shemami:
stranka(sid, ime, mesto, popust) agent(aid, ime, mesto, procent) izdelek(iid, ime, mesto, zaloga, cena) narocilo(nid, mesec, sid, aid, iid, kosov)
Dano imamo poizvedbo:
SELECT DISTINCT n1.aid FROM narocilo n1 WHERE n1.sid='S1' AND n1.aid IN (SELECT n2.aid FROM narocilo n2 WHERE n2.sid='S2');
a) Ugotovite pomen gornje poizvedbe in ga zapišite v naravnem (slovenskem) jeziku.
b) Zgornjo poizvedbo zapišite BREZ uporabe vgnezdenih poizvedb.
Rešitev a)
Izpišite nepodvojene šifre agentov, ki prodajajo strankama s šiframa S1 in S2 (obema!).
Rešitev b)
SELECT DISTINCT n1.aid FROM narocilo n1, narocilo n2 WHERE n1.sid='S1' AND n2.sid='S2' AND n1.aid=n2.aid;
MySQL ne podpira INTERSECT(presek)
SELECT DISTINCT aid FROM narocilo WHERE narocilo.sid='S1' INTERSECT SELECT DISTINCT aid FROM narocilo WHERE narocilo.sid='S2'
2. naloga
Zapišite izraz v relacijski algebri, ki je pomensko ekvivalenten poizvedbi iz prve naloge.
Rešitev
πaid(σsid='S1'(narocilo))
aid(σsid='S2'(narocilo))
3. naloga
Ugotovite, ali je izmenični razpored ukazov transakcij T1 in T2 zaporedniški. Če ni, napiši razlog (detaljno argumentiraj!) in napiši zaporedniški vrstni red izvajanja ukazov transakcij T1 in T2 z uporabo protokola PXC.
| t | T1: Odštej | T2: Prištej |
|---|---|---|
| 1 | Začetek | |
| 2 | PoiščiPreberi(X,x) | |
| 3 | Začetek | |
| 4 | PoiščiPreberi(X,z) | |
| 5 | x=x-10 | |
| 6 | z=z+10 | |
| 7 | Ažuriraj(X,x) | |
| 8 | ||
| 9 | Ažuriraj(X,z) | |
| 10 | ||
| 11 | Pomni | |
| 12 | Pozabi |
Rešitev
Razpored ukazov ni zaporedniški, ker prevede do izgube ažuriranj. Razpored ukazov s protokolom PXC je naslednji:
| t | T1: Odštej | T2: Prištej |
|---|---|---|
| 1 | Začetek | |
| 2 | E-PoiščiPreberi(X,x) | |
| 3 | Začetek | |
| 4 | E-PoiščiPreberi(X,z) (čaka na odobritev) | |
| 5 | x=x-10 | |
| 6,7 | Ažuriraj(X,x) | |
| 8 | Pomni | |
| 9 | (zaseženje odobreno, ukaz se izvede) | |
| 10 | z=z+10 | |
| 11, 12 | Ažuriraj(X,z) | |
| 13 | Pozabi |
4. naloga
Za ORIGINALNI razpored ukazov transakcij T1 in T2 iz prejšnje naloge napišite fragment dnevniških zapisov. SUPB uporablja obnavljanje z dnevnikom in kopijo, ažuriranje fizične podatkovne baze pa se vrši z neposrednim ažuriranjem. Začetna vrednost v podatkovni bazi je X=10. Pri vodenju dnevnika uporabite dejanske čase (stolpec t v originalni tabeli).
Rešitev
<T1, 1, Zacetek, Odstej> <T2, 3, Zacetek, Pristej> <T1, 7, StaraVrednost, Spremeni, (X,10)> <T1, 8, NovaVrednost, Spremeni, (X, 0)> <T2, 9, StaraVrednost, Spremeni, (X,10)> <T2,10, NovaVrednost, Spremeni, (X,20)> <T1,11, Pomni> <T2,12, Pozabi>