Osnove Podatkovnih Baz. --skripta /2011. Kazalo. Pripravila: Iztok Savnik Matjaž Kljun

Size: px
Start display at page:

Download "Osnove Podatkovnih Baz. --skripta /2011. Kazalo. Pripravila: Iztok Savnik Matjaž Kljun"

Transcription

1 Osnove Podatkovnih Baz --skripta /2011 Pripravila: Iztok Savnik Matjaž Kljun Kazalo Uvod 3 Realcijsko Podatkovni Model 9 Relacijski podatkovni model 9 Vaje 14 Relacijska algebra 16 Vaje 22 SQL: Poizvedbe, integritetne omejitve, sprožilci 24 Vaje 33 Relacijski račun 38 Vaje 41 QBE 43 Vaje 49 Arhitektura Relacijskih Sistemov 53 Diski in datoteke 53 Indeksi 62 Datoteke in indeksi 72 Vaje 80 Pregled evaluacije poizvedb 82 Evaluacija relacijskih operacij 89 Vaje 98 Optimizacija poizvedb 100 Vaje 117 Pregled upravljanja transakcij 119 Vaje 124 Kontrola vzporednosti 126 Vaje 139 Obnavljanje podatkovnih baz 141 Vaje 148 Aplikacije Podatkovnih Baz 151 SQL v aplikacijski kodi 151 Vaje 161 Semantične tehnologije in spletne aplikacije 163

2

3 %*9:;<8$%=/>+20 B!"#$%&%'#()* %*9:;<8 B,-.-'#/'C%%%%%%%%%%%>96D9E%1FDG; B 0%)#C%%%%%%%%%%%%%%%%%/:A<67H;I%<;%F9J7H967H<D?8I B 12&2".(/#%3"#C%%"7%@HIA9:9;DG B 456.'C%%%%%%%%%%%%%%%%%@<?;<%K%A7L9MI%;9F7NI%K%G?6;< O<6IH96GH9 B 7/).8% P Q9NRG%Q9L98H<?R;9;$%S7R9;;I?%TIRH8I$% 9%'%:%-#+;%/%8#<#/'+=>-'#<-?+;@1"%ABC.((?+D "$ + #$E?+FGGHE B!"2-2)/.@#* P!"2-2)/.@#+-2+6".6"%&()#/#+/%+2-/2&.+6"2-2)/.@+./+ 2-'%(#8%+<%'#".%(%+IJ2A+K22LM*++NEN%<%L".-O/%/?+ O''6*PP6%8#-E@-EA.-@E#$3PQ$::22LP B 92$%'/%+(.'#"%'3"% P /JH9R9L%*<FJIH?UR965$%3I;HV%=W%17H6R$%*W%% *GA9H?R9;$%9%'%:%-#+=>-'#<+J2/@#6'-?+X HA %%IAW$% >UTH9YZ3<FF$%([[\W!UI;DI:9;DI B 92<%R#+/%(28#+S+TGU+ B!.-/.+.56.'+S+TGU P 72(2L&.)% P!.-/.+.56.' P V+WGU+X B Y-'/.+.56.'+S+FGU P!"#8(#$+-/2&. P!"#8(#$+$#(2&+2@#/#%

4 19D%DI%*]"#^.9676I8I%:?W%*]"# B *<?6IL%59%]@H9:FD9;DI%?%"7A9687:;<L<%#959L< B,IF<89$%@7:I59;9%5J<H89%@7A9687:W B >7AIF<H9%787FDI%:%HI9F;IL%?:I6GW! %-;6<6I6I%_IWNW$%7?IJI$?6GAI;6<$@HIALI6<WWW`! %Q95LIHD9%_IWNW$%07;I%DI%:@<?9;%;9%"#` B J959L<W B /@F<89U<DI%@HI;9a9D7%:IF<8I%87F<M<;I%@7A9687:% LIA%A<;9L<M;<L%?@7L<;7L%<;%A<?87L%_IWNW$% JGbbIH<;N$%A7?67@%;9%7?;7:<%@7A9687:;<R%?6H9;<$%X&ZJ<6%;9?F9:FD;DI$%<6AW`W B "7?IJ;9%87A9%59%@7?9LI5;I%@7<5:IAJIW B 49aM<69%@7A9687:%@HIA%;I87;?<?6I;U7$%8<%DI% F9R87%@7?FIA<U9%:IM<R%R8H96;<R%G@7H9J;<87:W B 49aM<69%@HIA%<5@9A7L%?<?6IL9W B,9H;7?6%<;%87;6H7F9%A7?67@9W 4989D%G@7H9JFD96<%*]"#^ B "7A9687:;9%;I7A:<?;7?6%<;%GM<;87:<6%A7?67@% A7%@7A9687:W B 4L9;Da9;%M9?%H95:7D9%9@F<89U<DIW B "7A9687:;9%<;6INH<6I69%<;%:9H;7?6W B ];<b7hl;7%9al<;<?6h<h9;di%@7a9687:w B 38H96I;%A7?67@$%59aM<69%@HIA%?<?6IL?8<L<% ;9@989L<W 4989D%a6GA<D%*]"#^^ B "HIR7A%<5%H9MG;9;D9%;9%<;b7HL9U<DI! c?@7a;d9%lid9dc%@hi<?87:9;di%a9676im;in9% HI@75<67H<D9$%<;6IH;I6%JHI5%?IL9;6<M;IN9%?@FI69% _897?e`! c5n7h;d9%lid9dc%<?89;di%;9%7?;7:<%87;ui@6g9f;i% LHIEI$%5;9;?6:I;I%9@F<89U<DI$%WWW B "7A9687:;I%5J<H8IC%;9H9aM9%H95;7F<87?6%<;% WWW%%@76HIJ9%@7%*]"#%5IF7%;9H9aM9W B *]"#%@78H<:9D7%:IM<;7%H9MG;9F;<a6:9!!*$%A<?8<$%DI5<8<$%6I7H<D9$%/2$%%LGF6<LIA<9$%F7N<89!

5 "7A9687:;<%L7AIF< B "7A9687:;<%L7AIF%DI%5J<H89%87;UI@6G9F;<R% NH9A;<87:%59%7@<?%@7A9687:W B *RIL9%DI%7@<?%87;8HI6;I%5J<H8I%@7A9687:%5% G@7H9J7%A9;IN9%@7A9687:;IN9%L7AIF9W B :H?6<UIW +<:7D<%9J?6H98U<DI B,IM%@7NFIA7:$%I;9% 87;UI@6G9F;9%?RIL9%<;% b<5<m;9%?ril9w! "7NFIA<%7@<?GDID7%8987% G@7H9J;<8%:<A<%@7A968IW%%! 17;UI@6G9F;9%?RIL9% AIb<;<H9%F7N<M;7%?6HG86GH7W%! =<5<M;9%?RIL9%7@<?GDI% G@7H9JFDI;I%A9676I8I%<;% <;AI8?IW * *: *; /0(1-234)5()*+,-.) $%&%'()*+,-.) "!"#$%&!'$!($)*+*,&+&!-!./0,&10!2234 "!50(&67*!8$!8/,$%*+'&'09/0*-:$(.'$'0!-!2;3# "H<LIHC%"#%G;<:IH5I B 17;UI@6G9F;9%?RIL9C%%%%%%%%%%%%%%%%%%! %Z'3$#/'._-.$*+-'"./8?+.<#*+-'"./8?+(28./*+-'"./8?+ ++-'%"2-'*+./'#8#"?+62&6"#R)#*"#%([! +!"#$<#'.\6.$*+-'"./8?+6.<#*-'"./8?+'2RL#*./'#8#"[+! +06.-\-.$*-'"./8?+6.$*-'"./8?+2@#/%*-'"./8[ B =<5<M;9%?RIL9C! QIF9U<DI%?RH9;DI;I%:%;IGHIDI;<R%A9676I89RW%! 2;AI8?%DI%AIb<;<H9;%;9%@H:IL%?67F@UG%HIF9U<DI%f6GAI;6<W% B 4;9;D9%?RIL9%_"7NFIA`C%!!"#$<#']4/^2\6.$*-'"./8?&6.-%/.*./'#8#"[ "7A9687:;9%;I7A:<?;7?6%g B B "!<+&!0(!+&'10='!/0%$%1+*#!/,$(+086*!./0,&1$!">5?!@

6 B <5H9MG;9F7%?69;DI%H9MG;9W% B *]"#%59N769:FD9$%A9%A7%@7A7J;<R%@H7JFIL7:%;I% J7%@H<aF7C%G@7H9J;<8<%F9R87%L<?F<D7$%A9%AIF9D7%;9% I;7ZG@7H9J;<a8IL%?<?6ILGW% 0H9;?98U<D9C%"H<LIH%@H7NH9L9%*]"# B!?;7:;<%87;UI@6%DI%'"%/-%L@.)%$%8<%DI%%'2<%"/%%?I8:I;U9%98U<D%*]"#%_JH9;DI)@<?9;DI`W B,?989%6H9;?98U<D9$%8<%?I%<5:Ha<%UIF76;9%L7H9%@G?6<6<% "#%:%87;?<?6I;6;IL%?69;DG%MI%DI%"#%87;?<?6I;6;9%87%?I%DI%6H9;?98U<D9%59MIF9%<5:9D96<W%! *]"#%59HI?%;I%H95GLI%@7LI;9%@7A9687:%_;@HW$%;I%H95GLI%8987%?I% H9MG;9D7%7JHI?6<%;9%J9;M;IL%H9MG;G`W! 07HID$%59N769:FD9;DI$%A9%6H9;?98U<D9%7RH9;D9%87;?<?6I;6;7?6%"#%DI% 7AN7:7H;7?6%G@7H9J;<89%e Q95:HaM9;DI%?7M9?;<R%6H9;?98U<D B *]"#%59N769:FD9$%A9%DI%<5:9D9;DI%L;7E<UI%6H9;?W%%h0 ( $%WWW%$%0 ; i% I8:<:9FI;6;7%;I8IL%5%62"#$/#<%<5:9D9;DG%0 ( j%www%0 ; jw! "HIA%@<?9;DIL)JH9;DIL%6H9;?98U<D9C% (`%59R6I:9%598FI@9;DI%:?IR%7JDI867:$%8<%?I%D<R%A76<89%<;% &`%@7M989$%A9%*]"#%7L7N7M<%598FI@9;DI%%6IR%7JDI867:W%,?<% 598FI;DI;<%7JDI86<%?I%?@H7?6<D7%;9%87;UG%<5:D9;D9%6H9;?98U<DIW%% _*6H<86I;%&Zb95;<%@H76787F%598FI@9;D9W` # 49@7HIA;7%<5:9D9;DIC! 2AID9C%kI%98U<D9%0 < %_@<?9;DI%l`%:@F<:9%;9%0 D %_;@HW%JIHI%l`$%J7%I;9%<5LIA% 6H9;?98U<D%@H:9%_;@HW%0 <`%A7J<F9%<;%AHGN9%_0 # *LH6;<%7JDILC! 19D%MI%0 D %EI%<L9%598FI;DI;%n%9;A%0 < %89?;IDI%59R6I:9%598FI@9;DI%n^% _*LH6;<%7JDIL%Z%AI9AF7U8e`%0 < %9F<%0 D %?I%G?69:<%<;%@76IL%@7;7:;7%?69H69e% B B 49N769:FD9;DI%967L<M;7?6< *]"#%59N769:FD9%%'2<.R/2-'+_:?IZ9F<Z;<M`%MI6GA<%?I%5N7A<%?<?6IL?89%;9@989%9F<%b<5<MI;%<5@9A%?<?6IL9%?HIA<% 6H9;?98U<DIW 2AID9C%3H9;DI;DI%A;I:;<89%_(28[%_5N7A7:<;9`%:?IR%98U<D$%8<%D<R% <5:9D9%*]"#%LIA6IL$%87%<5:9D9%L;7E<U7%6H9;?98U<DC! "HIA%:?987%%?@HILILJ7%:%"#%?I%:@<aI%G?6HI5I;%F7N%59@<?%:%F7N% A9676I87$%@H<%6IL%@9%59N767:<L7$%A9%?I%DI%59@<?%HI?%b<5<M;7%59@<?9F% ;9%A<?8W%%_a,_+6"2'2L2(m%!*%@7A@7H9%MI?67%;<%59A7?6<%A7JH9`! "7%?<?6IL?8<%;9@98<%?I%:@F<:%AIF;7%<5:HaI;<R%6H9;?98U<D%<5;<M<%6987$% A9%?I%<5;<M<D7%:?I%<5:HaI;I%98U<DI%6H9;?98U<DW%_o/O%@H76787F% 59N769:FD9$%A9%;<%59@<?9%:%A;I:;<8G$%MI%;<%?@HILILJ9%EI%<5:HaI;9%:% "#e`

7 B B B B.;I:;<8%_O7N` +9?FIA;DI%98U<DI%?I%59@<?GDID7%:%A;I:;<8C! b. +626"%&.+2:)#L'C%%*69H9%<;%;7:9%:HIA;7?6%7JDI869W < 49@<?%A;I:;<89%L7H9%J<6<%?RH9;DI;%;9%A<?8G%@HIA%@7A9687:;7%?6H9;D7$%8<% :?IJGDI%@7A968I%7JDI869e! b. +5%L()3R.P6"#L./#C%%49@<?%A;I:;<89%?RH9;<%98U<D7W 49@<?<%A;I:;<89%?7%@7:I59;<%LIA%?9J7%5%G@7H9J7%l9U6%2.m% I;7?69:;7%DI%:5@7?69:<6<%?69;DI%@HIA%l9U6%_;@HW$%A9%?I%HIa<%?LH6;IN9%7JDIL9`W.;I:;<8%?I%@7N7?67%@7A:7D<%59H9A<%:9H;7?6<%<;%?I%@H9:<F7L9% 9HR<:<H9%;9%@IH?<?6I;6;IL%LIA<DGW,?I%986<:;7?6<%F7N<H9;D9%_986<:;7?6<%59%87;6H7F7%?7M9?;IN9% A7?67@9$%598FI@9;DI)7A8FI@9;DI$%?LH6;<%7JDIL<$WWW`%<5:9D9%*]"#% 6H9;?@9HI;6;7W% B B B B #95I%7?HIMGDID7%?FIAIMI%FDGA<%WWW "H7A9D9FU<%*]"#W Q95:<D9FU<W P +9MH67:9FU<%<;b7HL9U<D?8<R%?<?6IL7:W P "H7NH9LIHD<W P oijl9?6ihw 17;M;<%G@7H9J;<8<W P ]@7H9J;<8<%<;bW%*<?6IL7:$%:;9a9FU<WWW /AL<;?6H967H%*]"#%_.#/`! +9MH67:9;DI%F7N<MI)b<5<M;I%?RILIW!,9H;7?6%<;%9G67H<59U<D9W!.7?67@;7?6%@7A9687:$%:5@7?69:<6I:%?<?6IL9%@7%?<?6IL?8<% ;9@98<W! ]LIHD9;DI%*]"#%@7%@76HIJ<%G@7H9J;<87:W B B B *6HG86GH9%*]"# 0<@<M;<%*]"#%<L9% ;<:7D?87%9HR<6I86GH7W *F<89%;I%@H<895GDI% 87L@7;I;6%59%87;6H7F7% R8H96;IN9%A7?67@9%<;% HIU7:IHVW% 07%DI%?9L7%I;9%<5LIA% J7FD%@7N7?6<R%9HR<6I86GHm% :?98%?<?6IL%<L9%?:7DI% :9H<9U<DIW!"#$%$&'#()*"($&+,-. /&+'0'1,2*"($&+,-. 3,1'2$045,*(",)'2$0, 6'#(#,5,*$7*%,#(-,*-(4#("' 8%,47$*"(%7$17$5 6$45(+7$*")(4#()!"#$%"&'$()%$& $'$*$+),"& -$.,($/$&0-(),.1*)& 2$3,$4)&".& (151#).%1 B B B B B B "7:5I6I8 "HIA;7?6<%?7%7RH9;<6I:%87;?<?6I;6;IN9%?69;D9%"#%@7%?<?6IL?8<L%;9@989L$%R8H96I;%A7?67@%A7%*]"#$%R<6IH% H95:7D%9@F<89U<D$%@7A9687:;9%<;6INH<6I69%<;%59aM<69W +<:7D<%9J?6H98U<DI%;GA<D7%@7A96W%;I7A:<?;7?6W *]"#%6<@<M;7%<L9%;<:7D?87%9HR<6I86GH7W% /AL<;?6H967H%"#%<L9%7AN7:7H;7%?FGEJ7%<;%DI%A7JH7%@F9M9;%e% $ *]"#%DI%I;7%7A%a<Ha<R$%J7FD%59;<L<:<R%@7AH7M<D%p* 9:

8

9 B-2-0%C6D5/0%E+,-./012+F-%945+,-G% *+,-./012/% /%945+, K "E45-0-,./L%:#?$%:8M4E9/N$%?/.E414M6$%!E-.,+$% <OI-1+$%/65J H PQ+F-.O%1O16+91R%7%16-E/S%945+,/SJ H!I0+2684T4E/+86/E-8%945+,% K!I0+.6<64E+$%U+E1-86$%!8641 K B5EDV+7-80+L%!"#$%&'!()$*+,-#.%-/0!1$* H :8M4E9/N%W8/7+E1-,%<+E7+E$%W8/<XQ$%!&$%!E-.,+$%Y#& *+,-./012-% %I-;- H 2$*+,-#.%+/345/0'!6-,+/)$*+,-#7 H 2$*+,-#+5%57-%5+,-L K 8'.&+',+%L%&+"$*+$%2/%/9-%7E16/.+%/8%164,3.+J%% Z7E16/.%[%%+)1-'+*'!.&$%Z164,3.+7%[%.&!9'#+7 K :;$0+/L/54,4\-%/9+%E+,-./0+%6+E%/9+8-%/8%6/3+%71+S% 164,3.+7J% H <6D5+86/].-1L%16E/8F$%/9+L%16E/8F$%*!<-'L%16E/8F$%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%16-E416L%/86+F+E$%34L%E+-,^J H *+,-./04%1/%,-S24%3E+516-7,0-94%246%984V/.4% 8T6+E/.%-,/%7E16/.J% "E/9+E%E+,-./0+%=&>1$'&!"# "$% &'(")!*+,-.' /0111 2'3+4 )'3+45.% : /0188 ;,+)<= 4,+)<=5$ /01/> ;,+)<= 4,+)<=56"

10 *+,-./012/% ,8/%0+9/2/ : ;-05+<0-%=4<%6+,-./012+>-%=4?+,-@% 34?3/6-%+841A-5+8% ,8/%0+9/2%9%5+,/24%/96-984% =4<04B : C %1+%,-D24%3/7+04%/8AE/A/584$%FG"#%0+% 4?>45468-%9-%E</8245/A4%+5-,E-./04B H *-9,4>@%8-A-8<8-%1+=-8A/2-%6+,-./012/D%34/95+?IB% H!3A/=/9-A46%4I/<-084%A+=+,0/A4%36+E6+?/%34/95+?I4%/8% 9->4A-5,0-$%?-%1+%4?>4546%8+%136+=8/B% " ,8/%0+9/2%FJK : *-95/A%8-%L#M%N1O1A+=%*P%,+A-%(QR' : "4A6+I-%34%1A-8?-6?E$%2+6%>-%E346-I,0-%5+,/24% 7A+5/,4%364/95-0-,.+5B% : FA-8?-6?/@% H FJKSTU H FJKSTQ%N=-0D8+%136+=+=I+P H FJKSQ&%N5+<0+%136+=+=I+P H FJKSQQ%N5+<0+%136+=+=I+P H FJKS'R% " ,8/%0+9/2%FJK : C !"#$%&'%"()*"&+,-*.+*/"0%")$")+12%"34"5*+6 %" %8-?%5+</=/%6+,-./0-=/ : V-0%/96-<E8-% %%%%%8-1,+?80+% %%%%% W!"#"$%&&!41B/C&=4>1. ()*+&&&&!,-./0,1&!C&=>15&= 23")"&&!451.9=451.&RIS&=48P/069T:UV!"#"$%&&' ()*+&&!,-./0,1&! 23")"&&!45,6785,9:; <&=>76?60@/A&!"#$%#&#'()*&#)&+",#)&$-./()-"04!"#"$%&&!41B/C&!4D8E10 ()*+&!,-./0,1&! 51. 1B/ D8E10 5,67 >8 FGHHH I8J6K 08J6KL>/M :; FGH;; O760@P K760@PLB6 :; G4N G4Q )/D6P1@1&!,-./0,1&10&=>15A B/ D8E10!,67 >8 FGHHH I8J6K 08J6KL>/M :; X4Q FGH;; O760@P K760@PLB6 :; H4; FGHFU O760@P K760@PLM1 :Y Y4G 2#( '#( 0.%, % %$+1#:+ ; 34<3= /%0$%1*#-+ 6= 34<<< >?0(0@#,+ ; S8W1B8A!"#$% &"'#( )*+,-. /%0$%1*#-+

11 *+,-+./0,%+,1.2-0%3%456 #+-;./0,%-/%;:+,F-/0./0,%+, *+,-+./0,%+,1.2-0,%!"#$%&"'8 %%%%9-:%;,%;:,2-<-2-+.%=.%3;.>?% %%%%:?10,8%"+-%3:-;@%:?A.B>?3 %%%%3%C.=?$%4"D#%=.EB,3.% %%%%A,<-/-+./%B-:%:?A.B> C,1.%()'*%3;,C@0, %%%%:?A.B>,%?%:+,AF,B-E$%>-% %%%%;?%0-E%3:-;.1-%GB@A,/B-8!"#$%#&%$'(#&)*+,-.*/ 01/,2&!3$"04567& &/8-2&!3$"04567& &9:;/.2&!3$"0<567 &1*=>2&?@%#A#"7 &B:2&"#$(6&&!"#$%#&%$'(#&CB/1 01/,2&!3$"04567& &B/,2&!3$"04567& &:D-.=2&!3$"0466&& E"FG&%$'(#&&)*+,-.*/& 7 HI?+/0-%@>.=%-=C+-G,%+,1.2-0?%4B@A,/B-%JJ%;E,F?% -/%=.:-;,8%% $(%#"&%$'(#&&)*+,-.*/ $EE&!F(OP@&J>=M2&K=>DH=>04Q6! )H-8:&I*+,-.*/&1B>-8-./8:&*=J:7&,=&,:,=8:&.:K&=*>/L+*&!"#$&1&J=*->/8& :B/I-8:&J>=M&1*=.:K=.M=&I*+,-.*=N K?A.0./0,%-/%C+-;./0,%=.:-;?3 7 L;B.310./0,%,/,I.%=.:-;.M?@)#"%&?@%F&)*+,-.*/01/,7&/8-7&9:;/.7&1*=>7&B:6 C$(O#)&&0QRSTT7&U@:K=JV7&U.:K=JWB-XV7&<T7&RN46! '>/I-8:&K1-&Y=B/1-7&J/&Y=,:IZ=M:&,:9:Z-.-8&B:;:M+7&.B>N7&/8-[\@:K=J]2 E#(#%#&& ^"FP&)*+,-.*/&) _3#"#&)N/8-&[&U@:K=JV %&'()*%+'%,#"-#).*%/!#0',%0%,*1$'%-0"#0)'%2'1$'3%,*1%!#+)* N/B,I+-B,B/,%?F,0-B3,%%ONPQ 7 NPM%:?I?0$%>-%F?+.%C-B-%-=:?1/0,/%=.%3;.>?% %%%%%/JB,+-2?%+,1.2-0,8%% R NP%;?%A?1?S,/,%:+-%A,<-/-2-0-%;E,F,8 R NP%;,%:+,3,+0.0?%?C%;:+,F-/0./0@%+,1.2-08% 7 6,I.1/.%-/;B./2.%+,1.2-0,%0,%B.>G/.$%>-% =.A?3?10@0,%3;,%;:,2-<-2-+./,%NP8 R 4"D#%/,%C-%;F,1%A?:@GS.B-%/,1,I.1/-E%-/;B./28 7 T,%4"D#%:+,3,+0.%NP$%:?B,F%;?%;E+./0,/-% :?A.B>-%C1-U0,%:?F,/@%3%+,.1/,F%;3,B@8% R N=?I-C./0,%/.:.>.F%:+-%3/?;@V

12 "*+,-*.+%/ %-9*+:296;%1<%/0123%*<0-8+1<%3<= (>%?<%6:@9-1-9-%A;-%<.-/-%B-C+@-%B%+@96%;*<A.6@916%/0123->% &>%D6%.<%;<01-%B-%.6:<.6%C6A,.67+86%/0123->% E F<%6:@9-1-%C69<,%9<,2%C*-;+,6%@2C<*/0123G% E F<%6:@9-1-%;<3%/69%<.%/0123%B-%*<0-8+16%C69<,%+B:<*<,6% <.<H-$%/+%H-%!"#$%&#"'%C*+,-*.+%/0123>% 4?C*>%%(!)*&#*/0123%B-%*<0-8+16*+,%)#$,!-*I!"#GJ%%% %%K(!).*/'L%1<%@2C<*/0123> "*+,-*.+%+.%/-.A+A-9.+%/0123%;%MNO 4!:+3-1.6%1<%.-%;6016%;<3%/-.A+A-9.+P%/0123<;%IA<Q+.+*-,6%/69% R?SNRTJ%+B,<A%/-9<*+P%+B:<*<,6%<.%C*+,-*.+%/0123>%! "*-;+0.6=%UV-%A-.<H-%W92A<.9-%+.% C*<A,<9%+,-,6%<.6%@-,6%68<.6>X!"#$%#&%$'(#&)*+, &&&-,+.&!/$"-012 &&&&&*+.&&!/$"-0123 &&&&&9":;$"<&=#<&&-,+.3*+.2&2 68<.6%B-%9-%C*<A,<9Z%.<%@,<9-%6:@9-1-9+% A;-%W92A<.9-$%/+%+,-9-%+@96%68<.6>X! F<%2C6*-:+,6%S[%.<C*-;+0.6%0-P/6% 6.<,6H63+,6%;.6@%A<1-.@/+P%C6A-9/6;% +B%*<-0.<H-%@;<9-\!"#$%#&%$'(#&)*+, &&&-,+.&!/$"-012 &&&&&*+.&&!/$"-0123 &&&&&45678&!/$"-023 &&&&&9":;$"<&=#<&&-,+.23 &&&&&>?:@>#&-*+.3&456782&2 D21+%/0123+%+.%*<Q<*<.3.-%+.9<H*+9<9-4 0%&*12&%3%=% %-9*+:296;%.</<%*<0-8+1<$%/+%*<Q<*<.8+*-% B-C+@<%A*2H<%*<0-8+1<>%SB:*-.-%,.67+8-%-9*+:296;%,6*-% 2@9*<B-9+%C*+,-*.<,%/01232%A*2H<%*<0-8+1<>%?</<%;*@9<% U06H+3.+%/-B-0<8X>% 4 "*+,<*=%(!)%1<%921%/0123%IM92A<.9+J= E E E ]C+@I(!)=%@9*+.H$%/!)=%@9*+.H$%'4#$5=%@9*+.HJ F<%1<%+.9<H*+9<9.-%6,<1+9;%921+P%/0123<;%2C6W9<;-.-%;%"#%C69<,% C*-;+,6$%A-%A6@<7<,6%*<Q<*<.3.6%+.9<H*+9<96Z%.+%U;+@<3+P%*<Q<*<.8X>%?-W9<1%+,<.-%C6A-9/6;.+P%,6A<06;%B%)%:*<B%*<Q<*<.3.<%+.9<H*+9<9<G% 4 O+./%^%_D5O\ D21+%/0123+%;%MNO% 4 M-,6%W92A<.9+$%/+%@6%;%9-:<0+%+,%)#$,!%0-P/6%.-@96C-16%;%*<0-8+1+%6/!(>%!"#$%#&%$'(#&)*+, &&&-,+.&!/$"-0123&&*+.&!/$"-0123&&45678&!/$"-023 &&&&&9":;$"<&=#<&&-,+.3*+.23 &&&&&AB"#:C?&=#<&-,+.2&"#A#"#?!#D&DEF.67E+&2 )*+,!"# $"# %&'#( )*+++,'-( ) )*+++.'/(0'/"1' 2 )*+)3 4(50(/&"6' 73 )*+++ 8%5#59":' 2 DEF.67E+,+. +G6 H4I+7 DE8J *4 KLMMM?4N8O 74N8OP5, QR ST0 KLMRR =J87U5 OJ87U5PG8 QR MTR KLMK1 =J87U5 OJ87U5PV+ QW WTL

13 *+,-.+/01+213% %72.3, O %72.3,47.3.+%/%<LM% 8 "-,0319-%:7%.+;307%<.=>32.7%72%?@7:A%%!"#%/%.+;307%?@7:%13%.=1% B01=6$%B7% C74+%.+;30-%<.=>32.7D% 8 E+1%2+1%:3%F,->7$%63%@-:B=G+9-%>->+.7%F+@7:$%B7%/:3;=13% 23-;:.-136%:7>%/%.+;30-%?@7:H%$%&'(")*&+,%-"!%. 8 E+1%2+1%:3%F,->7$%63%7F;47G39-%F+@7:%.+;303%<.=>32.7H% I I I I "-;47G31-%:3%.=>7%@47@+>+1-67%F+@7:7%/%?@7:D% J3%>-/-07%:3%;47:+213%F+@7:+%<.=>32.7%2+%B+.343,+%:3% C74+1-% F+@7:7%7F%.+;303%?@7:D%?43>2-:.7%F;47:+27K%!"#%:3%/%.+;307%?@7:%@-:.+/7%2+%@47/F3.-% /43>2-:.D% 8 "->-;2-%/%@47934=$%>+%:3%B01=6%:7>%/%.+;307%<.=>32.7% :@439327D% 8 <LM)P&%72%%<LMN(PPP%@->@74+% I "47/F3.-%13%J!%STUV!J%%% W#*0*)*12-#%)*+3*+,%&'(3*(X I TS<TSYZ%%WF;47G7%/:3% F+@7:3$%B7%:3%:B07C=131-%2+% F;47:+27%F+@7:X I <ZU%J[MM%)%<ZU%YZ\S[MU%% W@-:.+/7%.=1%B01=6%/%F+@7:7K$%B7% :3% C74+1-%2+%7F;47:+27% F+@7:X!"#$%#&%$'(#&)*+, &&&-,+.&!/$"-0123 &&&&*+.&!/$"-0123 &&&&45678&!/$"-023 &&&&9":;$"<&=#<&&-,+.3*+.23 &&&&>?"#:@A&=#<&-,+.2 &&&&&&"#>#"#A!#B&BCD.67C+?A&E#(#%#&!$B!$E#?A&F9E$%#&B#%&E#>$F(%&2!>%B13%:-%@47G03%VT%-9317./3H 8 VT%:-%-:2-/+23%2+%@-932=%-B-01+$%B7%,+% 9-> %F%430+C71:B79%9->30-9D 8 M+KB-%@43/3479-%@->+.B-/2-%;+F-%+07%13%/% -@+F-/+2139%9->30+%W72:.+2C3XD% I VT%13%7F1+/+%-%/:3K%9-R27K%72:.+2C+K] I VF%@47934+%/7>79-$%>+%793%27%B01=6D%Y /$%>+%:7>% 13%B01=6%13%@43@=G632-%2+9D% 8 E01=6%72%.=1%B01=6%2+1;-01%@-,-:.3%VTA%;-01%% :@0-G23%VT%.=>7%-;:.+1+1-D% O30+C71:B7%9->30N%@43,03> 8 U+;=0+42+%@43>:.+/7.3/%@->+.B-/D 8 Z2-:.+/2-%72%72.=7.7/2-$%.432=.2-%2+1;-01%@-,-:.-% =@-4+;01+2%9->30D% 8 V2.3, %-9317./3%0+KB-%/23:39-%/%@->+.B-/2-% ;+F-%2+%-:2-/7%0+:.2-:.7%9-> ,+%@->+.B-/23,+% -B-01+D%<["#%@43/347%/301+/2-:.% /D%% I I "-939;27%-9317./7N%@ %72%.=1%B01=6D?3>2-%:-%> %>-9323%F+%+.47;=.3D% 8 J+%/-01-%13%9-6+2%72%>-B+1%2+4+/32%@-/@4+G3/+027% 13F7BD% 8 "4+/70+%F+%@43/+1+213%ZO%/%430+C71:B7%9->30D%

14 1. Naloga Narišite relacijski podatkovni model baze podatkov, ki obsega podatke o poslovanju naftne družbe na ravni poslovanja njenih bencinskih servisov (črpalk). Pri tem poznamo naslednja dejstva: naftna družba ima v lasti številne bencinske servise, ki so razporejeni po celi državi, vsak bencinski servis ponuja prevzem različnih vrst goriva (po domače tankanje) na več točilnih mestih, vsako točilno mesto ponuja natanko eno vrsto goriva, naftna družba spremlja zaloge posameznih vrst goriva za posamezne bencinske črpalke, vsaka bencinska črpalka preko naročil, v katerih opredeli številko naročila, datum, vrsto goriva in zahtevano količino, posreduje svoje zahteve naftni družbi, naftna družba naročila posameznih becinskih črpalk izpolni z dobavo goriva preko cistern, ki jih ima v lasti, enkratna dobavo goriva na bencinski servis ni nujno, da v celoti izpolnjuje neko naročilo, zaposleni v naftni družbi se (za naš primer) delijo le na šoferje cistern in zaposlene na bencinskih črpalkah, vsaka bencinska črpalka ima tudi svojega vodjo. Za izdelani model sestavite seznam SQL stavkov. 4. Naloga Opiši podatkovno okolje študentskega informacijskega sistema z relacijskim podatkovnim modelom. Predstavi naslednja dejstva: predmeti, ki jih študenti poslušajo so lahko bodisi obvezni ali izbirni. študenti so lahko vpisani na dodiplomski ali podiplomski stopnji za vsakega študenta vemo katero smer študija in kateri letnik posluša pri vsakem predmetu vemo, v katerem letniku, na kateri stopnji in na kateri smeri se izvaja, v katerem kvartalu se izvaja, kolikšno je število ur predavanj in vaj, kateri izvajalci ga izvajajo (predmet ima več izvajalcev in vsak izvajalec je lahko pri več predmetih) za vsakega zaposlenega vemo ali je pri predmetu predavatelj ali asistent študenti imajo v svojem indeksu predmete in za vsakega zapis ocene Za izdelani model sestavite seznam SQL stavkov. 2. Naloga Narišite relacijski podatkovni model baze podatkov, ki obsega podatke o letalskem potniškem prometu. Pri tem poznamo naslednja dejstva: v letalskem potniškem prometu sodeluje več letalskih družb s svojimi letali, vsako letalo pripada neki letaski družbi, piloti in drugo osebje (stevardese), ki sodelujejo pri posameznih poletih, so prav tako zaposleni pri letalski družbi, vsak polet uporablja letalo neke letalske družbe, potniki preko rezervacij lahko rezervirajo sedeže na posameznem poletu, za vsako rezervacijo poznamo tudi številko sedeža in potniški razred na letalu, za vsak polet spremljamo tako podatke o vzletu (letališče, datum in čas) ter podatke o pristanku (letališče, datum in čas), vsako letališče ima natančno opredeljene omejitve glede pristankov posameznih vrst (oz. tipov) letal. Za izdelani model sestavite seznam SQL stavkov. 3. Naloga Narišite relacijski podatkovni model baze podatkov, ki obsega podatke o poslovanju isposojevalnic motornih vozil. Pri tem poznamo naslednja dejstva: podjetje ima več poslovalnic po različnih državah vsaka poslovalnica ima več zaposlenih, od katerih vsak dela na točno eni poslovalnici zaposleni so razdeljeni v več kategorij (npr. mehanik) rezervacija vozila vsebuje podatke o vozilu, datumu prejema, datumu vrnitve, poslovalnicah prejema in vrnitve in osebi, ki je rezervirala vozilo vsak posameznik lahko rezervira več vozil, vozila so različnih tipov (eno vozilo je tipa tovornjak, eno avtomobil, ) vsako vozilo po končani rezervaciji pripada poslovalnici, kamor se je vrnilo, kar pomeni, da vsako vozilo pripada le eni poslovalnici o vozilu hranimo poleg modela, tipa in št. karoserije tudi št. prevoženih kilometrov, datum naslednjega tehničnega pregleda, datum naslednjega servisa in št. zavarovalne police

15

16 Relacijska algebra Iztok Savnik, FAMNIT Relacijski povpraševalni jeziki Povpravševalni jezik: Omogoča urejanje podatkov in poizvedovanje po podatkih v podatkovni bazi. Relacijski model podpira enostavne PJ z veliko izrazno močjo: Formalne osnove v logiki. Omogoča optimizacijo poizvedb. Povpraševalni jezik!= Programski jezik! PJ ni Računsko kompleten. PJ ni namenjen za kompleksne izračune. PJ podpira enostaven in učinkovit dostop do velikih zbirk podatkov. Formalni relacijski povpraševalni jeziki Dva formalna (matematična) jezika tvorita osnovo za realne povpraševalne jezke (npr. SQL) in njihovo implementacijo: Relacijska algebra: Bolj proceduralen jezik, uporaben za predstavitev plana izvajanja poizvedb. Relacijski račun: Omogoča uporabnikom opisati kaj želijo in ne toliko kako to izračunati deklarativni jezik. Osnove Poizvedba je izvršena nad instancami relacij in rezultat poizvedbe je instanca neke relacije. Sheme vhodnih relacij so fiksne. Shema rezultata je tudi fiksna -- določi se s pravili gradnikov povpraševalnega jezika. Notacija osnovana na poziciji oz. imenih atributov: Notacija osnovana na poziciji primernejša za programe; notacija osnovana na imenih je bolj berljiva. Obe se uporabljata v SQL.

17 $ $ $ $ Primeri relacij Relaciji Mornarji in Rezervacije za naše primere. Uporabljali bomo notaciji osnovani na poziciji in imenih. Imena atributov v vmesnih in končnem rezutatu poizvedb se podedujejo od vhodnih relacij. #" #$!" mid lid mid mime dan /10/ /12/96 ocena star 22 novak kranjc petelin mid mime ocena star 28 volk kranjc jauk petelin Relacijska algebra Osnovne operacije Selekcija ( ) Izbere podmnožico n-teric iz relacije. Projekcija (" ) Izbere določene stolpce relacije. Produkt ( ) Omogoča kombiniranje dveh relacij. Razlika (# $ ) N-terice iz prve in ne iz druge relacije. Unija ( % ) N-terice iz obeh relacij. Dodatne operacije Presek, Stik, Deljenje, Preimenvanje. Niso nujne, so pa ZELO (!) koristne. Vsaka operacija vrne relacijo kot rezultat. Operacije se lahko sestavljajo funkcionalni jezik.! Projekcija Izbere atribute, ki so v listi projekcije iz relacije. Shema rezultata vsebuje samo atribute, ki so v listi projekcije z istimi imeni kot v vhodni relaciji. Projekcija mora odstraniti duplikate! (Zakaj??) Opomba: relani sistemi tipično ne odstranijo duplikate, če uporabnik tega ne zahteva. (Zakaj ne?)!"!#$ %&#'($ )%*+$,$ +-('.&$$ /$.(0+$ 1$ 2#3#*"'$ 45$ " ( S2) mime, ocena 63(-$ 7185$ 1181$ (S2) " star Selekcija Izbere vrstice, ki zadoščajo pogoju selekcije. Ni duplikatov v rezulatu. (Zakaj?) Shema rezulata je identična shemi vhodnih relacij. Relacija, ki je rezultat je lahko vhodna relacija drugi relacijski operaciji! (Kompozicija operacij.)!"9$!"!#$ %&#'($ 63(-$ :/$ )%*+$,$ 7185$ 1/$ 2#3#*"'$ 45$ 7185$ "! ( S 2) ocena>8!"!#$ %&#'($ )%*+$,$ 2#3#*"'$ 45$! ( ( S2)) mime, ocena ocena> 8

18 $ $ $ $ $ $ Unija, Presek, Razlika Vse operacije so binarne in vhodni relaciji morata biti unija-kompatibilni: Enako število atributov. `Pripadajoča polja imajo enake tipe. Kaj je shema rezultata?!"#$!"!%$ &'%()$ *+),$ --$ (&.)/$ 0$ 1234$ S1# S2!"#$!"!%$ &'%()$ *+),$ --$ (&.)/$ 0$ 1234$ 56$ /,)(7'$ 8$ 2232$ 28$ 9%+%:"($ 64$ 5234$ 11$ 7);/$ 2$ 5234$ -8$.&:/$ <$ 5234$ S1! S2!"#$!"!%$ &'%()$ *+),$ 56$ /,)(7'$ 8$ 2232$ 28$ 9%+%:"($ 64$ 5234$ S1" S2 Produkt Kartezijski produkt: vsaka vrstica S1 se poveže z vsako vrstico R1. Shema rezultata ima po en atribut za vsak atribut relacij S1 in R1; imena od operandov. Konflikt: S1 in R1 h imata atribut mid. =!"#>$!"!%$ &'%()$ *+),$ =!"#>$ :"#$ #)?$ --$ (&.)/$ 0$ 1234$ --$ 646$ 64@ 64@ < --$ (&.)/$ 0$ 1234$ 28$ 645$ 66@ 6-@ < 56$ /,)(7'$ 8$ 2232$ --$ 646$ 64@ 64@ < 56$ /,)(7'$ 8$ 2232$ 28$ 645$ 66@ 6-@ < 28$ 9%+%:"($ 64$ 5234$ --$ 646$ 64@ 64@ < 28$ 9%+%:"($ 64$ 5234$ 28$ 645$ 66@ 6-@ <!$B,%"!%(&.)(7%C$ &( C (1 % mid1,5 % mid2), S1$ R1) Stik (Join) Stik s pogojem: R "# c S = ' c ( R$ S) =!"#>$!"!%$ &'%()$ *+),$ =!"#>$ :"#$ #)($ --$ (&.)/$ 0$ 1234$ 28$ 645$ 66@ 6-@ <A$ 56$ /,)(7'$ 8$ 2232$ 28$ 645$ 66@ 6-@ <A$ S1 #" S 1. mid < R1. mid R1 Shema rezultata: enako kot kartezijski produkt. Manj n-teric kot produkt; da se izračunati hitreje. OPB, 2009/10 Včasih ga imenujejo theta-stik. Stiki Equi-Stik: Poseben primer stika, kjer je pogoj stika uporablja samo pogoj enačaj.!"#$!"!%$ &'%()$ *+),$ :"#$ #)($ Shema rezultata: podobno kot kartezijski produkt; samo ena vrednost enačenih atributov je v rezultatu. Naravni Stik: Equi-Stik po vseh skupnih atributih. --$ (&.)/$ 0$ 1234$ 646$ 64@ 64@ <A$ 28$ 9%+%:"($ 64$ 5234$ 645$ 66@ 6-@ <A$ S1 #" R1 mid

19 $ Deljenje Ni osnovna operacija; uporabna za izražanje vprašanj kot na primer: Poišči vse mornarje, ki so rezervirali vse ladje. Naj ima A dva atributa x in y; B pa samo en atribut y: A/B = x! x, y " A # y " B { } A/B vsebuje vse n-terice x (mornarji) tako da za vsako n-terico y (ladja) v B, obstaja n-terica xy v A. Ali: Če množica vrednosti y (ladje) povezana z vrednostjo x (mornarji) v A vsebuje vse vrednosti y v B, potem je vrednost x v A/B. V splošnem sta x in y lahko poljubna seznama atributov; y je seznam $ atrributov v B, in x y je seznam atributov v A. Primer deljenja A/B!"#$ %"#$!&$ %&$!&$ %'$!&$ %($!&$ %)$!'$ %&$!'$ %'$!($ %'$!)$ %'$!)$ %)$ * %"# %' +&!"#!&!'!(!) %"# %' %) +'!"#!&!) %"# %& %' %) +(!"#!& *,+& *,+' *,+( Izražanje A/B z osnovnimi operacijami Deljenje ni nujno potrebna operacija; uporabna bljižnica. To je načeloma res tudi za stike, čeprav omogočajo stiki učinkovito implementacijo poizvedb. Ideja: A/B = izračunaj vse vrednosti x, ki niso izločeni z vrednostjo y v B. x je izločena z y v primeru, da z dodajanjem vrednosti y iz B dobimo n-terico xy, ki ni v A. -./#01"1$2314"#!56$78 $*,+8 % x (( % x ( A) & B) ' A) % x ( A) '-./#01"1$2314"#!56 Poišči imena mornarjev, ki so rezervirali ladjo #103 Rešitev 1: % ( ( Rezervacije)!" Mornarji) lid = 103 mime #$91:6512$'8)( Temp!, ( Rezervacije) lid =!"# ) ( Temp$, Temp! "! Sailors) % (Temp$) mime #$91:6512$(8 % ( (Rezervacije!" Mornarji ) mime lid = 103

20 Poišči imena vseh mornarjev, ki so rezervirali rdečo ladjo. Informacije o barvah ladij so dostopne v relaciji Ladje; potrebujemo še en stik: " ((! Ladje)!" Rezervacije!" Mornarji) mime barva= rdeca #!Bolj učinkovita rešitev: " (" (("! Ladje)!" Rez)!" Mornarji) mime mid lid barva= rdeca "#$%&%'($)*!#)%'+,-.!.%!/(0,1!$)!*,0%$,+!).!-(/%!#*+%!#)%'+,-. Poišči vse mornarje, ki so rezervirali rdečo ali zeleno ladjo. Identificiramo vse rdeče in zelene ladje in potem poiščemo mornarje, ki so rezervirali eno izmed izbranih ladij: $ ( Temp,(! Ladje)) barva= rdeca# barva= zelena " ( Temp!" Rezervacije!" Mornarji) mime #!3,&#!4,!-(!-,5%/%*($%!'!6/%7)2!!89(:);< #!9(7!4,!'=)-%>!?,!7,!!!!!!'(&,/7(/!'!!!!!; # % Poišči mornarje, ki so rezervirali rdečo in zeleno ladjo. Prejšnji način ne deluje. Poiščemo mornarje, ki so rezervirali rdeče ladje, mornarje, ki so rezervirali zelene ladje in potem naredimo presek. $ ( Temp 1, " ((! Ladje) Rezervacije)) mid barva= rdeca!" $ ( Temp 2, " ((! Ladje) Rezervacije)) sid barva= zelena!"! "! (( Temp1& Temp2)!" Mornarji) mime Poišči imena mornarjev, ki so rezervirali vse ladje Uporaba deljenja; sheme vhodnih relacij morajo biti pazljivo izbrane: $ ( Temp,(" Rezervacije)/( Ladje)) mid, lid " lid " ( Temp!" /" (! Ladje) lid lime= delfin

21 Ponovitev Relacijski model ima formalne povpraševalne jezike, ki so enostavni in imajo veliko izrazno moč. Relacijska algebra je proceduralen jezik; uporabna je interno predstavitev vprašanj. Veliko načinov za izražanje enega samega stavka; optimizator izbere tistega, ki poišče rezultat najhitreje.

22 1. Relacijska algebra - LETALSKI POTNIŠKI PROMET Vzemimo naslednjo shemo: LETALISCA _IdLE: integer, ime: varchar(30), kraj: varchar(50), drzava: varchar(50) LETALO _IdTL: integer, tip: varchar(20), opis: varchar(250), OznakaProizv: varchar(20) PRISTANE _IdLE: integer, _IdTL: integer, DatumOd: date Atributi, ki predstavljajo ključ so podčrtani. Relacija PRISTANE vsebuje podatke o tem, kateri tipi letal lahko pristanejo na posameznih letališčih in od kdaj. Zapišite naslednje poizvedbe v relacijski algebri. a) Poišči vsa imena letališč, na katerih lahko pristane letalo tipa B747. b) Poišči vse IdLE letališč, na katerih lahko pristane letalo tipa B747 ali B748. c) Poišči vse IdLE letališč, ki so ali v Avstriji ali pa na njih lahko pristane letalo tipa B747. d) Poišči vse IdLE letališč, na katerih lahko pristane letalo tipa B747 in tipa B748. e) Poišči vse IdLE letališč, na katerih lahko pristanejo vsi tipi letal. izpolnila cisterna s serijsko številko d) Poišči vse IdN naročil, ki jih je izpolnila cisterna s serijsko številko in cisterna s serijsko številko Imamo naslednji shemo Avto ida Model Barva StVrat Pregled ido ida Operater ido Ime DelDoba a) Poišči imena vseh operaterjev ki so pregledali rdeče avte b) Poišči imena mornarjv, ki so pregledali ida 2 c) Poišči imena vseh operaterjev ki so pregledali rdeče ALI zelene avte pri čemer uporabimo preimenovanje d) Poišči imena vseh operaterjev ki so pregledali rdeče IN zelene avte pri čemer uporabimo preimenovanje e) Poišči imena operaterjev ki so pregledali vse avtomobile f) Poišči imena operaterjev ki so pregledali vse avtomobile modela Golf 2. Relacijska algebra NAFTNA DRUŽBA Vzemimo naslednjo shemo: CISTERNE _IdC: integer, SerijskaSt: integer, kapaciteta: integer, DtServisa: date NAROCILA _IdN: integer, St:integer, Datum: date, Kolicina: integer DOBAVA _IdN: integer, _IdC: integer, Datum: date, Kolicina: integer Atributi, ki predstavljajo ključ so podčrtani. Relacija DOBAVA vsebuje podatke o opravljenih dobavah oz. prevozih cistern za izpolnitev posameznih naročil. Za izpolnitev enega naročila je lahko potrebno tudi več dobav oz. prevozov. Zapišite naslednje poizvedbe v relacijski algebri. a) Poišči vse številke naročil, za katere je pri dobavi goriva sodelovala cisterna s serijsko številko b) Poišči vse IdN naročil, ki jih je izpolnila cisterna s serijsko številko ali c) Poišči vse IdN naročil, ki ali zahtevajo količino enot ali pa jih je

23

24 SQL: Poizvedbe, Integritetne omejitve, Prožilci Iztok Savnik, FAMNIT Primeri relacij Instance ta bel Rezervacije in Mornarji bodo uporabljane v primerih. Če bi ključ tabele Rezervacije vseboval samo mid in lid, kakšen pomen bi imela relacija?!" mid lid dan /10/96 #" /12/96 mid mime ocena star 22 novak kranjc petelin #$ mid mime ocena star!" volk # $%.& $' kranjc " %%.% (( jauk % $%.& %" petelin '& $%.& Osnovna SQL poizvedba seznam-relacij Seznam relacij (lahko z uporabo spremenljivk). seznam-izbire Seznam atributov, ki so rezultat poizvedbe ali shema tabele -rezulata. pogoj-izbire Logični pogoj (Atr op const, Atr1 op Atr2, kjer je op eno izmed <, >, =,!, ", # AND, OR in NOT.!"#"$%&&&&&&&&'()!%)*$%+&,-./ &&&&&&&&&,-./0125-:0;3< =>"7"&&&&&&&&?@A@< ) ; primerjave so povezane z logičnimi operacijami DISTINCT je opcijska ključna beseda, ki pove da naj se iz rezulatata odstranijo duplikati. Privzeto duplikati niso odstranjeni! Konceptualna evaluacijska strategija Pomen SQL poizvedbe se lahko izrazi z naslednjo strategijo evaluacije: Izračunaj Kartezijski produkt seznama-relacij. Izloči tiste n-terice, ki ne izpolnjujejo pogoja-izbire. Izloči atribute, ki niso v seznama-izbire. Če je specificiran DISTINCT potem se izločijo duplikati. Opisana strategija je zelo verjetno najmanj učinkovit način evaluacije poizvedbe! Optimizator bo poiskal najbolj učinkovito strategijo, ki izračuna isti odgovor.

25 & Primer konceptualne evaluacije!"#"$%&&!'()(* +,-.&&&&&./01203)&.4&,*5*0627)3*&, C():D& ()(*& /7*12& EF20& C():D&?):& :21& GG& 1/62H& I& MN& GG& 1/62H& I& MN& H02137& O& MN& H02137& O& MN& KO& MN& KO& MN& Spremenljivke Potrebne so samo v primeru, da ista relacija uporablja dvakrat. Prejšnje vprašanje se lahko napiše tudi na sledeč način: <#V!"#"$%&&.'()(* +,-.&&&&&./01203)&.4&,*5*0627)3*&, 89","&&.'():;,'():&<=>&?):;@AB!"#"$%&&()(* +,-.&&&&&./01203)4&,*5*0627)3* 89","&&./01203)'():;,*5*0627)3*'():&&&&&&&& &&&&<=>&?):;@AB >/Q*0&EF)?R& S*:1/& TP/02Q?323& EP0*(*1?3)6H*&U Poišči mornarje, ki so rezervirali vsaj eno ladjo!"#"$%&&.'(): +,-.&&./01203)&.4&,*5*0627)3*&, 89","&&.'():;,'(): Kaj se zgodi, če dodamo DISTINCT? Kako vpliva zamenjava M.mid z M.mime na izvajanje SELECT stavka? Kaj če dodamo DISTINCT? Izrazi in nizi!"#"$%&&.'ef204&ef20@;.'ef20wk4&gx.'ef20&<!&ef20g +,-.&&./01203)&. 89","&&.'()(*&#VY"&Z[\]=^ Ilustracija uporabe aritmetičnih izrazov in ujemanja vzorcev pri nizih: poišči trojice (starost mornarjev in dva polja opisana z izrazi) za vse mornarje katerih ime se začne z B, konča z N in vsebuje vsaj tri znake. AS in = sta dva načina poimenovanja polj v rezultatu. LIKE se uporablja za primerjanje nizov. `_ pomeni katerikoli znak in `% pomeni 0 ali več poljubnih znakov.

26 Poišči id-je mornarjev, ki so rezervirali rdečo ali zeleno ladjo UNION: Uporablja se za izračun unije dve unijakompatibilnih množic n-teric (ki so rezultat SQL poizvedbe). Kaj dobimo, če zamenjamo OR z AND v prvi verziji poizvedbe? Uporaba EXCEPT (Kaj dobimo, če UNION zamenjamo z EXCEPT?) Vgnezdena vprašanja!"#"$%&&'()*+,-.'&&'/01203*&'4&#2+35&#4& *35&- 9:"-"&&'()*+;-()*+&<=>&-(?*+;#(?*+ <=>&@#(A2072;B0+582C&.-&#(A2072;B65?512!"#"$%&&'()*+,-.'&&'/01203*&'4&#2+35&#4& *35&- 9:"-"&&'()*+;-()*+&<=>&&#(?*+;-(?*+ &&&&&&&&&&&&&&&&<=>&#(A2072;B0+582C E=F.=!"#"$%&&'()*+,-.'&&'/01203*&'4&#2+35&#4& *35&- 9:"-"&&'()*+;-()*+&<=>&#(?*+;-(?*+ &&&&&&&&&&&&&&&&<=>&#(A2072;B65?512C O/*PK*&*)512&)/ &Q*&R/&056507*02?*&?2+3/&SGMNT!"#"$%&&'()*)5,-.'&&'/01203*&' 9:"-"&&'()*+&F=&&@!"#"$%&&-()*+ &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,-.'&& *35&- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&9:"-"&&-(?*+;GMND Zelo izrazna lastnost SQL: stavek WHERE lahko vsebuje SQL poizvedbo! Kot tudi stavka FROM an HAVING. Mornarji, ki niso rezervirali ladje #103: NOT IN. Semantika vgnezdenih poizvedb: Vgnezdene zanke: Za vsakega mornarja, preveri pogoj poizvedbe, ki vsebuje vgnezdeno poizvedbo. Poišči id-je mornarjev, ki so rezervirali rdečo in zeleno ladjo INTERSECT: lahko uporabljamo nad unijakompatibilnimi množicami n- teric. Vključena je v SQL/92 standard; nekateri sistemi operacije ne podpirajo.!"#"$%&&'()*+,-.'&&'/01203*&'4&#2+35&#g4& *35&-g4 &&&&&&&&&&&&&#2+35&#H4& *35&-H 9:"-"&&'()*+;-G()*+&<=>&-G(?*+;#G(?*+ &&<=>&&'()*+;-H()*+&<=>&-H(?*+;#H(?*+ &&<=>&@#G(A2072;B0+582C& &&<=>&#H(A2072;B65?512CD I?3JKL!"#"$%&&'()*+,-.'&&'/01203*&'4&#2+35&#4& *35&- 9:"-"&&'()*+;-()*+&<=>&#(?*+;-(A*+ &&&&&&&&&&&&&&&&<=>&#(A2072;B0+582C F=%"-!"$%!"#"$%&&'()*+,-.'&&'/01203*&'4&#2+35&#4& *35&- 9:"-"&&'()*+;-()*+&<=>&#(?*+;-(?*+ &&&&&&&&&&&&&&&&<=>&#(A2072;B65?512C Vgnezdena vprašanja (2) O/*PK*&*)512&)/ &R/&056507*02?*&?2+3/&SGMNT!"#"$%&&'()*)5,-.'&&'/01203*&' 9:"-"&&&"UF!%!&&@!"#"$%&&V &&&&&&&&&&&&&&&&&&&&&&&&&&&&&,-.'&& *35&- &&&&&&&&&&&&&&&&&&&&&&&&&&&&&9:"-"&&-(?*+;GMN&<=>&'()*+;-()*+ EXISTS: primerjava množice s prazno množico. Vgnezdeno vprašanje se izvede za vsakega mornarja. Če je uporabljen UNIQUE in je * zamenjana z R.lid, potem iščemo mornarje, ki imajo največ eno rezervacijo ladje #103. (UNIQUE preveri obstoj duplikatov; * pomeni vse atribute. Zakaj moramo zamenjati * z R.lid?)

27 Operacije za primerjanje množic Spoznali smo že IN, EXISTS in UNIQUE. Obstajajo še NOT IN, NOT EXISTS in NOT UNIQUE. >, <, =,#,",! Na voljo so še: op ANY, op ALL, op IN Poišči mornarje kateri imajo oceno večjo od vseh mornarjev z imenom miha :!"#"$%&&' ()*+&&+,-./-01&+ 23")"&&+4,56./&7&89:&&;!"#"$%&&+<4,56./ &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&()*+&&+,-./-01&+< &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&23")"&+<4=1=6>?=1@/AB Poizvedbe z INTERSECT : uporaba IN C,1DE1&1FG06&=,-./-06HI&J1&K,&-6L6-H1-/M1&-F6E,&1.& L6M6.,&M/F0,N!"#"$%&&+4=1F ()*+&&+,-./-01&+I&#/F06&#I&)6L6-H/5106&) 23")"&&+4=1F>)4=1F&89O&)4M1F>#4M1F&89O&#4P/-H/>?-F65/A &&&&&89O&+4=1F&Q9&&;!"#"$%&&+<4=1F &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&()*+&&+,-./-01&+<I&#/F06&#<I&)6L6-H/5106&)< &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&23")"&&+<4=1F>)<4=1F&89O&)<4M1F>R<4M1F &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&89O&&#<4P/-H/>?L6M6./AB Podobno, EXCEPT poizvedbe lahko prepišemo z uporabo NOT IN. Iskanje imen (ne mid) Mornarjev, ki so rezervirali rdečo in zeleno ladjo samo zamenjaj M.mid z M.mime v stavku SELECT. (Kaj je z INTERSECT poizvedbo?) Deljenje v SQL C,1DE1&=,-./-06I&J1&K,&-6L6-H1-/M1& HK6&M/F064 ;<B Težja pot; brez EXCEPT: ;UB!"#"$%&&+4=1=6 ()*+&&+,-./-01&+ 23")"&&9*%&"SQ!%!& &&&&&&&&&&&&&;;!"#"$%&&#4M1F &&&&&&&&&&&&&&&&()*+&&#/F06&#B &&&&&&&&&&&&&&&"S$"C% &&&&&&&&&&&&&&&&;!"#"$%&&#4M1F &&&&&&&&&&&&&&&&&()*+&&)6L6-H/5106&) &&&&&&&&&&&&&&&&&23")"&)4=1F>+4=1F &&&&&&&&&&&&&&&&&&&&&&89O&)4M1F>#4M1FBB!"#"$%&&+4=1=6 ()*+&&+,-./-01&+ 23")"&&9*%&"SQ!%!&&;!"#"$%&&#4M1F &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&()*+&&#/F06&# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&23")"&&9*%&"SQ!%!&&;!"#"$%&&)4M1F +,-./-01&T/J,I&F/&444 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&()*+&&)6L6-H/5106&) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&23")"&&)4M1F>#4M1F &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&89O&)4=1F>+4=1FBB.6&,PKT/0/&M/F0/&P-6L&F/&.6P1&444,PKT/0/M/&-6L6-H/510/&+&M/F06&# Agregacijske operacije Pomembna razširitev relacijske algebre.!"#"$%&&$*v9%&;'b ()*+&&+,-./-01&+!"#"$%&&8YZ&;+4KT/-B ()*+&&+,-./-01&+ 23")"&&+4,56./>U[!"#"$%&&$*V9%&;OQ!%Q9$%&+4,56./B ()*+&&+,-./-01&+ 23")"&+4=1=6>?=1@/A $*V9%&;'B $*V9%&;&WOQ!%Q9$%X&8B!V+&;&WOQ!%Q9$%X&8B 8YZ&;&WOQ!%Q9$%X&8B +8S&;8B +Q9&;8B K1.\M6&5,M]=.!"#"$%&&+4=1=6 ()*+&&+,-./-01&+ 23")"&&+4,56./>&;!"#"$%&&+8S;+<4,56./B &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&()*+&&+,-./-01&+<B!"#"$%&&8YZ&;&OQ!%Q9$%&+4KT/-B ()*+&&+,-./-01&+ 23")"&&+4,56./>U[

28 Poišči imena in starost najstarejšega mornarja (-ev) Prva poizvedba ni legalna! (Razlog malce kasneje, ko si bomo ogledali GROUP BY.) Tretja poizvedba je ekvivalentna drugi in je legalna v okviru SQL/92 standarda; ni podprta v nekaterih sistemih.!"#"$%&&'()*)+,&'-.&/'( '&&'83923:*&'!"#"$%&&'()*)+,&'( '&&'83923:*&' ;<"6"&&'(0123&= &&&&&&&&&&&&&&/!"#"$%&&'-.&/'>(01234 &&&&&&&&&&&&&&&567'&&'83923:*&'>4!"#"$%&&'()*)+,&'( '&&'83923:*&' ;<"6"&&/!"#"$%&&'-.&/'>(01234 &&&&&&&&&&&&&&&567'&&'83923:*&'>4 &&&&&&&&&&&&&&&=&'(0123 Motivacija za grupiranje V prejšnjih primerih so se agregacijske operacije izvajale nad celotnimi tabelami. Včasih potrebujemo kaj izračunati nad skupinami n-teric. Primer: Poišči starost najmlajših mornarjev za vsako oceno. V splošnem ne vemo koliko ocen obstaja in kakšne so vrednosti ocene. Recimo, da vemo da so vrednosti ocene od 1 do 10; lahko napišemo 10 vprašanj kot je naslednje:! 583&*&=&B,&>,&(((&,&BCD!"#"$%&&'?@&/'( '&&'83923:*&' ;<"6"&&'(8A+92&=&* Poizvedbe z GROUP BY in HAVING seznam-izbire vsebuje: (i) imena atributov (ii) izraze z agregacijskimi operacijami (npr., MIN (M.star)). seznam-izbire (i): mora biti podmnožica seznama-skupine. Intuitivno, predstavlja vsaka n-terica rezultata skupino n- teric. Skupina je množica n-teric, ki ima isto vrednost vseh atributov iz seznama-skupine.!"#"$%&&&&&&&&ef?!%?@$%g&&0+h92)i*hj*3+ 567'&&&&&&&&&0+H92)I3+K2A*: ;<"6"&&&&&&&&L8M8:I*HJ*3+ N67OP&QR&&0+H92)I0STL*9+ <-U?@N&&&&&&L8M8:I0STL*9+ Konceptualna evaluacija " Najprej izračunamo kartezijski produkt relacij iz seznamrelacij. " Izločimo n-terice, ki ne izpolnjijejo pogoja pogoj-izbire. " Izločimo nepotrebne atribute. " Preostale n-terice se razvrstijo v skupine glede na vrednost atributov iz seznama-skupine. " Iz množice n-teric, ki predstavljajo skupine se izločijo tiste, ki ne zadoščajo pogoju-skupine. Izrazi v pogoju-skupine morajo imeti eno vrednost za celotno skupino! Atributi v pogoju-skupine so bodisi argumenti v agregacijskih funkcijah ali pa se pojavijo v seznamuskupine. Ena n-terica se generira za eno od izbranih skupin.

29 Poišči starost najmlajšega mornarja, ki je star več kot 18, v skupinah, ki pripadajo ocenenam in vsebujejo vsaj dva takšna mornarja. Poišči starost najmlajšega mornarja, ki je star več kot 18, v skupinah, ki pripadajo ocenam in vsebujejo vsaj dva takšna mornarja.!"#"$%&&'()*+,-.&&'/0&1'(23-45& 6!&78,23-4 9:;'&&')4,-4<8&' =>":"&&'(23-4&?@&AB C:;DE&FG&&'()*+,- >6H/0C&&$;D0%&1I5&?&A ;JK)L)4M ocena minstar !-8N)42&8,23-,*+M mid mime ocena star 22 novak pevec kranjc andrej petelin tom kos tom miha janez egon ocena star ocena star ocena minstar Poišči starost najmlajšega mornarja, ki je star več kot 18, v skupinah, ki pripadajo ocenenam, vsebujejo vsaj dva takšna mornarja in so vsi pod 60. HAVING COUNT (*) > 1 AND EVERY (M.star <=60) ocena star! "#. $ % &&. $ ' ##.# ' (#.# %$ &#. $! &#. $ %$ %)$. * &#. $ & (#.# & )&.# & (#.# ocena star % &&.$ & (#.# & )&.# & (#.#! "#.$! &#. $ ' ##.# ' (#.# * &#. $ %$ &#. $ ocena minstar! &#. $ ' (#.# Kaj je rezultat spremembe EVERY v ANY? Poišči starost najmlajšega mornarja, ki je star več kot 18, v skupinah, ki pripadajo ocenenam in vsebujejo vsaj dva mornarja stara od 18 do 60.!"#"$%&&'()*+,-.&&'/0&1'(23-45& 6!&78,23-4 9:;'&&')4,-4<8&' =>":"&&'(23-4&?@&AB& &&&&60O&'(23-4&P@&QR C:;DE&FG&&'()*+,- >6H/0C&&$;D0%&1I5&?&A ;JK)L)4 ocena minstar ')4,-4<8 mid mime ocena star 22 novak pevec kranjc andrej petelin tom kos tom miha janez egon

30 Za vsako rdečo ladjo poišči število rezervacij. Poišči vse ocene za katere je povprečna starost minimalna po vseh ocenah!"#"$%&&#'()*+&&$,-.%&/01&2!&3456 H8,-I&JK&&#'()* Grupiranje po stiku treh relacij. Kaj dobimo, če umaknemo L.barva= rdeca? Kaj dobimo, če damo ta pogoj v stavek HAVING? Kaj se zgodi, če umaknemo relacijo Mornarji in stik z mid?! Agregacijske operacije se ne morejo gnezditi!!"#"$%&&9':4>5< 78,9&&9:;5<;=)&9 AB"8"&&9'L6<;&C&& &&&&&&&&&&&&&&/!"#"$%&&9M.&/2NH&/9O'L6<;11&&78,9&9:;5<;=)&9O1!Q:;>R65<&;>S)6>@&?&!T#UVO1W!"#"$%&&%>3P':4>5<+&%>3P'P:@P;>4=> 78,9&&/!"#"$%&&9':4>5<+&2NH&/9'L6<;1&2!&P:@P;>4=> &&&&&&&&&&&&&78,9&&9:;5<;=)&9 &&&&&&&&&&&&&H8,-I&JK&&9':4>5<1&2!&%>3P AB"8"&&%>3P'P:@P;>4=>&C&/!"#"$%&&9M.&/%>3P'P:@P;>4=>1 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&78,9&&%>3P1 Null vrednosti Vrednosti polj so včasih neznane (npr., ocena ni bila vnešena). SQL nudi posebno vrednost null za takšne situacije. Prisotnost vrednosti null vnaša v jezik več posledic: Posebne operacije so potrebne za preverjanje če je dana vrednost enaka null. Je ocena>8 true ali false, ko je ocena enaka NULL? Kaj se zgodi z AND, OR in NOT operacijami? Logika s tremi vrednostmi (true, false in unknown). Pomen gradnikov mora biti definiran zelo pazljivo. (npr., WHERE ne izloči n-terice za katere je pogoj true.) Nove operacije (zunanji stiki) mogoče/potrebne. Integritetne omejitve (Pregled) IC opisuje pogoje, ki jih mora izpolniti vsaka legalna instanca relacije. insert/delete/update, ki kršijo IC niso dovoljeni. Lahko se uporabljajo zato, da zagotavljajo pravilen pomen podatov (npr., mid je ključ), ali onemogočijo nekonsistentnost (npr., mime mora biti niz in mora biti < 200) Tipi IC: Omejitve domen, primarni ključ, tuj ključ, splošne omejitve. Omejitve domen: Vrednosti polj morajo biti pravilnega tipa.

31 Splošne omejitve Uporabne, ko so potrebne bolj splošne omejitve kot ključi. Poizvedbe uporabimo za izražanje omejitev. Omejitve lahko imenujemo.!"#$%#&%$'(#&&&)*+,-+./ 0&1/2&&34%#5#"6 1/17&&!8$"09:;6 *<7,-&&34%#5#"6 $4D&*<7,-&EC&9:&; &&&!"#$%#&%$'(#&&"7F7+G-</.7 0&1/2&&34%#5#"6 H/2&&34%#5#"6 0&L#(#!%&&(PH/17 Q"K)&&(-2.7&( R8#"#&&(PH/2CH/2;;; Omejitve preko večih relacij Če je relacija Mornarji prazna potem je lahko v relaciji Ladje karkoli. ASSERTION je prava rešitev; ni povezana z nobeno tabelo.!"#$%#&%$'(#&&)*+,-+./&) 0&1/2&&34%#5#"6 1/17&&!8$"09:;6 *<7,-&&34%#5#"6 =>-+&&"#$(6?"3)$"@&A#@&&01/2;6!8#!A&& V>7G/H*&H-2/.&=WUX-.& =&Y>7G/H*1 1*+,-+.7G&.7&E&9::& 0&0L#(#!%&!KS4%&0)P1/2;&Q"K)&)*+,-+./&); T&0L#(#!%&!KS4%&0(PH/2;&Q"K)&(-2.7&(;&E&9::&; &&&!"#$%#&$LL#"%3K4&&)-H/AHUJ!8#!A&& 0&0L#(#!%&!KS4%&0)P1/2;&Q"K)&)*+,-+./&); T&0L#(#!%&!KS4%&0(PH/2;&Q"K)&(-2.7&(;&E&9::&; Prožilci Prožilec: Primer (SQL:1999) Prožilec (trigger): procedura, ki se štarta v primeru, da se zgodi specifična sprememba v podatkovni bazi. Trije deli: Dogodek - ki aktivira prožilec. Pogoj - pove ali naj se procedura sproži. Akcija - pove kaj naj naredi prožilec. CREATE TRIGGER ShraniMladeMornarje AFTER INSERT ON MORNARJI REFERENCING NEW TABLE NoviMornarji FOR EACH STATEMENT INSERT INTO MladiMornarji(mid, mime, star, ocena) SELECT mid, mime, star, ocena FROM NoviMornarji N WHERE N.star <= 18

32 Pregled SQL je bil pomemben pri sprejetju relacijskega podatkovnega modela kot osnovo večine realnih sistemov; jezik je bolj naraven kot starejši proceduralni jeziki. Veliko načinov za zapis istega vprašanja; optimizator bi moral poiskati najbolj učinkovit plan evaluacije. V realnosti morajo uporabniki zadosti dobro poznati sistem in podatke, da v robnih primerih zagotovijo optimalno evaluacijo. Pregled (2) SQL je relacijsko kompleten; precej močnejši jezik kot so relacijska algebra. NULL se uporablja za neznane vrednosti polj; komplikacije z NULL vrednostmi. SQL omogoča specifikacijo bogate množice integritetnih omejitev. Prožilci se odzivajo na spremembe v bazi.

33 1. SQL - LETALSKI POTNIŠKI PROMET m) Poišči vse IdLE letališč, na katerih lahko pristanejo vsi tipi letal. Vzemimo naslednjo shemo: LETALISCA _IdLE: integer, ime: varchar(30), kraj: varchar(50), drzava: varchar(50) LETALA _IdTL: integer, tip: varchar(20), opis: varchar(250), LetoProizv: integer, kapaciteta: integer PRISTANE _IdLE: integer, _IdTL: integer, DatumOd: date LET: _IdLet: integer, IdTL: integer, IdLE_vzleta: integer, IdLE_pristanka: integer, cas_vzleta: date, cas_pristanka: date, id_pilot REZERVACIJE _IdR: integer, IdLet: integer, Cena: Double, Razred: integer, Ime: varchar(50), Priimek: varchar(50) PILOT _id_pilot: integer, Ime: varchar(50), Priimek: varchar(50), DelovnaDoba: integer, StLetov: integer Atributi, ki predstavljajo ključ so podčrtani. Relacija PRISTANE vsebuje podatke o tem, kateri tipi letal lahko pristanejo na posameznih letališčih in od kdaj. Relacija LET vsebuje podatke o letih posameznih letal. Relacija REZERVACIJE vsebuje podatke o rezervacijah za posamezne lete. Zapišite naslednje poizvedbe v SQL poizvedovalnem jeziku. a) Izpiši imena vseh letališč v ZDA. b) Izpiši opis in IdTL vseh letal, ki so starejša od leta c) Poišči vsa imena letališč, na katerih lahko pristane letalo tipa B747. d) Poišči vse IdLE letališč, na katerih lahko pristane letalo tipa B747 ali B748. e) Imena vseh letališč, na katerih je pristalo letalo tipa B747 ali B748. f) Poišči vse IdLE letališč, ki so ali v Avstriji ali pa na njih lahko pristane letalo tipa B747. g) Poišči vse IdLE letališč, na katerih lahko pristane letalo tipa B747 in tipa B748. h) Zapišite SQL stavek za brisanje vseh zapisov v tabeli LETALA, za katere velja, da je kapaciteta letala manjša od 80. i) Zapišite SQL stavek za spreminjanje podatka o ceni rezervacije v tabeli REZERVACIJE z novo vrednostjo, ki je za 30% višja od stare. Pri tem upoštevajte, da se spremenijo le cene tistih rezervacij, kjer je razred rezervacije 1. j) Izpis Imena in Priimka pilotov v enem stolpcu. k) Izpis začetnic vseh pilotov (predpostavljamo, da ime vsak le en priimek in le eno ime). l) Izpis deleža števila letov pilota glede na 1 leta delovne dobe za vse pilote. 2. SQL NAFTNA DRUŽBA Vzemimo naslednjo shemo: SERVIS _IdS: integer, Ime: varchar(50), Kraj: varchar(50) ZALOGA _IdTG: integer, _IdS: integer, kolicina: integer TIP_GORIVA _IdTG: integer, ime: varchar(50) CISTERNE _IdC: integer, SerijskaSt: integer, kapaciteta: integer, LetoIzd: integer, DtServisa: date NAROCILA _IdN: integer, IdS: integer, St:integer, Datum: date, Kolicina: integer DOBAVA _IdN: integer, _IdC: integer, Datum: date, Kolicina: integer IdV: integer VOZNIK _IdV: integer, Ime: varchar(50), Priimek: varchar(50) Atributi, ki predstavljajo ključ so podčrtani. Relacija DOBAVA vsebuje podatke o opravljenih dobavah oz. prevozih cistern za izpolnitev posameznih naročil. Za izpolnitev enega naročila je lahko potrebno tudi več dobav oz. prevozov. Dobavo izvede cisterna z voznikom. Servis hrani zalogo posameznega tipa goriv v tabeli ZALOGA. Zapišite naslednje poizvedbe v SQL poizvedovalnem jeziku. a) Imena vseh bencinskih servisov v Kopru. b) IdC vseh cistern, ki so starejše od leta c) Poišči vse številke naročil, za katere je pri dobavi goriva sodelovala cisterna s serijsko številko d) Poišči vse IdN naročil, ki jih je izpolnila cisterna s serijsko številko ali e) Poišči vse IdN naročil, ki ali zahtevajo količino enot ali pa jih je izpolnila cisterna s serijsko številko f) Poišči vse IdN naročil, ki jih je izpolnila cisterna s serijsko številko in cisterna s serijsko številko g) Izbriši vse zapise v tabeli CISTERNE, za katere velja, da je kapaciteta cisterne manjša od h) Zapišite SQL stavek za spreminjanje podatka o datumu zadnjega servisa cisterne v tabeli CISTERNE z novo vrednostjo , za vse tiste cisterne, kjer je datum starejši od

34 i) Zapišite SQL stavke za vnos zapisa v eno izmed tabel v podatkovni bazi naftne družbe. j) Izpis Imena in Priimka šoferjev v enem stolpcu. k) Izpis začetnic vseh šoferjev (predpostavljamo, da ime vsak le en priimek in le eno ime). l) Izpis zaloge po posameznih črpalkah tako, da je količina izražena v 1000 litrih (npr. v tabeli podatek 500 l, izpišemo 0,5 l). m) Številke vseh naročil, katera so bila izpolnjena z dobavo cisterne s kapaciteto ali

35 - Številke letal, ki imajo drugo najvišjo kapaciteto. 1. LETALSKI PROMET LETALISCA _IdLE: integer, ime: varchar(30), kraj: varchar(50), drzava: varchar(50) LETALA _IdTL: integer, tip: varchar(20), opis: varchar(250), LetoProizv: integer, kapaciteta: integer IdLD: integer PRISTANE _IdLE: integer, _IdTL: integer, DatumOd: date LET: _IdLet: integer, IdTL: integer, IdLE_vzleta: integer, IdLE_pristanka: integer, cas_vzleta: date, cas_pristanka: date, id_pilot: integer REZERVACIJE _IdR: integer, IdLet: integer, Cena: Double, Razred: integer, Ime: varchar(50), Priimek: varchar(50) PILOT _id_pilot: integer, IdLD: integer, Ime: varchar(50), Priimek: varchar(50), DelovnaDoba: integer, StLetov: integer STEVARDESA _IdS: integer, IdLD: integer ime: varchar(50), Priimek: varchar(50), StLetov: integer LETALSKA_DRUZBA _IdLD:integer ime naslov Navedena poizvedbena vprašanja predstavite z ustreznim SQL stavkom in pri tem uporabite zahtevane SQL ukaze: a) SQL ukaz: DISTINCT Poizvdbe: - Vsi priimki pilotov b) SQL ukaz: Uporabite MAX kjer je to potrebo Poizvedbe: - Imena in priimki vseh pilotov, ki so že pristali na enem izmed letališč v ZDA (USA). - Številke letal, ki imajo najvišjo kapaciteto. c) SQL ukaz: UNION ali INTERSECT ali EXCEPT Poizvedbe: - Imena vseh letališč, ki so v ZDA ali pa je na njih pristalo letalo tipa B Imena vseh letališč, ki so v ZDA in je na njih pristalo letalo tipa B IdP vseh pilotov, ki so pilotirali natanko 3 lete. d) SQL ukaz: IN ali NOT IN Poizvedbe: - Imena letalskih družb, ki imajo v lasti letala s kapaciteto večjo od Imena vseh letališč, na katerih so pristala letala s kapaciteto večjo od 300. e) SQL ukaz: EXISTS ali ALL Poizvedbe: - Imena vseh letališč, na katerih so pristala letala s kapaciteto večjo od Imena in priimki pilotov, ki so že pilotirali letala s kapaciteto večjo od Imena in priimki pilotov, pri katerih je število ur letenja višje od števila ur letenja vsakega pilota z imenom William. f) SQL ukaz: COUNT ali AVG ali SUM ali MAX ali MIN in druge agregacijske funkcije Poizvedbe: - Število opravljenih letov za posamezne stevardese letalske družbe Adria Airways. - Imena in priimki stevardes, ki so opravile več kot 60 letov pri letalski družbi Adria Airways. - Imena in priimki pilotov, ki so pilotirali samo letala s kapaciteto večjo od 300. g) SQL ukaz: LEFT JOIN Poizvedbe: - Za letalsko družbo Adria Airways poiščite seznam vseh tipov letal, ki poleg tipa letala vsebuje še število tovrstnih letal (rezultat naj obsega vse tipe letal, tudi če takih letalska družba nima v lasti). 2. NAFTNA DRUŽBA Navedena poizvedbena vprašanja predstavite z ustreznim SQL stavkom in pri tem uporabite zahtevane SQL ukaze: SERVIS _IdS: integer, Ime: varchar(50), Kraj: varchar(50) ZALOGA _IdTG: integer, _IdS: integer, kolicina: integer TIP_GORIVA _IdTG: integer, ime: varchar(50) TOCILNO_MESTO _IdTM: integer, IdTG: integer, IdS: integer CISTERNE _IdC: integer, SerijskaSt: integer, kapaciteta: integer, LetoIzd: integer, DtServisa: date NAROCILA _IdN: integer, IdS: integer, St:integer, Datum: date,

36 Kolicina: integer DOBAVA _IdD: integer, IdN: integer, IdC: integer, Datum: date, Kolicina: integer IdV: integer VOZNIK _IdV: integer, Ime: varchar(50), Priimek: varchar(50), StKazni: integer ZAPOSLENIBC _IdZ: integer Ime: varchar(50), Priimek: varchar(50) IdS: integer a) SQL ukaz: DISTINCT Poizvdbe: - Vsi priimki šoferjev. - Datumi vseh dobav (brez ponavljanj). b) SQL ukaz: Uporabite MAX kjer je to potrebo Poizvedbe: - Imena in priimki vseh zaposlenih na kateremkoli bencinskem servisu v Kopru. - Imena in priimki šoferjev, ki imajo najvišje število kazni. - Imena in priimka šoferjev, ki imajo drugo najvišje število kazni. c) SQL ukaz: UNION ali INTERSECT ali EXCEPT Poizvedbe: - Številke vseh naročil, ki zahtevajo količino višjo od l ali pa so bila izpolnjena z dobavo cisterne, katere leto izdelave je enako Številke vseh naročil, ki zahtevajo količino višjo od l in so bila izpolnjena z dobavo cisterne, katere leto izdelave je enako Imena in priimki vseh šoferjev, ki so sodelovali natanko v 3 dobavah. d) SQL ukaz: IN ali NOT IN Poizvedbe: - Imena bencinskih servisov, ki imajo več kot l zaloge dizelskega goriva. - Številke vseh naročil, za katere je bila opravljena dobava s cisterno, katere kapaciteta je bila večjo od e) SQL ukaz: EXISTS ali ALL Poizvedbe: - Številke vseh naročil, za katere je bila opravljena dobava s cisterno, katere kapaciteta je bila večjo od Imena in priimki šoferjev, ki so že vozili cisterne s kapaciteto večjo od Imena in priimki šoferjev, pri katerih je število kazni višje od števila kazni vsakega šoferja z imenom Kevin. f) SQL ukaz: COUNT ali AVG ali SUM ali MAX ali MIN in druge agregacijske funkcije Poizvedbe: - Število točilnih mest po posameznih bencinskih servisih. - Imena in priimki šoferjev, ki so opravili več kot 500 dobav. - Imena in priimki soferjev, ki so sodelovali samo pri tistih dobavah, kjer so bile uporabljene cisterne s kapaciteto večjo od

37

38 Relacijski račun Relacijski račun Iztok Savnik, FAMNIT Dva jezika: N-terični relacijski račun (TRC) in Domenski relacijski račun (DRC). Izrazi vsebujejo spremenljivke, konstante, primerjalne operacije, logične operacije in kvantifikatorje. TRC: Spremenljivke so omejene na n-terice. DRC: Spremenljivke so omejene na domene atributov. TRC in DRC so podmnožice predikatnega računa. Izraze teh jezikov imenujemo formule. N-terico, ki je odgovor na vprašanje dobimo tako, da prostim spremenljivkam priredimo konstante tako, da je vrednost formule enaka true. Domenski relacijski račun Vprašanje ima obliko: ' ) ( ) *! # x1, x2,..., xn p x1, x2,..., xn!!odgovor vsebuje n-terice x1, x2,..., xn! $ za katere vrne izraz # & p x1, x2,..., xn # & " % vrednost true.!!izraz je rekurzivno definiran na osnovi enostavnih atomičnih izrazov (referenciranje n-teric v relacijah; primerjanje atributov), ki se lahko gradijo v bolj kompleksne izraze z logičnimi operacijami. # " $ + &), & %) - DRC Formule Atomična formula: x1, x2,..., xn. Rname, ali X op Y, ali X op const op je lahko <, >, =,/, 0, 1 Formula: atomična formula, ali p, p2 q, p3q, kjer so p in q formule, ali 4X ( p( X)), kjer je sprem. X prosta v p(x), ali 5 X ( p( X)), kjer je sprem. X prosta v p(x) 4 X 5 X Uporaba kvantifikatorjev in poveže sprem. X. Spremenljivka, ki ni povezana je prosta.

39 Proste in vezane spremenljivke Uporaba kvantifikatorjev! X in " X v formuli izvrši povezovanje X. Spremenljivka, ki ni vezana je prosta. Poglejmo spet definicijo izraza (vprašanja): ) + * +, # % x1, x2,..., xn p x1, x2,..., xn!!"#$#%&'("#$)*+$,-((./0$#$&1)*,2$( 345(6665(3&(2*(.$(&'7')')"(&'(1$,"("8(9:;(."( $8*&$(./0$#$&1)*,2$5(2*(."(1'72"(/0".+$(,( <"0#=1*(/>666?6 % $ & - ( +. ( ' + / Poišči vse mornarje, ki imajo oceno več kot 7 Pogoj zagotavlja da so domenske spremenljivke I, N, T in A povezane z domenami atributov n-teric relacije Mornarji. Izraz I, N, T, A na levi strani ` (beremo: tako da ) pravi, da je vsaka n-terica I, N, T, A, ki zadošča T>7 v odgovoru. Spremeni izraz za odgovor na: Poišči vse mornarje, ki so starejši od 18, imajo oceno pod 9, in jim je ime Janez. < I, N, T, A>< I, N, T, A>1 Mornarji0T > 7 ) + * +, < I, N, T, A>1Mornarji / Poišči mornarje z oceno > 7, ki so rezervirali ladjo #103 Poišči vse mornarje z oceno > 7, ki so rezervirali rdečo ladjo. + ) * < I, N, T, A>< I, N, T, A>1 Mornarji0T > 7 0 +,! Ir, Br, D < Ir, Br, D>1Rezervacije0Ir= I0Br= 103 Uporabili smo! Ir, Br, D... za! Ir! Br! D... # % % $ ( ( ( ) ) ) ( ) kot okrajšavo Kvantifikator! je bil uporabljen za povezovanje (Stik) n-teric iz relacije Rezervacije z n-tericami iz relacije Mornarji. &- ( + (. ' + / + ) * < I, N, T, A>< I, N, T, A>1 Mornarji0T > 7 0 +,! Ir, Br, D < Ir, Br, D>1Rezervacije0Ir= I0 Oklepaji kontrolirajo področje povezovanja kvantifikatorja. Izrazi delujejo kompleksno vendar uporabniški vmesnik (MS Access, QBE) na osnovi DRC je intuitiven. # % % $! B, BN, C < B, BN, C>1 Ladje0B= Br0C = rdeca # % % $ &&- (( + (. ( '' + /

40 Poišči mornarje, ki so rezervirali vse ladje. Poišči mornarje, ki so rezervirali vse ladje (spet!)! $ # < I, N, T, A>< I, N, T, A>& Mornarji %!" + ) +. ), ( B, BN, C) < B, BN, C>& Ladje ' + ) ) * Poišči vse mornarje I tako, da za vsako 3-terico B, BN, C velja, da bodisi ni v relaciji Ladje ali pa obstaja n-terica v relaciji Rezervacije, ki pokaže, da je dani mornar I rezerviral to ladjo. ) * + ) ) * ) * 2Ir, Br, D < Ir, Br, D>& Rezervacije% I = Ir% Br= B, ,,,!,, 0, - --! /! $ # < I, N, T, A>< I, N, T, A>& Mornarji %!" ( < B, BN, C> & Ladje 2< Ir, Br, D>& Rezervacije I = Ir% Br= B + ) ) * Enostavna notacija, isto vprašanje. (Bolj čisto!)... mornarje, ki so rezervirali vse rdeče ladje: C3rdeca'2< Ir, Br, D>& Rezervacije I = Ir% Br= B + ) ) *!!!!! + ) ) * + ) ) *.. 1,,!,, 0 -! -/.. 1,,!,, 0 -! -/ Varni izrazi & Izrazna moč Povzetek Mogoče je zapisati korekten izraz relacijskega računa, ki ima neskončno število odgovorov. Pravimo, da takšni izrazi niso varni. Primer: $ 1 Znano je, da lahko vsak izraz relacijske algebre prevedemo v varen izraz relacijskega računa (DRC/TRC); obratno je tudi res. Relacijska kompletnost: Povpraševalni jezik (npr. SQL) lahko izrazi vsako vprašanje,ki ga lahko izrazimo z relacijsko algebro ali računom. S S& Mornarji! #! " + ) ) *.,!, 0 -! / Relacijski račun je deklarativen (neproceduralen); uporabniki definirajo vprašanja tako, da zapišejo kaj želijo in kako naj sistem poišče rezultat. Algebra in varni izrazi relacijskega računa imajo enako izrazno moč; dobimo razred jezikov relacijska kompletnost.

41 Relacijski račun 1. Relacijski račun - LETALSKI POTNIŠKI PROMET Vzemimo naslednjo shemo: b) Poišči vse IdN naročil, ki jih je izpolnila cisterna s serijsko številko ali c) Poišči vse IdN naročil, ki ali zahtevajo količino enot ali pa jih je izpolnila cisterna s serijsko številko d) Poišči vse IdN naročil, ki jih je izpolnila cisterna s serijsko številko in cisterna s serijsko številko LETALISCA _IdLE: integer, ime: varchar(30), kraj: varchar(50), drzava: varchar(50) TIP_LETALA _IdTL: integer, tip: varchar(20), opis: varchar(250), OznakaProizv: varchar(20) PRISTANE _IdLE: integer, _IdTL: integer, DatumOd: date Atributi, ki predstavljajo ključ so podčrtani. Relacija PRISTANE vsebuje podatke o tem, kateri tipi letal lahko pristanejo na posameznih letališčih in od kdaj. Zapišite naslednje poizvedbe v relacijskem računu (DRC). a) Poišči vsa imena letališč, na katerih lahko pristane letalo tipa B747. b) Poišči vse IdLE letališč, na katerih lahko pristane letalo tipa B747 ali B748. c) Poišči vse IdLE letališč, ki so ali v Avstriji ali pa na njih lahko pristane letalo tipa B747. d) Poišči vse IdLE letališč, na katerih lahko pristane letalo tipa B747 in tipa B748. e) Poišči vse IdLE letališč, na katerih lahko pristanejo vsi tipi letal. f) Poišči vse IdLE letališč v Avstriji, ki na njih lahko pristane letalo tipa B Relacijski račun NAFTNA DRUŽBA Vzemimo naslednjo shemo: CISTERNE _IdC: integer, SerijskaSt: integer, kapaciteta: integer, DtServisa: date NAROCILA _IdN: integer, St:integer, Datum: date, Kolicina: integer DOBAVA _IdN: integer, _IdC: integer, Datum: date, Kolicina: integer 3. Relacijski račun SPLETNI FORUM Vzemimo naslednjo shemo: UPORABNIK _idu uporabniško_ime geslo enaslov vloga UPORABNIK_VLOGA _idu _idv VLOGA _idv naziv (vzdrževalec,navaden uporabnik,.) FORUM _idf ime_forum idu (vzdrževalec foruma) OBJAVA _ido idf (h kateremu forumu spada objava) idu (uporabnik objave) datum naslov vsebina ido_o (parent objava) Atributi, ki predstavljajo ključ so podčrtani. Zapišite naslednje poizvedbe v relacijskem računu (DRC). a) Najdi vse uporabnike, ki niso administratorji b) Poišči vse uporabnike, ki vnesli objavo v forum s številko 1 c) Izpiši vsa imena forumov pri katerih je vzdrževalec oseba z imenom Janez d) Izpiši objave iz foruma z imenom "Splošno", ki so bile objavljene pred Atributi, ki predstavljajo ključ so podčrtani. Relacija DOBAVA vsebuje podatke o opravljenih dobavah oz. prevozih cistern za izpolnitev posameznih naročil. Za izpolnitev enega naročila je lahko potrebno tudi več dobav oz. prevozov. Zapišite naslednje poizvedbe v relacijskem računu (DRC). a) Poišči vse številke naročil, za katere je pri dobavi goriva sodelovala cisterna s serijsko številko

42

43 QBE: Uvod Query-by-Example (QBE) Iztok Savnik, FAMNIT GUI za poizvedovanje Osnovan na domenskem relacijskem računu! Narejen pred GUI. Zelo primeren za enostavna vprašanja Neroden za kompleksna vprašanja QBE - IBM trademark. Vplival na veliko projektov PC DB: Paradox, Access, Primeri tabel za QBE Uporabniki definirajo vprašanja s primeri tabel, ali skeleti. Reserves sid bid day Boats bid bname color Sailors sid sname rating age Osnove Izpiši vsa imena mornarjev Sailors sid sname rating age P._N P._A!!"#$%$&'()&*+,-.,/)&"&,.0$-1&2&3&'& -.,.%4./+4)*&',(0-)*&,)56&#+&&7,.0$-18&.1)9: Sailors sid sname rating age P. AO(1). >8 AO(2).! ;<=&'(0.'$&6-$>.0-)&-+')&(#,)*)-?/$'>)&'& #,."-)&(0+?#@)A&&!(0$&(0.')>&'&BCC&7D,)"& 6,)/)-+(0$9: { I, N, T, A I, N, T, A! Sailors " T > 8}

44 And/Or vprašanja Imena mornarjev, ki so mlajši od 30 ali starejši od 20: Sailors sid sname rating age P. < 30 P. > 20! Imena mornarjev, ki so mlajši od 30 in starejši od 20: Sailors sid sname rating age _Id P. < 30 _Id P. > 20! Imena mornarjev, ki so mlajši od 30 in imajo rating > 4: Sailors sid sname rating age _Id P. > 4 < 30 Duplikati Ena vrstica vsebuje P: duplikati niso izločeni privzeto; izločenje dosežemo z UNQ. Sailors sid sname rating age UNQ. P. < 30!!"#$$%&'()*$+$,-$$./01)23()$'4$)+14#"5)$0&)%+"(46$ 13724$0&"0&"#)84$)+14#"59"$./01)23(4%$+$:;;< Sailors sid sname rating age ALL. _Id P. <!" _Id P. > #" Vprašanja s stikom Stiki Imena mornarjev, ki so rezervirali ladjo za dan 8/24/96 in so starejši od 25 (datumi in nizi imajo narekovaje): Sailors sid sname rating age _Id P._S > #$ Reserves sid bid day _Id %#&'( / /!=()2$9"$.">)5)&35$+$/9"8394#)83$ '0&"8"19)%2383< Barve ladij z imenom Interlake, ki so jih rezervirali mornarji za dan 8/24/96 in so starejši od 25 : Sailors sid sname rating age _Id > 25 Reserves sid bid day _Id _B 8/24/96 Boats bid bname color _B Interlake P.

45 Stik Imena in starost mornarjev, ki so rezervirali ladjo, ki jo je rezerviral mornar z sid = 22: Sailors sid sname rating age _Id P. P. Reserves sid bid day 22 _B _Id _B Neimenovani stolpci Uporabno, če želimo izpisati rezultate nekega izraza ali natiskati polja iz dveh relacij. Nekateri QBE dovoljujejo P. v samo eni tabeli! Sailors sid sname rating age _Id P. _R _A P._D P.(_R/_A) Reserves sid bid day _Id _D Negativne tabele Agregacija Negacijo damo pod imenom relacije: Sailors sid sname rating age _Id P._S Reserves sid bid day _Id _B QBE podpira AVG, COUNT, MIN, MAX, SUM Nobena operacija ne eliminira duplikatov, razen COUNT Imamo tudi AVG.UNQ.... Sailors sid sname rating age G. G.P.AO _A P.AVG._A!!"#$%&'()(*+(,#(-.#/%012(%#$345(6,7(80"7.'&7(')(,9/%'87(':43#(',"#(6.7;8#,"(')1.48'<(4".'1/"#6+ =>%&'3,94(/%#.414(+?>(/.7;'(#;-#6#.7+ =@,49(,"#$%7&()(A+(:#.4(':7"'(*+(4$'( &'3,9#(#%7.4&'3#+(

46 Ločeni pogoji Ločene pogoje uporabimo za izražanje zvez med več relacijami oz. stolpci različnih relacij. Lahko izražamo pogoje za skupino n-teric podobno stavku HAVING v SQL: Sailors sid sname rating age G.P. _A!!"#$%$&'()*+,+'(-)")./0)1&)234 Sailors sid sname rating age P. _A CONDITIONS AVG._A >!" CONDITIONS 20 < _A AND _A < 30 Poišči mornarje, ki so rezervirali vse ladje Vprašanje z deljenjem Potrebovali bomo agregacijske operacije (in update). Sailors sid sname rating age P.G._Id Reserves sid bid day _Id _B1 Boats bid bname color _B2 CONDITIONS COUNT._B1= COUNT._B2!5$6+)7$86+)9*#(:(&1:+)-*#$;$&'(<)=$)1"*1;() 1:(&$):+#&$#'(-<)61)9+)#("(#-1#$71)-9()7$='(> Vstavljanje zapisov Vstavljanje enega zapisa:!?9@$-7'$&'()-(a)"$*19+-)b#$@1&,)'()&c77)-) 9*+=&'18)"$*1918D4 Sailors sid sname rating age I. _Id _N _A Students sid name login age _Id _N _A Sailors sid sname rating age I. 74 Janice 7 14 CONDITIONS _A > 18 OR _N LIKE C% Brisanje in update Pobriši vse rezervacije za mornarje, ki imajo rating < 4 Sailors sid sname rating age _Id < 4 Reserves sid bid day D. _Id!E+-(A$')"$)(&+)9@$#+9@):+#&$#'$<)61)1:$)91=) F)GH Sailors sid sname rating age 74 U._A+1

47 Omejitve pri popravljanju zapisov Poišči mornarje, ki so rezervirali vse ladje (Spet!) Ne moremo mešati I., D. in U. v enem primerku tabele I., D. in U. ne moremo kombinirati z P. in G. Ne moremo vstavljati, popravljati ali spreminjati n- teric z vrednostmi iz stolpcev iz ostalih n-teric iste tabele. Sailors sid sname rating age john _A joe U._A+1!"#$%&%'"()*&$+,"'&+,)$(+-.$/&-0 1,"'&+,$2",-'-3"$/&.4"$4"#$5%&'"6)*&0 Hočemo poiskati mornarje _Id tako, da ne obstaja ladja _B, ki je nebi rezerviral _Id: Sailors sid sname rating age _Id P._S Boats bid bname color Reserves sid bid day _B _Id _B!!-7-3"74&$(%'"8"4#-9$$1%'-*-47#)(2"$:;$+-$ 4-$%&#"()$($%&<),)(4)$('+,)=)>$!?$2"284-*$('+,4-*$'-@5$4"#$+-$&6'"(4"("#&$ 4-3",)(4-$('+,)=-0 Uporaba pogledov MS Access Poišči mornarje, ki niso rezervirali neko ladjo _B: Sailors sid sname rating age _Id P._S BadSids sid I. _Id Boats bid bname color Reserves sid bid day _B _Id _B!A&)8B)$*&'4"'#-C$2)$4)+&$($4-2)$*4&D)=)E Sailors sid sname rating age _Id P._S BadSids sid _Id

48 Povzetek QBE je eleganten, prijazen do uporabnika Jezik osnovan na relacijskem računu Jezik je izrazen in relacijsko kompleten Enostavna vprašanja in enostavna sintaksa Vpliv na različna grafična orodja Borland s Paradox Microsoft s Access.

49 1. SQL in QBE na tablo in phpmyadmin POGLEJ SLIKO ZA RELACIJSKI MODEL PODATKOVNE BAZE 2. Z uporabo QBEja na tabli in znotraj phpmyadmin vmesnika, izvedi naslednje poizvedbe: a) Izpiši vse vrstice pilotov, ki se jim priimek začne na B b) Izpiši vse vrstice letališč, ki imajo predzadnjo črko imena (naziva) r in niso iz države Slovenija c) Izpiši vsa letala (oznaka), ki imajo kapaciteto manjšo od 170 d) Izpiši imena in priimke vseh pilotov, ki so pristali v državi Italija e) Najdi pilote ki so pilotirali vsa letala f) Za vsakega pilota, izpiši ime, priimek in naziv letalske družne pri kateri je zaposlen g) Izpiši letalske družbe, ki nimajo v lasti DC9 3. Zapiši naslednje poizvedbe v SQLu z uporabo ORDER BY, GROUP BY, HAVING, COUNT, JOIN, kjer je potrebno. a) Izpiši imena in priimke ter število letov pilotov. Izpis naj bo urejen naraščajoče po priimkih b) Za vsakega pilota (ime, priimek) izpiši vsa letala (opis) s katerimi so leteli, pri čemer za vsakega pilota izpiši vsak tip samo enkrat c) Izpiši imena držav in števila letališč po državah padajoče (od Z proti A) brez duplikatov d) Preštej število letal, ki imajo kapaciteto med 200 in 300 e) Izpiši ime države z največ letališč f) Izpiši pilote (ime, priimek) in število letal, za vse pilote, ki so pilotirali več kot dva leta g) Izpiši letala, ki so jih pilotirala dva pilota. h) Za vsak let (idle vzleta, idle pristanka) izpiši stevardeso. Izpis leta naj se izpiše tudi če na njem ni bilo stevardese - uporabi LEFT JOIN

50 -- phpmyadmin SQL Dump -- version deb Host: localhost -- Generation Time: Jan 28, 2010 at 02:19 PM -- Server version: PHP Version: ubuntu6 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; /*!40101 SET */; /*!40101 SET */; /*!40101 SET */; /*!40101 SET NAMES utf8 */; Database: `baze_podatkov` Table structure for table `is_drzava` -- DROP TABLE IF EXISTS `is_drzava`; CREATE TABLE IF NOT EXISTS `is_drzava` ( `iddrzava` int(11) NOT NULL AUTO_INCREMENT, `naziv` varchar(50) NOT NULL, PRIMARY KEY (`iddrzava`) ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin AUTO_INCREMENT=3 ; Dumping data for table `is_drzava` -- INSERT INTO `is_drzava` (`iddrzava`, `naziv`) VALUES (1, 'Slovenija'), (2, 'Avstrija'); Table structure for table `is_letalisce` -- DROP TABLE IF EXISTS `is_letalisce`; CREATE TABLE IF NOT EXISTS `is_letalisce` ( `idle` int(11) NOT NULL AUTO_INCREMENT, `naslov` varchar(50) NOT NULL, `naziv` varchar(50) NOT NULL, `iddrzava` int(11) NOT NULL, PRIMARY KEY (`idle`), FOREIGN KEY (`iddrzava`) REFERENCES is_drzava(`iddrzava`) ON DELETE RESTRICT ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin AUTO_INCREMENT=3 ; Dumping data for table `is_letalisce` -- INSERT INTO `is_letalisce` (`idle`, `naslov`, `naziv`, `iddrzava`) VALUES (1, 'Ljubljana', 'Ljubljana', 1), (2, 'Dunaj', 'Dunaj', 2); Table structure for table `is_letalska_druzba` -- DROP TABLE IF EXISTS `is_letalska_druzba`; CREATE TABLE IF NOT EXISTS `is_letalska_druzba` ( `idld` int(11) NOT NULL AUTO_INCREMENT, `naziv` varchar(50) NOT NULL, `iddrzava` int(11) NOT NULL, `naslov` varchar(50) NOT NULL, PRIMARY KEY (`idld`), FOREIGN KEY (`iddrzava`) REFERENCES is_drzava(`iddrzava`) ON DELETE RESTRICT ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin AUTO_INCREMENT=3 ; Dumping data for table `is_letalska_druzba` -- INSERT INTO `is_letalska_druzba` (`idld`, `naziv`, `iddrzava`, `naslov`) VALUES (1, 'adria airways', 1, 'ljubljana'), (2, 'lufthansa', 2, 'dunaj'); Table structure for table `is_piloti` -- DROP TABLE IF EXISTS `is_piloti`; CREATE TABLE IF NOT EXISTS `is_piloti` ( `idp` int(11) NOT NULL AUTO_INCREMENT, `ime` varchar(50) NOT NULL, `priimek` varchar(50) NOT NULL, `idld` int(11) NOT NULL, PRIMARY KEY (`idp`), FOREIGN KEY (`idld`) REFERENCES is_letalska_druzba(`idld`) ON DELETE RESTRICT ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_bin AUTO_INCREMENT=3 ; Dumping data for table `is_piloti` -- INSERT INTO `is_piloti` (`idp`, `ime`, `priimek`, `idld`) VALUES (1, 'Razem', 'Predjamski', 1), (2, 'Janez', 'Kranjski', 2); Table structure for table `is_stevardese` -- DROP TABLE IF EXISTS `is_stevardese`; CREATE TABLE IF NOT EXISTS `is_stevardese` ( `ids` int(11) NOT NULL AUTO_INCREMENT, `ime` varchar(50) NOT NULL, `priimek` varchar(50) NOT NULL, `idld` int(11) NOT NULL, PRIMARY KEY (`ids`), FOREIGN KEY (`idld`) REFERENCES is_letalska_druzba(`idld`) ON DELETE RESTRICT ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_bin AUTO_INCREMENT=3 ; Dumping data for table `is_stevardese`

51 -- INSERT INTO `is_stevardese` (`ids`, `ime`, `priimek`, `idld`) VALUES (1, 'Brina', 'Sezase', 1), (2, 'Ivy', 'Testisnu', 2); Table structure for table `is_tip_letala` -- DROP TABLE IF EXISTS `is_tip_letala`; CREATE TABLE IF NOT EXISTS `is_tip_letala` ( `idtip` int(11) NOT NULL AUTO_INCREMENT, `oznaka` varchar(50) NOT NULL, PRIMARY KEY (`idtip`) ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_bin AUTO_INCREMENT=5 ; Dumping data for table `is_tip_letala` -- INSERT INTO `is_tip_letala` (`idtip`, `oznaka`) VALUES (1, 'A380'), (2, 'DC9'), (3, 'DC8'), (4, 'Boeing 373'); Table structure for table `is_letala` -- DROP TABLE IF EXISTS `is_letala`; CREATE TABLE IF NOT EXISTS `is_letala` ( `idl` int(11) NOT NULL AUTO_INCREMENT, `idld` int(11) NOT NULL, `idtip` int(11) NOT NULL, `kapaciteta` int(11) NOT NULL, PRIMARY KEY (`idl`), FOREIGN KEY (idld) REFERENCES is_letalska_druzba(idld) ON DELETE RESTRICT, FOREIGN KEY (idtip) REFERENCES is_tip_letala(idtip) ON DELETE RESTRICT ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_bin AUTO_INCREMENT=6 ; Dumping data for table `is_letala` -- `idlt` int(11) NOT NULL AUTO_INCREMENT, `idl` int(11) NOT NULL, `idp` int(11) NOT NULL, `ids` int(11) NOT NULL, `idle_vzleta` int(11) NOT NULL, `idle_pristanka` int(11) NOT NULL, PRIMARY KEY (`idlt`), FOREIGN KEY (`idl`) REFERENCES is_letala(`idl`) ON DELETE RESTRICT, FOREIGN KEY (`idp`) REFERENCES is_piloti(`idp`) ON DELETE RESTRICT, FOREIGN KEY (`ids`) REFERENCES is_stevardese(`ids`) ON DELETE RESTRICT, FOREIGN KEY (`idle_vzleta`) REFERENCES is_letalisce(`idle`) ON DELETE RESTRICT, FOREIGN KEY (`idle_pristanka`) REFERENCES is_letalisce(`idle`) ON DELETE RESTRICT ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_bin AUTO_INCREMENT=5 ; Dumping data for table `is_leti` -- INSERT INTO `is_leti` (`idlt`, `idl`, `idp`, `ids`, `idle_vzleta`, `idle_pristanka`) VALUES (1, 3, 1, 1, 1, 2), (2, 1, 2, 2, 1, 2), (3, 2, 1, 1, 2, 1), (4, 4, 2, 2, 2, 1); Table structure for table `is_rezervacija` -- DROP TABLE IF EXISTS `is_rezervacija`; CREATE TABLE IF NOT EXISTS `is_rezervacija` ( `idr` int(11) NOT NULL AUTO_INCREMENT, `cena` int(11) NOT NULL, `idlt` int(11) NOT NULL, PRIMARY KEY (`idr`), FOREIGN KEY (`idlt`) REFERENCES is_leti(`idlt`) ON DELETE RESTRICT ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_bin AUTO_INCREMENT=5 ; Dumping data for table `is_rezervacija` -- INSERT INTO `is_rezervacija` (`idr`, `cena`, `idlt`) VALUES (1, 81000, 1), (2, 70000, 2), (3, 82000, 3), (4, 83000, 4); INSERT INTO `is_letala` (`idl`, `idld`, `idtip`, `kapaciteta`) VALUES (1, 1, 1, 150), (2, 1, 1, 150), (3, 1, 2, 250), (4, 2, 3, 150), (5, 1, 2, 250); Table structure for table `is_leti` -- DROP TABLE IF EXISTS `is_leti`; CREATE TABLE IF NOT EXISTS `is_leti` (

52

53 *+,-+%+.%/ % *+,-+%+.%/ %607.+-$%89:;4< = 6">#%,?@0.ABA3%C2/01-3%.0%1@/+?%/+,-+?D = <2%+E0%73F+-2%C2,F3/+G%.0%50,.272%6>"#%H! IJ9*K%C@3.2,%C2/01-27%E3/%1@/+E%/+,-2E%+.%I9:D! LI4<JK%C@3.2,%E3/%I9:%.0%/+,-D!!M3%7@,1+%2C3@0G+A%,10%N0,27.2%C21@01.+$%5012%,3%E2@0%.A+?270%BC2@0M0%CF0.+@01+%C05FA+72H %%%%%%%% %%%%%%%% O0-0A%,3%7,3P0%.3%,?@0.+%7% /+.0E+N.+%,C2E+.Q =!"#$#%&'()*#+(D%% R S(''%T%UV#%I9:%%%(%&%%W,-2@0AX%(<#%/+,-D =,&+(-&.+&)/01-&+)+#)12"(+3()014(5'1$D%%Y3F+E2%+E31+%,?@0.A3.3%C2/01-3%E3/%73N+E+%,3A0E+%,%6>"#D% W!N+1.2HX = <+C+N.0%?+3@0@?+A0%C2E.+F.+-27K! *+.0E+N.+%,C2E+.%WI9:X%50%/+@3-1.2%/3F2%,%C2/01-+D! *+,-%50%PF07.2%C2/ %M052D! <@0-27+%50%0@?+7+@0.A3%,10@3AZ+?%73@5+A%C2/01-27D% *+,-+ = "3@,+,13.1.2%,?@0.A370.A3%C2/01-27D%% = VF07.0%C@3/.2,1%C@3/%1@0-27+K%%4&"#'5#+) 41/510%7,D%/#'$#+.+&D = "2/01-+%,3%,?@0.ABA3A2%+.%C@3.0Z0A2%7%3.210?$% -+%A+?%+E3.BA3E2%4&/'1$+&)6%1'&)0F+%/5"(+&D = [0,%C21@3M3.%50%/2,12C%/2%C2/01-27%A3% 2/7+,3.%2/%F2-0G+A3%C2/01-27%.0%/+,-BD%%! "2F2\0A%C2/01-27%.0%/+,-B%+E0%7CF+7%.0%?+1@2,1% /3F270.A0%6>"#H %%%%%%%% %%%%%%%%

54 *+,-+./.0/%12345 )"*+*!!"#$%&'!('!)*+,-$!./*0!12!)*3(0!!4$56!('!/*'7,56!.$+'*!,.!)'.!(!&,7! /$8,9,$.,*67$!:#6)$!.6;! (#';7,0!<#';,!/$;!:#6)67,!,7'.=-'7$!!"#"$%&'(!!!>*6.-'3/,(6.-'! /$+'56!(67$!/*'5$! '.'!:#6)'!)!;6.'7! +*'.=+5=0 1#/*!)*#+,")($!('(+6)#-'.,!,8! '( 2"&3!"#$%& 2&/4#, %1+% /% :53% %;8/51)<820/=%1+%>?+45@ "!"#$%#&"'("$;-8/,24%8+4/)A?57/%.5%B/?C/.+%3?/1= " )*+",%(#&"$-"&"#'%+./$;D545.C/%.5%>?+4%-+1%A?57+= "!"#$0).'*#"$;-8/.+3% %2E).5%-+78FC/%-?+FD/= 9 :53%2345.C5%2.%8+05G2C345%E /7% -8/7?51HC/05I " :53%2345.C5%3/%3-8/,2.C5%+1%(%1+%&',3/G " J+05G2C345%E /7%3/%3-8/,2.C5%+1%'%0+%(',3/G " :53%-8/.+35%C/%02-2D.+%(,3/G%E5%K*#% *?CHD%E5%,5.CF+%L)!%G/.+@% M E,5.CF502%D53%2345.C5%)%8+0I%E /7N%% M O581<58/%73I%3+P0<58/%8/F20/7Q %%%%%%%% %%%%%%%% "82,/8@%L#R%6/ ST/%L#R%6/343058%(KU"VI% 9 WIX%2.GT$%(KIK%U#%% 9 :53%2345.C5@%%YI(%,2??23/G+.1%;,3/G= 9 J505G2C345%E /7@%%KI(Z%,3/G 9 "8/34+4%,/1%3?/1,2@%%&I&%,3/G 9 R5432,5?/.%2345?.2%D53@%%(XIX%,3/G 9 X%17+[ T%-?+FD$%42%3/%7802C+%Z$&''%780I),2.% 9 "?+FD5%73/>HC/%WIWX%U#% $%A+30+05%C/%&I\%A2A5>20)2.GT & I% 9 O208+30%-8/.+35%C/%GG5I%(W%R#)3 "82,/8C575@ %1+%12345%C/%GG5I%('%,3/G %1+%A?57./A5%3-+,2.5%GG5I%\'%.5.+3/G+.13N "82,/8@%66J ] %^?+G4%^_G?/[02,/%L)![#H3[G?+G4%6505[085.3P/83)3%`66a[7+?0%%%R+1H?/%%%%"/54[085.3P/8[850/ 66J[&''%(''%ROE% ('%.3% (''%ROE% &''%R2??2+.% &IXb'I&%`% "^[(\''% (\''%R#)3 66J[&\\%(WW%ROE% ZIX%.3% (WW%ROE% &\\%R2??2+.% &IXb'I&%`% "^[&(''% &(''%R#)3 66J[WWW%(\\%ROE% \%.3%%% (\\%ROE% WWW%R2??2+.% &IXb'I&%`% "^[&Z''% &Z''%R#)3 66J[K''%&''%ROE% X%.3%%%%%%%%%&''%ROE% K''%R2??2+.% &I\b'I(%`% "^[W&''% W&''%R#)3 %%%%%%%% %%%%%%%%

55 *+,-./,0%123430%56% :35;,</=%>5!"#$%&'!?%7/+65=%%! #234.%56%.7/.%72,-.$%4.%72,-.@3%! #234.%56%.7/,A%; $%4.%72,-.@3%! #234.%56%737,-5,A%; B% 9 #234.%,5,%-6/3/,4,%56@%1.%1.2.%3+C65.D.+65.% 7,40,5E53%56%-.748%FC2,-,%56%>5672,-5@.?G$%-6%7,% A.5.A.D.+6%E67%.7465@6%.5%+3/6;.@746%D64675./,0B 9 H,0,5E53%74,5.+65@,=%()!&'$*+&!,)$'**/@B%0,E% 7,40,5E5.I%7/+65.%7,%<+,1,+,%056<+,@J%<+.-31./,0% 56%E678K LMNO 9 O %<32@,%F-.74%6++6PGB Q R,E%-.7430%8+,@,5.I%0%<32@,$%4.%3A3C3E6%617/+64;.@3=%<32@,%@,% 0.-,/.%43/%,5%76A%0,2.4%-.74B% 9 S.2@.=%<30,E6/.%<,+T3+A657,%.5%D65,72@.037/B% 9 O0,% %/,I5.4.=! "3-6/4305.%<6730.%F7/+.<7G=%"3-6/4.%73%+6D-,2@,5.%<3%-.74.I%<3% <6730.IJ%0,2.437/%<676%7,%.A,58@,%U<673056%,53/6VB! L,-85-65;6=%R,E%-.7430%WX%0,E%56<64B%L,-85-65/56%.5T3+A6;.@6%3A3C3E6%+,4357/+84;.@3%<3-6/430$%E,%7,%-.74% <3406+.B% %%%%%%%% %%%%%%%% LMNO%Y.03@. 9 Y.03%'=%Y.%+,-85-65;,B 9 Y.03%(=%Z+;62@,5@,%F-0,%.-,5/.E5.%43<.@.GB! R764%-.74%.A6%D+;6253%43<.@3B! "6+62,253%1+65@,J%<.765@,%-,28@,%56-%-0,A.%-.74.B! [647.A62,5%<+,537%W%<+,537%,5,C6%-.746B% 9 Y.03%'\(=%"6730.%.5%D+;62@,5@,B! RD<3+,-53%1+65@,J%<.765@,%-,28@,%56-%-0,A.%-.74.B%! [647.A62,5%<+,537%W%748<,5%<+,/34B% LMNO%Y.03@.% 9 Y.03%]=%"6+./,/6%U<3%1./.IVB! "673056%,53/6=%^5%1./B%^5%-.74%D6%<+,0,+@65@,B! R7643%<.765@,)1+65@,%042@8E8@,%07,%-.74,J% %<32@,%26I43% <+3;,7.+6%,53%D6I/,03%0%-65,A%/+,58/48B% 9 Y.03%_=%"6+./,/6%U<3%1234.IVB! "673056%,53/6=%^5% %1234B%^-,5%-.74%D6%<+,0,+@65@,B! "6+62,253%1+65@,%D6%A65@`,%D6I/,0,$%0,E@,%D6I/,0,%26I43% 8<3+61.@3%<325%<+,/34B%! ".765@,%042@8E8@,%7<+,A,5@,5%1234%.5%-.74%D6%<+,0,+@65@,B% 9 Y.03%a=%"3+6D-,2@,56%<6+./,/6%U<3%1234.IV! "3-3153%LMNO%_J%<6+./,/5.%1234%@,%<3+6D-,2@,5%<3%0,E.I%-.74.I %%%%%%%% %%%%%%%%

56 *+,-%.%/ % :;<40=<0%403-%>?"#%/+,;%.%/ % 6-540,40@205% A 9 B0@<0%403-<0%.;C8+3;<-%-/%8+D;%403-<;E! ;,-2;F0<-)/+G;,-2;F0<-%187;40! H7;4<+%)601;4<+%187;40 9 I;C8+3+%6-%!"#$"%&'(187;40%5-7;%H080%0.37@+4;% 8;2-$%/;%1018+5%;,-F07;%187;40%3%+4+5% J4+5% K%4;%/012KL%% M B0@<0%403-<0%4+%6-87+HK<+<-%3+/+80%2;2-%<+%8-%4;7+<+4-%-.A% 2;2-%1+%/+,;%1% % A %%%%%%%% B5+140%6-540,402%3%>?"# #$%&'(%)*+,!*-%)(-&.$*!"#$%&'()"#!"&* 9 )*+,(-*./0*(1'2'($(345(+/(6/7#*(89):(+"6/(;(%0'-'< 9?6-7;H,<;%1+%8;H+,;!6;7-3E%%"#$%&'()!*+',-&./ %%%%%%%% /+0)1.1(2-(%)*+,10($3(.$45$0(,$.-51. "6/78(9:;68<!" <3=$*+(-&.$*5+(>$&)$*+,+(%( +,-.,/0123%4.5/62.7/%+,-.61 I;C8+3;%6-%187;40%AAA B+J%-%/+,K%.%35+1A%6-540, N+%012;4;%187;4%40%3%H;.+4KE! O.H+70%-2307%.;%;/-"%0/$*! N+%<+%-2307%PK5;.;4Q%6-8+5%1+%5-7;%.;601;80%4;%/012%! "7+H+70%0.H7;4-%187;4%3%0.H7;40% ).'=%'(187;4%04%3740%4<+4%4;1,-3A%% "!"#!$%&'(!)*#+,-+#,%.(!/%&0#,#!12)*34!5#',3!)*#6$#+7!!)(0#.!$%&'(!,2%)*#8!)*#9#*#.(!,#:!50*%2-!; # I;C8+3;4;%187;4%5-7;%H080%*+="2/,( # B0/4-%5-7;%H080$%J+%<+%187;4% <+4;%;,0(>?-/;/%/@E%!?-/;/%(H08% # >87;4%3%H;.+4K%<+%,;C2-%.;C8+3;4;%3+J27;8$%!?6-7;H,<;%1+(A2"$"&(=.'="%0/%0A%%>87;4%<+%2;4/0/;8%.;%.;5+4<;3-%J+%<+% A2,(=.'="%0/%0R%'A # B.6-7+/4-18%04%-27+3;4<+E! /-/;840%O)!%3%6705+7K$%/;%<+%187;4%0.H7;4;%.;%.;5+4<;3-A% # "7-8-2-,%B%"$%'#/C(! )'!/%0"D$%/=."0(S%3+J%2;14+<+A %%%%%%%% %%%%%%%%

57 *+,-+./01.%2-% %7+,-40 8!950,%02:,-4%7%!"#$"%&'()*+$,%-($.%/! 8 *+,-+./01-%03-%C-D96%5.C09%5EC05%4-%F%G)!%6E.,-H01I% 6A50746%6A%.+)#2$*4)!")5$B 8 6%3.%-7-)*5#%1'.$-(%J%% K L,A-%70+M-H01-%E652,6N.4-%2%;<=%O%E64-5C1-16N% N40%E,./C.A%+-:.C.B! F%6950,1.5%P%F%7+,-40%A %57-9-%2-D+.5-%E65,6N0%G)!B% %@<=%1.%5%+.3%E,03.,M%:6C1Q-%>+6A-%4.%5%57.D%70+M-H01-D$% 7.5.A-?B *="#%57B%!*%R-+6+.N40% %%%%!*%M,.1-%A %E,67+6,%S%53.740%E6340C409J% 2-9-1%4.:0%!*%2-%*="#%M,.1-C%+-%6E,-50C-T 8 <-2C09.%5%!*%E6AE6,0J%E,.467C U.9-+.,.% $%4E,B$%A %7.%4.%36,-16%, %E,.96%5.C0967+0%A079-B 8 R.C6%2% %E6340C40963%5%*="#%2-D+.5-% 236V467+J! ",0E.+0%7+,-4%5%53.740%E6340C409$%E,070C0+0%7D, % 7+,-40%4-%A079%>E63.3:46%2-%*R%S%,.H65.,W?$! ",0C-/6A0+.5%!"#$"%&'(%*+$,%-($.%*!"#$-'*'-*:,-41.%7+,-40% 54-E,.1%4-%674650%6:4-Q-41-%+0E0N4.%6E.,-H01.B% %%%%%%%% %%%%%%%% &" &# &$ &%!"!#!$!%!"#$%#&'#(")$%'*+, -(")$%'.'+/01/02 X6,3-+%2-E07-J%%X0974-%A6CV04- X6,3-+%2-E07-J%Z-,0-:0C4-%A6CV04-8 R5-%-C+., %Y6,3-+-%>F%E6C1%1.%Y09746?J E78%8F 9$): J1''''''''''''''''''''J2'''''''''''''''''''JK''''''''''''''''''''JC C D D D D G$):('"$'4(BH8:8#('"'9$"8I#&H'"&HI$)$H J1'''''''''''''J2'''''''''''''JK'''''''''''''JC 8 G4Y6,3-H01-%6%+0E0D%E6C1-%1.%.4-9-%2-%57.%2-E07.%5% A I%7D,-41M1.%7.%5%!'!"%,!3%,*3$"$1)&89 8 "60QN0%':")*E6C1.%4.%2-D+.5-%E,./C.A%57.D%2-E0765B %%%%%%%% " '3456('()784#(7&%('9$#5:(';&48<78#';$"7$9';$'&=786('9$):> 5?&#<$%&7$'"@4(#:8%(#:8'!"##>';&4A'#8'B("8;('%8)&<$'94$"7$4(A %%%%%%%% G$):8'$;H&<$%'(74&I57$%

58 *+,-./%0/,.123%4.5202%627018%9+:;218 *+,-./%0/,.123%4.5202%<.,2.=2:18%9+:;218!"#$%&'(!"#$%&')!"#$%&'*!"#$%&'(!"#$%&') *#7%8#$#9 :";8<;"!"#$%&'*!"!"!!"!"! B>$'C'D>E*F B>$'C'D>E)F B>$'C'D>E(F A<"%9'>!"#$%&'+!!"#$%&$'&(&)%*+",&$'-&#+.'"/&012&&3&#+4$&"/*.+,"*$4$& 5"6*.4"&#+.7$8",9.&5"#$%:4&5"&#+"5.,&#+:%*:+& %#+.7.7;:&+$'<&,$&4.',:&%#+.9.7/9$4:2 %%%%%%%%!/0123 =<-'7%:>8;?' +''---''''.'')''( 456+/! ="68:&#+.7$8"7:&5"#$%.&#:&%*+",$&,.&'"&;$& %%%%%%%% ), (K )L * *'''''''''''-'-'-'''''''''''')'''''''''( 3>"#I<;">J':"#$%&;? M:"#$%&;? * ( -'-'-, ( ( + 1%7%&#G' 9%'7%H#<#I' 9#7%8#$- :";8<;"%-' E2FB2%12<+B2%AG"#%98:HB8B+%?%5"#$%$%/8,%?% >IJ!JKCI3%4=2,7.%0/,.12L%<0.7.%0/,.1%<08=HB8% -1+;2M+%?.520+<N%!58,.M2B83 " 2108,/)98:8/8)-+926O%P%?.520 ",8.9%Q%?.520%%RH5+,.=.%+$'S " 5,8T:89%R0M.1S%<08U%?.520+<%R5+T+B2%1.9%?.5202$%72%1.B% B2U%020/8-%<,18S V.B81+0/.<18BF.%9./+/8W1.%0/,H7/H,. Q %12-.B+%1+=818%H,8B81+0/2N Q J.7+%7+/%08%9./+/87.%-.1BF.%21%<8W.$%/.7+%08% "+/,8=1+%B8%0U,.1B8<./2%5+9./78%+3% Q %*+",.6%9./+/878 ",.?#:+";/9.,.7&#+:%*:+?%1.%0/,.18U " 5,890/.<:B812U%5+9./7+<N% %%%%%%%% %%%%%%%%

59 0 *+,-+.+/0% % /25-0/0%% 9%9+:/0636!"#$%# &'(#% ; <=%>80?/+%92-0/5%5/%9060% %63-020%@525% 9A-0/.+/0%/+4.+%/0%1594,B% ; C9040%92-0/%?9+@,.+%&%D40:08E0F%5/% B %%%%%%%% )*+, &'(#%!"#$ %&'() )*+, &'(#% )*+, &'(#% )*+, &'(#% )*+, &'(#% )*"%60&'(#%. -'(#%./01.0.2#3*0 4(#56%04(*&'*( *+,-+.+/0% %:% %92-0/5% )*+,0 )*+,-./+0 &'(#%09 ; G0759%731B%92-0/5%/0%>80?/5%92-0/5%?9+@,.+%80A43%2,15% H2B%7-3925A%:83>3?%/0%731B%92-0/5B% ; = %.+%:@5-40%92-0/5I% /20E5.0%:%9+:/063?%.+%+/0%082+-/025?0B%!!"#$%&'()%*$+,'-./%$+'0"'1/"2"0'&%$03+'45.'3.6'*-",'-./%$+7 %%%%%%%%!"#$%# &'(#% )*+, &'(#%07 )*+,00 &'(#%08 J %402083>5 ; G0%?904%5/1+49K! 92-,42,-0%L/7-B$%#M%1-+?3N%5/%59408/5%48.,O5 ; G0%?9043%-+80E5.3K! 56+$%56+% $%10232+O/0%92-,42,-0! 56+/0%5/%2575%02-5@,23?%! 56+/0%5/1+493?! 5/2+>-52+2/+%36+.52?+ ; G0%?904%73>8+1K! 56+%73>8+10%5/%1+P5/5E5.0 ; J $%0,23-5:0E5.0$%? %@0:+/0%92-0/5$% 521B " %%%%%%%%!"#$#%&'(!)&!)*+#,-.,(!/&$!+.%#0(-.: %%%%%%%% Q22-RS02L022-R/06+$%-+8R/06+$%2T7+$% /N #''(;%#260 (6";%#260 '<460 4*&.'.*%0 #''(;%#260 =''(.>?'6;@#'0 &'(.%A0 70 (6";%#260 =''(.>?'6;@#'0 &'(.%A0 80 '<460 =''(.>?'6;@#'0 &'(.%A0 B0 4*&.'.*%0 =''(.>?'6;@#'0.%'6A6(0 C0 &.+0 -'?+6%'.0 &'(.%A '?+6%'.0 &'(.%A0 80 "*A.%0 -'?+6%'.0 &'(.%A0 B0 &'#(0 -'?+6%'.0.%'6A6(0 C0 *D6%#0 -'?+6%'.0 (6#"0 E0 F.+0 G#1?"'6'#0 &'(.%A0 70 F.260 G#1?"'6'#0 &'(.%A0 80 4"#D#0 G#1?"'6'#0 (6#"0 B0 *

60 "*+,-.-/ 0 123/%4-%5*6-72% %5*972:72;/2%9-<24=! 128-/.-7%<*3.*5$%>2.8*3.%4-%*<+237?%*<%:*/?624-%3.8?72@% 5*9-9A7*%4-%B8-<2.2%5*<?./-%7?%<23/B%3-/+-7C7*@% ,28?.?%3-%!"#$%#&"'("%27%)"&"#'%*+,$-.*"/%(+=% 0 D9-372%5*97=E%3.8?7%58-7-;-7?%2,%<23/?%+%FGH=! I.8?7%*3.?7-%+%FGH%.?/*%<*:J*$%<*/:-8%4-%7-%358*3.2%.23.2$%/2%4*%4-%,?>.-+?:=%! K?523?7?%4-%7?%<23/$%/*%4-%2,A8?7?%,?%,?9-74?+*%L5*%.-9$%/*%4-%358*;C-7?M=! N,A28?%*/+284?%,?%,?9-74?+*%3-%2,+-<-%7?%*37*+2% #*-"*+0%(+$)"$)"1+'(",.2! "*3/B;?%3-% %+-C%3.8?72%,?%/?37-4;*%B5*8?A*=% "*+,-.-/ 0 IO"#%+3=%!I%1?.*.-C72%323.-9! IO"#%5*.8-AB4-%:?3.7*3.2$%/2%42>%!I%7-%7B<2=%P?%5829-8$%-/35:262.7*%,?523*+?74-%3.8?72%7?%<23/$%/*7.8*:28?74-%+83.7-J?%8-<?%3.8?72%7?% <23/B$%<?.*.-/-%58-/*%<23/*+$%9*Q7*3.%+7?58-4;74-J?%A8?74?%+-C4-% /*:2C27-%3.8?72$%582:?J?4?74-%<-:?%+9-37-J?%5*972:72/?%7?%+,*86-% <*3.*5?$%2.<=% 0 K?5232%+?82?A2:7-%<*:Q27-%3%35-62R2628?7292%*<92/2%5*:4%+% <28-/.*824B%7B<2%<28-/.-7%<*3.*5%<*%2S.-J?%5*:4?%27%*9*J*C?% 7B::%+8-<7*3.2=% 0 T*89?.%3.8?72%3%58-<?:2%*9*J*C?%3>8?74-+?74-%,?523*+% +?82?A:27-%<*:Q27-%27%*9*J*C?%58-92/?74-%,?523*+%5*% 3.8?72= %%%%%%%% %%%%%%%% "*+,-.-/ 0 P2+*%<?.*.-/-%*9*J*C?%<-:*%3%3.8?792% <?.*.-/-%27%7B<2%?A3.8?/624*%U,A28/-%,?523*+V=%! I.8?72%3%58?,729%58*3.*8*9%3-%2<-7.2R2628?4*%,% <+*47*%5*+-,?729%3-,7?9*9%?:2%58-/*%<28-/.*824?= 0 N7<-/32%*9*J*C?4*%BC27/*+2.%<*3.*5%<*%,?523*+%7?%*37*+2%+8-<7*3.2%7-/-J?%?.82AB.?=% 0 W?.?:*J%3>8?74B4-%5*<?./-%*%8-:?624?>$% 27<-/32>%27%5*J:-<2>=% %%%%%%%%

61

62 <=-6-/+0%0+,-./0 *+,-./0 *123.%456+0.$%789:*; %F!$%/-1+5J%=0,%A3,G%K5A0/36%1%0/.5C+0J%.CBDE-J%!I > *1L0=5%B-%3=23H3+5C+5%+5%#).(/0)-$'(1)#/-$ DA3=5LCB-+3%15%0/.5+B-%A3, M%6A0/36%!"G > <=-6-/+5%0+,-./+5%/2=D.2D=5%A3,A0=5%25.3% #0/%)2($,-."-32%$.32%2D,0%#0/%)2($+$()%3%2(4G > 5678?%%/2520E+5%/2=D.2D=5N%%9:$'"((?%%,0+5J0E+5% /2=D.2D=5$%,=-63%B-%6-,+3%D=56+32-O-+3G %%%%%%%% %%%%%%%% */.5+B-%A3,=3EB5 *489 1%-2.3%7&/ ' + ' 5 ( + ( > PP;-#<3#$*0($<'=.()'($0$,-*,"(32(4$>$?@AQQ! R-%/3%A3,52.0%6%D=-B-+0M%, %+5=-,0J3%L0+5=+3% 0/.5+B-%0+%+523%A=-HC-,G%! S-+5%L0+5=+-H5%0/.5+B5%B-%60/3.5G > *,-B5?%%T=-0=5B%UU0+,-./+3UU%, G% > *+,-./+5%, %B-%6/--+3%C5M.3%A=-V-B% 6-C0.5G%*,-B3%C5M.3%A3+360J3W.'.(.) 1%-2.3%$&-$"0 ),"#$%92 3"#$%7 <73"7!"#$%&'!"#$%&(!"#$%&*!"#$%&) "!!"#$%&'()*+&',-$+&'%)./"$'0.1$+2.$'1)3&3$+$4 %%%%%%%% +,-$".,/%$&-$"0 +#2:7/%$ 3"#$% ;3%,/%2&3"#$%7 " '50230'623-).07'82$9:/$/&',&1)3+&8.$'8,02$# %%%%%%%%

63 !"#$% &'()*+ ">184>%*+,-%D>4;426,*#-.&*-%&'()*+.!"#$"%&'#()%*+*#,#/%%01234% %24:;4<=<9%29>31>6<4%?9% O% ;"(-* :63!"#$#%&'$!(#)*+#*)$!,)-.-($/!!!"#$!%&$'&()*+,"$'&(-"$./-!-%,"# %%%%%%%% %%%%%%%%,*#-.&*) &'()* Y&X%FFF ;"(-* 82 %%%%%%%%%%FFF%?9348%L>126<A4%Y&X$% [(X$%\]X ;"(-* *+,-!(+>)(*- &'()*+%= /+&'+!(-/+0*-% &'()* : < <3 813 %%%%%%%% 1-12,"-345-"(-2/&$!,-!-'/#+$'&,0-"#+$'(0-,'-'(-#67,-!-%,"#,08 %%%%%%%%

64 #*%+,-./0%1234/53%,2678,3-9%89:-;<% = >/?@5-;<9/<A%/@B%C<A2.8)D64,878%E%5/F% G %1%%% %%%%%HG%E%I29/JA$%1%E%K%58<A/.L = +,-./%3-%6-5/%J,2.9/A-M-9/B% = D9:-;<9-%<A,298%</%62@/593-9-%.<23%N'OH,26-9%;/,-92LB%% C<2;/%./6587P-%.<-4J3-%!%QE%%!%%QE%&!%.@8</.B%% %%%%%"2,2?-A-,%!%8?-9J3-?/%"#$%&'(%/:,-.-<2B = ",8?-,%#*%+,-.-<2 = D<;293-%<-%62P9-%.%;/,-9JS%@,8?-,32.2%;53JP-.%./:8%:/%58<A2%<%@/:B%.@8</?%H;/A%@,8%%DTUVLB = D7P8%NW$%(NW$%.<-%@/:B%.@8<-%XE%&YW%BBB 0,,. 9= 9: ;< =>!"#$%&"'()*'& /6&7$28-8,('&%-"8$5 ;? :? 9<? 9A? 9B? ;>? ;;? ;<? ;:? ;B? ==? =<? =C? =B? %%%%%%%% +,#-.%,)"'()*'&' /0$1$2$"3-4*,#-.%'5! "!"#$%&'()'#*+,#-./01#2'#&3)45'#($#-#26.-.%47 %%%%%%%% #*%+,-.-<2%.%@,2;<8 C<A %@/:B%.@8<2%.%#*%:,-./ = Z8@8P92%<A/@9320%(''B%%Z8@8P92%62@/593-9/<A0%[\OB! "/.@,-P-9%I29/JA%E%(]] = Z8@8P9-%;2@2^8A-A-0! C87892%Y0%(]] Y %E%](&$_''$\''%62@8</.! C87892%]0%(]] ] %E%%%%%&$]N&$[]\%62@8</. = C-P89/?2%52`;/%<`,298?/%.873-%98./3-%:,-.-<2%.%.?-<98%@/?98598;0! 18./%(%E%%%%%%%%%%%(%<A,29%%E%%%%%a%>4! 18./%&%E%%%%%%(]]%<A,298%E%%%%%(%V4! 18./%]%E%(\$[a_%<A,298%E%(]]%V#%%%%%%% = "/87P8%58<A%)*% = C<A2.8%@/:B%.@8<%.%)B! b-%8?2%)+62:/<a8%@,/<a/,2$%3-%92,-3-9/c! T8^-,%3-%@/A,-49/%,(-./%0#0%%)+12+)+0&+&$2$+2$-3045/+)67 = d92;/?-,9/%@/,26:-58%.@8<-%89%"#$"%&%'<,-:938%;53jp%f/,b = C<A2.8%89:-;<98%.@8<$%;8%;2M-%92%)68+.%<A2,72%/:%)B = Z/%<-%52`;/%6F/:8%,-;J,68.9/! e26^-@%89:-;<9-f2%./6587p20%-92;/?-,9/%@/,26:-58%.@8<-%89%"#$($)%'<,-:938%;53jp%f/,b%%he2658;2%6%,26^-@/?%58<a2bl = e26^-@8%f78,83/g%:,-./s%,26^-@%;/,-92%6.872% :,-./B%% %%%%%%%% %%%%%%%%

65 *+,-./0-102%34%.%#5%672.8% 9:7;<27= D8,%,E6;%.% ;162D+1;C%+,7-12CF% > :72:;+8<%;1% :7218+8<%D/0EB-% > %%%%%%%%!" #" $" %" &" $ E#!C #D $ E% '()*+,-),./0,*1,2*3/2),2,*3/45/ 6$,*1,(41()51,./27894: ;9()0/,9*3/.1,2,<)*3=>? '()*+,-),./0,*1,2*3/2),2,*3/45/ #" $!!!"#$#%&'!$(!)*!+*!,(-.*/#0!1&,*2!#2!)*!+*!/&3*4(0(!!!!!!3#5#2(!$,*3*)(6!!!"!7*%!/,#%*,8!9#!)*!0(:1&!#-&;2#0#!,(-.*/8!)7,(2#!!!!!!-!/&,(-$*0#73#+&!3/#)&3<!7&!)*!&9#4(+2&!2*!8/&,(90+(!3!!!!!!/,(1)#6! %%%%%%%% E# $" %" &" ;941. E%!C #D EC" EF" EG"!D"!!"!C"!%"!G" ##" #C" #&" #G" #7;+-102%:86F%.:;+-%;@%#5% > K-B1;%:7;%D8721E%;1%:8;IB;%/;+,%@%.:;+8<F% > L@M7;I;%.:;+F " N2%02%O%.+-0%:8/8.;A8%:8/1%:8,2<%!"#$%&'( " N2%.+2ME02%O%!"#$.:;+8.$ > "8+DE+;<8%:87-@62/;,;%.:;+2%,-D8$%6-%+;%0;C%+:8+86;<8%86% F% > N2%:87-@62/;,2.%12%E+:2$%)*+&%,(+#(-"-./%0( > *%:7;<27E%@/;,0-%<87-<8%@M7;+-,;%.:;+%9D;%D-P2%1-%%,%-/;%1-% =%;@%+,-7I-%86%,F > %%%%%%%%!" #" R72.8%:8%.+,-./0-10E%34%;1% M7;+-10E%(S4%;1%&'4%FFF $ > #7;+-102%(S4%02%218+,-.18F > #7;+-102%&'4%02% %+%:87-@62/;,.;08%.:;+8.F%T72610;%D/0EB%02%:72:;+-1%1-.@G87F %%%%%%%% E# ;941. $" %" &" EC" EF"!!"!C" E%!% #D!%"!G" ##" #C" #&" #G"

66 %%%%%%%%***%+,%-.+/0,12%&34 5 "67.2-,6%89+:0,12* 5 ;9+712%<6=07>6:,+?% :<+/6:%,0%=2/,+%72.% +,=2>/,+?%:<+/6:% /<6=01*%!" ##$ #%$ #&$!!$!'$!($!&$ "69,12,12%#@%=.2:2/0 5 "69,12,12%#@%=.2:2/0%8%:/70:910,12A% <6/0A28,2B0%80<+/0%12%90?>6%80AC=,6%:% <.+A2.C$%=0%12%<6=07>6:%:29+>6*% 5!"#$%&$%&'90?>6%,0.2=+A6%:29+>6%?+7.212* 5 ($)*)+#),+*)%+D%%E.2=+%<6=07>6:,2%:<+/2$%=6=01% >08092F%,0%<.:6%/7.0,%:%,6:2A%>6.2,C*,--. + )! )%!" A-043 / :716-:;5<15= :5>?5804:46@ #$!$ +$ %$ ($ )'$ )*$ ##$ #%$ #&$!!$!'$!($!&$ %%%%%%%% %%%%%%%%!$ '$ *$ &$ )"$ ))$ )#$ )!$ #"$ ##$ #!$!)$!+$!*$!($ ')$ ''$ "69,12,12 5 G,=2>/,+%:<+/+$%>+% >0H216%,0%9+/72%/6% :2=,6%:/70:912,+%,0% />.01,6%=2/,6% +,=2>/,6%/7.0,%7+>%,0=%9+/7+*%%I6%/2%70%,0<69,+%16%.08F2<+A6% J%F2<+72:%/2%90?>6% <6,6:+%,0%:+K1+?%,+:61+?*% 5 L9B6.+72A%12%?+7.21K+% 6=%:/70:910,10% 80<+/6:*%!$ '$ *$ &$ )"$))$ )#$)!$ #"$##$ #!$!)$!+$!*$!($')$ ''$ * * A-043 )" #" )# A-043 )" #" )# #! #!!+!+!( B-895:7161;5<15 = :5804:46@ B-895:7161;5<15 C :5804:46@ "6:8272>%<69,12,10%#@%=.2:2/0 5 M6H,6/7%(D% :,6%:/70:910,12*! "6N0/,6*! O2%=6-+A6%/2>:2,N2,%80<+/%+,=2>/,+?%/7.0,+%<6%,+:61+?* 5 M6H,6/7%&D'!"#$%&$%&'-./#0'1"+2)$34! ".2=,6/7+%<.+%>6,7.69+%/6N0/,2B0%=6/76<0*! M0,1%G)!%6<2.0F+1%A2=%B.0=,16*! P+/7+%/6%/?.0,12,+%/2>:2,N,6*! P0?>6%>6, A6%QR0>76.%80<69,12,6/7+S%,0% /7.0,2?* %%%%%%%%!$ '$ *$ &$ )"$ ))$ )#$ )!$ #"$##$ #!$!)$!+$!*$!($')$ ''$ %%%%%%%%

67 *+,-./0% =% 6 A%-20B5;%53%5+,-./0% %4%B2;+32;/C%D()'&* $#+#(,-'*%'$#+%&.%'/=%! E0-;5;%;.%;5B0<.;%B</F?;%402;0G;<.3%1,<H;.3%-,4>2,?;/,% 402;0G;<.,%:+34;<,%>0-;5,4%4%<;5+;@=! IF1;%4%-2;J32F%-,</%K;B5.3%1,<H;.3%<0@B,%;J0J,%4-;53%%>% 402;0G;<.,%1,<H;.,%4%<;5+;@=%7L,H.,5+%7M88= N0>-2:;<.;%;.13B5; 6 0'1$23,+%,*,%4.5),*5,%1,G2;%>0%;5B0./3%>%3.0?0/3J=% O3%F-,20G</0/,%53%>0%;5B0./3%-,12,?/0= 6!G5+0/0/,%)"'",6%.%;.%4,%'7,6%.%425+3%;.13B50P% -,1,G.,%-2;J32/04;%Q*RL%45=%#S%1234,= 6!T<310<;%5;%G,J,C 9 %402;0.+,%5+0+;?.3T0%;.13B50% 9 %20>:;2</;4%20>-2:;<.;%;.13B5%71;.0J;?3.8 %%%%%%%% %%%%%%%% *+0+;?.;%20>-2:;<.;%;.13B5 6 U%-2;J02.3%5+20.;%5,%K;B5.3$%>053H3.3% 53B43.?.,%+32%.;5,%.;B,<;%5-2,:?3.3= 6 "758%J,1%O%V%5BF-3B%@%B0+323JF%-2;-010% -,10+B,4.;%4-;5%>%B</F?3J%58*7O%V%U%5BF-B,48!"#$%&'()*+,)- #$%&'! /. *+0+;?.;%20>-2:;<.;%;.13B5 6 *BF-B;%453GF/3/,%$#4'"5#(%.*($,).= 6 N0>-2:;<.0%K.%53%F-,20G;%.0%,)5'+%.7*5+&9698* A231.,5+;%53%J,20/,%2'1$23,",%.0%;.+3240<%'%===%OW(=! "758%V%70%X%5%S%G8%,G;?0/.,%13<F/3%1,G2,=! 0%;.%G%5,%B, P43<;B,%/3%>.0.,%,%+3J%B0B,%FJ32;+;%%"= 6 N0>4;/3%53%<0@B,%1,<T%53>.0J%-23<;4.;@%5+20.;%B02% -,5<0G:0%F?;.B,4;+,5+%-,10+B,4.3%5+2FB+F23=%%! :,%'7,6%,*2'1$23,+%,*,%4.5)*23:;%-2,G<3J=% -01 %%%%%%%%!"#$%"&'()*"%&#!"'+#,&'()*"%&# %%%%%%%%

68 *+,-./01.2%/+,3/-.04.% #/+416%.4% %8?/+4.%87<37+%16%3A?/+?4AB 9 ()*'%:%%)"+*,#-+"'.,%/%0&*1.2%.3,$4,*% C D+E7A%3/68?+201+>A%8?/+4.%87<37A2B C F?62.0A%87<37A2%86%3A52A1.%8%3A52A1.?2.1A%5./67?A/.1+B%! *+,G63.>A%8+>A%87<367%=8?/+4@$%7.%16%4+3A04164B! H./67?A/.1%16%260.7A%>+41-.%7A?%G60A?4+%5+?A?67+%,+?A%86% 3A52A1.?62%.,2/-.%E.?/AB%5".4+*0"12"6.3#+%2".I! "/.0+JA5.?.%16%3A?/6K4A%-6%/+,3/-.04A%L<47G.1AI %%%%%%%% "/.>6/ 9 H./67?A/.1%16%3A016%260.7A8?.%MB 9 N87+416%87<37+%,+%+7% C O,6>.%,+541A%PG60A?4A%J0AK.4AQ% %%%%%R%K.?A2%A5%!=+@%.4%?A%-?62.0A% <3A/+K.%7A?%.45678B!!=+@%S%T%S%K.4+/4A%('($%%?A%16% 87<367%'(B "!"#$%&%'&()!! "!*(!&(!+,-.(,!.#/'!.#0(1!2%!3%45(.6!0(3!4%+(76!'#8#!+03%'!6'!.#3%4$(/6!8.6+(9 "!"#!$#!%&'(#)*&!"#!$%&'%()!&)*#+,%*)(- "!.)&#/)!0%1%2!&3!*345#$!",*36)!'#/)+%+*3,!6#!437,#'3!$%&'%(),#'8!,%!')&)1!,3+%2!&3!!!!$*)1#*(31%!5#/%,6%!)6!/%+3/6%!9/%0)6%!"+:$+3-! %%%%%%%%!"#$!%$&'!"()%$ *+!",%$&'!"()%$ DIREKTORIJ 2 4* 12* 32* 16* 2 1* 5* 21* 13* 2 10* 2 15* 7* 19* PODATKOVNE STRANI Skupek A Skupek B Skupek C Skupek D O8?+2.%!=/@S&'%=3A52A1.?62@ UA>64?+/1.!"#$!%$&'!"()%$ *+!",%$&'!"()%$ DIREKTORIJ %%%%%%%% * 12* 20* Skupek A 32*16* 1* 5* 21*13* Skupek B 10* 15* 7* 19* Skupek C Skupek D Skupek A2 (nov skupek)!"#$!%$&'!"()%$ *+!",%$&'!"()%$ DIREKTORIJ * 7* 19* 3 32* 16* Skupek A 1* 5* 21* 13* Skupek B 10* 4* 12* 20* Skupek C Skupek D Skupek A2 (nov skupek) 9 &'%S%K.4+/4A%('(''B%%V+541+%"%K.?+%=''@%4+>%3A268?+$%5+%+. 3/.3+5+.W%+0.%W&X%%%#$%K.?%3A26%2%7+?6/.B%! 8*0-#2%.90-:"2%.)"+*,#-+"'%:%%Y+Z%R%K.?A2%3A?/6K4.E%,+%87<37+%E% 7+?6/6><%3/.3+5+%23.8B! ;-,%02%.90-:"2%.3,$4,%:%R%K.?A2%3A?/6K4.E%,+%5A0A[.?62%+0.%23.8%3/.3+5+% 7%87<37<B 9 U5+1%/+,G63%87<37+%3A2,/A[.%3A52A %5./67?A/.1+\! "/65%28? >:%0-,%02%.90-:"2%%87<37+%S%&*0-#2%.90-:"2%B%%! O8? %3A2,/A[.:%0-,%02%.90-:"2%.3A8?+46%]%&*0-#2*.90-:"2*<% 9 "A52A %5./67?A/.1+B C H./67?A/.1%86%3A52A1.%8%7A3./+416>B C O%5./67?A/.1%86%23.-6%7+,+06G%4+%4A2A%8?/+4B% C "/2.%K.?%86%<3A/+K.%,+%5A0A[.?62%3/+26%8?/+4.%3/.%/+,G63<B% %%%%%%%%

69 "*+,*-.,/0-.%+12.34*21-/!"#"$%&'()"*+,+%')-+./"01$+%*+,%-%0+)2#,()+$&3! %45(6(7"%'(0-($+,2-%0+)2#,()+$"%8%#('+)"1$259!"#$#%&'&()*#+&#,-.&+ ;%<%==> !" %%%%%%%% !" ;%<%==>?)-+%*+, -8:!"01$+%*+, *6.04/ G1B1<0.%H4.,1D3.> " (''I#%+/4*4.3/J%(''%;D*A*,);/B1:J%K5%:42/0J%($'''$'''%B*+F%,B1:*,J% *21-%&L$'''%.D.6.04*,J%,.D13/%,.2-.40*:4%+/%C*%E.D%+12.34*21-%,% +10F%:B*610MF 7 "2*CD.61> " N%B216.2M$%+/%-.%B*2/;+.D14.,%,2.+0*:41%2/;B2H1D0.%OM03E1-.%01%.0/3*6.20/%P:3.Q.+R%D/S3*%+12.34*21-%B*:4/0.%;.D*%,.D13F% " N.D13*%,B1:*,%;%1:4*%,2.+0*:4-*%2/;B2H1D0.%OM03E1-.%B*,;2*</% B2*CD.6.T %%%%%%%% "*,; V2.,.:01%10+.3:1%:*%1+./D01%;/%1:3/0-.%B*+2*<1-%,.0+/2% +*C21%4M+1%;/%1:3/0-.%;%.0/</-.6F% 7 WXYI%-.%:4/41<01%10+.3:F% " XB2.610-/-*%:.%:/6*%D1:41J%B*42.C0.%:*%B2.D1,0.%:42/01F " "2.D1,0.%:42/01%D/S3*%;.D*%B*:D/CH/-*%M<103*,14*:4%:42M34M2.F 7 #Z%+2.,*%-.%+10/61<0/%:42M34M2/F "!B.2/E1-1%,0*:)C21:/0-.%%*S2/0-/4/%M2/,0*4.U.0*:4%+2.,.:/J%E.0/% *B.2/E1-%-.%D*A% [ %\%E*:4F " N.D13%O/0*M4%P)R%*6*A*</%+/%,1H10/%+2.,.:/%2.+3*%B2.:.A/%]%/D1%KF " V2.,*%-.%:3*2/-%,.+0*%C*D-H.%*+%M2.-.0.%+/4*4.3.F "*,; %#Z%+2.,* " G1B1<0*%:*%10+.3:0.%:42/01%;/B*D0-.0.%%^_`F " #Z%+2.,*%-.%*C1</-0*%C*D-H.%*+%WXYIF D1:4*,%:B *%1+.041O13/4*2-.%;/B1:*,T 7 "*D0-.0-.%#Z%+2.,.:/%-.%D/S3*%,.D13*%S142.-H.%3*4%,:4/,D-/0-.% B*:/6.;01S%;/B1:*,%,%+2.,*F 7 #Z%+2.,*%-.%0/-C*D-%2/;H12-.0%10+.3:%,%:1:4.61S%;/%+.D*%:% B*+/43*,0161%C/;/61F%? a.%4m+1%.0/%*+%0/-c*d-%*b4161;12/01s%3*6b*0.04%xb"#f %%%%%%%% %%%%%%%%

70 "*+,-.-/ 0 12, %689-/:6;%9*<46%,2%6:/28=-%,%-82>2=-?%68%:-% =6@%8-%A3*42<7=2%,2%6:/28=-%3*94*>=2B% 0 C.2.6>86%42, %689-/:6%72@/*%+*96=*%9*%9*7D6@% @%+-46DB% 0 12,5647=6+%42, %689-/:%86?2% @%:.4286% 42,-8%+%346?-4A%9A376/2.*+B% E!"#$%&'(%)*'+(,-'./)"#/0'1/)#0,$%-2%+)3(0'2%4 0 F*%:-%:/A3-/%,23*786%:-%3*9+*=6%964-/.*466=B%! "4*<7-?6%+%346?-4A%8--82/*?-48-%3*42, %+4-98*:.6% 42, @%GA8/H6=B% %%%%%%%%

71

72 Podatki na pomnilniških medijih Datoteke in indeksi Iztok Savnik, FAMNIT Diski: Direkten dostop do blokov. Branje večih zaporednih strani je cenejše kot v branje naključnih strani. Trakovi: Sekvenčni dostop do strani. Cenejši medij kot diski; uporablja se za arhiviranje podatkov. Datotečna organizacija: Organizacija podatkov na pomnilniških medijih. ID zapisa (rid) služi za identifikacijo fizične lokacije zapisa Indeksi so podatkovne strukture, ki omogočajo iskanje ID-jev zapisov na osnovi podanih vrednosti atributov ključa indeksa. Arhitektura: Vmesni pomnilnik prenaša strani iz zunanjega pomnilniškega medija v bazen strani. Nivo datotek in indeksov dela z vmesnim pomnilnikov. Alternativne datotečne organizacije Obstaja več alternativ, vsaka je idealna za določene situacije in ne tako dobra v drugih primerih:! Neurejene datoteke: Primerne, ko je tipični dostop branje celotne datoteke.! Sortirane datoteke: BNajboljše v primer, da iščemo zapise v določenem vrstnem redu ali želimo preiskati določen interval celotne množice zapisov.! Indeksi: Podatkovna strukture, ki organizirajo zapise na osnovi dreves in razpršilnih funkcij.! Pohitrijo iskanje zapisa z dano vrednostjo iskalnega ključa.! Podobno sortiranim datotekam, pohitrijo iskanje podmnožice zapisov na osnovi določenih iskalnih ključev.! Popravljanje zapisov je mnogo hitrejše kot v primeru sortiranih datotek. Indeksi Indeks pohitri iskanje zapisov na osnovi polj iskalnih ključev indeksa.! Vsaka podmnožica polj relacije je lahko iskalni ključ indeksa na dani relaciji.! Iskalni ključ ni enak ključu (minimalni množici polj, ki enolično določa zapis v relaciji). Indeks vsebuje množico podatkovnih zapisov. Indeks podpira učinkovito iskanje podatkovnih zapisov k* z dano vrednostjo ključa k. Za dan ključ k lahko poiščemo podatkovni zapis k* z enim dostopom do diska. (Podrobnosti kmalu )

73 B+ Drevo Notranja strani Primer B+ Drevo Root 17 Podatkovni zapisi v listih so soritirani Zapisi <= 17 Zapisi > 17 Listi strani (Sortirani po iskalnem ključu) !!"#$%#!&$'()*'*+!,+-.%/+&0'!1.,#$'2!/#!$+!)3'*'0#!4,3'&!5!0'6%7!!8+%3.0*'!$%3.0#!#9.*+!#0-'/$0'!1.,#$':!$.9+!1.!#$/.0*'; Indeksni zapis P 0 K 1 P 1 K 2 P 2 K m P m 2* 3* Poišči 28*? 29*? Vse > 15* in < 30* Insert/delete: Poišči podatkovni zapis v listu in ga spremeni. Včasih se pojavi potreba po restrukturiranju staršev spreminjanje vozlišč nad spremenjenim zapisom (zbrisanim/vstavljenim). 5* 7* 8* 14* 16* 22* 24* 27* 29* 33* 34* 38* 39* Razpršilni indeksi Dobra rešitev za selekcijo z enakostjo. Indeks je zbirka skupkov. Skupek = primarna stran plus nič ali več prelivnih strani. Skupek vsebuje podatkovne vpise. Razpršilna funkcija h: h(r) = skupek k kateremu pripada podatkovni zapis r. h uporabi polja iskalnega ključa relacije r. Ni potrebe po indeksnih zapisih v tej shemi. Podatkovni vpis k* Podatkovni vpis k* je lahko: Podatkovni zapis z vrednostjo ključa k. <k, rid> <k, seznam rid> Izbira alternative za podatkovne vpise je ortogonalna izbiri indeksne tehnike uporabljene za iskanje podatkovnih vpisov z vrednostjo ključa k. Primeri indeksnih tehnik: B+ drevesa, razpršilni indeksi. Tipično indeks vsebuje dodatno informacijo, ki usmerja iskanje želenih podatkovnih zapisov.

74 Podatkovni vpis - možnosti Možnost 1:! V tem primeru je indeksna struktura datotečna organizacija.! Alternativa neurejeni datoteki ali sortirani datoteki..! Samo en indeks nad dano zbirko podatkov lahko uporabi možnost 1.! Sicer imamo podvojene podatke, ki predstavljajo redundanco ter možnost nekonsistence.! V primeru, da podatkovni zapisi zasedejo veliko prostora je število strani, ki vsebuje podatke veliko.! Tipično je tudi količina dodatnih podatkov večja. Možnosti za podatkovne vpise Možnosti 2 in 3:! Podatkovni vpisi so tipično precej manjši kot podatkovni zapisi.! Boljše od možnosti 1 v primeru velikih podatkovnih zapisov, še posebej če so iskalni ključi majhni (del indeksne strukture, ki je namenjen iskanju je precej manjši kot pri alternativi 1.).! Možnost 3 je bolj optimalna glede prostora od možnosti 2, vendar so zapisi variabilne dolžine tudi v primeru, da so iskalni ključi fiksne dolžine. Klasifikacija indeksov Primarni vs. Sekundarni: Če iskalni ključ vsebuje primarni ključ potem imenujemo indeks primarni.! Unique indeks: Iskalni ključ je kandidatni ključ. Povezan vs. Nepovezan: Če je urejenost podatkovnih zapisov enaka ali blizu urejenosti podatkovnim vpisom potem pravimo, da je indeks povezan.! Možnost 1 pogojuje povezan indeks; v praksi tudi obratno: povezan indeks pogojuje možnost 1 (sortirane datoteke so redke).! Datoteka je lahko povezana z indeksom po samo enem ključu.! Cena branja podatkovnega zapisa preko indeksa zelo varira v odvisnosti ali je indeks povezan ali ne! Povezan vs. Nepovezan indeks Recimo, da je možnost 2 uporabljena za podatkovne vpise in so pod. zapisi shranjeni v neurejeni datoteki.! Gradnja povezanega indeksa: najprej se sortira neurejena datoteka (prazen prostore za bodoče zapise).! Možna je uporaba so prelivnih strani za vstavljanje zapisov. V tem primeru je urejenost podatkov blizu prave urejenosti.!"#$%&' Indeksni zapisi usmerjajo iskanje podatkovnih vpisov Podatkovni vpisi (Indeksna datoteka) Pod. vpisi (Podatkovna datoteka) '$!"#$%&' Pod. zapisi Pod. zapisi

75 Cenovni model za analizo Poenostavitev: ignoriramo ceno CPU:! B: Število podatkovnih strani.! R: Število zapisov na strani.! D: Povpr. čas branja ali pisanja diskovne strani.! Merjenje števila branja/pisanja strani iz/na disk.! Ignoriramo branje vnaprej.! Tudi I/O cena je aproksimacija.! Analiza:! Poenostavitve: CPU,prepostavke enakomerne porazdelitve, itd.!"#$%&'()"%&*+&",$"-+).$,"'-/&01)2"(+31%&45 Primerjava datotečnih organizacij " Neurejena datoteka (vstavljanje na koncu) " Sortirana datoteka, urejene po iskalnem ključu " Povezano B+ drevo na osnovi iskalnega ključa, Možnost 1 " Neurejena datoteka z nepovezanim B + drevesom po iskalnem ključu " Neurejena datoteka z nepovezanim razpršilnim indeksom po iskalnem ključu Operacije " Pregled: branje vseh zapisov iz diska " Iskanje z enačajem " Iskanje področja " Vstavljanje zapisa " Brisanje zapisa Predpostavke v analizi Neurejene datoteke:! Iskanje z enačajem; samo en zapis se ujema. Sortirane datoteke:! Datoteke so stisnjene po brisanju zapisov. Indeksi: Možnosti (2), (3): velikost pod. vpisa = 10% zapisa! Razpršilni indeks: ni prelivnih strani.! 80% zapolnjen ==> velikost datoteke = 1.25 količina pod.! Drevo: 67% zapolnjeno (tipično).! Velikost datoteke količina podatkov

76 ! Predpostavke v analizi Pregled: Listi drevesa so med sabo povezani v seznam. Pregledujemo indeksne zapise in podatkovne zapise za nepovezan indeks. Iskanje področja: Drevesne indekse uporabimo za omejitev množice prebranih podatkovnih zapisov. Ocene operacij! "#$!%&'()'*! "+$!,-#./01! "2!$!%/*&/34'! "*$!5-0'&1! "'$!6')'1'! "7$!8'9&:!*#1!!!!!!! ";$!<&'4'-:!*#1!!!!!!! "=$!%/>'?#-! *&'>'0-@!@-*! "A$!8'B/>'?#-! *&'>'0-@!!@-*! "C$!8'B/>'?#-! &#?B&D:!@-*!!!!!!!!!!!!!!!!!Ocene slonijo na precej predpostavkah! Ocene: Neurejena datoteka Ocene: Urejena datoteka Pregled: B*D Branje celotne datoteke Enakost: 0.5*B*D V povprečju pregledamo polovico datoteke Če zapisa ni pregledamo celotno datoteko! Področje: B*D Nujno je pregledati celotno datoteko Insert: 2*D Vstavljanje na konec datoteke; branje + pisanje ene strani Delete: Iskanje+D Iskanje vsebuje branje strani Pregled: B*D Enakost: D*log 2 B Binarno iskanje; ni všteto iskanje zapisa po eni strani Področje: D*(log 2 B + #strani z iskan. zapisi) Binarno iskanje + branje rezultatov Insert: Iskanje+ B*D Predpostavimo, da je najden zapis na sredini Pri vstavljanju je potrebno prepisati polovico datoteke (2*1/2*B*D) Delete: Iskanje+B*D Enako kot pri vstavljanju zapisa.

77 Ocene: Povezano B+ drevo Ocene: Nepovezano B+ drevo Pregled: 1.5*B*D Velikost datoteke! 1.5 količina podatkov. Enakost: D*log F 1.5B F je število indeksnih zapisov v vozlišču drevesa. Višina drevesa = log F 1.5*B strani Področje: D*(log F 1.5B + #str z isk. zapisi) Enakost + branje iskanih strani Insert: Iskanje+ D Iskanje vsebuje branje pod. strani + zapis podatkovne strani (D) Ni všteto morebitno popravljanje drevesa. Delete: Iskanje+D Pregled: B*D*(R+0.15) Ena stran za vsak pod. zapis = B*D*R Pod. vpisi 10% ; drevo = 1.5 podatkov Velikost drevesa = 0.1 * B*D * 1.5 = B*D*0.15 Enakost: D*(1+ log F 0.15*B) Višina drevesa = log F 1.5*B strani + ena podatkovna stran Področje: D*(log F 0.15*B + #strani z isk. zapisi) Enakost + branje iskanih strani Insert: Iskanje + 2*D 2*D = branje in pisanje pod. strani Delete: Iskanje + 2*D Ocene: Razpršilni indeks Pregled: B*D*(R+0.125) Pod. vpisi 10% ; r.datoteka 80% zapolnjena (1.25) Velikost r.datoteke = 0.1 * BD * 1.25 = B*D*0.125 Ne upošteva se vmesni pomnilnik! Enakost: 2*D Podatkovni vpis + podatkovni zapis Področje: D*(B* #strani z isk. zapisi) Celotnen indeks + iskani zapisi Insert: Iskanje+ 2*D 2D = branje + pisanje strani Delete: Iskanje+ 2*D Ocene operacij "8$%9(:'(5(; +#202(/#% "#$%&'()*(+ ",$%-.#/012 "3%$%&0+'045( "+$%6.1('2 "($%7(*(2(!" #$%!"!" &" '()*+,-." '()*+,- '()*+,-.2!".!" "<$%=0'2>'#.#!" "/012&! "3/012&2!2. +#202(/#% 42(562728()*+$ 7*98(8: "?$%&0@(A; BC%>.+(/1 "D$%9(E0@; BC%>.+(/1 "F$%G#AE'H; 6.+(/1 ;$%!" "/012<2;$%! "3/012<2;$%!.242(562728()$ 7*98(8: '()*+,-.2"!"3=.#$;%: "3;2. "3/012<2#$;%! '()*+,- /012<2#$;%!:.242(562728()$.2&" 7*98(8:!"3=.#$;&%:&" "3!>#$;&%2. '()*+,- 42(562728()$27$:.2&"!I3(.(%1*0.>50%.#%E'(3(5%E'(+E012#@/#JK '()*+,-." '()*+,-.2&" '()*+,-.2&"

78 Delovna obremenitev Delovna obremenitev vsebuje vse poizvedbe, ki jih dana aplikacija generira. Splošno:! Študij tipov UPDATE/INSERT/DELETE/UPDATE in atributov, ki sodelujejo. Za vsako selekcijo v delovni obremenitvi:! Katere relacije dosegajo?! Katere atribute izbere?! Kateri atributi sodelujejo pri pogojih za izbiranje in stike? Kako selektivni so pogoji? Za vsak update v delovni obremenitvi:! Kateri atributi sodelujejo v pogoju izbire ali stika? Kako selektivni so pogoji? Izbor indeksov Katere indekse naj kreiramo?! Katere relacije naj imajo indekse?! Katera polja naj bodo iskalni ključi?! Naj zgradimo več indeksov na eni relaciji? Kakšen indeks izbrati? Primarni Sekundarni Povezan Nepovezan Razpršilni - Drevo Izbor indeksov Pristop: Izberi najbolj pomembne poizvedbe. Kateri indeksi lahko pohitrijo posamezno poizvedbo? Ali izbrani indeksi pokrijejo vse poizvedbe? Ozadje: Potrebno je poznavanje notranjih struktur SUPB. Potrebno je poznavanje plana evaluacije poizvedbe. Vpliv indeksov na popravljanje tabel:! Trade-off: Hitrost izvajanja vprašanj VS počasnost vnosov. Indeksi potrebujejo precej diskovnega prostora. Izbor indeksov Izbor atributov za iskalne ključe: Atributi v pogoju izbire (where s.) so kandidati za iskalne ključe. Splošno: Izberi indekse, ki pohitrijo čim večje število poizvedb. Ker je lahko samo en indeks povezan z relacijo izberi povezanost indeksa na osnovi najpomembnejših vprašanj.

79 Smernice za izbor indeksov Izbiranje z enakostjo sugerira uporabo razpršilnih indeksov. Izbiranje po področju sugerira uporabo drevesnih indeksov. Povezani indeksi so dobri za iskanje po področju in iskanje z enakostjo v primeru velikega števila dvojnikov. Indeks z več atributi v iskalnem ključu je dobro izbrati pri velikem številu pogojev v iskalnih zapisih. Vrstni red atributov pri indeksu z več atributi je pomemben. Upoštevaj možnost evaluacije poizvedbe samo z indeksi. Povezanost indeksa s tabelo ni pomembna pri poizvedbah samo z indeksi. Povzetek Obstaja veliko alternativnih dat. organizacij; vsaka je primerna za določene situacije. Indeks je zbirka podatkovnih referenc in struktura in/ali algoritem za hitro iskanje pod. referenc. Podatkovne reference so lahko: podatkovni zapisi, <ključ, rid> ali <ključ, rid-list> Tabela ima lahko več indeksov z različnimi iskalnimi ključi. Več na predavanju 10 Fizično načrtovanje relacijskih PB Povzetek Indeks je lahko: povezan/nepovezan, primarni/ sekundarni, razpršilni/drevesni. Pri pogostih selekcijah je priporočljivo zgraditi indeks ali datoteko urediti.! Razpršilni indeksi so dobri za iskanje z enakostjo.! Urejene datoteke in drevesni indeksi so dobre za iskanje po področju.! Datoteke so redko sortirane v praksi; B+ indeks je boljši. Povzetek Poznavanje narave delovne obremenitve aplikacije je pomembno pri načrtovanju podatkovne baze.! Katere so pomembne poizvedbe?! Kateri atributi sodelujejo? Indeksi morajo biti kreirani za pohitritev pomembnih poizvedb.! Indeksi upočasnijo dodajanje, brisanje in popravljanje zapisov.! Izberi indekse, ki izboljšajo izvajanje več poizvedb.! Zgradi indekse, ki podpirajo evaluacijo samo z indeksi.! Indeks povezan z datoteko je lahko en sam.! Urejenost polj v sestavljenem indeksu je pomembno.

80 Datoteke in indeksi 1. Koliko blokov/strani zasede datoteka z določeno organizacijo? B naj bo število strani v datoteki: - neurejena datoteka (kopica) s seznamom - neurejena datoteka (kopica) z direktorijem - urejena datoteka - datoteka s povezanim drevesnim indeksom - datoteka z nepovezanim drevesnim indeksom - datoteka s povezanim razpršilnim indeksom - datoteka z nepovezanim razpršilnim indeksom 2. Koliko blokov/strani je potrebno prebrati ob danem vprašanju? Predpostavimo, da samo 1 zapis ustreza enakosti: datotečna organizacija enakost (=) področje (<,>) neurejena datoteka urejena datoteka B+ drevo povezano B+ drevo nepovezano razpršilni indeks povezan razpršilni indeks nepovezan 3. Oceni porabljen čas pri dani akciji Branje vseh zapisov Iskanje enakosti Iskanje območja Vnašanje Brisanje za naslednje datotečne organizacije Neurejena Datoteka (Kopica), Sortirana (urejena) datoteka, Povezana datoteka B+, Kopica z nepovezanim B+, Kopica z nepovezanim razpršilnim indeksom Predpostavke B je število strani v datoteki (vse strani polne) R je število zapisov na strani D je čas branja in pisanja strani iz diska in nazaj na disk = 15 ms C je čas procesiranja zapisa na strani (npr. primerjanje zapisa z vrednostjo) = 100 nano sekund H je čas za izvedbo razpršilen (Hash) funkcije nad zapisom = 100 nano sekund F je povprečno število listov na vozlišče v drevesu = 100

81

82 Vsebina Pregled evaluacije poizvedb Iztok Savnik, FAMNIT Pregled evaluacije vprašanj v relacijskem SUPB Podatki, podatki o podatkih in sist. katalogi! SQL vprašanja prevedemo v razširjeno RA! Razširjena RA vsebuje oznake algoritmov! Iskanje izraza RA, ki se najhitreje evaluira = optimizacija poizvedb! Algoritmi za evaluacijo relacijskih vprašanj Tipični relacijski optimizator poizvedb Program v SUPB Primer drevesa operacij Kaj je program v SUPB? Drevo operacij relacijske algebre. Izberemo lahko algoritem za vsako posamezno operacijo. Drevo iteratorjev. " Vsaka operacija je implementirana z iteratorjem. " Vmesnik iteratorja: open(), next(), close() " Klic operacije next() sproži evaluacijo operacije next() na otrocih operacije; nad rezultati izvede svojo kodo. Dobimo drevesno strukturiran cevovod po katerem se pretakajo n-terice. Projekcija Selekcija Stik Relaciji mime lid=100 ocena > 5 mid=mid Rezervacije Mornarji

83 Evaluacija drevesa operacij Kako evaluiramo drevo RA operacij? Logična in fizična optimizacija. Nivoji se zelo prepletajo! Implementacija rel.optimozatorja = človek/let Evaluator dreves RA! Logična optimizacija " Iščemo izraz relacijske algebre, ki se najhitreje izvede. " Da bi ocenili izraz relacijske algebre je potrebno določiti fizično implementacijo drevesa RA.! Fizična optimizacija. " Iščemo optimalne algoritme za izvajanje RA operacij. " Fizična optimizacija se prepleta z logično optimizacijo.! Evaluacija drevesa RA " Algoritmi za izvajanje relacijskih operacij. Uvod v algoritme RA Ogledali si bomo algoritme za izvajanje relacijskih operacij Nobeden algoritem ni superioren vsak se uporablja za določene vrste relacij Fizična optimizacija je izbor konkretnih metod dostopa in algoritmov za RA operacije Pogosto uporabljene tehnike Algoritmi za evaluacijo rel. operacij pogosto uporabljajo nekaj enostavnih idej: Indeksiranje: Uporaba pogojev iz stavka WHERE za izbiro majhnega št. n-teric pri selekciji in stikih. Iteracija: Včasih hitreje pregledamo vse n-terice čeprav je na razpolago indeks. Včasih je koristno izvesti iteracijo po podatkovnih vpisih indeksa namesto na sami tabeli. Particije: Velikokrat koristi razdeliti problem na več enakih delov s tem zamenjamo izvajanje časovno potratnih operacij z podobnimi operacijami nad manjšim številom n-teric. * Bodimo pozorni na te tehnike pri opisu izvajanja operacij! Statistike in katalogi Podatki o relacijah in indeksih v podatkovni bazi. Katalogi običajno vsebujejo: " # n-teric za vsako relacijo. " # strani za vsako relacijo. " # št. različnih vrednosti za ključ indeksa. " # št. strani za vsak indeks. " višina indeksa, najnižja/najvišja vrednost ključa za vsak drevesni indeks. Katalogi se ažurirajo periodično. " Sprotno ažuriranje je preveč drago. " Ker je veliko pribljižkov je majhna nekonsistenca OK. Včasih so shranjene bolj podrobne vrednosti. Npr. število posamezni vrednosti za atribut relacije.

84 Metode dostopa!!"#$%&'%$(#$)&'*"'&+,-'.&'/(0&1*"'12#"3/4'3"+&4/*"5 " 63",+"%'%&#$#"0"'78/+"'(4&19- " :$(#$)'.'/1%"0($;<'0/'("'=*";&'.'&#3/>=#/'?')$,$*='/.>/3"-! :3"?"(1/'/1%"0(5'! ("'=*";&'.'&#3/>=#/'?')$,$*='/.>/3"'?')3/;"3='%&'($'&#3/>=#/')3"8/0(' " 63/;"35''%3"?"(1/'/1%"0('1&%'A!"#$"#%B''("'=*";&'.'/(0&+1/;' )$,$*";''!&'#()*#+$&,-#'/1'.''C!&'#()*#$./-<''#$%&'1"'#=%/'.'' -$&,--! D&.)3E/+1/'/1%"0(5'! ("'=*";&'.'&#3/>=#/'?')$,$*='$>+/0"''!012$30& ''.&'?(&0' " 63/;"35''3&.)3E/+1/'/1%"0('1&%'A!"#$"#%B'("'=*";&'(')$,$*";'C!&'# ()*#$&,#()*#%&'-F'''1"'=*";&')&'("'(')$,$*/''C$&,-"##+!&'#()*# $&,-"##&+/##+!.'#()*#$&,#()*#%&'-- Selektivnost metode dostopa Koliko strani prebere dana metoda dostopa? Najbolj selektivna metoda dostopa izbere najmanj n-teric Selektivnost metode dostopa je odvisna od osnovnih konjunkcij in selektivnosti pogojev Vsaka konjunkcija je filter nad tabelo Redukcijski faktor metode dostopa = delež n-teric, ki so izbrane z metodo dostopa Selektivnost metode dostopa Primer 1: Imamo razpršilni indeks H na <mime,lid,mid> za tabelo Mornarji Imamo pogoj mime='tone' and lid=10 and mid=19 Katalog: Nkeys(H), Npages(Mornarji) Selektivnost: Npages(Mornarji) * 1/Nkeys(H) Selektivnost metode dostopa Primer 2: Redukcijski faktor a področja Pogoj: dan > 12/12/09 Dano je B+ drevo T na atributu dan. Redukcijski faktor je (High(T) - vrednost)/(high(t)-low(t))

85 Algoritmi za implementacijo RA Ogledali si bomo osnovne algoritme za relacijske operacije Upoštevamo samo V/I ceno v št. prebranih blokov Selekcija Prevajanje pogoja izbire v KNO Iščemo najbolj selektivne pogoje Najmanjše število prenosov I/O blokov Uporaba indeksov pri metodah dostopa Uporaba samih indeksov pri selekciji Projekcija Pregled vseh n-teric relacije in izbor atributov Najdražja operacija je odstranitev duplikatov Uporaba sortiranja Uporaba razpršilnih funkcij Stik Stik z vgnezdeno zanko Stik z drevesnim indeksom Stik z vgnezdeno zanko po blokih Stik z zlivanjem Stik z razpršilnim indeksom

86 Uvod v optimizacijo poizvedb Kaj optimiziramo? Projekcija Selekcija mime lid=100 ocena > 5 Ogledali si bomo optimizator System R 1972 (IBM). Najbolj razširjen algoritem za optimizacijo. Deluje dobro za < 10 stikov. Prostor planov izvajanja Levo-v-globino, grmičevje Ekvivalence relacijske algebre Optimizacijski algoritmi Ocena plana izvajanja Opisni parametri! Pretok! Št. pretočenih n-teric naj bo čim manjše. Po nepotrebnem naj nebi brali n-terice. Optimizacija poizvedb -- naslednje predavanje!! Velikost n-teric! N-terice naj bodo čim manjše. Navzgor ne prenašamo atributov, ki jih ne potrebujemo v višjem delu drevesa.! Izvajanje iteratorja! Optimalen algoritem za izvajanje operacij.stik z indeksom, zlivanjem, Kvantitativni parametri Število prebranih blokov iz diska! Zanemarimo vrsto parametrov. Stik Relaciji Rezervacije mid=mid Mornarji Optimizacija poizvedb Kako optimiziramo izvajanje?! Preiskovanje prostora rešitev ekvivalentnih izrazov.! Uporaba ekvivalenc RA.! Izračun ocene plana je zelo pomemben.! Pri izračunu je potrebno vedeti kako se bo izvršila konkretna operacija.! Ocena plana = št. prebranih/napisanih blokov. Relacijski optimizator Konreten primer relacijskega optimizatorja si bomo ogledali na naslednjem predavanju. Optimizator System-R (IBM). Uporaba dinamičnega programiranja. Evaluacija poizvedb: Izbor optimalnega algoritma za izvajanje posameznih operacij? Fiični nivo optimizacije. Pregled algoritmov za izvajanje operacij! Projekcija Selekcija Stik Relaciji mime lid=100 ocena > 5 Rezervacije mid=mid Mornarji Cena planov izvajanja Za vsak plan je potrebno narediti oceno. " Potrebno je narediti oceno hitrosti izvajanja vsake operacije v drevesu. Odvisna je od kardinalnosti vhodnih relacij. Pogledali smo si že ocene za nekatere operacije, npr. pregled tabele, indeksni dostop, itd. " Potrebno je narediti oceno velikosti rezultata vsake posamezne operacije drevesa! Uporabi podatke o vhodnih relacijah. Za selekcije in stike predpostavi neodvisnost pogojev.

87 Ocena velikosti rezultatov operacij Maksimalno število n-teric: Produkt kardinalnosti relacij v FROM stavku. Selektivnost izraza stavka WHERE: Selektivnost izraza je sestavljena iz selektivnosti vseh pogojev. Selektivnost pogoja (SP) = delež relacije, ki je rezultat selekcije. Kardinalnost rezultata Max # n-teric * produkt vseh SP. Povzetek Obstaja veliko različnih alternativnih algoritmov za evaluacijo relacijskih operacij. Poizvedba se ovrednoti s prevedbo v drevo in evaluacijo operacij drevesa. Uporabnik mora razumeti optimizacijo poizvedb, da bi lahko razumel vpliv načrtovalskih odločitev na izvajanje poizvedb aplikacije. Relacijski SUPB vsebujejo ukaze za izpis plana poizvedb. Dva dela optimizacije vprašanj:! Pregledati je potrebno vse alternativne plane izvajanja poizvedbe.! Iskalni prostor je potrebno omejiti zaradi velikega števila ekvivalentnih poizvedb.! Potrebno je narediti oceno izvajanja vsakega plana poizvedbe. Oceniti je potrebno velikost rezultatov ter hitrost izvajanja operacij. Ključni elementi: Statistike, indeksi, implementacije operacij.

88

89 9C8-3C3=;,/01,%D? *+,-.,/01,%23-,/014506%7832,/01 E!F-3G,-0%40%H7C7%0C8-3C3=;,/017I% J <3-35/01,%K%L%M% J "27135/01,%K%N%M% J <;05%K%!"M% J D,:-05,%K%O%M% J P=01,%K#M% J?F23F,/01453%78Q%K<P@$%@9A%$%0;GQM%0=%RD!P"S#T E!832,/013%+2,U,17%23-,/013%$%-,657%106%434;,+-1,C7V %%%%%%%% %%%%%%%% <63C,%:,%820C323 %&'()'*+",!"#-"+(./0/'1"!$%&'-"2.'+(01"(%)"$*-"+(./0/'1"%*'-"'/)34 5/6/'7)8+*/",!"#-"+(./0/'1"+"#-"+(./0/'1"#%,-"9)./21"($%&'-"2.'+(04! "7G7H=7%57;%4;,2,%463C,W%G7G,=%!"#$%! D3:32+,/013I " X4,5,%=S;320/,%0C,%Y'%:-7F7+$%%(''%=S;320/%=,%4;2,=$%('''% " X4,5,%=S;320/,%0C,%Z'%:-7F7+$%%['%=S;320/%=,%4;2,=$%Z''% 4;2,=0Q% \.=,=13%472;02,=13%:%:-0+,=13C E A3%87;23H.13C7%+3-057%87C=0-=05,%:,%472;02,=13% %G,;7;35 E XC34=0%87C=0-=05%K0:2,+=,-=05M%<P"#%.872,H0C7%:,% 8760;20;3+%,-F720;C, E PU0=57+0;%,-F720;3CI% J A%4;2,=0%G,;7;353$%#%4;2,=0%0:2,+=,-=05,I J ]3=,I%&^A^K(_-7F #S( KA)#MM %%%%%%%% %%%%%%%%

90 *+,-./01,%-, /6%7% :3 ; "0/<,=%(6%"0/>/03%-2041$%5,%-,023045$%5,%14?3@3A! B?,04>3.,%-4.,%/1,%-2041% :4 ; "0/<,=3%&$%7$%C$%32=A6! %B?,04>3,%203%-20413% :4A %%%%%%%% 7#.8 /0123%4 /0123% !"#$%&'&()*%+,--'). 7#.8 *+,-./01,%8D1415/%-, /% 8% /. ; E%+-4:/.%?0/<,=D%?0/>/0/.,%F%84?3@/.,% +-4:,%-2041%=42,2/:/ ; "#log 2 N $%1 ; J/9,214%K/146 2N & #log 2 N $%1 ' % ;!"#$%&'' L (#)*'*+',)%"%$!"" L -,023045%?,=M=42,2/:/%31% 8=0DN3%2,:,+4 %%%%%%%% 8:2 ;:1 9:2 3:< =:; 8:+ 1 8:2 1:; 2:9 <:3 =:; +:8 1 1:8 2:; 1:8 2:2 ;:< 3:9 2:< 3:9 +:1 1:8 8:2 2:= ;:; <:3 9 +:8 =:; 1 +:1 8:= ;!"#$%&'()* 4566&7 +,#-.*&/$"0 4566&+ 1,#-.*&/$"0 4566&1 2,#-.*&/$"0 4566&8 3,#-.*&/$"0 O?9,@1,%8D1415/%-, /%8% /. J/14%8D1415/Q4%-, %8% /. )!"#$#%!&'(!)%*!+!,*-$./!/0-$&.$1./)$2!3$)%!4/5!1$5)%!67%-$8/#%9 ; P4%-, /%=42,2/:/%8%G% %31%?03%D?,04>3%-% % :46! "0/<,=%'6%D?,04>3%-'-20413% :4A%G40/=3%%%%%%%%%%D0/5/13<%+0-2% # N ( B$ =,9N31/%-%-20413A'! "0/<,=%&$%C$%%32=A6%8935%-./'+0-2A%!"!"! 7#.8 %%%%%%%% /0123%4 /0123% !"!"!!"!" /0123%9:4 9%!"#$%&'&()*%+,--').! 7#.8 ; R2/+39,%?0/<,=,+6 1%#log B*1 # N (B$$ ; J/14%H%&G%S%TU%?0/<,=,+V ; G?0A$%W%-20413% :4$%-,02304.,%=42A% +/93:,-23%('X% ! "0/<,=%'6%%%%%%%%%%%%%%%%%%%H%&&%-, <%+0-2%?,%W%-20413% #108(5$ T84=154%+0-24%3.4%-4.,%7%-20413V%! "0/<,=%(6%%%%%%%%%%%%%%%%%H%Y%-, <%+0-2%?,%&'%-20413%% #22 (4 $ T84=154%+0-24%3.4%X%-20413V! "0/<,=%&6%%&%-, %+0-23$%X'%-20413%31%&X%-20413! "0/<,=%76%%O, %=42,2/:4%+/93:,-23%('X% %%%%%%%%

91 *+,+-./01!"#$%&'()()*!+,-!./.0123$%0456!78!9/#1:!78!./#1; 2 "3430%/56/7+%0+% %97+:+;+8%:%!"#$%!&'(#") #"*+,-#")".-'!")<=>!?@%%%%%%%%%%%%%%%%%%%%% %%%%/0,# )67)-'089)67)+'08:);)<=>))))))))))) /+'+?8@A,#?BC)67)-'089)67)+'08:;) 2!671:81:1A3%B1A3%97/A+7+%67+5%!CD%% %%%%-80/41%97+;BE1:,01%EF;/%B9,3G8+%97/A+7+H!B83:8/%97/BE39 2 I,437/E+A@ J "3/GK/%81063,0%B+,+-E/:8+%A+E3;+%;3BE391%/8%5%80/A/%93/GK/%8LE+7/.+H J!:7+;83E/%97+3BE1,+%93430+%81;%/56718/A/%8LE+7/.1A/H 2 *+,+-E/:83BE%934301@ J M+,+N%7+,1./0+$%-/%0+%7+5F,E1E%B+,+-./0+%5%;18/A%93430+AH J O/A%63,0%0+%B+,+-E/:+8%93430%A180G/%0+%7+5F,E1E%B+,+-./0+H 2 *+,+-E/:83BE%A+E3;+%;3BE391@! P+E3;1%;3BE391%/57151%51%-1E+7+41%3.+8/A3$%;1%63%51QE+:1,1%%%%%%%% 810A180G+%GE+:/,3%97+83B3:%6,3-3:%/5%;/B-1H%! *+,+-E/:83BE%A+E3;+%;3BE391%F93GE+:1%B+,+-E/:83BE%934301%E+7%%%%%%% B1A3%A+E3;3%;3BE391H %%%%%%%% %%%%%%%%!B83:8/%97/BE39 2 =3A+8E170/@ J R56/71%8LE+7/.%5%81063,0%B+,+-E/:8/A/%93EA/%39E/A/5/71%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% GE+:/,3%/56718/Q%8LE+7/. J "7+3BE1,/%93430/%;3;1E83%/ %93;A83N/.3%8LE+7/.%/56718/Q%5%81063,0% B+,+-E/:8/A/%/5715/H J "7+3BE1,/%93430/%8+%:9,/:103%81%GEH%BE718/% /Q%/5%;/B-1H 2 "7/A+7@! "7/A+7%/57151@%%0,# )<=>)-'089)<=>)+'08:D%! S1Q-3%F93716/A3%#T%;7+:3%51%/5715%U0,# E)F0+%81063,0%B+,+-E/:+8H%! >1E3%F93716/A3%93430%U-'089%18;%+'08:E)51%B+,+-./03%/5%/56718/Q%5% 97+0G80/A%93430+AH%! "3;3683@%,1Q-3%F93716/A3%71597G/,8/%/8;+-B%%81%V-'0G)+'0WD%97+:+7/E/% A371A3%G+%U0,# ED) X937161%/8;+-B3:%51%B+,+-./03 " Y+81%0+%3;:/B81%3;%Z/56718/Q%519/B3:%/8%3;% 93:+5183BE/%/8;+-B1@! Y+81%/B-1801%/56718/Q%93;1E-3:8/Q%:9/B3:%<E/9/K83%A10Q83?%! Y+81%671801%519/B3:%<0+%,1Q-3%:+,/-1%67+5%93:+5183BE/%/8;+-B1?H! "7/A+7@%K+%97+;93BE1:/A3%+81-3A+783%93715;+,/E+:%93E+A%('[%519/B3:% FBE7+51%93430F%<(''%BE718/$%(''''%519/B3:?H%%\%93:+518/A%/8;+-B3A%0+%.+81%8+-10%:+K%-3E%(''%])RD%K+%91%8/%93:+518%91%;3%(''''%])R^ " H"+?+.#,)'B."-$I,(,)B,)#?J"(?B,#?)'#0?!K?@%% (H%"3/GK/%/56718+%93;1E-3:8+%:9/B+ &H%*37E/7180%7/;L0+%93;1E-3:8/Q%519/B3:$%-/%B+%63;3%671,/ _H%"7+6+7/%7/;L0+%93%:7BE/H%%`3%5143E1:,01$%;1%0+%:B1-1%93;1E-3:81%BE718% %B1A3%+8-71EH%! Z%E1-G8/Q%BE718/%0+%:+70+E83%:+K0+%-3E%97/%93:+518+A%/8;+-BF% %%%%%%%% %%%%%%%%

92 "*+,+-%*./01+2! 26.,+9 " "*+C+*.%;=8D.E+%*./01+2%68/<7-82=F%><6.,82%>%468*<C8%6*.;+*=+5<%.=/+-,<G% " "87+;%=<*+/.%!"#$#%%68.,-<=.F%;=8D.E%*./01+2G " "*+C+*.%><6.,+%.=%468*<C.%6*+8,7<?+%68581+%.>C.*+G% " "85?+1;8%,.%68581%&'()*+,+,-./01.23&45./01.$3&467%! H+%.;<;8%#I%/*+28%=<%<7*.C474%&'(%.=%*<>6*J.?=.%.=/+-,%=<%$3&$%8C<% "8.J:+;8%?<F-89! *./01+%><6.,82$%-.%></8J:<18%&'()*+,+,-8.! "3&9:#.;'!3$<=8.%3.;'&<>?':<.$3&46$%! =<*+/.;8%6*+,+-%.=%6*+2+*.;8%23&457% "*81+-E.1< K "*.;+*9 "#$#%&'''()"&)*%& '''''''''''''''+,-./0'+,1./ 2+34''''' :.;5'+ K L=8,7<2=<%*+J.7+2%C*+>%.>?8:.72+%/46?.-<7829 M "*+5?+/%2,+F%=07+*.E%*+?<E.1+%.=%.>C8*%<7*.C4782G K N<1/*<D1<%86+*<E.1<%1+%8/,7*<=.7+2%/46?.-<782G% M OP"#%=+%8/,7*<=.18%/46?.-<7+$%:+%=.%,6+E.Q.E.*<=<%-?14:=<%C+,+/<% 3ROSRNTS%2%,7<2-4%OLULTSG K O8*7.*<=1+9%% M O8*7.*<1%68%V;./$%?./W%.=%8/,7*<=.%/46?.-<7+G M!67.;.><E.1<9%8/,7*<=.%=+687*+C=+%68/<7-+%;+/%,8*7.*<=1+;G %%%%%%%% %%%%%%%% "*81+-E.1<% "#$#%&'''()"&)*%& '''''''''''''''+,<./0'+,=./ 2+34'''''+5<5785<'+! P68*<C<%>4=<=1+5<%,8*7.*<=1<9% " O6*+;+=.%,8*7.*<=1+%>%>?.2<=1+;%7<-8$%/<%,+%.>?8:.18% -8;68=+=7+%><6.,<G%! O8*7.*=+%2*,7+%,8%;<=1J+%-87%2F8/=+%=07+*.E+X%8/2.,=8%8/% 2+?.-8,7.%68?1G " O6*+;+=.%Q<>8%>/*4D+2<=1<%7<-8$%/<%,+%.>?8:.18% /46?.-<7.G%%%! Y7+2.?8%=07+*.E%2%*+>4?7<74%1+%;<=1J+%8/%2F8/<%@=.%/46?.-<782A " T+=<9%%! T+=<%,8*7.*<=1<9%Z[?85 & Z! "*+C+*.%8*.5.=<?=8%*+?<E.18%2+?.-8,7%Z%.=%.>6.J.%;<=1J+%=07+*.E+G%! "*.%>/*4D+2<=14%/8C.;8%;<=1J+%J7+2.?8%=07+*.EG%%% "*81+-E.1< K "*.;+*9 "#$#%&'''()"&)*%& '''''''''''''''+,-./0'+,1./ 2+34''''' :.;5'+ K P68*<C<%*<>6*J.?=+5<%.=/+-,<9 M O%-*+<E.18%*<>6*J.?=+5<%.=/+-,<%=</%)@3&8.A3&B%/8C.;8%6<*7.E.1+X%%% Q4=-E.1<%CDG M "*+C+*.%2,<-8%6<*7.E.18%2%/.=G%68;=.?=.-4$%,8*7.*<1%7<C+?8%2%/.=G% 68;=.?=.-4%7+*%+?.;.=.*<1%/46?.-<7+G M H+%,+%6<*7.E.1+%6*+2+?.-+%*+-4*>.2=8%68=82.%68,786+-%>%*<>6*J.?=8% Q4=-E.18%CEG K H+%D+%8C,7<1<%.=/+-,%>%F7@3&%.=%F7A3&%2%.,-<?=+;% -?14:4%+=8,7<2=8%,8*7.*<;8%68/<7-82=+%26.,+G K T+=<9%#*<=1+%.=%6.,<=1+%@6*81+-E.1+A%2,+F%=07+*.EG% %%%%%%%% %%%%%%%%

93 *+,-.,+/0! %, /0%/8%, %48:+68;<%53=/:8% B8%+798-,%;,85./8%;,8% % %2368C%=0D-3%.23405=/0C3%,0C3%+798-, " E2=+F+407/8%243/8-F+/8%,0C3%70% ;7+D%;2+,+DG%! B8%.48/87%H724G%948;3I%+798-,%;,85./8%;,8% % %J8%;% %+,-0=78K0%-=/.L0%/8%+A;0/07/8%:8% D+648/:8M N %"485848C3% ;78%;2+,8%H+798-,7+%248K=89I%23%;4,6+$%,2.,6+C3%78J8=/878% %+7%24+C84/0C3%,3,8978%;2+,8%A0% +A=3L+68;%9.2=+-063;G% OC2=8C8760F+/0%,6+-0 P OC0C3%;8L%0=K34+6C3;M (GQ6+-%A%;K78A9873%A07-3 &GQ6+-%A%948;8,7+C%+798-,3C RGQ6+-%A%;K78A9873%A07-3%23%5=3-+D SGQ6+-%A%A=+;07/8C TGQ6+-%A%40A24:+=7+C%+798-,3C %%%%%%%% %%%%%%%% Q6+-%23%870-3,6+%878K0% $%&%'(##) *+,-#####+./.01./#+23#$45670/#$2 89%+%##+2:/5;<$2:/5;! E=K8540M%U%!%QG%% "!26+C+A+406%/8% %248;+973V%%U%"#Q%/8%;8=+-0%48=0F+/0G%%%%! "48923,60;-8M% " W%,6407+%U$%2 U %7X684+F%70%,6407% " Y%,6407+%;%Q$%2 Q %7X684+F%70%,6407 " U%Z%U8A84;0F+/8$%Q%Z%W34704/+! #3=/%-3C2=+F+4078%,6+-8%53C3%3540;70;0=+%-0,78/8!!"#$%&'()"*"M%%[%\)O%5=3-3;$%3,60=3%+K734+40C3 Q6+-%A%;K78A9873%A07-3 =70.4>?#@AB6.#0#5C#+#;7 =70.4>?#@AB6.#/#5C#$#;7 5=#0 5 #<<#/ D# #@?.C#4;;#E03#/F#@7#0./A6@ P ]0%;,0-3%7X684+F3%;%A.707/+%48=0F+/+%248K=890C3% F8=3673%736407/8%48=0F+/3%QG% P *8=3%A%9+,-3;7+C+%5=3-+M N ]0%;,0-3%,6407%U% %;,8%,6407+%48=0F+/8%Q%+7%+A2+:+%7X 684+F8%^4$,_$%-+%,8%./8C0/3G% N \%24+C84.$%90%,3% ;7+%A02+,+%2340A98=/87+%23%40A=+L7+D%,64078D%/8%60%24+,632%;8=+-3%D+648/:+G% %%%%%%%% %%%%%%%%

94 *+,-%.%/ %.51-4!"#$%&'()*+,$(#(-.(/(0"!"#$%&'()*+,$(1(-.(2(0" -!(# - (33(1 4( ()'$.(%00(5#6(17()"(#$1*,)! 65%/75-4%18+29,:4%,.%.;151<2%92=5:,<2%>920=235?4% :2=4+14%14+951<4%92=5:,<4%*@% " A215B%%C%D%%> E %F%C%F%G%%H%%('''%D%(''F('''FI''%%H%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%I'@''(@'''%J)K@! J %.51-5%>4%L=4-,MB% " 65%/75-4%7+951%E%>92L29,%/75-4%7+951%*%,1%,.>,N,%7>2+2%>592% 18+29,:%O9$%7P$%-<29%<2%9%,.%E87+951,%,1%7%,.%*87+951,@ " A215B%%C%D%CFG%H%('''%D%('''FI''%H%I'(@'''%J)K@ " Q2%<2%?51<N5%92=5:,<5%.;151<5$%>4+2?%<2%:215%H%I''%D% I''F('''%%H%I''@I''%J)K@ *+,-%.%,132-74?!"#$%&'()*+,$(#(-.(/(0"!"#$%&'()*+,$(1(-.(2(8'$#$(# - (33(1 4(( 0" %00(5#6(17()"(#$1*,) R Q2%4L7+5<5%,132-7%15%21,%,.?23%92=5:,<%05%;>495L,?4%.5%14+951<4%.51-4@% " 65%/75-4%18+29,:4%,.%E%.%,132-74?%>4,NS2?4%18+29,:2$%-,%72%;<2?5<4%/%*@% " A215B%%C%D%T%TCF> E U%F%:215%,7-51<5%18+29,:%,.%*U R A215%.5%>92/29<51<2%/75-2%18+29,:2%,.%E%<2%L951<2B% V (@&%7+951,%/%>9,?29;%95.>9N,=1205%,132-75$ V &8W%/%>9,?29;%#D%392/275@% V A215%,7-51<5%18+29,:%/%*%<2%/%/2=,-,%?29,%43/,715%43%>4/ ,%*%.% 92=5:,<4%V%N+@%>92L951,M%7+951,%72%>92:2<%.?51<N5@ " "4/2.51%,132-7B%%(%J)K%T+,>,S14U$%12>4/2.51B%34%(%J)K%.5%214%*%18+29,:4 %%%%%%%% %%%%%%%% "9,?29,%7+,-5%.%,132-74?! E5.>9N,=1,%,132-7%TX=+@%&U%15%!"#%92=5:,<2%C49159<,%T14+951<5UB " "920=23%E2.29/5:,<2B%('''%7+951,%J)K$%(''F('''%18+29,:@ V 65%/75-4%18+29,:4%E2.29/5:,<B%%(@&%J)K%.5%L951<2%>435+-4/1205%/>,75%D%(%J)K%.5%,.L9514%18+29,:4%C49159<2/@%% V A215B%%('''%D%('''F(''F&@&%H%&&($'''%J)K@! E5.>9N,=1,%,132-7%TX=+@%&U%15%!"#%92=5:,<2%E2.29/5:,<2%T14+951<5UB " "920=23%C49159<2/B%I''%7+951,%J)K$%Y'FI''%18+29,:@ " 65%/75-4%18+29,:4%C49159<2/B%%(@&%J)K%.5%,7-51<2%, %7+951,%7%>435+-4/1,?,% />,7,%D%:215%.5%L951<2%.5>,74/%E2.29/5:,<%@% " "923>47+5/=<5?4%215-4?2914%>495.32=,+2/$%&@I%92.29/5:,<%15%?49159<5%T(''$'''% )%W'$'''U@%% " A215%L951<5%92.29/5:,<%<2%(%5=,%&@I%J)K%43/,714%43%+205%5=,%<2%,132-7%>4/2.51@% " A215%L92.%>43@.5>,74/%*B%%I''%T>920=23U%D%Y'FI''F(@&%T>43@/>,7,U%H%WY@I''%J)K@ " A215%>4/2.51B%%%WY@I''%D%W'@'''%T>43@.5>,7,U%H%%YY@I''%J)K@% " A215%12>4/2.51B%%%WY@I''%D%(''@'''%T>43@.5>,7,U%H%%(WY@I''%J)K@ J %.51-5%>4%/97+5M%! Z>495L,%214%7+951%.5%/?271,-%>9,%>920=23;%14+951<2%92=5:,<2%*$%214% 7+951%.5%,.M431,%/?271,-%,1%;>495L,%>9247+5=2%7+951,%.5%/97+4%L=4-4/%,.%.;151<2%92=5:,<2%E@ %%%%%%%%%%%%%%[4925:M%/97+4%#8&%L=4-4/%,.%E% %%%%%%%%%%%%%%%%%%%[4925:M%L=4-%,.%*% %%%%%%%%%%%%%%%%%%%%%%%%%%/72%%>592%O9$%7P%,.%E%/97+2%,1%*%L=4-5$%-,%72%;<2?5<4% %%%%%%%%%%%%%%%%%%%%%%%%%%3435<%O9$7P%-%92.;=+5+; /(9(2!"!"!!"#$%&"'()%*+,%'(+-.%+*%/ 0.%1%234%5"6)#7!"!"! :"-.(/$1*,)!"!"! %%%%%%%% %%%%%%%% 895:&%':**),%*+,%; <:&5:&%':**),

95 "*+,-*+%./ %1304-%56%.*7839! :-03;%% " " A1=030>+9%.*78%C%A78*30+%*-<?%)%.-<+4678%1=030>-%.*78-! D-%.13,-,6%E-1-*.3F+>-%GEH%13%1=030>6%*-<3F+>6I%JK"#%+,3% (''%78*30+%+1*3.03<0+43; " :-03%5*-/<-23%E%>-%('''%L)MI%%.7-/3%74=53>%('%1=0?.*78 " N3%.7346%1=0?.*786%E%5*-/<-23,6%O6*03*>-%GJHI%%('BP''%L)M? " " D-%+,3,6%5*6786*3%13%73,6%R'%78*30+%E$%,6*3,6%5*-/<-238+%J%(&%S?! D-%.13,-,6%(''T78*30+%.-<+4%1=0?.*786%13%O6*03*>-%468% 1=030>3%*-<3F+>3; " :-03%5*-/<-23%J%>-%P''%L)MI%74=53>%P%1=0?.*78? " N3%.7346%1=0?.*786%J$%5*-/<-23,6%E-1-*.3F+>-I%%%PB('''%L)M? " "*+,-*%=56*3U-%J6*8+*3>TN<+>!"#!$%&' (%)"$* %*' ++ #,!)"$ -./ , / ,99'( 2 //0/.. *,443 / 6/01 /2 (,!)3 71 6/01!"# 9"# #%3 ($%&' :.:5; *, :6:5; 3, :71:5; #,!)"$ :7+:5; 8,99'( :77:5; 8,99'( / :7+:5; #,!)"$! :-03;%%O%<6/%O%@%V%<6/%V%@%GO@VH " :-03%5*-/<-23$%O@V$%<3946%>-%OBV%G0+%5*-.-W%.-*>-806XH! N%=56*3U6%YP$%(''%3<+%Y''%78*30+%.,-70+43%<3946%83U-<-% E-7-*.-7%+0%J3+<6*7%76*8+*3,6%1%&%5*-962+I%! :-<6803%F-03%78+43;%ZB('''@ZBP''@('''@P''C[P''%L)M? %%%%%%%% %%%%%%%% J8+4%1% *315*\+<0+,% ,! "6*312-<+%6U-% *-<3F+>+%1%*315*\+<06% ]=04F+>6%!;%%0T8-*+F-% 53*8+F+>-%+%+1%E%7-% U626%=>-<-%1%0T 8-*+F3,+%53*8+F+>-%+%+1% J?!!"#$#"%&'(")%*%+,&-.&+,& ',"(/0#1%&/&!"#$%&#!'(2&!"#31#+&45)"#/6,& '(")%*%+,&7&%6&',%89%&6: )#"%*#.&;%&5#&4+#<(+,2 %%%%%%%% )#)#) D"!E <%()")"=$! =>?@?A?B D"!E C?&%"$?&'&=(3?9,>>'(! 1/01 (" 1=./01&%/'2)&(+*&#/*%-%-+" 3-&45&6&789&#/:)0; 1=!"#$%&'$(()* (+*&,- <>?@>?!A@>? = 1/01 ($"B%-+" <$%#$%& &'$(()* C?&%"$?&'&=(3?9,>>'(! 9 <%()")"=$! D"!E F="$?@'!,8) D"!E 7 + CH7 J8+4%1%*315*\+<0+,% ,! #T&%^%.-<+4678+%03>.-W>-%53*8+F+>-$%4+%U6%.%756,+0=?%%! N/*32+,6%*315*\+<06%83U-<6%.%756,+0=%13%569+8*+8-.%=>-,30>3% 0T8-*+F%G*3U+,6%,3<F-%.-W%756,+03H?! D-%*315*\+<03%]=04F+>3%0-%56*312-<+%0T8-*+F%-0346,-*06%7-% <3946%1/62+$%23%0-438-*-%53*8+F+>-%0-%/*-26%.%756,+0? " E315*\-.30>-%<3946%03*-2+,6%*-4=*1+.06;%ET53*8+8+F+>6%56.-_-,6%1% =78*-106%JT53*8+8+F+>6? %%%%%%%%

96 *+,-%./01-%2% ,07%0,8+1.97! :-2-%028+6-;+%4-3/0<0=>% H%J-20%K=+7-,=->% " F-5%4307+3>% " P/01%2%260;-,=+7%;.B%P/01%2% ,07%0,8+1.97> " " P/01%2% ,07%0,8+1.97%=+%.K ,$%Q+%.+%;+6019./0%3+6-<0=%?0./;,9% K=+=9B%% " P/01%2% ,9%JK,1<0=9%6-A19%2+69%89?39% B% " P/01%2%260;-,=+7%=+%7-,=%9?QK/6=0;%,-%R.1+S+8T%498-/1+U%3+2K6/-/%=+%.93/03-,B% P4695,0%49V9=0%./01-! W,-19./%;+Q0A%-/30?K/9;%D,43B$%%!"#$%&'"#$%(XFY%!")*+,-&'"#*+,-G> " Z-%;V,+2B2-,19%2%0,8+1.97%13+03-=%0,8+1.%,-%[#$%.(#*+,-\% DQ+%=+%P%,9/3-,=-%3+6BGU%-60%K493-?6=-=%9?./9=+Q+%0,8+1.+%,-%% #$%%-60%#*+,-B " Z-%260;-,=+%0,% ,0%./01%.93/03-=) %.%197?0,-<0=9% 8;+A%-/30?K/9;%./01-B%! "9V9=0%,++,-19./0%D,43B$%%!")*+,-(/('"#*+,-G> " 83+;9B " P/01%2%260;-,=+7%0,% ,0%./01%,0%K493-?+,B% " HV,+28+,-%2-,1-%49%?6910A%?9%2+69%;+3=+/,9%8-6-%,-=?96=5+% 3+2K6/-/+B% %%%%%%%% %%%%%%%%!4+3-<0=+%,-8%7,9^0<-70! "3+.+1%0,%1-3/+20=.10%4398K1/%./-%49.+?,-% %./01-B! _,0=-%0,% %.+% ,/03-/-%4989?,9B! _,0=-%.%.93/03-,=+7> " P93/03-79%9?+%3+6-<0=0%D49%;.+A%-/30?K/0AGB " "3+V6+8%.93/03-,0A%3+6-<0=%0,%260;-,=+ " 012-)*+2$3+>%%Z60=%;3./+%02%43+A98-%'%02%9?+A%3-6-<0=B! _,0=-%2% ,07%0,8+1.97> " " %`%0,%P%2%K493-?9% ,+%JK,1<0=+%4B " Z-%;.-19%Pa4-3/0<0=9%02V3-80% ,9%/-?+69%;%.4970,K%D2% K493-?9%A&G$%43+V6+=%K./3+2,9%`a4-3/0<0=9%0,%898-=%,a/+30<+%;% /-?+69%7+8/+7$%19%.+%0269Q-%8K46I1-/+B% XV3+V-<0=.1+%94+3-<0=+DXHb$EIF$0/8BG! #3+2%V3K403-,=- " H%.4695,+7%2-A/+;-%43+V6+8%3+6-<0=+ " "3+V6+8%=+%79^+,%.-79%2%0,8+1.97$%Q+%0.1-6,0%16=KQ%;.+?K=+%;.+% -/30?K/+%;%PWcW*d%-60%efW`W%./-;1KB%%%! Z%V3K403-,=+7> " P93/03-=%49%V39K4a?g%-/30?K/0A$%49/+7%43+V6+=%3+6-<0=9%0,%023-QK,-=% -V3+V-<K0=.1+%JK,1<0=+%2-%;.-19%.1K40,9B% " "989?+,%430./94%=+%9.,9;-,%,-% /;0%D /;0G%49%V39K4a?g% -/30?K/0AB% " Z%83+;+.,07%0,8+1.97$%10%;.+?K=+%-/30?K/+%;%PWcW*d$%efW`W%0,% b`!_"%#h%./-;10a%6-a19%, %43+v6+8%.-79%,-%9.,9;0%0,8+1.-! i+%v39k4a?g%-/30?k/0%/;930=9%43+849,9%0.1-6,+v-%16=kq-$%49/+7%6-a19% 43+?+3+79%;40.+)2-40.+%;%;3./,+7%3+8K%8969Q+,+7%2%V39K4a?gB %%%%%%%% %%%%%%%%

97 *+,-.%-/01.21,2-31! 45%65%.57% :%-/.1:1%./+805;28%+8<5=%:5%8952:5.12:5% "821.,:1:87%./8059%;86<8+1%=801%B-<-%A63,1:52%6%6<01<5C-:8% /1=52:1.5%6<012-%.%-/01.21,2-3A? D E8<012:1%05,19-:1%65%+05C,5;A:5%9-3,-728%+0-%5286<1.2-%.C25/;52-% /123-?% D 45%-=1=8%/1;86<-%6<012-$%;1%@012-=8%28<012:8%05,19-:8%+8<5=% /1=52:1,21%6<01<5C-:1%25%-C01%+865B25%.,8C5? D F-950%+1%:5%21:B8,:>1%6<01<5C-:1%GHIJ%KHI%:5%21:6,1B>1%L % +05,-.12:5M?% " N,-%:5%/1=52:1,21%6<01<5C-:1%+8=5=B21%+0-%.C25/;52-%/123-%+8% B,83-@O% " P1:%+1%+0-%.C25/;52-%/123-%/%-2;5368=O%F80<-012:5Q/,-.12:5%6<-3O "05C,5;%! H5,19-:63-%FI"#R "!"#$%&'(&)*")*&*+,%-.&/&)#$)/&0,.)"*/"%/#1)"2&3,4#.) " S=+,5=52<19-:1%<5@% :%:5%630B28%AC,1>521% " "8;08B286<-%+0-%-=+,5=52<19-:-%68%+8=5=B25T!!B6<1:1%.57%01/,-72-@%1,<5021<-.2-@%-=+,5=52<19-:%/1%.6138% :8J%25%8B6<1:1%6A %<5@2-31%/1%.57-28%8+501<9-:?%%%! "8<05B28%:5%+05C,5;1<-%1,<5021<-.5%+0-%-=+,5=52<19-:-%.6135% :5%.%+8-/.5;B- " S/B505=8%21:B8,:>8%6<01<5C-:8%21%8628.-%6<1<-6<-72-@%+8;1<38.%8%<1B5,1@? " S/B80%525% :5%:5%;5,%95,8<25C1%;5,1%8+<-=-/19-:5%95,8<25% +8-/.5;B5?% %%%%%%%% %%%%%%%%

98 PILOTI LETI IdP int(11), IdLT int(11), Priimek varchar(50), IdP int(11), Ime varchar(50), IdL int(11), Emso varchar(13), IdLEVzleta int(11), Naslov varchar(250), DtVzleta date, DtZaposlitve date, CasVzleta time, LetaDelIzkusenj varchar(20), IdLEPristanka int(11), StLetov int(11), DtPristanka date, StUrLetenja int(11), CasPristanka time IdLD int(11) REZERVACIJE IdR int(11), Stevilka int(11), Cena float, Priimek varchar(50), Ime varchar(50), Naslov varchar(250), Telefon varchar(20), StSedeza int(11), Razred int(11), IdLT int(11) Pri tem upoštevaj naslednje informacije: SELECT U.Ime FROM Ucitelj U, Predava P WHERE U.Id = P.UciteljId AND U. OddelekId = RIN AND P.Semester = Zimski 2010 Shema: UCITELJ(Id, ImeName, OddelekId) PREDAVA(UciteljId, PredmetSifra, Semester) Pri tem upoštevamo naslednje informacije: UCITELJ: 200 strani, 1000 zapisov, 50 različnih vrednosti za oddelek, drevesni indeks na polju OddelekId, razpršilni indeks na polju Id PREDAVA: 1000 strani, zapisov, 4 različne vrednosti za semester, drevesni indeks na polju Semester, razpršilni indeks na polju UciteljId, predavanja so enakomkerno porazdeljena med ucitelji (10 predavanj / ucitelja) Na voljo imamo 52 prostih strani v vmesnem pomnilniku. PILOTI: 10 zapisov na stran, vsak zapis predstavlja enega samega pilota, 40 strani, relacija hrani 100 različnih vrednosti za StUrLetenja in piloti so enakomerno porazdeljeni med te vrednosti, pri tem pa je od takih vrednosti, katerih vrednost je nad 500, 70 različnih. LETI: 20 zapisov na stran, 150 strani REZERVACIJE: 50 zapisov na stran, strani, različnih cen rezervacij je 150 in takih, ki so večje od 300 je 70 Za vsako izvajanje poizvedbe imamo na voljo strani v vmesnem pomnilniku (SUBP). 1. Za dani poizvedbi sestavi drevo operacij in oceni plan njihovega izvajanja (koliko strani se bere iz diska): a) SELECT Priimek, Ime FROM PILOTI b) SELECT Priimek, Ime FROM PILOTI WHERE StUrLetenja> Za koliko se ocena plana izvajanja za drugo poizvedbo iz prejšnjega primera spremeni, če pri svojem izvajanju uporablja drevesni indeks višine 2 na polju StUrLetenja. 3. Napiši odgovore na naslednja vprašanja s povpraševalnim jezikom SQL: a) Poišči vse IdL (identifikator letal), pri katerih je cena rezervacije njihovega leta presegala 300. b) Poišči vse IdL (identifikator letal), pri katerih je cena rezervacije njihovega leta presegala 300 in je let pilotiral pilot z IdP= Za koliko se ocena plana izvajanja za drugo poizvedbo iz prejšnjega primera spremeni, če pri svojem izvajanju uporablja: - 2-nivojski drevesni indeks na polju IdP v relaciji LETI - razpršilni indeks na polju Cena in - razpršilni indeks na polju IdLT v relaciji REZERVACIJE 5. Za dano shemo ocenimo plan izvajanja naslednje poizvedbe:

99

100 A98<.%6,=30.$%BC5DAE F!13<=30%7<;-0G H "I,3%09=,;,3;,%7<09=>?@>+! "/>=,;,3;>%6JK%=%*C!!:>308=>3,%LM3.:0;,+! CIN</08-0%9,%09=,;,3;>%<7>/,:0;%*C+! "/<18</%/>O08>=+! CIN</08>-%9,%01.,3;>%<780-,I3>N,%7I,3,+ F 6P18>-%*G! D,;@<I;%/,9O0/;>3+! 4>I,%=%/>?M%9,%Q%(R%180.<=+ "I,3%09=,;,3;,%7<09=>?@> F A-7I>->38,:0;,%<7>/,:0;>G% H A8>/,8</G%7<7MI,/3,%S%<@;>.83,%8>230.,+! A-7I>->38,:0;,%08>/,8</;,G%!!"#$%&'(%$)*&'(+,"-$&'.! 5>8<?,%%$)*&'%=/3>%>3<% %%%%%3T8>/0:<%,I0%$"/+ F 4/>=<%08>/,8</;>=G H U1,.,%<7>/,:0;,%;>%I,2.<% %%%%%0-7I>->380/,3,%9%-3<V0:<% %%%%%,IN</08-<=+ H "I,3%09=,;,3;,%=1>@M;>%8M?0% %%%%%,IN</08>-%9,%09=>?@<%<7>/,:0;>+!!"#"$%&'()" $%&'()$*+ -(-" -(./0112 +'",&2324 -(./-(. $,&'()$*+!"# *+$,&$)( $#&'()$*+!",!"% "/>=,;,3;>%6JK%=%*C F 4>.<-7<90:0;,%=7/,O,3;%=%@I<.> F #I<.%=7/,O,3;,%7/>=>?>-<%=%09/,9%*C F #I<.%<@/,=3,=,-<%.<8%LM3.:0;<

101 A B7@8C73%6DE%1C,=7.%17%/,:F7@0%=%?@8.7 A G,.@<HI730%6DE%?@8.0%17%8?/,=3,=,<8%.8C% 9/8;7FH/7 A "81@7F0;,J% K =L37:F730%?@8.0%17%.@0I7<8%8?%=1,.0%0C7/,;0<0%=% 3,F/7<737-%?@8.H #@8.%=9/,>,3<,%9/7=7F7-8%=%0:/,:%*M A N1,.%?@8.%9817?,<%17%9/7=7F7%=%0:/,:%*M A O:/,:%*M%17%89C0-0:0/,%37%L@7F7%3,%3,F/7<737% 03%98F/7<737%?@8.7 A "8F/7<730%?@8.%17%0:=,<,%.8C%9/8;7FH/,!;73,%9@,3,%0:=,<,3<, A *7:H@C,C%<7%=7F38%9/0?@0P7.+% A 6C,C01C0.,%12/,3<73,%=%101C7-1.02%.,C,@8L02+ A 6C,C01C0.,%17%H98/,?0%:,J! 8;738%20C/81C0%0:=,<,3<,%9@,3,%980:=7F?7$%%03! 8;738%=7@0.81C0%=-71302%/7:H@C,C8=+ A "/0%8;730%17%H98/,?0%;73,%B"Q%03%O)!+ A N%3,>02%8;73,2%F7@,-8%1,-8%1%>C7=0@8-%F01.8=302%?@8.8=+!;73,%9@,3, A G,%=1,.%9@,3%<7%98C/7?38%F8@8I0C0%;738+! "8C/7?8%<7%F8@8I0C0%;738%:,%=1,.8%897/,;0<8%=% F/7=71H+% "!F=013,%<7%8F%.,/F03,@381C0%=28F302%/7@,;0<+% " B737%981,-7:302%897/,;0<%1-8%10%8L@7F,@0%3,%9/7<>3<7-% 9/7F,=,3<H " 67.=73I30%9/7L@7F$%03F7.130%9/7L@7F$%1C0.%:%:,3.8$%1C0.%:% 03F7.18-$%0CF+! "8C/7?38%<7%8;730C0%=7@0.81C%/7:H@C,C,%:,%=1,.8% 897/,;0<8%=%F/7=71H+%% " O3R8/-,;0<7%8%=28F302%/7@,;0<,2+% " G,%=1,.%1C0.%9/7F981C,=0-8%378F=01381C%-7F%9/7F0.,C0+%

102 "=F89,3%03<8.1%B$%.0%18%C>8-,%9%830-%,;0%F8D%:=G=>0E! H8:=F89,3%03<8.1$%.0%18%C>8-,%9%830-%,;0%F8D%:=G=>0E%! 68.F83D30%:/8G;8<%I,A8;8E! ;<=/%$"&>( 628-,%9,%9G;8<!"#$%#&'()!"#*('$+,-,#.(!"!$*(/+#'$-.(%&$'(*('$+,-,#.()*(+*(#,%01 2,3,#4%5'&,()!"#*('$+,-,#.(,"#*('$+,-,#.(#('*(6%+,/.(+"!$*(/+#'$-1? "=<=A3=%.=I%1I,/,%128-,J%/"D0%<=<,3,+%? *898/F,70>8E! K8;0.=1I%9,:01,%L%M'%9;=G=F$%%(''%9,:01=F%3,%1I/,3$%('''% 1I/,30+? 5=/3,/>0E! K8;0.=1I%9,:01,%L%N'%9;=G=F$%%O'%9,:01=F%3,%1I/,3$%N''% 1I/,30+% "/0-8/ 7898:;((!<='6 B-,-=%03<8.1%3,%,I/0ACIC%240$%E! P()HQ;>C78FPBRR%S%HT,:01=FP*R%L%P()('R%S%M''''%L%M'''%9,:01=F+! "=F89,3%03<8.1E%% %%%%%P()HQ;>CD8FPBRR%S%PH6I/,30PBRUH6I/,30P*RR%L%P()('R%S%PN'UN''R%L%NN%:/8A/,302%1I/,30+%! H8:=F89,3%03<8.1E% %%%%%P()HQ8V1PBRR%S%PH6I/,30PBRU%HT,:01=FP*RR%L%P()('R%S%PN'UM''''R%L%M''N%:/8A/,302%1I/,30+%? B-,-=%03<8.1%3,%#".E! "/8A/,I0%>8%:=I/8A3=%F18%3WI8/078)1I/,30+%%! "=F89,3%03<8.1%L%N'UN''%1I/,30J%%%38:=F89,3%03<8.1%L%N'UM''''% 1I/,30+! 6;,A=%X? 68.F83D30%:/8G;8<E! K18%1I/,30%I,A8;8%L%N''%1I/,30+!783,%F8;0.=1I0%/89C;I,I=F%=:8/,70> %%%%%"=09F8<A,E 7898:;(!"#$%&'(#)(*"! 5,.10-,;3=%YI8F0;=%3WI8/07E Z "/=<C.I%.,/<03,;3=1I0%/8;,70>%F%[*!5%1I,F.C+? <090:="1$2#=+",/%,%+#=%1:%+EFG>GH+ Z 68;8.I0F3=1I%09/,9,%>8%181I,F;>83,%09%18;8.I0F3=1I0%F182%:=G=>8F+% Z 68;8.I0F3=1I%:=G=>,%P6"R%L%<8;8\%/8;,70>8$%.0%>8%/89C;I,I%18;8.70>8+%%? I%/."$%9$2#=+/0,@9=%=%% Z 5,]%^%3WI8/07%S%%:/=<C.I%F182%6"+

103 "/8A=<1:,;.,$%A,%1<%=<><?0%-8A%18B<?%38<A;0130+! "<><?%).364).3B%0-8%6"%C%6%7%CDE=89:1;<#/=>6?F89:1;<#/=>B??! 6898.:0;3<1:%=<><?,%<A18;,%;=90;%=<><?,%3,% L)35,$):$'(.%3#+;:.).)% G 5,H%I%3J:8/07%K%%=/<AF.:%;182%6"+!783,%D,%=9,38%3,A%;8L0-0%/89,70?,-0!"#"$%&!"#$%&'(#)(*" '()*&!"#$%&'*"+%,(- M#:#9.,/$'(.%=<;8D,3,%D%;1,.0-%=<><?8-%<A18;,% ;=90;%=<><?,%3,%;890.<1:%/8DF9:,:,+% G 5F9:0J/89,70?1.0%=9,30%18%>/,A0?<%=/0%1:0.02%D%A<A,?,3?8-% 838%1,-8%3<;8%/89,70?8%3,83./,:+% G P83,%-8:<A8%1:0.,%Q%<783<%.,/A03,93<1:0%1:0.,+% "<0EL0%3,?7838?E0%=9,3%=<0D;8AB8+%! S9></0:8-%D,%<=:0-0D,70?<+ 7 6T1:8-%*%F=</,B0%A03,-0L3<%=/<>/,-0/,3?8+! V"/8:<.W%=<%A/8;81F%0:8/,:</?8;+! X:8;09<%=/8B/,302%B9<.<;%0D%A01.,+! P"Y%F=</,B9?83%D,%0D/,LF3%<=8/,70?%Z-0%38%F=<E:8;,-<[+! \890.<1:0%;-81302%/8DF9:,:<;%03%.<3L38>,%/8DF9:,:,+ ],1:3<1:0%/89,70?1.8%,9>8B/8%<-<><L,?<% :/,31R</-,70?8%=<0D;8AB8+% G ^/,31R</-0/,3,%=<0D;8AB,%;/38%01:0%/8DF9:,:+ G ^/,31R</-0/,3,%=<0D;8AB,%=<;D/<L0%1=/8-8-B<%=9,3,+ G "<3<;3<%?8%=<:/8B3<%A<9<L0:0%,9></0:-8%D,%0-=9+%<=8/,70?+% G UEL8-<%0D/,D$%.0%18%3,?20:/8?8%0D;8A8%03%=</,B0%3,?-,3?% "/,.1,M% G UD<>0B,-<%18%.,/:8D0?1.0-%=/<AF.:<-+ G UD<>0B,?-<%18%3,?19,BE0-%/8E0:;,-+

104 71.,389%:;<0-,=39>,%;=,3,? C,<9/0%D9=%;/:1<:/,%;/9>=9D,-:E F F!B/,@3,@,-:%1,-:%;/:1<:/%!"#$%&'(")*"+,-.;=,3:@+ F K9@:JI1-9/8930%;=,30%:-:>:L,8:%0A@9DB:%/"#$#$012 F M0%;:</9B3:%./90/,<0%@-91302%A,L,1302%<,B9=+ #=:.0%;:0A@9DB9? 6NK%19%;/9@9D9%@%-3:O0P:%3!$4$#. 5$,6#"03"2?!;<0-0A0/,8:%19%B=:.0%;:0A@9DB9+? Q>39AD930%B=:.0%19%:B/,@3,@,8:%.:<%.=0P0% ":93:1<,@=893%;:>=9D$%D/O0%@%@9L030% ;/0-9/:@+%!"#"$%&&'()*)+,-.'&&'/01203*&' 45"-"&&'(6720&89& &&&&&:!"#"$%&&'()&*'+,-./01 &&&&&&&234'&&'506/078&'+ &&&&&&&934:;&<=&&'+,5>?6/; DE6/678&AB5C!&<2&=62>&?@/>&/?02=12=2)/&126@+A13+&B@21+C& "&D6+&)+7/A+&A/67/B2&E2&=62>/&0+@2F*3/&*E&,-.'&672=>2(& #&D6+&B+0)G72F*3+&0+@2F*3&B/=+E21+&6&67*>*&=&@+=/HG6)+03+1/&A0+=/( #&I/J/3+&67*>/=&@2K>/&*E02LG12)/&6B0/7*&*E&B/J/3+=&=&45"-"&672=>G( R.@0@,=93P9%:;9/,P08%*S?!-:>:L,8:H F M,T<9@,389%9.@0@,=93<302%A,;01:@%0A/,A:@%*S+ F *,A=0L30%@/1<30%/9D%1<0.:@+% F 6;ITL,389%19=9.P089%03%;/:89.P089%;/:<0%=01<:-+? U,;01%0A/,A,%*S%D:=:L,%D/9@:%:;9/,P08%F%;/:>/,-V? U%;/9>=9D:-%@192%9.@0@,=93<302%0A/,A:@%*S%3,T<989-:%@1,% D/9@91,%:;9/,P08+% F Q19%3,L039%9@,=I,P089%D:B0-:%A%D:D,<3:%0AB0/:%@192%-:O302%-9<:D% D:1<:;,+%%?!>=98-:%10%9.@0@,=93P9%A,%:;9/,P089%*S+ R.@0@,=93P9%:;9/,P08%*S? 7"!"4/,*18%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%W916/"5X!!!"""""!" # #!!! " " "!!" # ( ) ( ) ( ) ( ( #) ) ( #)!!!! ( )!!!#!#!!!&&;057?C>87/K $ ( #) $ $ ( #) # :J5HE./.8F65-.; ( ( ) ) # " " " *3/L>?M1 $! $! $"!&&!.8CK 3&N&*!&N&%1&&&&&&*3&N&!1&N&%& # *(-5>8/.8F65-.1 # *3&N&!1&&&&&&*!&N&31& $ &&M/>2N*C& 3&N&*!&N&%1&&&&&&*%&N&31&N&!& # :J5HE./.8F65-.;

105 @ 7.808,9:3;:%<=:/,;0>%*? 6=ABC,3>:%1:9:.;0>:)=/<>:.;0>:%=/<D0%901D<-+%%!!!!!"#$!!%&!!!!!!!!"#$&!"%!&!!!!!'#$!!"%&!!!!!!!'!#$&!!"% "/<>:.;0>,E% F (!)*!+*,*-./01!/23/41!+156!174/387*!$9 "<:3<1D,80D:8%=/<G9:-, F "/<1D</%,9D:/3,D08302%=9,3<8 F O=</,G9>,-<%<;:3:%=9,3<8% F O=</,G9>,-<%,9H:G/,0C3,%=/,809,%I,%01.,3>:% :.808,9:3D302%=<0I8:JG F?9H</0D:-%I,%=/:H9:J<8,3>:%=/<1D</, F!=D0-0I,D</%<G0C,>3<%=/:H9:J,%J:9%=/<1D</, F LIG:/:%=9,3%I,%.,D:/:H,%0-,-<%3,>-,3>B<%<;:3< F!=D-,93:%=9,3:%H/,J0-<%0I%<=D0-,9302%/:B0D:8% O=</,G,%1,-<%9:8<PA1-:/>:302%=9,3<8 F Q0-,-<%-,D:/0,90I,;0>: F!-:>0-<%=/<1D</%/:B0D:8 F L1.,3>:%=:/-AD,;0>%<I+%A=</,G,%J03,-0C3:H,%=/<H+ F S<I90BC:%I%-:D<J<%J<1D<=, F 4<1D<=%J<%I,=01<8% F 54%I%03J:.1<-$%54%1%1</D0/,3>:-$%54%I%0D:/,;0><$%+++ F S<I90BC:%1%1D0.<-% F *,I90C30%,9H</0D-0%I,%0I8,>,3>:%1D0., F 6D0.%I%8H3:IJ:3<%I,3.<$% %%%03J:.1<-$%I908,3>:-$%+++ F S1:GA>:%TDAJ0U%1:9:.;0><% %%%03%=/<>:.;0>< # $ # $ "! "!

106 A 2#&+3#',#4+.-#'()*+*%,(-5-('+1$%1( A 6%1,+.-%'+3",(3(-5%7+8%'+-'7(-% A 2*%'#<-#*-%'"$+3($%! >,%-'-%0'(-#'$(,%7+8#'!'#"5+3%,-%'3(5#0%'0#<5#"%! >,%-'-%0'*(.+3+'$(,%7+8%3+'!'"($3;5%7+8%'<5+)#* %4$(4%7+8<)+/'#"($%7+8 A >$(4,(0%8#'<('*<('3#B-('3(5#0('0#<5#"% A C(5#0('0#<5#"%'<3#'<+'#4,(0%,+'-%'"$(8D-8+/' "$(0%*%-8+/E A C(5#0('&$(1'+-0()<#* A F1&($(3#'3(5#0#'1'-%8-+B8#'7(-#' G"$%D%-8(H I%'*<%)#'#7(-#'*(.8#'#0'J@'+1"+D+'#7(-#'+-' D5(*+,#'3#$-%$8(*'<5%$+/'KL',(5@')+'+3%8#'5%)D-#' #7(-#@'.('<5%'1%'0%-#'#7(-#'*<%8'0*%'5%)D-%' 3#$-%$8%'1'$%1,+.-+3'+3(-#3E <(,(75'9E$%5+-4@'7#;-5MNO P$#3'9%+,#$<'9 Q/($('9E$%5+-4'R'J'%-0'SE%4(TKL FG=:C >$("+D(3#'*"$%D%-8('*'$%1D+$8(-#'$(,%7+8<)#' %,4(&$#E 2$;4%'"$#8()7+8%'+3%'0#0%-'<-%3(@')($'$%&+3#' <-%3('1%'/%*+-4E! "#$%&'()*+,-.(&/01 / 2%3'(),-.(&4'5&'(,&/"#5(% / )$-.:;< "#$%&'() /! "#$%&'()*"#5(%67 / = "#$%&'()+8+>+%(4+?#%)7@9A /"%'B-$511111

107 789:;!"#$%&#'()%*+,-&,"#.)%.)/0,%*&#0,%123#$#0$#4% (1%51%$1'%)*61.12#6)+%*+,-&,"#&7 8#$5)&$%*).,.50#% )"&)916,3%$,%125)+%.,6)",% "):6)*#%")%;#1&)+:7 <-)6)3161%$,%*)6+,50)%6="1 >,0,%*+,):6#&1'%)*,+#>1$7 < ;)+61+#0$,4%-+=*1+#0$,4%'#310-4%777! "#$%&'()*+,-.(&/01 / 2%3'(),-.(&4'5&'(,&/"#5(% / )$-.:;< "#$%&'() /! "#$%&'()*"#5(%67 / = "#$%&'()+8+>+%(4+?#%)7@9A /"%'B-$ :=>;:%;>1=>?,%@/:A%03;:.1>B C!13>B30%?/01=>?%D:%?/:89:;%B1:2%A,?01>B%=,@:9:% 6,09>/1%03%1?/>=3>%E09=/0/,3D:%A,?01>B%F1:9:.G0D,%H%?/>D:.G0D,I C JA/,A%*KL% C *:AM9=,=%1:9:.G0D:%03%?/>D:.G0D:%1:%3,=>%M/:;0%B% 1.9,;M%A%,=/0@M=0%>?:/,G0D:%8/>M?N@O+ C 7,?01%/:AM9=,=,%1:%8:3:/0/,%0A%:3:%1.M?03:% ->/3,/D:B$%.0%M1=/:A,%?>8>D:-%>?:/,G0D:%2,B038+ < K8/:8,G0D1.:%EM3.G0D:%1:%0AB/P0D>%3,;%1.M?03,-0+! "#$%&'()*"#5(%67 /= "#$%&'()+8+>+%(4+?#%)7@9A /"%'B-$511 "9,30%0AB,D,3D,%@/:A%03;:.1>B C Q%G:30%M?>P=:B,->L < "/:89:;%6,09>/1 < JA?01%3N=:/0G%F/:AM9=,=%1:9:.G0D:%03%?/>D:.G0D:I < 6>/=0/,3D:%A,%0-?9:-:3=,G0D>%8/>M?@O C!?:/,G0D,%2,B038%1:%0AB/P0%>3N=2:NE9O C "/:89:;%6,09>/1%R%S''%Q)J C 7,?01%B-:13:8,%/:AM9=,=,%R%&'%Q)J C 6>/=0/,3D:%A,%8/>M?N@O%R%T'%Q)J C 6.M?,D%R%SU'%Q)J "9,30%0AB,D,3D,%A%03;:.10 C (+%4>1=>?%A%:30-%03;:.1>-% < V:%D:%3,%/,A?>9,8>%B:W%03;:.1>B < Q1,.%03;:.1%?/:;1=,B9D,%:3>%-:=>;>%;>1=>?, < JA@:/:->%03;:.1$%.0%A,2=:B,%3,D-,3D%Q)J C &+%4>1=>?%A%B:W0-0%03;:.10 < V:%B:W%03;:.1>B%=0?,%F&I%03%FXI%M1=/:A,%?>8>DM%0A@0/: < "/:@:/:->%/:AM9=,=:%B:W02%03;:.1>B%03%3,/:;0->%?/:1:.$%1>/=0/,->%0A@/,3:%0;ND:%A,%>?=0-,9:3%;>1=>? <

108 "7,30%089,:,3:,%8%03;<.10 = >+%4?1@?A%1%1?/@0/,30-%03;<.1?- B C<%1<83,-%,@/0DE@?9%8,%F/EA0/,3:<%E1@/<8,% 1?/@0/,3<-%03;<.1E% B G/<:<3?1@%03;<.1,%EA?/,D0-?%8,%F/EA0/,3:< B H1<%1<7<.I0:<%7,2.?%3,/<;0-?$%A?%@<-%.?%A/<D</<-?% 3J@</0I<%A/<.?%03;<.1, "7,30%089,:,3:,%8%03;<.10 = K+%4?1@?A%1,-?%8%03;<.1?- B C<%0-,-?%03;<.1$%.0%91<DE:<%91<%,@/0DE@<%A?@/<D3<% 9%9A/,L,3:E%A?@<-%7,2.?%EA?/,D0-?%1,-?%03;<.1 B H1,.<-E%A?;,@.?93<-E%9A01E%E1@/<8,%A?;,@.?930% 8,A01$%.0%F,%30%A?@/<D3?%A/<D/,@0 B M,/<;0-?%1<7<.I0:?$%A/?:<.I0:?%03%1?/@0/,-?%.?3N3<% 8,A01<%8,%F/EA0/,3:< B 4?1@?A%1,-?%8%03;<.1?-%OE3.I0?30/,%@E;0%N<%,@/0DE@0% 08D0/<%301?%91<D?9,30%9%,@/0DE@02%03;<.1, B GA?/,D0-?%;?1@?A%1,-?%8%03;<.1?-%.?@%?D0N,:3?% -<@?;?%;?1@?A,$%O07@/0/,-?%3J@</0I<%03%;?1@?A,-?% 1,-?%;?%08D/,302%A?;,@.?9302%8,A01?9 PF7<;!"#"$%&'()*%+,-.&$/0,%123 4)/5&'*+#/)!&' 67")"&'()*%+,-&8&9&*,:&;(*-"<=> -)/0?@A&'()*%+,- 7*B+,-&$/0,%&:+!%+,$%1'(!,*5"&8=3C PF7<; = "?F7<:-?%1A<@%A/<:L3:0%A/0-</% = "/<;A?1@,90-?%;,%0-,-?%3,17+%03;<.1<Q B #R%;/<9?%3,%/,@03F B *,8A/L0730%03;+%3,%,F< B #R%03;<.1%3,%S/,@03F$13,-<$,F<T = H10%03;<.10%EA?/,D7:,:?%9,/0,3@?%U&V = (+%-?W3?1@Q% B /,8A/L0730%03;<.1%3,%8,%A?F?:%6+,F<X&' B Y<3,%D/,3:,%03;<.1302%8,A01?9%R%A?;+8,A01?9%6,07?/1 B Y<3,%?;9013,%?;%A?9<8,3?1@0%03;<.1, B Z07@/0/,-?%1%A?F?:<-%6+/,@03FT[ B "/?:<I0/,-?%1@?7AI<$%.0%:02%A?@/<DE:<-?%9%6\]\Y^$% _*!G"%#`%03%abHcM_+ B P,A0L<-?%8,N,13?%/<7,I0:? B P,N,13?%/<7,I0:?%1?/@0/,-?%A?%6+/,@03F%8,%_*!G"%#` B \70-030/,-?%1.EA03<$%.0%3<%8,;?LN,:?%abHcM_

109 789:; < A B/:C:/:-=%/0;DE:%F,B01=G$%.0%F,;=HI,E=%B=8=EJ%6+/,?038KL A "/:C:/:-=%/0;DE:%F,B01=G%6+,8:M&' A 6=/?0/,-=%=C:%-3=>0N0%03%B/:C:/:-=%J1?/:F3:%F,B01:% 6,09=/1 A "/=E:N0/,-=%,?/0CJ?,%/,?038%03%13,-:%?:/%F,B0H:-=% G-:13=%/:9,N0E= A :; < O+%-=>3=1?@ A "/:C:/:-=%%F,B01:%6,09=/1%F%6+/,?038KL%G%G/1?3:-% /:;J%;=9=I:30-%F%/,?038%=F+%#P%;/:G:1=-+ A Q,/:;0-=%1:9:.N0E=%=3D?2:DR9S A TF/,IJ3,-=%9,2.=%,8/:8,N0E1.:%RJ3.N0E:%F,%U*!V"% #W%03%XYZTQU$%.:/%1=%3D?:/0N:%J/:E:3:%%B=%/,?038+ A :; < [+%-=>3=1?@ A "/:C:/:-=%F,B01:%\/,?038$13,-:$,8:K%F,%.,?:/:% G:9E,%/,?038KL A 7,B01:%1=/?0/,-=%B=%/,?038%]03%13,-:%03%,8:$%.,/%30% B=-:-C3=%F,%?=%GB/,H,3E:^ A TFC:/:-=%,8:M&'%=3D?2:DR9S% A TF/,IJ3,-=%,8/:8,N0E1.:%RJ3.N0E:%F,%U*!V"%#W%03% XYZTQU A Q:%B/:C:/:-=%B=;+F,B01=G%6,09=/1_ A "=-:-C3=%F,%3:B=G:F,3:%03;:.1: "=0FG:;C:%3,;%G:I0-0%/:9,N0E,-0 < U9:;,-=%B9,3:%3,;%G:I0-0%/:9,N0E,-0 < `,.H3,%GB/,H,3E,%1=%9,2.=%F:9=%F,2?:G3,_ < Q:%89:;:%3,%?=%.,.H:3%B9,3%0FC:/:-=%9,2.=% =N:30-=%G:90.=1?0%/:FJ9?,?=G < TFC=/%G/1?3:8,%/:;,%0FG,E,3E,%1?0.=G A ZB90G,%3,%./:0/,3E:%G-:1302%/:FJ9?,?=G%F:9=%/,F90I302% G:90.=1?0 A "9,30%0-,E=%9,2.=%F:9=%/,F90I3:%N:3:_ A U9:E%B/0-:/:%0F%B/:EH3E:8,%B/:;,G,3E,

110 B!13>;3,%>C=>D09:;%;%6E19:-%*F%% G A=,3:%J%@A>/,H>%C03,-0D3:I,%A/>I/,-0/,3<, B K:;>?@1-:/<:30%A=,30%1:%/,J=0.@<:<>%1,->%;F G L/193:-%/:C@%/:=,M0< G L%-:9>C,2%J,%C>19>A%C>%/:=,M0< G N=I>/09-02%J,%0J;,<,3<:%190., 7,89:;,3<:%=:;>?@1-:/<:302%A=,3>; B ">I=:<->%10%H=>.,%;A/,8,3<,F% G!A90-0J,9>/%1019:-,%*%A/:I=:C,% %%%%;1:%->O3:%190.:$%.<:/% %%%%1:%!%03%"%1A@190%.%/:=,M0<,- B K,193>190%,=I>/09-,F% #$%$&'()**+,-.*/(0,1* 2345(+/0)*,67(0,1* 89$3$(*/+: ; (<(*/+: = (<(>(<(*/+: 7! 7,;.=<@H%>-:<09;0%89+%A=,3>;%/,19:%:.1A>3:393>%1%89+%/:=,M0<+! 5>I>D:%<:%I:3:/0/,90%A=,3:$%.0%/:,=0J0/,<>%PM:;>;>C:Q+% G L-:13:%/:J@=9,9:%30%A>9/:H3>%J,A01,90%;%J,D,13:%C,9>9:.:+% "! # $ # "! $ "! # $ "! # $ # "! $ "! # $ 7,89:;,3<:%=:;>?@1-:/<:302%A=,3>; "/:2>C%(F B B 7,89:;,3<:%J%7%A/:2>C0%J,%7%/:=,M0<F! "/:2>C%(F%%">08D0%;1:%3,<H>=<8:%A=,3:%J%:3>%1,->%/:=,M0<>+%! "/:2>C%&F%%">08D0%3,<H>=<80%A=,3%;1:2%190.>;%3,<H>=<802%A=,3>;%3,C%:3>% /:=,M0<>%9+<+%A=,3%3,C%C;:-0%/:=,M0<,-0+%!! "/:2>C%7F%%">08D0%3,<H>=<80%A=,3$%.0%JC/@O0%3,<H>=<8:%A=,3:%3,C%7?(% /:=,M0<,-0%J%3,<H>=<80-0%A=,30%3,C%A/:>19,=>%:3>%/:=,M0<>%9+<+%A=,3%3,C% ;1:-0%7%/:=,M0<,-0+% 403,-0D3>%A/>I/,-0/,3<:F G R,%;1,.>%A>C-3>O0M>%1:19,;=<:3>%0J%"%/:=,M0<%<:%A>9/:H3>% >2/,3090%1,->%3,<M:3:<80%A=,3S G "=,3:%J,%7%/:=,M0<%1:19,;<,->%0J%A=,3>;%J,%7?(%/:=,M0<%9,.>% C,%C>C,<,->%1:%:3%190.+ B B B B B B B 7,89:;,->%;1:%A=,3:%J%:3>%/:=,M0<>%0J%T*!5%C:=,%6UKUVW% 19,;., "=,3%3,C%:3>%/:=,M0<>%<:%C:=:3%=:;>?@1-:/<:3%A=,3 R,%;1,.>%/:=,M0<%N%0C:390X0M0/,->%A>I><:%0JH0/:$%.0%1:%3,3,8,<>% 1,->%3,%,9/0H@9:%;%N+%W>%1>%1:=:.M0<:$%.0%<02%<:%A>9/:H3>%3,/:C090% A/:C%;1:-0% YC:390X0M0/,90%<:%A>9/:H3>%9@C0%,9/0H@9:%N$%.0%301>%A>9/:H30%Z301>%;% 6UKUVW$%[\U*U$%]^%03%<02%=,2.>%0J=>D0->%A>%H/,3<@% A>C,9.>;3:I,%J,A01,+ R,%C,3:%A>I><:%<:%A>9/:H3>%A>01.,90%>A90-,=3>%-:9>C>%C>19>A,+ ">08D:->%=,2.>%3,<M:3:<8:%A=,3:%J,%;1,.>%@/:<:3>19%/:J@=9,9,+% _/:<:3>19%=,2.>%0J.>/0190->%.,13:<:%3A/+%J,%`*!_"%#a% >A:/,M0<>+

111 "/7289%&: ; <,=>7?,-8%?17%@A,37%B%9?7-0%/7A,C0D,-0+% E "/7D%0B/,FG3,37%8@>0-,A37%-7>897%981>8@,%98%737%/7A,C0D7% G@8/,H0-8%.8>%BG3,3D8%/7A,C0D8+ E I17%81>,A7%/7A,C0D7%G@8/,H0-8%B,%38>/,3D7%/7A,C0D7+ ; *7C0-8$%9,%D7%J%BG3,3D,%/7A,C0D,%03%#%38>/,3D,+"/7KA79,-8% LMN*N%1>,?7.%03%0973>0O0C0/,-8: E 67A7.C0D7%3,9%,>/0HG>0$%.0%17%>0F7D8%1,-8%#%17%A,2.8%0B?/=0D8%@/79% 1>0.8-+ E 67A7.C0D7%3,9%,>/0HG>0$%.0%97O030/,D8%1>0.+ E 67A7.C0D7%3,9%,>/0HG>0%9/GK02%/7A,C0D$%.0%17%A,2.8%0B?/=0D8%@8%1>0.G+ ; "81A790C7: E "/?0%9?7%1.G@030%17A7.C0D%G@8=>7?,-8%@/0%0BH0/0%-7>897%981>8@,%98%# E P973>0O0C0/,-8%,>/0HG>7%#$%.0%D02%A,2.8%B,?/Q7-8%@/79%0B?,D,3D7-%1>0., "/7289%&: ; R7%@,/%.8-73>,/D7?: E S737/0/,3D7%3T>7/0C%B%BG3,D3D0-%@A,38-%D7%97O030/,38%B,% 0-@A7-73>,C0D8%C7?8?89,+ E <7.,>7/7%-7>897%1>0.,%37%B,2>7?,D8%-,>7/0,A0B,C0D7%/7BGA>,>,$%9/GK7% B,2>7?,D8+ E 57>89,%1>0.,%A,2.8%B,2>7?,%98A+%G/7D7381>%?289,+%<@/+%18/>0/,3D7%B% BA0?,3D7-+%U7%8H1>8D7F,%-7>89,%981>8@,%98%38>/,3D7%/7A,C0D7%37%9,% Q7AD737%G/7D7381>0%D7%>/7H,%@/0=>7>0%C738%18/>0/,3D,+ "/7289%V: X8-@A7.1381>%,AK8/0>-, ; S737/0/,-8%?17%@A,37%1%>/7-0%/7A,C0D,-0+% ; W9,D%?B,-7-8%@A,37%0B%@/7289,%&%03%D02%9,-8%.8>%BG3,3D8% /7A,C0D8+% ; 6@7>%989,D,-8%@/781>,A8%38>/,3D8%/7A,C0D8+% ; P>9+% "/781>,A0%@/72890: ; S/G@0/,3D7%?%HA8.G%17%0B?/=0%3,%.83CG+% ; IF,102%D7%@8>/7H38%@81./H7>0%B,%@/,?0A38%G/7D7381>%0B289,% 1>0.8?$%9,%H0%A,2.8%0B?,D,A0%K/G@0/,3D7+ ; P-,-8%!%/7A,C0D ; (+%@/7289:%% E W,%?1,.8%/7A,C0D8%!"#"$%&'()* ; &+%@/7289:%% E P-,-8%8@>0-,A37%@A,37%B,%981>8@%98% 737%/7A,C0D7 E E +#",-"."+#/,- ; V+%@/7289:%% E P-,-8%8@>0-,A37%@A,37%B,%981>8@%98%?172%-8Q302%@,/8?%/7A,C0D E E +#"0-"."+#/0-" ; 0T>0%@/7289:%% E P-,-8%8@>0-,A37%@A,37%B,%981>8@% 98%?172%-8Q302%@89-38Q0C%B%0T(% /7A,C0D,-0 E E +#")/,-"."+#/)- ; 6.G@38: E 3YZ3%([\Z3T([Y+++YZ3%0T([\Z3T0[Y+++ E ]]%& 3

112 %789:;%(! "#$%& ' ( ")*+")*', -)*+.// '0&"&12&"34, 1$5)#678 '9$):;1" :;%(E%"/:2=;%( < "=89:>-=%10%?/0-:/%=?@0-0A,B0>:%C?/,D,3>,%A% :30-%1@0.=- < "/:;?=1@,C9>,-=%;,%0-,-=%3,19:;3>:%03;:.1:E (F#G%03;:.1%3,%/,@038%@,H:9:%6,09=/1 &F*,A?/D0930%03;:.1%3,%10;%@,H:9:%6,09=/1 IF#G%03;:.1%3,%H0;%@,H:9:%*:1:/C:1! "/:;?=1@,C0-=$%;,%9,2.=%3,/:;0-=%1:.C:3J30%?/:89:;%3,%6,09=/1%03%*:1:/C:1 < "/:89:;,-=%@/0%-=K3:%-:@=;:%;=1@=?,%;=% 6,09=/1 L #G%03;:.1%1:%M>:-,%1%1:9:.B0>=%, /,@038NO% 03%A-,3>D,% B:3=%;=1@=?,%;=%A,?01=C%6,09=/1 L P?=/,H,%/,A?/D093:8,%03;:.1,%,90%1:.C:3J3:8,%?/:89:;,%>:%A:9=%C:/>:@3=%;/,K>, L "9,3%@=/:>%;=1@=?,%;=%6,09=/1%?/:.=%#G%03;:.1,%03% C/,J,%A,?01:%M/:>:3:%?=%/,@ :;%(E%"/:2=;%( < "/:89:;,-=%;C:%-=K3:%-:@=;:%;=1@=?,%;=% *:1:/C:1 L #G%03;:.1%3,%H0;%1:%M>:-,%1%1:9:.B0>=%, -)*+.//% 03% A-,3>D,%B:3=%;=1@=?,%;=%A,?01=C%*:1:/C:1 L 6:.C:3J30%?/:89:;%H=%A:9=%C:/>:@3=%19,HD,%-:@=;, L 4=1@=?%?/:.=%#G%03;:.1,%>:%@=/:>%?9,3%A,%*:1:/C:1 789:;%(E%"/:2=;%& < "=89:;,-=%3,>?/:>%1@0.%-:;%*:1:/C:1%03%6,09=/1+ L "=@/:HM>:-=%1,-=%A,?01:%6,09=/1%A,%.,@:/:%C:9>,%, /,@038NO% 03%, 10;QC,9M: L, 10;QC,9M:% 1:%M>:-,%A%/,A?/D0930-%03;:.1=-%3,%10;%@,H:9:%6,09=/1 L, /,@038NO% 1:%M>:-,%A%#G%03;:.1=-%3,%/,@038 L 4=1@=?%A%:3,.=1@>=%0-,%C:J>=%1:9:.@0C3=1@+ L P?=/,H0-=%/,A?/D0930%03;:.1%3,%10;%@,H:9:%6,09=/1 L "=89:;,-=%@M;0%,9@:/3,@0C3:%,98=/0@-:R%1@0.%A%A90C,3>:-S < P/:>:3=1@%?=%10;%L%30%M?=/,H3= < T-,-=%! "#$%&< =<")*<;*>$*&

113 789:;%(<%"/:2=;%&!F:3,% ()*+,*-#./0#$1.#+2343*5.0#031.62*#+45.)73+,1.#+2343*5.62,*1.*3,89 :3;3*<,7#-3./0#$1.#+2343*5.8#$1.#+2343*5.$,+1.$,2365.*#031.62*#+49 > A 6,09=/1%0BC:/:-=%.=?%BD3,3E=%/:9,F0E=+ A "=?/:CDE:-=%1,-=%B,G01:%*:1:/@:1%B,%.,?:/:%@:9E,%! "#$%&''% 03%! 10;H@,9D: $%.E:/%E:%@/:;3=1?%;=9=I:3,%B%BD3,3E=% 3J?:/0F=+ A 6G:?%G=89:;,-=%@1:%-:?=;:%B,%1?0.! 5=/3,/E0$%7,G01%H%K'%B9=8=@$%%L'%B,G01=@%3,%1?/,3$%K''%1?/,30+! *:B:/@,F0E:$%7,G01%H%M'%B9=8=@$%%(''%B,G01=@%3,%1?/,3$%('''%1?/,30+%! N*0;N%H%(O$%N03?N%H%M$%"=;,?.=@30%@G01%H%&'%B9=8=@ > P:90.=1?%03;:.1=@! #Q%03;:.1%3,%/,?038%?,C:9:%6,09=/1%! R?+B,G01=@%H%L'%S%K''%H%M''''%%B,G01=@%HT%&''%1?/,30%G=;+@G01=@! P0U03,%&$%(%03;+1?/,3$%(''V%B,G=93E:3=1?$%6.DG3=%H%&'(%1?/,30%! *,BG/U0930%03;:.1%3,%10;%?,C:9:%6,09=/1! R?+B,G01=@%H%L'%S%K''%H%M''''%%B,G01=@%HT%&''%1?/,30%G=;+@G01=@! L'V%B,G=93E:3=1?$%6.DG3=%H%&K'%1?/,30! #Q%03;:.1%3,%C0;%?,C:9:%*:1:/@:1! R?+B,G01=@%H%(''%S%('''%H%('''''%%B,G01=@%HT%K''%1?/,30%G=;+@G01=@! P0U03,%H%W$%M%03;+1?/,30$%OXV%B,G=93E:3=1?$%6.DG3=%H%XKO%1?/,30%!F:3,<%"/:2=;%( > 6,09=/1 A!"#$%&'()#%*#+*,$%-#.! +*,$%-/0 1# A 2'3'(,$4%5),#6#789:#;+'<'+'=5#7>7#$%&?),+*%$#"#.)5+,$+*%$#+$&@A$1#B>>#),+*%$# A 2(C;%5#6#7>7#"#B>>#6#D>7#),+*%$ A 2'(4'%E%$#;+'-3'&#6#0>>#),+*%$ > *:1:/@:1 A!"#$%&'()#%*#<$&#.! <$&67>> 1 A 0>>#3*&$A:#7>>>>>80>>#6#9>>#F*;$)54# A G'%*#6#.$%&?),+*%$1#9#"#.3$),$#$%&?1#9#"#.;5&?F*;$)$1#9>>## A 2(C;%5#6#9>D#),+*%$!F:3,<%"/:2=;%& > =>2(?/@,#8)*69.A 6#$%6#$. :38/:363*<369. A 9>?>>>#F*;$)54#)'#CA'=*#F#! +*,$%-/0.2*$35+)1 A H*#4)*(#F*;$)#A'#;5,+'<'%#&5),5;#&5#I')'+4') A J'#5<),*A*#$%&'()#F*#)$&#%*#I')'+4')#6/#4-%?F*%(* A 25+,?#F#F3$4*%A'=#A'#,C&$#)3*<K'#5&#5;,?L > H*E?,*<'3*#2*$35+)#6#9>>>>MB>670>#),+*%$ > 25+,.H*E?,*<'3*#2*$35+)1#6#9MBM70>#6#N>>#),+*%$ > 25+,.H*E?,*<'3*#I')'+4')1#6#9M7M9#6#D#),+*%$ > H3$4*%A'#6#N>>#"#D#"#70>#"#9#6#7>0O#),+*%$ > =>2(?/:363*<369.A 6#$%6#$. :38/@,#8)*69 A B''.;,>#6)<.C62*3;,.! <$&67>> /:363*<369 A D0,0).#+$3E6.;,.6#$.+,.@,#8)*6 A F3+,.%.B'G.H./*,;>*I#+$3E69.B''.J.&IB.%.GGG.62*,+#

114 %789:;%&!"#"$%&'(!)*+&$,-.%/01 23,4&5,6%!&5+&7"!"38"!&7+&&'6)#,3!&' 9:"3"&7(!)*;'(!)*&6.*&5(<)*;7(<)* 6.*&5($,#,3;=3"*= 789:;%&!"#"$%&'(!)*+&$,-.%/01 23,4&5,6%!&5+&7"!"38"!&7+&&'6)#,3!&' 9:"3"&7(!)*;'(!)*&6.*&5(<)*;7(<)* 6.*&5($,#,3;=3"*= < "#$%&'()*+,-., /0()123 45"#$, 6 "#$7"#$, &&&&&6 2#$72#$, &&&&&&&&&&&8 '(9(07:0;$:,<(=+".% &&&&&&&&&&&>;";0?;".% &&&&&4=#9(0"... < "/:;>A1C,D0-A$%;,%0-,-A%3,19:;3@:%03;:.1:F G *:1:/D:1F% < #H%;/:DA%3,%10; < >AD:E,3A%#H%;/:DA%3,%I0; G 6,09A/1F < #H%03;:.1%,3,%10; < *,E>/?0930%03;:.1%3,%10; G #A,C1F < #H%03;:.1%3,%JA9A/ < *,E>/?0930%03;:.1%3,%JA9A/ 789:;%&F%"/:2A;%( < K?B:-A%3,@IA9@?0%>9,3%E,%;A1CA>%;A%D1:2%C/:2% /:9,J0@ < 7,%*:1:/D:1%03%6,09A/1%@:%AB0C3A%3,@J:3:@?0% >9,3%1:.D:3B30%;A1CA> G L0-,-A%1:9:.J0@%3,%*:1:/D:1%03%6,09A/1 < L,@IA9@?0%;A1CA>%;A%#A,C1%@:%AB0C3A%/,E>/?0930% 03;:.1%3,%I0;$%.0%1:%M@:-,%E%8 '(9(07:0;$: < #H%03;:.1%3,%JA9A/%1:%CM;0%M@:-,%1%>A8A@:-% G 7,/,;0%M/:@:3A1C0%/:EM9C,C,%8,%AI;/N0-A%-:;% -AN30-0%>9,30 789:;%&F%"/:2A;%& G F1(0=2#&19=*&G=&G)*=*H(&0;9='#H( G I(/9;H&?";&J(K*;&*(+0=*H;&0;9='#H;& < L';*#+#&H;&1(+0;2*(&?";&*="9;$*H;&"+#A;E G I0;/9;$&>;";0?;"&6&<(=+" G I0;/9;$&>;";0?;"&6&4=#9(0" G I0;/9;$&4=#9(0"&6&<(=+" G I0;/9;$&4=#9(0"&6&>;";0?;" G <M&$("+(1&$(&<(=+"&6&4=#9(0" G >=G15#*$;A"&$(&<(=+"&6&4=#9(0" G <M&$("+(1&$(&<(=+"&6&>;";0?;" G >=G105#*$;A"&$(&<(=+"&6&>;";0?;"

115 789:;%&<%"/:2=;%& > F ;=%3=@/,3A:%/:9,D0A: >!"#$%&'(%#)*+",-#.#/(-(%0(-12 F 3"$%4&56&#&67(8-#7+#*+",-#)9+5+%1#.)0:6;<"68"#<#&67(8-+'1#*=# &67(8-#<"#>&7#6"#/(-(%0(- >?+#>+#0(%@(,6+#<(5+#7+>(%#$5"6 >!(#+>-,"@"#%"<$%;&67(8-#<"#>&7#6"#/(-(%0(- F /"<$%4&56&#&67(8-#7+#*+",-#)9+5+%1##.)-,&8#<#<5&0"6@('1#*=# &67(8-#<"#>&7#6"#/(-(%0(- > /(<A5,",#@(#-+%,&%"6#$+#>&7 > B5"6#<"7%C&'+#<"%"7&#A%(@(6+-,&#%(<A5,","#)D(#6&#9(6(@4(:"1 > B%(@46@&#$5"6#)0:6;<"68"#<#&67(8-+'1#6(>&#<"7%C"5&E#D(#>&#>&5#,"#9(6(@4&F 789:;%&<%"/:2=;%H > I1,.%B9,3$%.0%A:%C09%3,/:A:3%?%B/:2=;J%& F G+7"'+#$%(+-,"5+#%(5"9&@+#8+,#6+,%"6@+#%(5"9&@+; F B%(:5(7"'+#-$(,#0-(#'+C6(#"5:+%&,'(#&6#<"#0-"8# "5:+%&,('#0-(#'+C6(#'(,+7(#7+-,+$"#7+#6+,%"6@(# %(5"9&@(; > B+:5(@'+#-&#$%&'(%E#8+#7+7"'+#%(5"9&@+#H"&5+%-#8# +$,&'"56('#$5"6A#<"#'6+C&9+#%(5"9&@#I*+",-E/(-(%0(-J; 45'+-#-#0'6"(7*8!"#$%&'()*+, ("-./0/% &'()#!"#"$%"# *(+,'$# 45'+-#-#0'6"(7*8 12-'()*+,-("-,') 12-'()*+,-("-3') I83:E;:3:%B=0E?:;C: > I83:E;:3%C9=.%1:%=B@0-0E0/,% 3:=;?013=%03%EJ3,3A,%3K@:/0D,%1:% 3,;%@:-%C9=.=-%B/:?:/0%.=@%3,;% B=8=A:-%1:9:.D0A:+% > 7J3,3A0%C9=.%A:%=B@0-0E0/,3%1%D:3=% L.90D,3A,M%?83:E;:3:8,%C9=.,%.=@% NJ3.D0A=+% > O-B90D0@3,%J/:A:3=1@%?83:E;:302% C9=.=?%=-:AJA:%B/:89:;%3:.,@:/02% ;=C/02%1@/,@:80A+% >!"#$%&'(&)(*&$)+,&$'&,-.)/&) 0#1#2,")("3-&)"10#4#$#*.-"5) HKLKM?##N;'&'( O/PN##N+%6"%@&#N QRK/K#KSTH?H#!"#$#%&''( ')*+,''*-.-/01234-'* '56#*#''*7839:;<=' '>?@'*7A39:,7A39B #U:6(<7(6#>5+8#<"#+$,&';2 #HKLKM?##V #O/PN##/(<(%0"9&@(#/ #QRK/K##/;5&7WXYZ# #####[!G#N;'&7W#.CD70/-97# K80&0"5(6,6"#$;#>%(<#0:6(<7;$;2 HKLKM?##N;N&'( O/PN#N+%6"%@&#NE#/(<#/ QRK/K##N;'&7W/;'&7# ###[!G#/;5&7WXYZ "=?E:@:. >!B@0-0E,D0A,%B=0E?:;C%A:%B=-:-C3=%=B/,?09=% /:9,D0A1.:8,%6P"#+% > "=@/:C3=%A:%B=E3,@0%=B@0-0E,D0A=$%;,%C0%9,2.=%/,EJ-:90%?B90?%3,Q/@=?,3A,%B=;,@.=?3:%C,E:%3,%0E?,A,3A:% ;:9=?3:%=C/:-:30@?:%,B90.,D0A:+% > 4?,%;:9,%=B@0-0E,D0A:%B=0E?:;C<%! R,S@:?,3A:%,9@:/3,@0?302%B9,3=?+ > O1.,930%B/=1@=/%A:%B=@/:C3=%E-,3AS,@0<%9:?=KJ1-:/A:30%B9,30+!!D:30@0%A:%B=@/:C3=%?1,.%B9,3+ > I:90.=1@%/:EJ9@,@,%T%D:3,%B9,3,%?1,.:8,%?=E90SQ,+% > 63-72,#)1.*.4&0*#<%1@,@01@0.:$%03;:.10$%0-B9:-:3@,D0A:%=B:/,D0A%*U+

116 "789:;:. < C/0F,.78,3:-%8/1;3:-%/:>D+ < <

117 1. Naloga Za podatkovno bazo letalske družbe (glej skico pri vajah) zapiši odgovore na naslednja vprašanja s povpraševalnim jezikom SQL. Pri tem poskusite odgovor optimizirati ali s spreminjanjem SQL stavkov ali s smiselno uporabo indeksov. Narišite še drevo poizvedb in poskušajte različne SQL stavke pognati v phpmyadmin z ukazom EXPLAIN. Za vsak odgovor si oglejte razlago njegovega SQL stavka, ki jo vrne mysql (phpmyadmin) a. Poišči imena in priimke pilotov, ki so pilotirali vsaj eno letalo s kapaciteto večjo od 200 sedežev. b. Poišči vse letalske družbe, ki imajo v lasti več kot 20 letal. c. Poišči vse stevardese, ki so letela pod vodstvom pilota IdP=50. d. Poišči naziv letalske družbe, ki ima trenutno največje število letal. e. Poišči rezervacije (IdR), katerih cena je višja od 300 in se nanašajo na letala, katerih oznaka tipa letal je 'DC9' ali 'DC8'. f. Poišči vse rezervacije (IdR), katerih cena je višja od 300 in se nanašajo na letala - pri katerih oznaka tipa letal je 'DC9' ali 'DC8' in - in ki so jih pilotirali piloti zaposleni pri letalski družbi v Sloveniji. g. Poišči nazive vseh letališč, na katerih so že pristale stevardese, zaposlene pri letalskih družba iz Slovenije. 2. Naloga Za podatlnovno bazo naftne družbe (glej Vaje02) zapiši odgovore na naslednja vprašanja s povpraševalnim jezkom SQL. Pri tem poskusi odogovor optimizirati ali s spreminjanjem samega SQL stavka poizvedbe ali s smiselno uporabo indeksov. Narišite še drevo poizvedb in poskušajte različne SQL stavke pognati v phpmyadmin z ukazom EXPLAIN. Za vsak odgovor si oglejte razlago njegovega SQL stavka, ki jo vrne mysql (phpmyadmin). a. Poišči imena in priimke šoferjev, ki so že vozii vsaj eno cistemo s kapacitao višjo od litrov. b. Poišči vse benzinske črpalke, ki imajo več kot 10 točilnih mest. c. Poišči vse zaposlene, ki trenutno delajo na bencinskii čpalkah z zalogo dizelskega goriva višjo od 5000 litrov. d. Poišči naziv bencinske črpalke, ki imajo trenutno najvišje število točilnih mest. e. Poišči vse dobave goriva (IdD), pri katerih je količina višja od litrov in vkljlčujejo cisterne proizvajalcev 'MAN' ali 'Iveco'. f. Poišči vse dobave goriva (IdD), pri katerih je količina višja od litrov in vključujejo cisterne: - proizvajalcev 'MAN' ali 'Iveco' in - ki so jih vozii kaznovani šoferji (tj. šoferji s številom kazni > 0) g. Poišči nazive vseh bencinskii črpalk, h katerim so naročeno gorivo pripeljali samo nekaznovani šoferji (tj. šoferji s številom kazni > 0).

118

119 Uvod Pregled upravljanja transakcij Iztok Savnik, FAMNIT Sočasno izvajanje uporabniških programov je ključno za dobre performanse SUPB.! Dostop do diska je pogost in relativno zamuden zato je pomembno, da je CPU konstantno zaposlen. Uporabniški program lahko izvrši več operacij nad podatki, vendar lahko dela le nad podatki, ki se preberejo/napišejo v bazo. Transakcija je abstrakten pogled SUPB na uporabniški program. Sekvenca ukazov za branje in pisanje. Sočasnost v SUPB Sočasnost v SUPB Uporabniki si pri delu s transakcijami lahko predstavljajo, da se vsaka transakcija izvaja posebaj.! Sočasnost doseže SUPB z izmenjevanjem akcij (branje/pisanje) večih transakcij.! Vsaka transakcija pusti podatkovno bazo v konsistentnem stanju, če je bila baza konsistentna ob začetku transakcije. SUPB zagotovi integritetne omejitve, ki so bile definirane v okviru tabel podatkovne baze. Razen integritetnih omejitev SUPB dejansko ne razume pomena podatkov. Problemi: Prekrivajoče transakcije. Akcije ene transakcije lahko vplivajo na izvajanje druge transakcije. Sistemske napake. Po sistemski napaki je potrebno zagotoviti konsistentno stanje podatkovne baze.

120 Atomičnost transakcij Stanje transakcij: Transakcija je lahko potrjena po izvršitvi akcij. Transakcija je lahko prekinjena (lahko jo prekini SUPB) po izvajanju neke akcije. Zelo pomembna lastnost, ki jo zagotavlja SUPB je atomičnost transakcije. Uporabnik lahko vidi transakcijo kot samostojno akcijo, ki se bodisi izvrši v celoti ali pa se ne izvrši. SUPB zapisuje vse akcije tako, da jih je mogoče izničiti pri prekinjeni transakciji. Lastnosti transakcij Konsistentnost Če se izvaja sama mora ohraniti konsistentnost podatkovne baze. Izolacija Transakcije so zaščitene pred vplivi drugih transakcij, ki se izvajajo hkrati. Trajnost Po izvršitvi potrditve transakcije se učinki ohranijo tudi v primeru sistemske napake. Primer Primer!"#$%&'"()*(+,%(-./0)/12*&*(3!"#$45!"# $%&'()))*+*,"--.)))$+$/"--)))%(0!1# D*(#/./02*&%E(+/()%(C"(F8(*:,/&/$/(6.%+(FG(/$*("C./-0"?(!!"#$%&'"()*(1/&()%($/H1"(:#"+*?( I%2*'"E(+/()%(/12*&%(6.%1.*,/&"(0/()$%+%;(0/;*0(3./:6".%+*-%,45!"# )*+*,"--.))) )))))$+$/"--)))!1# ))) )))))))))*+"2-34*.)) )$+"2-34$ " F"(&%(,(.%+<?(J/&(6/5!"# )*+*,"--.))) ))))) $+$/"--)))!1# ))) )))))))))*+"2-34*.)$+"2-34$ "!"#$%+(KL!=(0/(./:6".%+*-%,5!"# )56*7.)86*7.))) ))))) )))))))56$7.)86$7!1# ))) 56*7.)86*7.)56$7.)86$7

121 Razporejanje transakcij Zaporedna razporeditev: Razporeditev s katero se akcije dveh različnih transakcij ne prekrivajo. Ekvivalentna razporeditev: Za vsako stanje podatkovne baze je rezultat izvajanja (na množici objektov SUPB) prve razporeditve identičen rezultatu izvajanja druge razporeditve. Serializibilna razporeditev: Razporeditev akcij, ki je ekvivalentna neki zaporedni razporeditvi. Če transakcija zagotovi konsistenco potem tudi serializibilna razporeditev zagotovi konsistentnost Anomalije pri prekrivajočih transakcijah Branje nepotrjenih podatkov (WR konflikt, dirty reads ):!"#$ %&'()$*&'()$$$ $$$$$$$$$$$$$$$%&+()$*&+()$',-./!0# %&'()$*&'()$1 Neponovljivo branje (RW konflikt):!"# %&'()$$ $$$$$ $$$%&'()$*&'()$1!0# %&'()$*&'()$1 podatkovne baze. Anomalije Kontrola sočasnosti z zaklepanjem Prepis nepotrjenih podatkov (WW konflikt):!"# *&'()$$ $$$$*&+()$1!0# *&'()$*&+()$1 Dosledno dvo-fazno zaklepanje (Dosledno 2FZ):! Vsaka Xact mora pridobiti S (deljen) zaklep na objektu pred branjem in X (ekskluzivni) zaklep na objektu pred pisanjem.! Vsi zaklepi transakcije so sproščeni na koncu transakcije. " Nedosledno 2FZ: Sprosti zaklenjene objekte kadarkoli, vendar po sprostitvi istih objektov ni moč ponovno zakleniti. Če Xact X zaklene nek objekt potem ne more nobena druga transakcija zakleniti istega objekta (S in X).

122 Kontrola sočasnosti z zaklepanjem Dosledno 2FZ: Dovoli samo serializibilne razporeditve. Poenostavi prekinitev transakcije. Nedosledeno 2FZ: Zagotovi samo serializibilne razporeditve. Zahteva bolj kompleksno proceduro za prekinitev transakcije. Prekinitev transakcije Če je transakcija Ti prekinjena potem morajo biti vse njene akcije izničene. Ne samo to; če Tj bere objekte, ki jih je napisala Ti, potem mora biti prekinjena tudi Tj! Večina sistemov se izogne kaskadnim prekinitvam s sprostitvijo zaklenjenih objektov tik pred potrditvijo.! Ti popravi objekt; Tj ga lahko prebere šele po potrditvi Ti. SUPB zapisuje kompleten dnevnik vseh popravkov. Prekinjene transakcije je mogoče izničiti. Isti mehanizem se uporablja za vzpostavitev konsistentnega stanja po sistemski napaki. Dnevnik (Log) Naslednje akcije se zapisujejo v dnevnik:! Ti zapiše objekt: stara vrednost in nova vrednost. Zapis dnevnika se mora zapisati na disk pred podatki!! Ti potrdi/prekine: zapis dnevnika, ki zabeleži akcijo. Zapisi dnevnika so med seboj povezani z Xact ID. Enostavno je izničiti specifično Xact. Dnevnik se pogosto podvoji in arhivira na stabilni medij Vse aktivnosti nad dnevnikom (kot tudi aktivnosti sočasnega izvajanja npr. zaklepanje, preprečevanje smrtnega objema, itd.) izvaja SUPB transparentno. Vzpostavitev konsistentnega stanja po sistemski napaki Algoritem Aries ima tri faze: 1. Analiza:! Pregled dnevnikov od zadnje fiksne točke.! Algoritem pregleduje naprej po dnevniku.! Identifikacija vseh Xacts, ki so bile aktivne v času sistemske napake.! Identifikacija vseh umazanih strani v času sistemske napake.

123 Algoritem Aries 2. ponovitev akcij (Redo):! Ponovi vse popravke umazanih strani.! Zagotovi, da so vsi popravki zapisani v dnevniku dejansko narejeni. 3. restavracija starega stanja (Undo):! Vsi popravki, ki so bili aktivni v času sistemske napake se izničijo; restavrira se staro stanje.! Algoritem pregleduje nazaj po dnevniku.! Paziti je potrebno na sistemske napake med procesom vzpostavljanja konsistentnega stanja (recovery). Pregled Med najpomembnejšimi funkcijami SUPB: Kontrola sočasnega izvajanja. Vzpostavitev konsistentnega stanja po sistemski napaki. Uporabniki ne vedo za sočasno izvajanje.! Sistem sam vstavi kodo za zaklepanje/odklepanje objektov.! Sistem razporedi akcije različnih transakcij tako, da zagotovi rezultat ekvivalenten izvajanju zaporedne razporeditve transakcij (ena za drugo). Pregled Dnevnik se uporablja za vzpostavitev začetnega stanja po: prekinitvi transakcije ali Za vzpostavitev konsistentnega stanja po sistemski napaki.. " Konsistentno stanje: Vidni so samo učinki potrjenih Xact.

124 Transakcije PREMALO NALOG, DODAJ ŠE 16.3 (str 220), 16.6 isolation-levels and two access-modes, 1. Transakcija T1 ima naslednjo razporeditev nad objektoma A in B baze podatkov: R(A), W(A), R(B), W(B) a. Podajte primer transakcije T2, ki bi, pognana vzporedno s transakcijo T1 lahko privedla do konflikta. Predpostavimo, da nimamo nobene kotrole vzporednosti. T1 T2 a. INSERT INTO Kvadrati VALUES (4); b. SELECT * FROM Kvadrati; c. INSERT INTO Kvadrati VALUES (9); d. INSERT INTO Kvadrati VALUES (16); e. SELECT * FROM Kvadrati; f. COMMIT; g. SELECT * FROM Kvadrati; h. SELECT * FROM Kvadrati; i. COMMIT; j. SELECT * FROM Kvadrati; Kako bi rešili vse zaplete? b. Kako bi uporaba striktnega 2 faznega zaklepanja preprečila konfliktno situacijo iz prejšnjega primera. Ponovno napišite izvedbo. 2. Imamo naslednji transakciji s pripadajočima razporedoma T1: R(A) R(B) W(A) T2: R(A) R(B) W(A) W(B) a. Podajte razpored transakcij T1 in T2, ki privede do WR konflikta. b. Podajte razpored transakcij T1 in T2, ki privede do RW konflikta. c. Podajte razpored transakcij T1 in T2, ki privede do WW konflikta. d. Za vsako od podanih razporedov, pokažite kako bi strikten 2FZ to preprečil. 3. Za naslednje razporede 3eh transakcij povejte ali med njimi prihaja do konfliktov. T1 R(A) W(A) C T2 W(A) C T3 R(A) C a. Če ja, jih opišite in razložite kako bi z 2 faznim zaklepanjem rešili te konflikte. b. Kam bi morali potrditev T3 da bi med T2 in T3 prišlo do RW konflikta? 4. Imejmo naslednji dve transakciji: T1: R(A), R(B), if A = 0 then B:=B+1, W(B) T2: R(B), R(A), if B = 0 then A:=A+1, W(A) Konsistentnost baze je zagotovljena z A = 0 B = 0 z začetnimi vrednostimi A = B = 0. a. Prikaži, da po obeh možnih zaporednih izvajanjih baza ohrani konsistentnost. b. Podajte primer, ko bi s sočasnim izvajanjem prišlo do nekonsistentnosti baze c. A obstaja primer sočasnega izvajanja, ki bi ohranil konsistenčnost? 5. Kakšni so izhodi vseh select stavkov?

125

126 %&AE$%<,=8/>?3,%F/>?:G0;819%03%%%%% %8H38;:G0; /8:,%;<=8/>?38190 %E,=8/>?30%/,<=8/>?0! %I/,J%8?; ! %4;8KJ,<38%<,.:>=,3G>%! %E,=8/>?3,%F/>?:G0;819%=8%8.302 L/>?:G0;819%.83J:0.98; M 4;,%/,<=8/>?,%19,%.83J:0.938%>.;0;,:>393,$%N>O " P1>HFG9,%>3,.>%,.Q0G>%3,%01902%9/,31,.Q0G,2 " P1,.%=,/%.83J:0.9302%,.Q0G%G>%F/>G>3%3,%0190%3,N03 M *,<=8/>?%6%G>%<,=8/>?38%F/>?:G0;%=8%.83J:0.902$% N>%G>%6%.83J:0.938%>.;0;,:>39>3%3>.>-% <,=8/>?3>-%/,<=8/>?F+%!"#$%&'()"*+,-"#$.) /')0')+*,-"#$0-) 1"#$%&'(),-)/-02%'/3'45!"#$%&'( $$)&'(!*# $$$)&'(!+# $$$$$$$$$$$$$)&'( "/0->/ M *,<=8/>?$%.0%30%F/>?:G0;%=8%.83J:0.902O!"# $%&'(,$)&'(,$$$ $$$$$ $$$$$$$%&-(,$)&-(!*# $$$ %&'(,$)&'(,$%&-(,$)&-( '!"!* -!"#$%&'()*+&*,) M R0.>:%;%S/,JF%8?./0G>%=/8H:>-+%D(%G>%8?;013,%8?% D&$%03%8H/,938+ 6*70#&#)8-9-)('$#%'.)$*)&#)1"#$%&'(),-)-/0'45

127 7/,8%9:;01391<0 = "9;EA,;,%9:%!"#$%#!&'#()#*+,"&"#!"#-.)$"#+%/0."+1/*# *+,"&*#!&2 = HA/E.>%*,AI9/E:0<E;%JE%A,I9/E:39%K/E:BJ0;,%I9%.938B0.<02$%DE%JE%L/,8%9:;01391<0%,G0.B0DE3+% "/ELBE:>%6</0.<E3%&MN = "/9<9.9B%1</0.<3EL,%&%8,A3EL,%A,.BEI,3J,% O6</0.<E3%&MNP>! Q1,.,%F,G<%-9/,%A,.BE30<0%6%O:EBJE39P%9RJE.<%I/E:% R/,3JE-%03%-9/,%A,.BE30<0%F%OE.1.BKA0;39P%9RJE.<% I/E:%I01,3JE-+! Q10%A,.BEI0$%.0%J02%:/S0J9%</,31,.G0JE%1E%1I/91<0J9$%.9%1E% </,31,.G0JE%A,.BJKD0J9+! TE%3E.,%F,G<%:/S0%F%A,.BEI%3,%3E.E-%9RJE.<K$% I9<E-%39RE3,%:/KL,%</,31,.G0J,%3E%-9/E%:9R0<0% A,.BEI,%O6%,B0%FP%3,%<E-%9RJE.<K+ = 6</0.<30%&MN%I/9<9.9B%:9;9BJKJE%1,-9%/,AI9/E:E%.,<E/02%L/,8%9:;01391<0%JE%,G0.B0DE3+% 4;9U8,A39%A,.BEI,3JE%O&MNP = "/9<9.9B%:;9U8,A3EL,%A,.BEI,3J,>! Q1,.,%F,G<%-9/,%I/0:9R0<0%6%A,.BEI%9RJE.<,%I/E:% R/,3JE-$%03%F%A,.BEI%I/E:%I01,3JE-+! V/,31,.G0J,%3E%-9/E%A,2<E;,<0%:9:,<302%A,.BEI9;%I9% <E-$%.9%1I/91<0%A,.BEIE+! TE%F,G<%:/S0%F%A,.BEI%9RJE.<,%I9<E-%39RE3,%:/KL,% F,G<%3E%-9/E%A,.BE30<0%9RJE.<,+% " M,A,%WC0/JE3J,X%03%W./DE3J,W N,I9/E:3,%K/E:BJ0;91<%I9%9.302 = *,AI9/E:,%6(%03%6&%1<,%WE.;0;,BE3<3,%I9%9.302X% DE>! TE%V0%I/ERE/E%A,DE<39%;/E:391<%Y%;%6($%I9<E-%V0%% I/ERE/E%A,DE<39%;/E:391<%Y%;%<K:0%6&! TE%V0%I/ERE/E%;/E:391<%Y$%.0%J9%3,I0CE%VJ%;%6($%I9<E-%V0% I/ERE/E%;/E:391<%Y$%.0%J9%3,I0CE%VJ%<K:0%;%6&! TE%V0%3,I0CE%.93D39%;/E:391<%Y%;%6($%I9<E-%V0%%3,I0CE%.93D39%;/E:391<%Y%<K:0%;%6&!"#$%&'( $$)&'(!*# $$$)&'(!+# $$$$$$$$$$$$$)&'(!"#$%&'(,)&'(!*# $$$$$$$$$$$$$$)&'(!+#$$ $$$$$$$$$$$$$$$$$$$$$)&'(

128 %78/,9:;,3;<%=,.:<8,3;, J08%=,.:<8,%K6%,:0%LM! A8</,H0;,+% > C<:;<3%=,.:<8%:,2.A%18/<-<30;A%=,.:<8%9% <.1.:B=09<3+% > P 90/A9+% > P P "/<8/<O<9,3;<%1-/@3<R,%AE;<-,!C./09,3;<%1-/@3<R,%AE;<-, > I<:0%=,.:<8$%.0%R,%C/I0%J;+%49<%-AI30%8A:0@0.0F%! 8AO,.,%3,%J;U%10H</%J0%8/<.03<%0=9,;,3;<+%! 8/<.03<%0=9,;,3;<U%10H</%J0%8AO,.,+% > =,RA@A90@0$%C,%0-,%A/0R03,:3A%O,1A93A%A=3,.A+% > N/<0/,;%O,.,:30%R/,VF! 18/ADO,3;<%=,.:<8,+% > "</0AC0O3A%8/<9</0%,:0%0-,%O,.,:30%R/,V%H0.:<+%

129 !7./08,39:%1-/;3:<,%=>9:-, %%% %%%DA#C$EA#C %%%%6AFC$%*AFC %%%%%%%DA#C L M,3;=-1.0%K/=>J:-% L N,.J:K,39:%#O%7/:8:1 L P:Q308=91.=%I,.J:K,39:!"!#!"!#!$!%!%!% L L 403,-0Q3:%K=7,;.=83:%>,I: R:%1K/=1;0-=%K/:7K=1;,8.=$%7,%9:%"#%S0.13,%.=J:.T09,% =>9:.;=8%K=;:-%;U70%1;/0.;3=%&MN%3:%I,<=;=80%1:/0,J0I,>0J3=1;0? K=0XQ:%3,91;,/:9X:<,%-=/3,/9,%A3K/+$%"&'%W%Y(C+ V Z,K/:9$%@&%81;,80%3=8:<,%-=/3,/9,[%!"#$%&%W%($%"&'%W%\]+ 3,/:70%T=--0;+ 03%K=0XQ:%3,91;,/:9X:<,%A3K/+$%"&'%W%]GC+ Z:.=3101;:3;3=%1;,39:%"#$%Q:%9:%@(%_.=/:.;3,`a "/=>J:- T:J=;3=%-3=b0T=%-=/3,/9:8%I,%.,;:/:%8:J9,%%!"#$%&%W%(+ V "/:7K=1;,8.,%8:J9,%1,-=$%Q:%1:%3:%7=7,9,%3=802% I,K01=8%-=/3,/9:8%-:7;:-$%.=%1:%@(%0I8,9,a V "=;/:>U9:-=%3:.%-:2,30I:-$%.0%;=%I,<=;=80+%% AN,.J:K,39:%037:.1=8%03%K/:70.,;=8+C L "/0-:/%K=.,b:$%7,%I,K=/:73,%U/:7J908=1;%K=%.=3SJ0.;02%<,/,3;0/,%U/:7J908=1;%1,-=$%Q:%9:% -3=b0T,%=>9:.;=8%S0.13,a

130 7,.89:,3;9% 03<9.1, $%&'(!"#!"#" 7,.89:,3;9%:/9<0.,A?D = >9%0-,-?%03<9.1%@,%,A/0BCA%!"#$%&%@%,8A9/3,A0D?% E&F$%:?A9-%B0%G(%-?/,8,%@,.8930A0%03<9.139% 1A/,30%@%03< %D:010%@%!"#$%&%H%(+ I >9%30%@,:01?D%@%!"#$%&'H%($%:?A9-%-?/,%G(%@,.8930A0% 03<9.139%1A/,30%.;9/%B0%B080%A,.J30%:?<,A.0$%K9%B0%?B1A,;,80L = = 7,.89:%D192%@,:01?D$%.0%C1A/9@,;?%:?M?;C% 8?M0K39M,%:/9<0.,A,$%3:/+%"&(')'*+,"-"!.+ = = I P,;%;9%:/9<0.,A%D%:/0-9/C%-?/3,/;9DQ = R%1:8?J39-%D19BC;9%@,.89:,3;9%:/9<0.,A?D% D980.?%<?<,A39M,%<98,%@,/,<0%@,.89:,3;,+ %7,.89:,3;9%D%#S%</9D9102 = P,.?%8,2.?%CK03.?D0A?%@,.8939-?%<?8?K93%801A% </9D91,Q I 5-M$%39%@,-93;C;%A9M,%@%D9K30D?;1.0-%@,.89:,3;9-L = T3,%/9J0A9DU%0M3?/0/,;%1A/C.AC/?%</9D91,V%@,.8930% 1A/,30%-9<%:?A?D,3;9-%:?%</9D91CV%C:?/,B8;,;%&W7+ = XK03.?D0A?1A%A9M,%,8M?/0A-,%;9%18,B,L I P?/93%</9D91,%03%D0J;0%30D?;0%</9D91,%:?1A,39;?%?@.?%M/8?$%.9/%19%D1,.%<?1A?:%@,K39%:/0%.?/93C+% 4D9%.?/01A30%?:,@.0 (FR0J;0%30D?;0%</9D91,%1,-?%C1-9/;,;?%01.,3;9% 801A?D%E1A/,30F+% &F"/0%D1A,D8;,3;C%-?/,;?%B0A0%D1,%D?@80JK,%?<%.?/93,%<?%1:/9-93;939M,%D?@80JK,%@,.893;93,% 3,%Y%3,K03$%1,-?%D%:/0-9/C$%<,%8,2.?%/,@O9:% :/?</9%3,D@M?/%?<%1:/9-93;939M,%801A,+% =!:,@.0%8,2.?%C:?/,B0-?%:/0%@,13?D0%CK03.?D0A02%

131 73819,:;3%,<=8/09;-%>,% B :;A38%>,.<;30%89/8.,%>%6%>,.<;?8-%03%8A.<;30% 19,/G,+% B H19,:0)#/0G0D%I,E30%?/0%.8/;3F%03%?89F@%3,:>A8<% 9,.8$%A,%?/0A8J0G%K%>,.<;?;%?8%?89/;J0+%L8%@;% 89/8.%>,.<;3@;3%?/;:;/0$%E;%@;%:,/;3D M N;%@;%89/8.%:,/;3%1?/8190%:1;%>,.<;?;%3,%19,/G02+% B H,/38%:8><0GE;D%%H8><0GE;$%.0%1;%1?/;-;30% 1?/;-;-J;%3;%J8%G0/0<8%3,:>=8/+% M H19,:<@,3@;D%%H8><0GE;%30%?8<38+ M #/01,3@;D%%H8><0GE;%30%?8<%?/,>38+ #8<@G0%,<=8/09;-%>,%>,.<;?,3@;% A/;:;1,% B C1.,3@;D%%L89%?/;@+ B H19,:<@,3@;)#/01,3@;D%% M "819,:0%>,.<;?;%.89%:%?/0-;/F%01.,3@,$%?/0A;% A8%<019,%03%?819,:0%K%>,.<;?%3,%<019F+ M N;%<019%30%:,/;3$%1?/8190%:1;%>,.<;?;%03%?838:38%?8O;30%K,P9%1%?/;@G3@0-%?/898.8<8-% >,%H19,:<@,3@;)#/01,3@;+% B 6?;.F<0/,$%A,%1;%J8%1?/;-;30<%1,-8%<019 M N;%3;%18%6%>,.<;?0%?/0%?/:;-%?/;28AF%8A:;E30+ M H%?/,.10%A8J0-8%J8<@G0%,<=8/09;-%8A%?/;@G3@;=,+%!"#$% "/0-;/ *+. *, *+ &,- ' ( )! ",/ 00 &'#$()* +,--./0'%1$-234 5,--6#)7)-234 2,--8/9':)-;<4 ;,--8/9':)-5<4 # $ % **. *,. *0.,-.,1.,/ !"#$% "/0-;/ *+. *, *+ &,- ' ( )! ",/ 00 &'#$()* +,--6#)7)-234 5,--8/9':)-5<4 ;,--8/9':)-;<4 <,--8/9':)-;<4= >"9$?-;@4-- # $ % **. *,. *0.,-.,1.,/

132 78%9:;<=0%,;>:/0?8- E1?,F;<,3<8)#/01,3<8B% G HD:/,90%:/>03,;83%D/:?:.:;%I,% F1?,F;<,3<8)9/01,3<8%?:J,%D:1?,F0%AK%I,.;8D8% 3,-81?:%K%I,.;8D:F+% G C:%<8%;01?%I,.;83<83$%D/8F8J0%F18%AK%I,.;8D8%F%K% "/:?:.:;%:JLI>:/,<L3,FIJ:;%I-,3<=,%-:P3:1?0%I,% 1-/?30%%:9<8-+%!"#$%&#'(')*+,#(-,)./)0(12&+,3)0)*+,#(-,) E8/<8?3:1?$%J,%/81%D:?/89O<8-:%I,.;8D%?0D,%K% Q09/0J83%D/01?:DB ",69(3$):)0(12&+ ",69(3$):./)0(12&+ ",69(3$)/)0(12&+ R8P.:%18%<8%:J;:N0?0%.,?8/0%30F:%I,.;8D,?0% ":J,?.:F30%W.:3?8<38/<0X%1:%F>38IJ830B% 36&-*'& ",=(91,35()-(0( <(-&2& :9#(5$ *8=0?8FB%U:F,%1?,3<,%I,.;8D,3<,$% 4:F:;0-:%K,Y?%I,.;8D,?0%F1,.%30F: G HD:/,9,%D/:?:.:;,$%.0%F189O<8%W3,-8/8X%I,.;8D,3<,B! "#&=)0(12&+,%),-'&19()%,#() /(>9)+,69(3$9$)?5(%&#,@) 0(12&+()5()36&A)5(62&=5$1$A7 B B "#$),=12&+(5'*)C#&%,),=) 6+&>$D$45&C()+#,9$)6+2,E5&%)!97'7F),=G6+,=('G5(30C,#87 :./)5(4$5H)I,9):)J)./)61*+('7) ;(+$6$

133 A 71,.,%B,C>%@,938%0@%.;/83,%208/,/20<8+% A 4,%D0%E;D0?0%6%,?0%F6%@,.?8=%:;@?0G9,%-;/,-;% 0-8>0%F6%,?0%%FB%3,%1>,/G02+% H I,<%98%B,C>%E/J0%6FB%3,%1>,/GKL%6%3,%1>,/GKL A 4,%D0%E;D0?0%B%,?0%FB%,?0%6FB%@,.?8=%:;@?0G9,% -;/,-;%0-8>0%FB%,?0%6FB%3,%1>,/G02+% A 5;/,-;%1=/;G9,>0%@,.?8=8%;E%1=;E,<%3,:@M;/+%!"#$#%#&'()'%#")%$)*'%)"'()')%+,+-&)*$)*'."#$#%#&/0' %,'1)&-'1,")%$*#'2'&,3$,4 "/0-8/0 A N(%=/8M?8E,%*%03%=;=/,:0%38.,<%3O>8/0CP H :%B%@,.?8=%3O>8/0C+% A N&%K=;/,D?<,%03E8.1%@,%D/,3<8%E8?,%*P H N&%E;D0%F6%@,.?8=%3,%*%03%1%>8-%%%%%%%%%%%%%%%%%%%%%%%%% E;D0%6%@,.?8=%3,%3O>8/0C,2%*+% A NQ%=/8D8/8%C8?;>83%*P H NQ%E;D0%6%3,%*+% H RSF$%NQ%D0%18%?,2.;%;D3,G,?,%%.;>%%%%%%%%%%%%%%%%%%%%%%%%%%%%% N&T%%K=;/,D,%?;C.%81C,?,>0;3%E,% D0%18%;E?;90?,%.,>8/8%3O>8/0C8+% %I;3>/;?,%:@=;/8E3;1>0%D/8@%%%%%%% %@,.?8=,3<, A!=>0-01>093,%.;3>/;?,%@,.?8=,3<, A I;3>/;?,%:@=;/8E3;1>0%1%9,1;:30-0%@3,9.,-0% UN0-81>,-=%VVW A 5K?>0:8/@0<1.,%.;3>/;?,%:@=;/8E3;1>0%1% 9,1;:30-0%@3,9.,-0%U5K?>0:8/10;3%N0-81>,-=% VVW%!=>0-01>093,%.;3>/;?,% :@=;/8E3;1>0 A X,.?8=,3<8%<8%.;3@8/:,>0:30%=/01>;=$%.0%=/8=/890%.;3Y?0.>8+%6?,D8%?,1>3;1>0P% H 4;E,>3,%.;E,%@,%@,.?8=,3<8+% H "/8:8/<,3<8)/8G8:,3<8%1-/>38M,%;D<8-,+% H X,10983;1>%@%@,.?8=0%@,%:18%=;M;1>;%K=;/,D?<838% ;D<8.>8+ A Z8%1;%.;3Y?0.>0%/8E.0%?,2.;%=/0E;D0-;%3,% :@=;/8E3;1>0%>,.;$%E,%38%@,.?8=,-;+% H [,-81>;%>8M,%=/8:8/0-;%.;3Y?0.>8%=/8E%0@:,<,3<8-% B,C>1%=;>/<8:,3<,+

134 A,BC1%0-,%C/0%D,E>F G *HI4F%%A,BC1%J/><>/>%0E%J;=+<,E>%K>3=,/% 3,/>=0%1J/>->-<>%3,%?;.,?30%.;J0L0% ;<L>.C;K+ G MINO4IPHF%%"/>K>/0%.;3D?0.C>+ G Q*OPHF%R,/>=0%?;.,?3>%.;J0L>%1J/>->-<% L,K3>+ $+',-,).,)/ (0.,1%/ $%&'( )(*(!""# "/>K>/0%J;9;L>$%.0%1;%E,=;1C30%E,%C;$%=,%1>%3>% M1,.,%A,BC%=;<0%38->/0S30%0=+ G A,BC%0=:L0%1>%J/0/>=0L;%3,%.;3B8%D,E>%#H*O$%C0.%J/>=% *>,=6>CVP0XF%%53;U0B,%;<L>.C;K$%.0%L02%J/><>/>% Q/0C>6>CVP0XF%%53;U0B,%;<L>.C;K$%.0%L02%1J/>->30%P0+ Y,%K1>%0%03%L%C,.;%=,%P0%Z%PL$%J/>K>/0%S>%1>%P0% E,.?L8S0%J/>=>3%PL%E,S3>+ Y,%K1>%0%03%L%C,.;%=,%P0%Z%PL$%J/>K>/0F G P0%E,.?L8S0%J/>=>3%PL%E,S3>%1%J01,?3;%D,E;%! G Q/0C>6>CVP0X%%%%%%%%%%%%*>,=6>CVPLX%%L>%J/,E3,+ #/! 2 3 #.! 2 3 #/! 2 3! 2 3!"#$%&$'()*)()$+,-./.0)1$'23.45)6$!"#$%#$'()'#7)$/.'#8)$%&6 #.

135 7819%: ; <,%=18%0%03%>%9,.?%@,%70%A%7>$%B/8=8/0%@,C D 70%E,.F>GH0%I/,F3?%J,E?%B/8@%7>%! D K/098689L70M%%%%%%%%%%%%*8,@689L7>M%%>8%B/,E3,%! D K/098689L70M%%%%%%%%%%%%K/098689L7>M%%>8%B/,E3,+!" $ % & $ % &!#!"#$%&$'()*)()$+,-./.0)1$'23.45)6$!"#$%#$'()'#7)$/.'#8)$%&6 NBF0.,O0>,%7819?=%(%P%&C%%<,B?/8@3,%% =,F0@,O0>, ; Q,F0@,O0>,%R,O9%7C%% 9."#3$:$4(,); <<$=$:$8)4$2>$?.@48$4A.4$@2--#44)3$.>4)($B)C#0D%E '$()*+,-.$$%8$#0$=$/)01 $$$"($F).3=)4D%E$32)8$#04)(8)@4$G(#4)=)4D%8E $$$ 2.+3$9."#3$:$>."8); $$$4 000"($9."#3$ #084.""$,'3.4)8;$<<$G(#4)$'A.8) $$$$$$$$$$$$$$H2--#4$%$405 $$$$$$$$$$$$$$$$$+67+$F)84.(4$% +3/0)(0-*"2"-,607+-2")3 <,B?/8@3,%%=,F0@,O0>,C%.?-839,/>0 ; NBF0O0/,%7819%&$%.>8/%7%0S/,%=F?S?%7>%03%=1,.,%R,O9% =%71%G19/8E,%70+ ; "/0/8>,3>8%R,O9%0@$%=,F0@,O0>,$%03%B01,F3,%J,E,%1?% E3?9/,>%./090H38%18.O0>8T D U0H%@/GS8S,%18%38%0E=,>,%=EB?/8@3?+ D V8%>8%B01,F3,%J,E,%@?FS,%B?98-%>8%9?%B/?IF8-+% ;!B90-0E,O0>,%L1,-?M%E,%I/,F38%R,O91C D U8%B?9/8IG>8-?%./090H38%18.O0>8%L.8/%30%B01,F38%J,E8M+ <,B?/8@3,%=,F0@,O0>, ; Q8H30=?>1.,%E,B?/8@3,%=,F0@,O0>,C% D Q,F0@0/,>%3,%=182%30=?>02$%3,%=1,.8-%30=?>G%=,F0@0/,3>,%7%3,@% B?@-3?W0O?%R,O91$%.0%1?%B?9/>830%LO?--0998@M%B?%#8S03L7M+ D 6,-?%E,@3>,%J,E,%-?/,%I090%E3?9/,>%./090H38%18.O0>8+ ; 69/,@,3>8C% D "?W830%19/,@,>?H?%R,O9%=%./090H30%18.O0>0%LTTM ; "/?19?/%E,%K/ C% D <,%=,F0@,O0>?%7>$%-?/,-?%0-890%K/ %E,%=18%70%.>8/%70%A% 7>%03%70%>8%,.90=3,$%.?%7>%E,H38+% D X,2.?%>8%=8H%9,.Y302%R,O91%03%F,2.?%E-,3>.,%B/?19?/,+% D Q,F0@,O0>,%7>%38%G1B8$%H8%E,298=,%-,3>.,>?H?%K/ D U0%B/?IF8-,$%H8%1?%R,O9%0@1%B/0/8>830%3,%E,H89.G%I/,F38% J,E8+%

136 "/789:-0%7;<0-01<0=3:%.73</79:% A 57/,%?,8:9:B0<0%>1:%,.<0>371<0%8/,3C,);01,3C,%>%% G 57/,%1:%./:0/,<0%03%1;/71<0<0%-37B0F:%;7%;7</:80+% A 57/,%;/:>:/0<0%.73H90.<:%;/:@%>,90@,F0C7%03%-7/,% 0?>,C,<0%>,90@0/,3,%;01,3C,%IIJ978,937KK+ G L/0<0=3,%1:.F0C,%9,2.7%?-,3CM,%>?;7/:@371<N G "01,3C:%OJ978,937P%9,2.7%/,?@/780%1.Q;.:%1</,30%;7% <,8:9,2%03%03@:.102+% A!;<0-01<0=3,%LR%;737>37%;7B:3:%E,F<1$%.0%1:%3:% >,90@0/,+% G 4:97%3,/:C:37%@7%<,./,<%C:%0?JQ89C:37S%;7</:8QC:%M:% =0M=:3C:+% II!;<0-01<0=:3KK%&TU A V,2.7%80%3,/:@090%<Q@0%19:@:=:W% G "71<,>0%6%?,.9:;:%.7<%780=,C37+ G X,/:@0%1;/:-:-8:%3,%;/0>,<302%.7;0C,2% 78C:.<7>+ G "/0@780%>1:%E%?,.9:;:%3,%.73FQ%E,F<$% 3,/:@0%;01,3C,%J978,93,%03%;7<:-%1;/71<0%?,.9:;:+% A U,%/,?90.7%7@%!;<0-01<0=3:%LR%>%;/0-:/Q%% LQ3JY* $%17%/:?Q9<,<0%<:%12:-:% 897.0/,3:%E,F<$%.0%=,.,C7%3,%?,.9:;+% G X0%>,90@,F0C:$%30%;737>3:J,%0?>,C,3C,%</,31,.F0C% Z-7@Q97%1-/<30%78C:-0[+ L73</79,%>?;7/:@371<0%1% =,17>30-0%B0J0 A!"#$%&%%"/0/:@0%>1,.:-Q%78C:.<Q%8/,930%=,17>30% B0J%Z*\6[%03%;01,930%=,17>30%B0J%ZD\6[$%;/0/:@0% >1,.0%E,F<%=,17>30%B0J%Z\6[%.7%1:%?,=3:W G ]:%C:%,.F0C,%,0%7@%E,F<%\0%>%.73H90.<Q%%?%,.F0C7%,C%7@%E,F<%\C$%03%\6Z\0[%^%\6Z\C[$% ;7<:-%1:%-7/,%,0%?J7@0<0%;/:@%,C+%%60F:/$% ;737>37%;7B:30%E,F<+ L7%E,F<%\%B:90%;/:8/,<0%78C:.<%!+++ A ]:%\6Z\[%^%D\6Z![$%;7<:-%C:%./M:3,%Q/:C:371<% =,17>302%B0J7>%\%3,1;/7<0%;01,9FQ%!+ G "/:.030%\%03%C7%;737>37%?,B:30%?%>:=C0-%\6+%%Z10F:/% 1;:<%3:80%Q1;:9,[ G "/0-:/C,C%Q;7/,87%\6%>%&"U%?,%0?7J08,3C:%1-/<30-% 78C:-7-+ A ]:%\6Z\[%_%D\6Z![W G 47>790%\%;/:8/,<0%!+ G *:1:<0/,C%*\6Z![%3,%-,`Z*\6Z![$%\6Z\[[ A 6;/:-:-8:%*\6Z![%78%8/,3CQ%1:%-7/,C7%?,;01,<0%3,%@01.N%% G \7%03%;737>30%?,J730%17%@7@,<37%@:97+

137 D E>%<6F<G%H%*<6F!G$%A8;>-%;8%./I0%J/>C>381;% K,18L302%=0M8L%<%3,1A/8;0%A01,?:J%!N%A/>.030%03% A838L38%@,=>30%<+ D E>%<6F<G%H%O<6F!G$%./I0%J/>C>381;%K,18L302%=0M8L% <%3,1A/8;0%A01,?:J%!+ P!"#$%&'#(#)*+&%,-#)*.%(+,#/))0%.-#),%"1#)+2-#.+.%$#) *.3&4%.%)*+&%-5%6)-+)*#4.373)*#)*#-#(-3$)8%2#-9)!:)) P ;+&%-59)!)&,3<+5#)<.92%) *+&%-5%=)7.38)($3&-+")7.%-5> P?#(#,5953)8%*#.3<-3)9.3<+4(3)-3 *%)49<+)9.3<+4(3)*#)1#-@,+14+">) D 60:>/$%Q8L8?0%<%@,A01,;0%!+!!"#!!!!!!!!!!!"$ %&'(!!!!!)&'(!!!*+,,-. )&'(!!!!! *+,,-. %5J?;0VL>/@0C1.,%.83;/8?,% L@A8/>Q381;0%1%K,18L30-0%=0M0 D A<35%/))W,C%A01,?:0%3,/>Q0C8%38L8%.8A0C8%->Q;>-%.8%B/,?:0%B>/>C8%1;,/8R 23'456! " &/:;<=/<; >;:?.@;! A*!,B@;C/,>( *'D85 48)D6E &F/G:;@H;!>;:?.@;I! C.!F,!JGKC,! =L,:GB<;!?G!B:GJM;N! >?902@-!20AB+!75<4+!<5208+C D E0AB+!3+!62+B-904-!<+B259!;-302@-!45!;+.9<-8+! ;-30485C! 783;/8?,%L@A8/>Q381;0% 03%8B38L?C0L81;! /0!102+3.!3+!,+145! !90:;+95<-.75= D 783;/8?,%L@A8/>Q381;0%1%K,18L30-0% =0M0%1>%Q,%A/0?,M8Q0;0%;,.8%Q,%Q8L8?0%1,-8% 8B38L?C0L>%/,@A8/>Q0;L>R P 62/,30%L1>%@,A01>%Q8.?>/%A01,?>:%3>%A8;/Q0% FA8A/,L0%;JQ0%O<6F!G%.8%C>%A01,3C>%Q8L8?C>38+G P #?8.0/,C%B/,?:>%<%F.C>/%<6F<G%S%O<6F!GG%Q8.?>/% A01,?>:%!%3>%A8;/Q0+ D "8Q8B38%A01,?:>-$%.0%Q/=0C8%9%@,.?>A%Q8%A8;/Q0;L>$% L>3Q,/%I>%L>Q38%30%@,/>1%&TU+ 5J?;0VL>/@0C1.,%.83;/8?,% L@A8/>Q381;0%F&G!!"#!!!!!!!!!"$ %&'(!!!!!)&'(!!!!!%&*(!!+,--./ D X1,.,%L>/@0C,%8BC>.;,%0-,%<6%A01,?:,%.8;%O<6% 03%<6%9,:;%B/,?:,$%.0%C>%@,Q3C0%A/>B/,?%;8%L>/@0C8%.8;%*<6+ D X>/@0C>%18%A8L>@,3>%3,@,CN%8AJ1;0-8%?,2.8% L>/@0C>$%.0%18%YA/>1;,/>Z+ D X1,.,%9,:;%1>%.?,10[0:0/,%.8;%#/,?>:%,?0%"01,?>:+ P "01,?>:%?,2.8%3,A0I>%.,.I>3%8BC>.;N%#/,?>:%3>%B8% 30.8?0+ P 9,:;%A8L>%,?0%C>%#/,?>:$%.8%1>%@,K3>%0@L,C,;+

138 #/,789%:,9; )!*%+,-'#,&' "#$%%%%%%%%%%%%%%%%%%%%%%%&'(! < D "?0EF0%!"#!$%&#'$(%&)*+#$%G%HI6%J%I6KIL+% D =,F30%1%;/83M;3?%>8/G0A?%03%18%B/8-0.,A% 3,G,A%B?%18G3,-M+% < N8%B/8OB?1;,>7A,-?$%O,%3,AO8-?%38.?%>8/G0A?% G,P3,;0+ D Q,2.?%@7?.0/,%O?.78/%B01,789%B/,>8%>8/G0A8%38% B?;/O0+ "01,789%:,9; < =,%@/,3A8%?@A8.;,%MB?/,@0%B/?;?.?7%@/,79,+% < =,%G,B01?>,3A8%?@A8.;,C D "?0EF0%3,A3?>8AE?%>8/G0A?%R%%G%HI6%J%I6KIL+% D N8%*I6KRL%J%I6KIL$%B?;8-%I%3,/8O0%.?B0A?%% SR%>8/G0A8%R$%1%.,G,798-%3,%R%%03%HI6KSRL% T%I6KIL$%*I6KSRL%T%I6KIL+%% D R18%G,B01,3?%A8%2/,3A83?%O?.78/%30%B?;/A83?U%?1;,78%:,9;1%7,2.?%>0O0A?%>/8O3?1;0%I6%>83O,/% 38%-?/8%B/8@/,;0%>8/G0A8%SR+ D 6098/$%G,>/30%B01,3A8+ "#$%%%%%%%%%%%%%%%%%%%%%%%&'( )!*./ / 0!*1/2! "?OB?/,%;/,31,.90A,-%>%6VQWX& < R1,.,%;/,31,.90A,%0-,%3,F03%O?1;?B,$% B/8O>0O83?%>870.?1;$%03%30>?%0G?7,90A8+% ;2"('/&"60<$=$( :&%/, -$'1 56%$.$'/'*($0 -$'1 89'6/"40 8%"*($4 -$'10567"44&//$1 +',*$ +',*$ +',*$ -$'103"44&//$1!" +',*$ +',*$ -$.$'/'*($0-$'12!"!" +',*$ #$%&'(&)'*($!"!"!"

139 e. Kontrola vzporednosti s časovnimi žigi 1. Transakcija T1 in T2 imata naslednji razporeditvi nad objektoma A in B baze podatkov: f. Multi-verzijska kontrola vzporednosti s časovnimi žigi T1: R(A), W(A), R(B), W(B) T2: W(B) R(A) R(B) a. Kako bi razpored transakcij sočasno izvajali, da pridemo do smrtnega objema? b. Kako bi rešili smrtni objem? c. Kako bi ga rešili z Rani-Čakaj? d. Kako bi ga rešili z Počakaj-Umri? 2. Imamo naslednje razporede: S1=W2(x), W1(x), R3(x), R1(x), W2(y), R3(y), R3(z), R2(x) S2=R3(z), R3(y), W2(y), R2(z), W1(x), R3(x), W2(x), R1(x) S3=R3(z), W2(x), W2(y), R1(x), R3(x), R2(z), R3(y), W1(x) S4=R2(z), W2(x), R3(z), W1(x), W2(y), R1(x), R3(x), R3(y) a. Kateri od zgornjih razporedov je konfliktno ekvivalenten? b. Kateri od zgornjih razporedov je zaporedno uredljiv po konfliktih (conflict serializable)? 3. Imamo naslednji dve transakciji: T1: R(A); R(B); if A = 0 then B=B+1; W(B). T2: R(B); R(A); if B = 0 then A=A+1; W(A). a. Dodajte zaklepe in sprostitve z dofaznim zaklepanjem 2ZF. b. Ali lahko pri izvajanju teh dveh transakcij privede do smrtnega objema? c. Kako bi rešili smrtni objem s konzervativnim 2FZ? d. Kako bi rešili smrtni objem z Počakaj-Umri? 4. Imamo naslednja razporeda: S1: T1:R(X), T2:W(X), T2:W(Y), T3:W(Y), T1:W(Y), T1:Commit, T2:Commit, T3:Commit S2: T1:R(X), T2:W(Y), T2:W(X), T3:W(Y), T1:W(Y), T1:Commit, T2:Commit, T3:Commit Za vsakega od spodnjih mohanizmov za kontrolo vzporednosti in razporeda ugotovi, kako mehanizm izvede razpored. a. Strikten 2FZ s časovnimi zaznamki za preprečevanje smtrnih objemov b. Strikten 2FZ z detekcijo zaznave smtrnih objemov (prikažite waits-for graph in case of deadlock.) c. Konzervativen 2FZ (and Strict, i.e., with locks held until end-of-transaction) 2PL. d. Optimistična kontrola vzporednosti.

140

141 I%83101:;3JKH%%L.83101:;3:381:M% P;%1:,%O,J:%03%J;F8:3,%"#%.83101:;3:3,$%<8:;-%N;%<8% 4%>/,70F0:KH%%L82/,3N,3N;M P;%O,J:%<8:/G0$%18%91;%1</;-;-7;%1:,F3;+% Q!"#$%&'$&()*+,-($%&'$('$+E,/,3:0/,%,:8-,/381:%R% 82/,3N,3N;+ 58:09,J0N, "/;G<81:,9.; Q B:8-,/381:H% S D/,31,.J0N,%1;%F,2.8%</;.03;%LT*8FF7,J.UM+ Q!2/,3N,3N;H S V,N%W;%3;2,%G;F,:0%6X"#Y%%L*,=F8E0YM "!"#$%&'(%)'*'+)%,%)-.* /'*/')'().0*1%2')3* 4#45.0%6 7 89:*8;*<*8=*+#*0'"%>.* +#5#*/."4#45.)5).? 7 8@*<*8A*+#*0'"%>.*+#5#* /".&#)-.).*B#1)#$.).C? 89 8; 8= 8@ 8A!"#$%& Q V83:/8F,%9=<8/;G381:0%1;%0=9,N,+% S 6:/0.:30%&AZ$%.83./;:38+ Q "8</,9.0%1;%G8E,N,N8%[3,%-;1:>T+ S "8G,:.0%18%</;<01,30%L0=7/01,30M%3,%G01.+% Q \381:,93,%12;-,%E,/,3:0/,%,:8-,/381:%03% 82/,3N,3N;+%

142 4789%:%0:/,;3,830-%<,:739-% 1=/,30 E 68,<%9C:0;30%F,1+ > <,:73,%37A9=/B730-%H,I=1D E J7%37$%18,<%A/7=9.+ E J7%C,$%.,.9%:,@9=9;0=0%,=9-,/391=D!"#$% &"'!"#$% &"'()%*+ ()%*+,#-.-*+ /%0-#%1 K7F%9%./,B0%03%1080 >!"#$#%%L:,.,B%B7%C917@,3B7%,=9-,/391=0%=7M.9N E!"#$%&'()"*'#(+,((O/73P=3,%1=/,3%;%Q%L3,B%<9%"N%B7% :,A01,3,%3,%C01.R%37.,%H,I=%0-,%:,.87A%3,%"+ > S,B%F7%H,I=%:%:,.87A9-%3,%"%A/7.037%0:;,B,3B7D > 59/,-9%10%:,A9-30=0%1=,/9%;/7C391=%"%9<%./,B0%L:,%A9CA9/9% GT4!%A01,3B,%3,%1=/,3%"N+ > &"'(%)*+'%%L:,.,B%B7%C917@,3B7%92/,3B,3B,%=7M.9N E S,B%F7%101=7-%A,C7%A/7C73%17%1A/7-73B73,%1=/,3% :,A0U7%3,%C01.D E?,A0U0%F0-%-,3B%B7%-9M39$%3,%A/0-7/39%-71=9$%9<% A9=/B7;,3BP$%C,%<0%9-9@9F080%*V4!%1A/7-7-<+%!139;3,%0C7B,W%437;30.0 >?,A0U0%*V4!%03%GT4!%A9C,=.7%:,%;1,.% A9A/,;7.%;%C37;30.- E 67.;73F39%A01,3B7%;%C37;30.%L@/7%3,%89F73%C01.N+ E 5030-,839%A9C,=.9;%LC0XXN%:,A01,39%;%C37;30.R%;7F% A9A/,;.9;%@/7%3,%739%1=/,3+ > 437;30.W%G/7B73%17:3,-%*V4!)GT4!%,.I0B+ E?,A01%C37;30.,%;17<PB7W% YHZ4$%A,@7Z4$%9XX17=$%873@=2$%98C%C,=,$%37[%C,=,\% E 03%C9C,=37%.93=/9837%A9C,=.7%LC9%.,=7/02%A/0C7-9%.-,8PN+ 437;30.W%"01,3B7];3,A/7B%L^_`N > 437;30.%1%A/9=9.989-%"01,3B7];3,A/7BW% E a(%59/,%12/,30=0%c37;30u.0%:,a01%a/7c73%17% A/0A,C,B9F,%1=/,3%:,A0U7%3,%C01.+% E a&%59/,%:,a01,=0%;17%c37;30u.7%:,a017%:,%h,i=% A/7C%A9=/C0=;0B9+ > a(%@,/,3=0/,%,=9-,/391=+ > a&%@,/,3=0/,%92/,30=7;+ > S,.9%3,=,3F39%B7%C37;30.%L03%9<39;0=7;N% 3,/7B73D% E b=pc0/,80%<9-9%_*zv6%,8@9/0=-7+%

143 789%:% ;3<=30. 1<.=<3F3D%EC<=0G.D+% H 9DI%6<JB<3K<%LB-M</%N96LO+% H 96L%=<;3D%3,/,EF,+ >?1,.,%AD;,C.D=3,%1C/,3!=1<MBP<%96L%1C/,30+ H 96L%@,;3P<I,%;3<=30E.<I,%@,A01,%!!!!!!!!!!!!!!!!!!!!!!!!! ADA/,=.,%;,3<%1C/,30+% > 601C<-%2/,30%1C,3P<%D;AG,.3P<302%96L+ H 5,.1%96L%D;AG,.3P<3%;D%1<;,P+ > 789Q%%"/<;<3%P<%1C/,3%@,A01,3,+% H A,I<%96L%! RGB12<;%96L!"#$ %& '()*!"#$./0$1*2!"# +),-$.(/*%*$ 01/2(34$)($1*%3!"#$%&'()* 5+),-$',/6 $$-$789 43<=30E.0%@,A010 34/5(627*869(':$(; $(<469( 0'2(=* 9(':$*!"#$%&' ()* +,!#!1/#)* -#./ #+ 5#32"#6781/# 13+#"6781/# 5DS30%C0A0%;3<=%@,A01D=Q% > TA;,C< > UD--0C > 8MD/C > V3;% H.D3<K%ADC/P<=,3P,%,G0% A/<.030C=< > +,- 6C/B.CB/<%AD=<@,3<%@%;3<=30.D- > X/,31,.K0P1.,%C,M<G, H V3%=A01%@,%<3D%,.C0=3D%Y,KC+ H?1<MBP<%YZ4$%1C,CB1%N/B3303I)KD--0C<;),MD/C<;O%03%% G,1C96L+ > X,M<G,%B-,@,302%1C/,30Q H V3%=A01%@,%<3D%B-,@,3D%1C/,3%=%0@/,=3,G3<-% M,@<3B+% H?1<MBP<%/<K96L%[[%96L%;3<=%@,A01,$%.0%P<%A/=0% AD=@/DF0G$%;,%P<%1C/,3%B-,@,3,+%% %43<=30E.D%A01,3P<[=3,A/<P% %N789O > WD3C/DG3<%CDF.< >!M3D=0C<=%AD%101C<-1.0%@/BE0C=0 H \,@,%,3,G0@< H *V4!%R,@, H TL4!%R,@, > "/0-</%DM3D=0C=< > "/DMG<-0%A/0%DM3D=0C=0

144 A B/1@,%C/,3<%D%E01,3<$%.0%<0-%19=F0%E8@/F0@=;%,90% E/=.030@=;+ G "/=E81@,;090%C8-8$%F,%<=%E01,3<=%3,%F01.%,@8-0H38+ A B%E/,.10%0-,-8%;=H%E8F/8C381@0%8.890%,@8-0H381@0%E01,3<,+% A 6@/0.@=3%&IJ+% A 4=98%0:/,;3,930.,K%6LMNO$%7!PI!*QM%%R% SNO%F3=;30.+ T83@/893,%@8H., A "=/08F0H38%6U"#%./=0/,%.83@/8938%@8H.8%:,% :,?0<8%H,1,%E8/,C9<=3=V,%:,%8C38;0@=;%;% E/0-=/W%101@=-1.=%:/WX0@;=+% A J,E0X0%;%F3=;30.K G C=V03Y?2=?.E803@%:,E01K%%4898H,%:,H=@=.%TL+ G A!1@,9=%>,?@1%3,F,9<W<=<8%:%F=98-\%@,C=9=%18%@8/=<%:,3=19<0;=% 1,-8%;%H,1W%C=V03Y?2=?.E803@%:,E01,+ G 62/,30%O67%:,E01,%.83@/893=%@8H.=%3,%;,/38%-=1@8% ]%"&$'():,E01^+ "@0H<,%E=/1E=.@0;,K%T,<%<=%12/,3<=38%.<= M381@,;3,%E/=.030@=;%@/,31,.?0<= $%& 69&:'*9/5(!./#0$1"&'$+",-' 1!#+,- )1!2+,- 345 '6)! )"*!45.!7*'$ 899/!' :!981!;&<"*! "9'!1;&<"*!!"!"#"$%"&'(!"#$ %&'$(" )"*!+,- ;"(#'/$/'*9/5!"# )"*#$+",-'."/'+,- /'"'0/ 2-3(4'5678 A J,%:F,<%10%E8V9=<-8%1,-8%=.1E90?0@38% E/=.030@=;%>,?@+ G 70%:/WX0@;=%101@=-,+ A _=90-8%`8F;/@=@0%3,:,<a%F3=;30.%;%8C/,@3=-% ;/1@3=-%/=FW%:%0:30H=3<=-%]U74!^%1E/=-=-C+ G 48C0%9,1@O67%@/,31,.?0<=%>,?@%0:%@,C=9=%>,?@+ G O,2.8%19=F0-8%F3=;%:,E018-%:%WE8/,C8%E89<,% E/=;O67+ G "/=F%:,H=@.8-%;/,H,3<,%:%U74!$%:,E0X0%F3=;% :,E01%E/=.030@;= A J,%/=X=;,3<=%0:%:/WX0@;=%-=F%;/,H,3<=-+%

145 "/7.030%8&9% "B>/C0>7?%>/,31,.Q0K7 : ;<4!%=,2>7?,%=,.@7A%3,%ABC,>.02D E <0%A/BF@7-D : "/7C73%/71>,?/0/,-B%1>,/B%?/7C3B1>%1>/,30$%17% 3,A0G7%HI*J E 437?30.%17%@,2.B%A0G7%-7C%;<4!DD E HI*%0-,%73B%CBC,>3B%AB@K7J%L3CB37M>I6< : N,O7%3,%3,1@7C3K0%I6<%=,%L3CB+ : A/7?I6<%=,A01,$%.0%P,%>/73L>3B%/71>,?/0/,-B+ E HI*%30%30.B@0%/71>,?/0/,3% : I,2.B%K7%AB3B?3B%0=?7C73%A/0%AB3,?@K,3KL%=PBCB?037% 8,>B-,/3B1>9+ : T,A0G0%AB>/C0%=,A01%?%C37?30.+ : U10%C37?%=,A010%?17%CB%@,1>I6<%V,Q>%1B% BCA@,.3K730+ E W,/,3>0/,%X@L127CI6<%! %@,1>I6<+ E!CA@,.B?,3K7%C37?30G.02%1>/,30%K7%17.?73Y3B$% 1032/B3B%=,A01B?,3K7%3,%C01.+% E U7@0.B%C37?30G.02%=,A01B?%3,%1>/,3+% : HB--0>89%17%?/37+% : T,A0G0%73C%=,A01%?%C37?30.+% : <,%.B3QL%;<4!%=,A0G0%R73CS%C37?30G.0%=,A01+!F3B?0>7?%AB%=/LG0?0J%Q7@B>3,%1@0.,!F3B?0>7?J%X,=,%,3,@0=7 I"23*"+-20%& ($-F&4"/%3&?"@*K&)%&2-&;%,"& ")*6';&4+A0%*F% I"21"$20%&& +-@LMI&F&*";& A1"4"$%J& 3*+"$%&/'& "$",%4%!"($2"&N8!CHOP8DQ!!"#$%&'(&)'$*+',$-&*'#)-&./'%0#-1'&2'&/+-)'&1"3*-+& 4"/%3" %&9"4-6&&:'*+-;$'&2-< = >()+%*%&)"*-+"&?"@*3&2-& /'*+(%,"&'(&)'$*+',$-&*'#)-& $"/+-2&%$&)"*-+"&$%&A3/-,"&.B$",%4"56 = CDE>&F3-&")@%2-6!./'$'F%&4G'('F%$'5 B C H = HIE>&A#%$)%&$-A3/-,%J&?"@*36 : *7.B31>/L0/,K%1>,3K7%BF%.B3>/B@30%>BY.0+ E ;AB/,F0%73CZQ27Q.AB03>%=,A01+ : "/7P@7K%C37?30.%3,A/7K%BC%.B3>/B@37%>BY.7J% E [3C%=,A01J%!C1>/,30%V,Q>%0=%V,Q>%>,F7@7+ E ;AC,>7%=,A01J%]7%"%30%?%^,F7@0%L-,=,302%1>/,30$ : 4BC,K%"%.%^+;+6+$%AB1>,?0%/7QI6<\I6<+

146 " %>A8B89038%>,:8$%B,%/;.831:/C0/,-8% 1:,3D;%87%>/CE0:90< F "838938%89/;B38:0%91;%G8G/,9.;%H:CB0%>,%G/;.03D;3;% "/;AO;B%3,G/;D%8B%B3;9%>,G01,$%.0%91;7CD;% S,%91,.8%MN*%,O0%N6P%B3;9%>,G01,%G8G/,9.,$% 3,/;B0%*?4!%,.J0D;%/,>;3%9%G/0-;/C<%%% F 6G/;-;3D;3,%1:/,3%30%9%QR6%,O0 F 6G/;-;3D;3,%1:/,3%D;%9%QR6$%9;3B,/%/;JN6P%T%N6P%,O0 F G,A;N6P%H9%4#L%! *?4!%,.J0D;< F "83890%,.J0D8%9%B3;930.C+ F "81:,90%G,A;N6P%3,%N6P+%%P0%B8B,:3;A,%>,G01,%9%B3;9K!73890:;9<%=,>,%RP4! Q8R3B8UV%!%W%!%XX%O,1:N6P%G/;.03D;302%I,J:Y!"#"$%& F Z>7;/0%3,D9;[D0%N6P%-;B%Q8R3B8+ F S,G0E0%?3B%>,G01%>,%:8%I,J:+ F 48B,D%C3B83;]:N6P%.%Q8R3B8% F 60J;/%D;%N6P%G8G/,9;.+%%Z>30[0%G8G/,9;.$%>,G0E0%% MN*%03%B8B,D%G/;9N6P%.%Q8R3B8+ '(%)*+,-'(.-+/"+#0$1"(2 "/0-;/%873890:9; =CJ!"#$%&"'() ("*$+,- *$"$.* /01$2%3"4)%&"'() 1)#+,- 5(.*6)7+,- 2+>%.+ <?@ <FG -----AA -----A A A -----:A -----HA -----H A -----IA!"#$%&'("')*+$%, -"%.&'("')*+$%, /*.0," $,"6-78 /*.0,"-29-45$,"6-7: 23-0!+5, ;<=1->%.+-23-<?@-3A 23-B%. /*.0,"1-2:-45$,"6-73 /*.0," $,"6-78 ;=C?DE-=B?2C=2 81)9+,-* "/0-;/<%S/CE0:;9%-;B%G %%%% %%%%%%%%%%%%%>,A838- =CJ 2+>%.+ <?@ <FG AAEA A A -----:A HAEH A -----IA -----KA LAEL MA!"#$%&'("')*+$%,E-"%.&'("')*+$%, /*.0," $,"6-78 /*.0,"-29-45$,"6-7: 23-0!+5, ;<=1->%.+-23-<?@-3AE-23-B%. /*.0,"1-2:-45$,"6-73 /*.0," $,"6-78 ;=C?DE-=B?2C=2 ;<=1->%.+-29-<?@-IA ;<=1->%.+-2:-<?@-8AE-2:-"%. ;=C?DE-=B?2C=2 ;<=1->%.+-29-<?@-9AE-29-"%.!"#$%&"'() ("*$+,- *$"$.* /01$2%3"4)%&"'() 1)#+,- 5(.*6)7+,-.:7;:)<$+,-

147 B C,D%1=%>8:E0$%F=%1=%101@=-%>/7?0%-=E%,3,<0>:% 9/0%:;3:A0G%5=E%H,>:%*I4!G B C,.:%:-=D0@0%.:<0F03:%E=<,%-=E%*I4!G J 69<,.7D%,1032/:3:%A%:>,ED7+% J ",>0%3,%K?90L=MN B C,.:%:-=D0@0%.:<0F03:%E=<,%9/0%OP4!G J Q>:80;,D%1=%E:<8:R@/,D,D:F0-%S,L@1+

148 Ponavljanje Naloge iz starih kolokvijev in izpitov. Najpomembnejše tabele v informacijskem sistemu Banke so naslednje. Stranka(sid,ime,priimek,kraj,naslov,telefon); Racun(rid,sid,znesek,valuta); Polog(rid,znesek,ime,priimek,naslov,datum); Dvig(rid,znesek,ime,priimek,naslov,datum); Dani so še naslednji podatki. 1 stran na disku = 8K Stranka = zapisov, 100 zlogov, 80 zapisov/stran, 1250 strani Racun = zapisov, 80 zlogov, 100 zapisov/stran, 1200 strani Polog = zapisov, 120 zlogov, 66 zapisov/stran, strani Dvig = zlogov, 120 zlogov, 66 zapisov/stran, strani Vse dodatne predpostavke uporabljene v nalogah napišite! 1. Naloga (25%) Napiši odgovore na naslednja vprašanja v QBE. a) Izpiši vse pologe v znesku 1.000EU ali več ter za stranke z imenom Tone. b) Izpiši številke vseh računov na katere je bilo položeno v zadnjem mesecu več kot EU. 2. Naloga (25%) Koliko blokov prebere naslednje vprašanje, če ne obstaja nobeden indeks? Predpostavi, da selekcija Select [znesek>1000] (Polog) izbere 50% zapisov Join( Select [znesek>1000] (Polog), Racun, Polog.rid=Racun.rid) 3. naloga (25%) Kakšen je optimalen plan izvajanja poizvedbe, če ima sistem razpršilne indekse in B+ drevesa. Predstavi celoten postopek in uporabljene algoritme za izvajanje operacij relacijske algebre. Join( Select [znesek>1000] (Polog), Racun, Polog.rid=Racun.rid) 1. Na neki fakulteti imajo napreden sistem za beleženje oddajanja nalog študentov. Shema baze je sledeča: student(ids:int, ime: varchar, priimek: varchar, letnik: int) oddaja(ids:int, idn: int, datum: date, sprejeto: boolean) naloga(idn:int, naslov: varchar, predmet: varchar, tocke: int) a) Z uporabo relacijske algebre napiši poizvedbo za imena vseh študentov 3. letnika, ki so oddali nalogo pri predmetu "Zgodovina" in jim jo je sistem zavrnil (sprejeto ima vrednost false). b) Z uporabo domensko relacijskega računa napiši poizvedbo za imena študentov, ki so oddali nalogo za več kot 5 točk. 2. Uporabi shemo prejšnje naloge in napiši SQL stavke za naslednje poizvedbe: a) Nalogam pri predmetu "Matematika", ki imajo 8 točk, popravi število točk na 10. b) Zbriši oddaje nalog študentov 1. letnika, ki niso bile sprejete. c) Izpiši ime in priimek študenta, ki je oddal največ nalog z maksimalnim številom točk. 3. Podatkovna baza predstavljena v prvi nalogi ima strani velike 4000 zlogov. student = zapisov, 110 zlogov, 35 zapisov/stran, 145 strani oddaja = zapisov, 30 zlogov, 130 zapisov/stran, 385 strani naloga = 500 zapisov, 110 zlogov, 35 zapisov/stran, 5 strani Koliko strani prebere naslednje vprašanje? select[letnik=4]( join[student.ids=oddaja.ids]( student, oddaja )) Predpostavimo, da ima relacija oddaja razpršilni indeks za atribut ids. 4. Poišči optimalen plan izvedbe vprašanja: select[letnik=4]( join[oddaja.idn=naloga.idn]( join[student.ids=oddaja.ids]( student, oddaja ), naloga )) Utemelji izbiro optimalnega plana. Opiši plan izvedbe, uporabljene algoritme za izvajanje operacij relacijske algebre in vse predpostavke. Najpomembnejše tabele v informacijskem sistemu knjižnice so naslednje. Knjige(kid,avtor,naslov,zalozba,leto); Clan(cid,ime,priimek,naslov,telefon); Izposoja(iid,cid,kid,zid,datum); Zaposleni(zid,ime,priimek,naslov,telefon) Dani so še naslednji podatki. 1 stran na disku = 8K Knjige = zapisov, 320 zlogov, 25 zapisov/stran, strani Clan = zapisov, 200 zlogov, 40 zapisov/stran, 250 strani Izposoja = zapisov, 40 zlogov, 200 zapisov/stran, 1500 strani Zaposleni = 100 zapisov, 200 zlogov, 40 zapisov/stran, 3 strani Vse dodatne predpostavke uporabljene v nalogah napišite! 1. Zapiši SQL stavke za naslednje poizvedbe: a)izpiši imena članov, ki so si izposodili knjigo, ki jo je napisal avtor z drugo črko imena 'k' pri zaposlenem, ki živi v Kopru (9%) b)izpiši ime in priimek člana, ki ima izposojenih največ knjig (9%) c)izpiši avtorja, ki je izdal največ knjig, izmed knjig ki si jih je izposodil Matija (7%) 2. Z uporabo relacijske algebre zapiši prvo poizvedbo, z domensko relacijskih računom pa drugo poizvedbo:

149 a)izpiši založbe knjig, ki si jih je izposodil član iz Ljubljane pri zaposlenem s telefonsko številko (12%) b)izpiši člane, ki so si izposodili vse knjige avtorja Zelen (13%) 3. Dano je vprašanje zapisano v relacijski algebri: join( select[avtor='zelen'](knjige), select[datum=2008](izposoja) ) a)koliko blokov prebere vprašanje? Predpostavi, da ni zgrajen noben indeks. b)poišči ekvivalenten izraz v relacijski algebri, ki prebere najmanj blokov. Lahko uporabiš poljuben indeks oz. metodo dostopa do relacij. Obrazloži!

150

151 "/GH;G? 678%9%,:;0.,<0=1.0%.>?0 I%!"#$%$&'()*&+),-*)$*./) I$01234/32$!"# I$567-.7,) I$8)2&9):2)$!"# I$;8<= I$!"#; I$!>7&2,323$'7.+3/673 %%% *+*,-,./0123,3$%4#56%%%%% %%% *+*,-,./0123,3$%4#56%%%%% %678%9%,:;0.,<0=1.0%.>?0 678%9%,:;0.,<0=1.0%.>?0%J3,?,;+K!"#$6*&4)$-3$(&>*.$'7.?),.$)4$'7.17&9&$2&')-&231&$%$ I$$$!"#$-F&%*)$(&>*.$6'.7&G(,&,.$-'73932(,)%*3$,34)*&$1.-F)F3(,&E I$$$0-3G6,3,.$F6/)$-F&%*3$4&$'7)*(.'$2&$'./&F*.%2.$G&4.E$ HG-F&,&F&$/%&$1(&%2&$'7)-F.'&$*$)2F317&+),)I$ I$$$01234/32$!"#$%$1.-F)F3(,-*39$'7.17&9-*39$,34)*6$AJ9G3//3/$$$ $$$$!"#K$!"#;D I$$$573&+),&$'.-3G231&$LMN$4&$*()+&2,3$!"#$6*&4.%$A;8<=D %%% *+*,-,./0123,3$%4#56%%%%% "/>L;G-%0-:G?,3<GM I%%678%/G;,<0=G%1>%J-N;B0OK%-3>P0<G%A,:01>9$%.0%30-,=>%?>;>QG3GH,%-,.10-,;3GH,%RB+%A,:01>9+% I%%!L0Q,=3>%30-,->%B,.R3G%:>?,B.>93G%1B/N.BN/G%9%.;,10Q302%:/><G?N/,;302%:/>H/,-1.02%=GA0.02%J0-,->% 10<G/%.3=0P30<G$%3:/+%6F8K+ I%%678%:>?:0/,%-G2,30AG-%.N/A>/=G9%A,%?G;>%A% /G;,<0=,-0+% %%% *+*,-,./0123,3$%4#56%%%%%

152 %%% *+*,-,./0123,3$%4#56%%%%% 7839:;93%6<= %%%7839:;0%6<=%1>,B.9%B%8?1>0>9CD1.0%D9:0.+% L/,;30.0%D9:0.,A% %%%"/0.CJK0>9B%3,%6"M#A %%%!"!#$%&'$#())!#* %%%49.C,/,F0D,%B/9;3?1>0A %%%!"!#$%&'$+!,-)$.!)/0$/!#'12!$%!#*-() %%%6>,B.0A %%%!"!#$%&'$% %%% *+*,-,./0123,3$%4#56%%%%% NONP%6<=%#NLIQ%4NP=H*N%6NPRI!Q F2,/%FS13,-9T&'UV C?38%FS10;V 12?/>%FS/,>038V WC?,>%FS,89V NONP%6<=%NQ4%4NP=H*N%6NPRI!Q %%%%%%%6<=P!4N%[C?38$%01%398,>0B9%0W%,3%9//?/%2,1%?FFJ//9;\ %%% *+*,-,./0123,3$%4#56%%%%% %%^J/:?/D0 H575;:;4$;5=4B:C<0I D;5G5;56<$7K35;:B<III$ N;L37:$;5F$7K35;:B$E$;5=4B:C:J$?:$C<$G5;56<$C5$F<=<O57$A$%&'$ ED;4P47C56I$ $$$$$ %%% *+*,-,./0123,3$%4#56%%%%% /9:9/B0/,C0%/;9K?%C,;D?$%B%,G9F9;39-%B/1>39-% /9;J %%%% NONP%6<=%4NP=H*N%103W?%PM*6!*%`!* %%%%%%%6N=NPR%6+13,-9 %%%%%%%`*!5%6,0C?/1%6$%#?,>1%#$%*919/B91%* %%%%%%%abn*n%6+10;c*+10;%hq4%*+g0;c#+g0;%hq4%#+f?c?/cd/9;e %%%%%%%!*4N*%#f%6+13,-9

153 %%% *+*,-,./0123,3$%4#56%%%%% %CHC>%678%#CIJK%4C>8B*C%6C>AJ!K %CHC>%678%CK4%4C>8B*C%6C>AJ!K %CHC>%678%4C>8B*C%103OM%>T*6!*%U!* %%%%6C8C>A%6+13,-;$%6+,:;%%%%%%%%%U*!5%6,0PM/1%6 %%%%!*4C*%#Y%6+13,-;G %=M%Z %a%b20p;%r6786abac%cq%d'&'''esg %CHC>%678%>8!6C%103OMG %%% *+*,-,./0123,3$%4#56%%%%% 403,-0f30%678!"#$%&'()(*+($,-$.*(*($%$/(,0$&'1%(+(*+(2 34*(54/*4$!"#$-5-6-/($7-*,8'0794+-$!"#$,8(%7-%$-*: 8;1:<=>2 9;('$9A,B=,8'4*6CDE $$FG3H#HIH$JKLM$!(4=-',$NOHKH$'(484*6PQRST HUHV$!"#$HUHVYIH$'1(X>8-6-T %%% *+*,-,./0123,3$%4#56%%%%% %B"J%,PN;/3,N09, %% j%%"m=,-m%678%30<%0<%h;<0.,%678%1n;i30.k%03%[/;=1n,90%/;<kpn,n;% 9[/,l,3h,%9%MgP0.0%[/0h,<30%=M%h;<0.,+ j%%6k3%m4#>?%m,9,%b"j %%% *+*,-,./0123,3$%4#56%%%%% m4#>%b/20n;.nk/,%!"#$#%&$'#"()"*$+(%),-.,+(+"(/ j%%%0.1#)&2#3&/%#+#2#$&%#+%4&)1*5#%.,6(4&6,%72,++(2"#,+89%.,:13(%;<=% j%%%a.$&613&1+#)%b,+#1+#)&/%+&1&b&+3(%cdef%b,+#1+#)& j%%%g,+#1+#)/%.,6(?(%>(%+&%.,h&"),6+#%6#$9%.$(+&:&%4&'"(6(%"($%%%%%%%% j%%%j,h&"),6+#%6#$/%.$(.$,2(>#$&%;<=%>"&6)(

154 74#8%/,L/;>0%03%B-;130.0% A:0/0%B/1:;%CD30?30.,E 40/;.:3D%F/;B,G,3G;%B%>D-,H%9"I%FD>+B0/,$%CD30?30.%30%B%7,B0E %%%%%"/;B;>;%6JK%<.,L;%B%>D-,H%9"I%D>%FD>,:.DB3;C,%B0/,+%"D:/;M<G;%!6N1F;O0P0H;3D%M03,/3D% %%%%%.D>D%3,%B1,.;-%.?0;3:<+% "/;B,G,3G;%B%>D-,H%9"I%F/;.D%7,B,%CD30?30.,E %%%%%"/;B;>;%74#8%.?0O;%>0/;.:3D%B%D-/;Q30%F/D:D.D?$%.0%C,%<FD/,M?G,%6R"#+%"D:/;M<G;%7,B,%%%%%%% %%%%%CD30?30.%L,%1F;O0P0H;3%6R"#%3,%B1,.;-%.?0;3:<:+ %%%%%"/;B;>;%6JK%<.,L;%B%:<G%9"I+%"/0-;/E%74#8N!4#8%-D1:+%SD>,%L,%!4#8%03%74#8%%%%%%%%% %%%%%B0/D-+%"D:/;M<G;%-,G2;3%74#8%CD30?30.%3,%B1,.;-%.?;3:<+% SD/,.0%F/0%FDV0?G,3G<%FD0LB;>M;%3,>%FD>,:.DB3D% M,LDE W%%%T,?DQ0%74#8%CD30?30. W%%%"DB;LDB,3G;%1%FD>,:.DB30-%B0/D- W%%%ILB,G,G%6JK%1:,B.; %%% *+*,-,./0123,3$%4#56%%%%% %%% *+*,-,./0123,3$%4#56%%%%% RF/,B?G,3G;%74#8%CD30?30.,% "DB;L,B;%L%74#8 W%%X1;%CD30?30.;%<F/,B?G,%/,L/;>%4/0B;/5,3,C;/%% W%%T,?,C,3G;%74#8%CD30?30.,E %%%%%B%7,B,%.D>0E%!!!"#$%%&'()*$+,-.()$/#,0123/&2)45,)&6)$/#,2)45,)789 %%%%% %%%%%!M%1:,/:<%7,B,%,F?0.,O0G;E%!!!:123/&2)45,)%;<()$/#,0123/&2)45,) FDB;L,B,%0>;3:0P0O0/,%?DC0H3D%1;GDE% W%%%%74#8%R*KE "/0-;/E %%% *+*,-,./0123,3$%4#56%%%%% %%% *+*,-,./0123,3$%4#56%%%%%

155 %%% *+*,-,./0123,3$%4#56%%%%% DCEA0=%03>%F8>G/,31,=>0<3H1<A,>0<3IJ% DCEA0=%E<<A8,3%F8>*8,:!3ANIJ% >/,31,.=0B,+%?%%%60=8/%18%>/,31,.=0B,%9,.ABCL0%1%=<--0>IJ$%>8/%D/8.038%9%/<AAE,=.IJ+% DCEA0=%E<<A8,3%01;A<18:IJ %%% *+*,-,./0123,3$%4#56%%%%% %%%%;,AA,EA86>,>-83>%I12/,3B838%D/<=8:C/8J % *,9/8:%"/8D,/8:6>,>8-83>T %%%%73,D/8B%D/8@8:830$%D,/,-8>/090/,30%6PQ%1>,@.0T %%%%6>/C.>C/,%B8%K0.13,+ %%%%7/8:3<1>0%D,/,-8>/<@%1<%:<A<L838%@%L,1C%09@,B,3B,+ %%% *+*,-,./0123,3$%4#56%%%%% H9@,B,3B8%6PQ%1>,@.<@%I3,:,A+J!"#$%&'()*+,-.!/01'-.12'!3$*4#('5678/!9:;:;:;:<=>?#@A3#@B!"3"C@%"'A("C"+D4%EA#@A3#@!"3"@C@%"9()*<> A("C"ED*@3#?3#3C@"@#(9<> A("C"E(@"-%"9F;($B<> A("C"E(@"!"#$%&9G;(%3C@<> A("C"E(@"-%"9H;'#3"$%&<> A("C"E(@"I*43"9J;3&@<> KK'L@'M%4L'"N3"'%4'#4L('3#@'#@"O#%@B;'"NO('L@'O(@ '''@P@DO"@8AB3"@9< $%"'%OC04L('+'A("C"E@P@DO"@8AB3"@9<> %%% *+*,-,./0123,3$%4#56%%%%% *81CA>68>1?%%?#@A3#@B!"3"@C@%"E@P@DO"@8AB3"@%@/38%S>8@0A<% 1D/8-83B8302%9,D01<@+%?%%?#@A3#@B!"3"@C@%"E@P@DO"@QO@#R%@/38%D<:,>.8$%.0% 1<%12/,3B830%@%<EB8.>C%*81CA>68>%I.0%B8%.C/9</J *81CA>68>%/1UD1>->+8V8=C>8PC8/NI1WAJX ))%/1%01%3<Y%,%=C/1</ Z20A8%I/1+38V>IJJ%[ %%))%D/<=811%>28%:,>, \

156 *7189:67:1%;3,<,9=7>,3=7? %J=7-,3=7%K,>,%03%6LM%:0DA> 6LM%NOD7%%%%%%%%%%%%%%%%%%%%K,>,%E9,11%%%%%%%%%%%%%%%%%%%%%%%%%*7189:67:%P7:%-7:2A< %%%<A9AG73A%H:7>09.A% C%%I0/1:;?%03%9,1:;? %%% *+*,-,./0123,3$%4#56%%%%% #QN%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#AA97,3%%%%%%%%%%%%%%%%%%%%%%%%%%%%P7:#AA97,3;? RST*%%%%%%%%%%%%%%%%%%%%%%%%%%%6:/03P%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%P7:6:/03P;? UT*RST*%%%%%%%%%%%%%%%%%%%%6:/03P%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%P7:6:/03P;? 4!J#MV%%%%%%%%%%%%%%%%%%%%%%4A8F97%%%%%%%%%%%%%%%%%%%%%%%%%%%%%P7:4A8F97;? WM!TN%%%%%%%%%%%%%%%%%%%%%%%%%4A8F97%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%P7:4A8F97;? QXNVYV*%%%%%%%%%%%%%%%%%%%%%Q3:7P7/%%%%%%%%%%%%%%%%%%%%%%%%%%%%%P7:Q3:;? *VTM%%%%%%%%%%%%%%%%%%%%%%%%%%%4A8F97%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%P7:W9A,:;? 4TNV%%%%%%%%%%%%%%%%%%%%%%%%%%%=,>,+1Z9+4,:7%%%%%%%%%%%%%%%%%%%%P7:4,:7;? NQ5V%%%%%%%%%%%%%%%%%%%%%%%%%%%%=,>,+1Z9+N0-7%%%%%%%%%%%%%%%%%%%%P7:N0-7;? NQ5V6NT5"%%%%%%%%%%%%%%%%=,>,+1Z9+N0-76:,-D%%%%%%%%%P7:N0-71:,-D;? %%% *+*,-,./0123,3$%4#56%%%%% U7G03A%=,>,+1Z9%>/[7%6LMV\E7D:0A3%G7%17%DA=,>0% 3,D,.,+%% 30%:,.A%/713,%3,D,.,%;AF1:A=%-A/,-A%:71:0/,:% :/O%_ %%%1:-:`EA3+E/7,:76:,:7-73:;?^ %%%a,/303p`ea3+p7:],/303p1;?^ %%%a2097;a,/303p%b`%3899?%_ %%%%%%))%2,3<97%6LM],/303P1^ %%%%%%a,/303p%`%a,/303p+p7:x7\:],/303p;?b %%%c %%%EA3+E97,/],/303P1;?^ %%%1:-:+7\7E8:7JD<,:7;Z87/O6:/03P?^ %%%a,/303p%`%ea3+p7:],/303p1;?^ %%%+++ c%))73<%:/o E,:E2;%6LMV\E7D:0A3%6LM7?%_ %%%))%2,3<97%:27%7\E7D:0A3 c %%% *+*,-,./0123,3$%4#56%%%%% %%% *+*,-,./0123,3$%4#56%%%%%

157 %%% *+*,-,./0123,3$%4#56%%%%% >,%;7A:%1%9:;,8.:<3:%=,>:%03%.,8,A:B+ 4,8,=,17578,4,8,%-;%C%D:3+B78578,4,8,EFG %%KL,-7IM%N%-;+B784/0<7/L,-7EF%N %%K<7/10:3I%M%N%-;+B784/0<7/O7/10:3EFFG %%% *+*,-,./0123,3$%4#56%%%%% 578,%9:;,8.:<3,%=,>,%E3,;,A+F 4,8,=,17578,4,8,%-;CD:3+B78578,4,8,EFG 68/03B%8,=A7L,-7G Q20A7E8/1+37R8EFF%S %%8,=A7L,-7%C%8/1+B7868/03BEKPT#UVWLT5VMFG %%Y20A7%ED/1+37R8EFF%S %%[ [ %%% *+*,-,./0123,3$%4#56%%%%% E37\F%]:-9A7873%9/0-7/ X:337D80:3%D:3%C%))%D:337D8 %%%%4/0<7/5,3,B7/+B78X:337D80:3E@/A$%MA:B03^$%M9,11^FG 68,87-738%18-8%C%D:3+D/7,8768,87-738EFG%))%178%@9% /03B%_@7/J%C%^6VUVXP%3,-7$%/,803B%`*!5%6,0A:/1^G *71@A8678%/1%C%18-8+7R7D@87a@7/JE_@7/JFG 8/J%S%))%2,3;A7%7RD7980:31 %%%))%A::9%82/:@B2%/71@A8%8@9A71 %%%Y20A7%E/1+37R8EFF%S %%%%%%%68/03B%1%C%/1+B7868/03BEK3,-7^FG %%%%%%%b38%3%c%/1+b78`a:,8ek/,803b^fg %%%%%%%6J187-+:@8+9/038A3E1%N%^%^%N%3FG %%%[ [%D,8D2E6aUVRD7980:3%7RF%S %%%6J187-+:@8+9/038A3E7R+B785711,B7%EF %%%%%%%N%7R+B786aU68,87%EF%N%7R+B78V//:/X:;7%EFFG [ %%% *+*,-,./0123,3$%4#56%%%%% %6aUc d%%%]:-9a7-7380/,%c4#x%1%e17-0\f18,80e30-%-:;7a:-%<9/,f,3?,i d%%%"/7<,?,a30.%9/7<7/0%1038,.1:$%9/7<7/0%8097$%.: d:%9:0><7;=7%1%%%% %%%%127-:$%++++ d%%%o10%,/b@-7380%1:%<7;3:%9:<7>,30%>%018:%19/7-73a?0<.:i %%%%%%g1_a%c%s %%%%%%%%%6VUVXP%3,-7$%/,803B%bLP!%I3,-7$%I/,803B %%%%%%%%%`*!5%#::.1%QhV*V%10;%C%I10;G d%%%"/0-7/?,?%>%c4#xi %%%%%10;C/1+B78b38E(FG %%%%%0H%E10;CC(F%S13,-7C/1+B7868/03BE&FG[ %%%%%7A17%S%13,-7&C/1+B7868/03BE&FG[ d%%%6auc%e;7a%6au%18,3;,/;,f%9/:80%<b37>;737-%6au%e197d0h0e73f %%%%%%%%%

158 %%% *+*,-,./0123,3$%4#56%%%%% 6789%.:;, 6,0C:/1%1,0C:/1> A1,0C:/1%I%J %%%%P*!5%6,0C:/1%QRK*K%/,=03?%I%O/,=03? S> S %%% *+*,-,./0123,3$%4#56%%%%% 4T,%=0G,%0=@/,=:/Z@T%DY.F/[:/Z@T\EO %%%%":=/@^FZ@%0-@%03%=0G%1G@-@3CZ0T.@>%:-:?:_,%^/,3Z@%1=:CGH@T%G:%0-@3F+ ]%%":[0H0Z1.0%0=@/,=:/ %%%%%%A1BC%0=@/,=:/%6,0C:/1D<3=$%6=/03?$%<3=E> %%%%%%6,0C:/1%1,0C:/1> %%%%%%A1,0C:/1%I%+++ %%%%%%%%%%A1BC%JPKMLR%O1,0C:/1%<NM!%O10;$%O3,-@S%> %%%%%%%%%%))%G/:H@11%=2@%1,0C:/ %%%%%%%S %%% *+*,-,./0123,3$%4#56%%%%% %b,z%1:%12/,3z@3@%g/:h@;f/@o% %%%%%<[T,Z,%1@%.:=%G/:H@1%3,%1=/@c30.F %%%%8,2.:%T?/,;0-:%,GC0.,H0Z1.:%C:?0.:%03%:1=,3@-:%^C0[F%%%%%%%%%% %%%%G:;,=.:T+ %%%%FG:/,^30.0+% %%% *+*,-,./0123,3$%4#56%%%%% &&&+#:#!%&+;38<=&+;39612=&!(*/%>?@ &&&A"(B&+68C-43&+=&" &" &&&DE#"#&+;38<&F&";38< &&&G"(*'&HI&+;38<=&+;39612 %%%M/0%/,[C0_3@%3,_030O%<N$%!eM$%<N!eM!"#$%#&'"(!#)*"#&J9K42632"6789L> *')$%#&+68C-43 &&&+#%&46789L&F&46789L&N&89K42632 &&&DE#"#&38<&F&368C-4M38<

159 %%% *+*,-,./0123,3$%4#56%%%%% 62/,37838%9/:;8<=/8>%"/0-8/0 ;$59*$9#&<$=$ %%% *+*,-,./0123,3$%4#56%%%%% E?0;,378%12/,378302%9/:;8<=/ #>#!&-L;&M#945&)#!;$"#&-#!%4(5 46F&2/GN 46F&1.F/6ON #>#!&-L;&#5)&)#!;$"#&-#!%4(5 DD&6+P&/6E1B.2B&FQB&1.F/6O&+A&FQ/2&2./0+1 #>#!&!$;;&46E1B.2B".F/6O3C2/GRC1.F/6O:N %%% *+*,-,./0123,3$%4#56%%%%% E?0;,378%12/,378302%9/:;8<=/ %%%%%%%%%%%%% F4#G> G,??,H?86I,I8-83I%;1I-IJ% %%;:3+9/89,/8G,??KLM;,??%%% %%62:N6,0?:/1OPQ%%%%%%%%% *81=?I68I%/1%J%%%%%%%%%%% %%;1I-I+8R8;=I8C=8/SKPQ%%%% N20?8%K/1+38RIKPP%M%%%%%% %%+++%%%%%%%%%%%%%%%%%%%%%% O%%%%%%%%%%%%%%%%%%%%%%% % 6CDF> T1U?%0I8/,I:/ %%%%62:N6,0?:/1K+++PQ 62:N6,0?:/1%12:N1,0?:/1Q T1U?%12:N1,0?:/1JMGVDD %%%%62:N6,0?:/1OQ N20?8%K12:N1,0?:/1+38RIKPP%M %%%W O %%% *+*,-,./0123,3$%4#56%%%%% 6CD)"65 X!!"#$%&'!()*+!,-,.,$'!/0,1'2&%3,-!0%4'&5#!461'&5#&%6! 01,7#8/1!9!9%4,3,:&%9,543#-!01,.1'-43#-!5#;%3/!<2=%;/! +>?@A X!!+>?BC+*!:!C#14%4D#&D!+D,1#8!*,8/=#4E!+>?BF,/&8'D%,&4 %%%%%%% 48.?,/0/,7%12/,3783:%9/:;8<=/:> G*YVZY%"*!GY4[*Y%3,-8K9($%9&$%+++$%93P %%?:;,?%@,/0,H?8%<8;?,/,I0:31 %%9/:;8<=/8%;:<8Q 48.?,/0/,7%\=3.;07:> G*YVZY%][^GZ_!^%3,-8%K9($%+++$%93P%*YZ[*^6 %%1U?4,I,ZS98 %%?:;,?%@,/0,H?8%<8;?,/,I0:31 %%\=3;I0:3%;:<8Q

160 !137830%69:)"65%;/,<30.0!137830%69:)"65%;/,<30.0 %%% *+*,-,./0123,3$%4#56%%%%%!"#$%#&'()!%*+)&,-./0-123, &&&&&4*)&5-123,*6&*)%#7#"8 &&&&&"#%(")0&*)%#7#" 9#!:$"#&,-.1;<&*)%#7#" 9#!:$"#&;=>"/5&*)%#7#" &&&&&&&&&&&&&&&&&'"+A&"/5/,B/5&" &&&&&&&&&&&&&&&&&CD#"#&"E516&?&5-123,*68 *'&4;=>"/5&F&GH8&%D#)&,-.1;<&?GI #:0#&,-.1;<&?&HI #)9&*'I "#%(")&,-.1;<I =%%*CGH*I%8/?<371J0%K,%LHIDGM!I =%%N?A0J8?%03%K,3.?O &&&&*'&4J3;61.13;8&%D#)&5.-./>/;.5I &&&&#:0#*'&4J3;61.13;8&5.-./>/;.5I &&&&EEE&#:0#&5.-./>/;.5I&#)9&*'I &&&&:++K&5.-./>/;.5I&#)9&:++K =%%"70K8?<P?%17%<?>0%0K/,K78+ %%% *+*,-,./0123,3$%4#56%%%%% %"78K?J?. "78K?J?.%B3,<,>+F ;71J0J?>A1.?;,%A?K0.,+ ;71J0J?>A?-%03%69:+ %%% *+*,-,./0123,3$%4#56%%%%% %%% *+*,-,./0123,3$%4#56%%%%%

161 /* con.close(); Program pozenes z: java -classpath.:./mysql-connector-java bin.jar Sqltest */ import java.sql.*; } } }catch( Exception e ) { e.printstacktrace(); } public class Sqltest { public static void main(string args[]){ System.out.println("lalalalal..."); try { Statement stmt; Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/opb_lpp"; Connection con = DriverManager.getConnection(url,"opb", "opb0809"); System.out.println("URL: " + url); System.out.println("Connection: " + con); stmt = con.createstatement(); //izvedi SQL ukaz, ki ne vrne nicesar //stmt.executeupdate("insert INTO PILOTI(ime, priimek, idld) //VALUES('janez','cigara', 5)"); //shrani rezultate SELECT stavka v objekt rs ResultSet rs = stmt.executequery("select idtl, opis FROM TIP_LETALA"); //premaknem kurzor na polozaj 24 rs.absolute(24); //izpisi rezultate while(rs.next()){ int idtl= rs.getint("idtl"); String opis = rs.getstring("opis"); System.out.println("\tidtl= "+idtl+" \topis= "+opis); } //izpisi 4. vrstico if(rs.absolute(4)){ int idtl= rs.getint("idtl"); String opis = rs.getstring("opis"); System.out.println("\tidtl= "+idtl+" \topis= "+opis); }//end if //izpisi prvo vrstico if(rs.first()){ int idtl= rs.getint("idtl"); String opis = rs.getstring("opis"); System.out.println("\tidtl= "+idtl+" \topis= "+opis); }//end if //izpisi zadnjo vrstico if(rs.last()){ int idtl= rs.getint("idtl"); String opis = rs.getstring("opis"); System.out.println("\tidtl= "+idtl+" \topis= "+opis); }//end if

162

163 !/348(7"#*+/01+"5*(784"/*!"#*+/01+"(/" "(0+( 784"/+"(*8409*:06" ;</39(!*=+09!"#$%"&'()*+(,-.- (.!!0+/*97*(0+(7"#*+/09* >!"#*+/09*?(83#"+(83B*/93= > 83B*/9"(((( FGH > > > M83#"+*N(B"43=(83B*/93= " #

164 !"# $!"#%&'()*+,-.&/&(0-12,-(&'3,4( $ 4(05672,&/&(0-1)1&8&1.369*.6:43,'-(;.6&8&4;,96-1!"# $!"#&<=>,+1&/&&;5(4-6=1&01&(?6;&'3,4,;&6-&?('1.)(4-6>&.6?(4!"#$%&'()*+',-.../0 ((!+1+2'0...!3+1+2'0 ((!+'*"4'%0 ((((!#551"'0...!3#551"'0 ((((!'6*120...!3'6*120 ((!3+'*"4'%0 ((!%##60...!3%##60 ((!7%'%'80...!37%'%'80!3"#$%&'0!!"#$%& '*'+& '&(!)&$,$&$&- "..*!& &/(*+ $ #1>)(&*?(3195@1+(&!"#&01&?3,';.146.,4& ;,+1-.6),A! "!"#&6-&?(+,- G+,@6.4,&?36&(?6;*&?(+,-1!9%')*+#%0 (((((:!39%')*+#%0 $ B3,'1.(3%&;3,'-@,&4676-,C&4,56)1&40.31@-(;.C&5,.15-1& -1?3141D $ B3,'1.(3%&.6;.6C&)6&.,3(360631C&31096@1&6-&*-62*@,&7,&?(;,9-(&01&-,)(&)(36;.D $ B3,'1.(3%&(3E1-60,+C&)6&F646&-1&(;-(46&*5(41&'3*E6>& (3E1-60+(4D $ DDD $!"#&-,&(?6;*@,% HD I,;,'-@1)&;?,=6J62,-&01&-,)(&'(+,-( KD G-.(5(7)6&? &01&+(',5631-@,&?('1.)(4& $ L1>.,41&'(E(4(3&E5,',&H&6-&K $ M?(319-1&3,76.,4&01&5()15-,&?3(@,).,% N OE,-.6&4&+1-@7,+&;.1965-,+&()(5@* N <.31-6&-1&+1-@7,+&6-&;.1965-,+&6-.31-,. $ P6&?36+,3-(&01&?3,';.146.,4&;?5,.-6>&463(4 # $

165 !"# $!"#%&'%()*+,-)./0%1)*'2 $ 3)*'2%&'%/')*.04'/%)*%*)1'/'5%+(20-+60&'%0/%4'% 2+7-)%0/,'8/+60)/ $ 3)*'2%2+7-)%.0*01)%-),%:41'8&'/5%)9/+;'/%<8+=%+20% -),%)>&'-,'/%1)*'2%?)>&'-,0@+,80>:,0@.8'*/)4,0A $!"#%()*+,-)./0%1)*'2%&'%+>4,8+-,'/5% -)/6'(,:+2/0%/0.)%/')*.04'/%)*%B3C $ B3C%&'%2+7-)%40/,+-4+%9+%!"#%0/%/'%*'2%!"# $!"#%()*+,-0%4'%2+7-)%4(2)7%/'%()&+.0&)%.%B3C% )>20-0 K4)60+,0./0%1)*'2 $ D(2)L'/%1)*'2% $!"#%M%!'4):86'%"'4680(,0)/%C+/<:+<' M!"#%&'%()*+,-)./0%1)*'2%N M O(040%,'1'2&0&)%/+%,8)&06+7P%+4)60+60&' $ C+7-)%)(0L'1)%-)1(2'-4/'%.8'*/)4,0 M Q)2'-60&'5%.8';'5%4'4,+.2&'/'%)>&'-,'5%R! D'1EF'>5%G+/%HIJI %!"#%1)*'2 #$%&'()*+&,&'-(./01&#$%&23(4/0 23(4/01&,&/5315&67218*9:!"#$%&'()*+,&-.'./()*0$%&'(1 ; 7<=4*92&,&8/3 ; >3*)/912&,&+172-(72&68/31: ; (=4*92&,&83*)-(72&6+172-(72/:!"#%1)*'2!""#$%%&&&'()*+#,('-./%012()'!"+,&7+4%+&!"#$%&"%U7)4'%.+2:'%04&3-!145+0"! $ D:>&'-,P%%5(( &:/;+4&90,<7.3-&:95(;4* $ S8'*0-+,P%%5((+677+#,490,<7-=7&4&;&3("7>9>7=,&/(0, $ O>&'-,P%%5(( &:/;+4&90,<7"(/??.-7@ABCD% $ T4+-+%,8)&06+%:4,8'9+%'/0% ().'9+.0%.%<8+=: 2., 2,&-30"( 4/"(30"( "" "?

166 !"#$%"&'()&*+#,- $%&'()*+,'-'./01'2') (5'6)7+2070(5' ''''''''''''''''''''-'(3)8590':/);59'. /+*"-012-$*&+*13%&+*4#&5. 6*37%+4#&,*&*8-1#. 9#4%"-1#&,*&+"-8*:*43#:#. A*4-7#2-&<3+1)/(0,30='3-&*,3*8#&4"*2#7B&3+"CD F86GH)7#D5$/)317+#)D5.GH)7#I. )*"$-13-&,#34-:,-D. AE&3*4-7#2-. 6*3:"%43-&,#34-:,-D&'()FGH9&!"!#!"*,4*"#&#$%3. /+*"-012-1#&0*$*&*:"-2I-3-&#$%3-&/'9&3-,1*8*8&. J$%3-&,*&K%<#3#"-3-&3-&K*1*=%3#L&/'9M2#L. J$%3-B&:#&2#L&N+*"-012-$*&,*&+"#+*3%. O3-$%&+"%<#:,#D Q3&,4-8%: $/):1*537%D52+,)8$+7)5JKL%5"##$%&&$6/-(./0&37&)-),)2#8&9(9& $/):1*5.'-%D52+,)8$+7)5JKL%5"##$%&&'''('M(./0&N??N&?=&.'-P $/):1*5)*%D52+,)8$+7)5JKL%5"##$%&&'''()*+,$-)(./0&5F./5"##$%&&'''()*+,$-)(7.,&I

167 (#6+-4(#1:;$%&4G6G)(E;,)&(#*;E556MNOP2&1& -&).'&.)*)#/,$"),0/1%&* (#*;E556MNOP2&(#;()$*6E44)(**&(#E44)(**+46MNOP2&1& (#E44)(**+46MNOP2&(#;()$*6*;)((;&/0N20&Q)E-;&J'(-H(/&1 (#E44)(**+46MNOP2&(#;()$*6G+;D&/R(45,)4/&1& (#E44)(**+46MNOP2&(#;()$*6*;E;(&/SE**EG:H*(;;*/&1 (#E44)(**+46MNOP2&(#;()$*6<,*;E%T,4(&/20O?2/&1& %& (*2$%'#3#)+# 4 -'#3#)+.$0,5*/*)#61$&*2 4 78$216,/*$9,31$:&,"*31$*/$/,$ ;/#'#$<7=$*/$<8= (#*;E556MNOP2&(#;()$*6E@(&/BO/UU#*46+-;(@()&1&!:;;<6==>>>1(#E$<%(1,)@=*;E55+4=MNOP23&!:;;<6==>>>1(#E$<%(1,)@=;()$*=E@(3& /BO/UU!:;;<6==>>>1>?1,)@=B220=VSWXG:($EF+-;(@()3&1& 4 >!?$/*6#$"@)#+,/*A$&*21" 4 (*2*$%1$0,5*/*)#/*$*;",/$>!?B$0#&#&C2,$D>E$ 4 FGH$-9A,6#$,/1%&#"/*$&*2*$ Y #*46+-;(@()L&#*465%,E;L&#*464,HI%(L& #*46I,,%(E-L&#*46I,,%(E-L&#*46&4E;(L&Z

168 !"#$%&'(')*' & 4E;(3&!=)4568(*G)+<;+,-3&!=) & +#,)'-'$./ 0 /,$12'*$%3,$4#,)'-(*'("$)456EH,I;&1'$ %#56"7"&'6"*,$,-*5&8'9$&"$:'$,#"%4*53, ; <#"%,='>*5$="),= 0?@'%"A$B5("3,$,#"%'8"$,-*5&89$&"$:'$>"$ 3,@$,#"%'8"$1$+C.$)575)5>6, ; D)"35)E$&'8'(,:$,-*5&8,=$>'$2,(,@5>53$ >'%(,=4 0 D,2,->,$FGH$./E$4>"&'85>$1>,8)'*$,%>,=>5:'$+C.!"!! D)"35) I,>85*>5)*" 0 I,(5&6"*'$,-*5&8,=$>'$>'%(,=4E :;;<6==>>>1(#E$<%(1G,$=B22Q=2R=<),4IG;*&!"#$%&'()*+,-./012/"3!S8TUVWXY&)456789&Z!SY[V\VW&#*4&/:;;<6==>>>1>?1,)@=B220=JKLMG:($EF/3]3!)456789&#$%-*6)45./:;;<6==>>>1>?1,)@=0AAA=2B=BBC)45C*D-;E#C-*F/& #$%-*6(#;()$*./:;;<6==>>>1(#E$<%(1G,$=;()$*=/3 &!)4568(*G)+<;+,-&)456\8./+;($02BR^/3&!(#;()$*6$,4(%&)4564E;E;D<(./_#*4`*;)+-@/3T'()-+@:;()!=(#;()$*6$,4(%3&!(#;()$*6*%((<*&)4564E;E;D<(./_#*4`+-;(@()/3B!=(#;()$*6*%((<*3&!(#;()$*6>(+@:;&)4564E;E;D<(./_#*4`4(G+$E%/3B1R!=(#;()$*6>(+@:;3&!(#;()$*6<EGa(4M+b(&)4564E;E;D<(./_#*4`+-;(@()/3QNR!=(#;()$*6<EGa(4M+b(3 &!=)4568(*G)+<;+,-3& 111,;:()&<),4IG;&4(*G)+<;+,-*111&!=) $ 0 I,>85*>5)*"$,3,:,@'*,$:)4#")'>*5$="),=$J'("$-5%52K 0 L'#"M53,$('A&,$"1*'=5$,$&,>85*>5)*4$J&,8$65(,8'K$'("$ ">2"="24'(>,$,$>*5:,="A$@('>"A 0 D,1>'3,$)'1("@>5$8"#5$&,>85*>5)*5= ;?)5@'$J)27EN':K$;$>54)5*5>'$&,(5&6"*' ; O'#,)52*5$J)27EP5QK$;$4)5*5>'$&,(5&6"*'$JR$S%5&=5>6'TK ; U(85)>'8"=5$J)27EU(8K$;$#)52%8'=(*'$'(85)>'8"=5 0 G,B>,$*5$842"$&)5")'8"$&,(5&6"*5$>'$,%>,="$=1,)65=$+C. 0 /=,*>"&"$%,$2,=,(*5>"$J>"$35A'>"13'$1'$1':,8'=(*'>*5$ 4>"&'8>,%8"$=)52>,%8"K!#!$

169 & -./012#3% %&'()*)%&')+,-./ 0 &-12324/)./5,-3)+678/4)9/)%&':) R )45*6H%E**S&)45*6*GIQ%E**T5S&)45*6;D<( R )45*6<),<();DS&)45*6*GIO),<();DT5 R )45*64,$E+-S&)45*6)E-@( 0 ;+<4-9/).37=2>2)%&')?4-@2A/<78:!).-</B3287!)?7+-C-3)83/?4-5)@-12324/3)?7.-3!D -%4"#5+ #678'9'"!#2+*(#0"5:79;<#0"5:17=(%110>0 #67?%11#@A#"!#2+*(#0"5:79;<#0"5:17=(%110>0 #67!%@0"5:79;<#0"5:17=(%110>0 #67B"C*)0"5:79;<#0"5:17=(%110>0 #678+@+!%@0"5:79;<#0"5:17=(%110>0 #67?%11#@A#"!#2+*(#0"5:171CD=(%11E:0#678'9'"!#2+*(#0>0 #67!%@0"5:171CD=(%11E:0#678'9'"!#2+*(#0>0 #67B"C*)0"5:171CD=(%11E:0#678'9'"!#2+*(#0>0 #678+@+!%@0"5:171CD=(%11E:0#67!%@0>0 #678+@+!%@0"5:171CD=(%11E:0#67?%11#@A#"!#2+*(#0>0

170 #$%-*>)<=./DEEF>GGHHH1HI1,)JG0TTTG2KGKKU)<=U*V-EQ#U-*R/& #$%-*>)<=*./DEEF>GGHHH1HI1,)JGK222G20G)<=U*PD($QR/& #$%>WQ*(./DEEF>GG(#Q$F%(1,)JG*PD($Q*G'(D+P%(*/3&!)<=>5(*P)+FE+,-&)<=>C5./M,E,)X(D+P%(/3&!)<=>EVF(&)<=>)(*,Y)P(./DEEF>GGHHH1HI1,)JGK222G20G)<=U*PD($QR7%Q**/G3!G)<=>5(*P)+FE+,-3&!)<=>5(*P)+FE+,-&)<=>C5./:Q**(-J()X(D+P%(/3&!)<=>EVF(&)<=>)(*,Y)P(./DEEF>GGHHH1HI1,)JGK222G20G)<=U*PD($QR7%Q**/G3!)<=*>*YW7%Q**6=&)<=>)(*,Y)P(./RM,E,)X(D+P%(/G3&!G)<=>5(*P)+FE+,-3&!)<=>5(*P)+FE+,-&)<=>C5./8)YPZ/3&!)<=>EVF(&)<=>)(*,Y)P(./DEEF>GGHHH1HI1,)JGK222G20G)<=U*PD($QR7%Q**/G3&!)<=*>*YW7%Q**6=&)<=>)(*,Y)P(./RM,E,)X(D+P%(/G3&!G)<=>5(*P)+FE+,-3&!)<=>5(*P)+FE+,-&)<=>C5./XQ-/3&!)<=>EVF(&)<=>)(*,Y)P(./DEEF>GGHHH1HI1,)JGK222G20G)<=U*PD($QR7%Q**/G3&!)<=*>*YW7%Q**6=&)<=>)(*,Y)P(./RM,E,)X(D+P%(/G3&!G)<=>5(*P)+FE+,-3&!)<=>5(*P)+FE+,-&)<=>C5./M+-+XQ-/3&!)<=>EVF(&)<=>)(*,Y)P(./DEEF>GGHHH1HI1,)JGK222G20G)<=U*PD($QR7%Q**/G3&!)<=*>*YW7%Q**6=&)<=>)(*,Y)P(./RXQ-/G3&!)<=*>*YW7%Q**6=&)<=>)(*,Y)P(./R:Q**(-J()X(D+P%(/G3&!G)<=>5(*P)+FE+,-3& %&'4( * 4310-,(2-( *8 9 %&'(,-2,+:8 [ )<=*>:),F()EV%&%:+;*7*.*/-( * 9 %&'(5.)+<-( *' [ )<=*><,$Q+-&&%:+;*7*.*/-(=,0+(>1<=17+76+( * [ )<=*>)Q-J(&&%:+;*7*.*/-(:,?@+(>1<=17+76+( * [ )<=*>*YW:),F()EV6=&U%*2,-A-(B4C(,+3-.*/1(<+:( <*!G)<=>?5@3&!" #$ D=*510-7/+( * 9 D=*5?/+<1( *(,-2,+:10(=1:1E71(>16(,-2,+:+(0(=,1@,-<5>*)(/+2*>*) 9 F5+( *(51(:+;*7*,-7+(>16(=,*<+,>*( )<=>:),F()EV 9 G*(1<+/*6+0(@3+:+(H *( *I 9 J,*(:+;*7*.*/*(2-31@+(0,+:7156*(3-)>1(?=1,-E3/-<1( 6?:*( (6*=+(7=,K(#*<>+-E(J() J,*<+, 9 # ((#>QYED,)&*<-(:1<+71((#>\,,Z(*7(2-31@1(0,+:7156*(,-2,+:&(#>:()*,- (#>\,,Z&)<=>EVF(&)<=*>7%Q**&1& (#>:()*,-&)<=>EVF(&)<=*>7%Q**&1& (#>QYED,)&)<=>EVF(&)<=>:),F()EV&1& (#>QYED,)&)<=*><,$Q+-&(#>\,,Z&1& (#>QYED,)&)<=*>)Q-J(&(#>:()*,-&1& 9 # (*<-(3-)>1(0+L(>16(+71(2-31@1(0,+:7156*8 (#>DQ*M,ED()&)<=*>)Q-J(&(#>@($Q%(&1 (#>DQ*M,ED()&)<=*>)Q-J(&(#>:()*,-&1& #( #!

171 !"#$%&#$'()&*'+ 8&59+"#$%&#$', -)$&(./(0/1'#$0'0"+"(&#/2"3, )E%#"2G)","#$%*+(),"#$%&"'()"*+,H, )E%("267"+."2G)","#$%*+(),"#$%&"'()"*+,H, #$%&'()*+%$,-.-)/0*,1%$,%&'()*+%',$+*-,1! 2'()*03%456783%30%930-)$%:+*+ ;" 930-)$%:+*+%3/'()/)0*+<38+%0+%&'()*.! =(+&3E03%&'()*!"#$ %&'()"&) *"+&,-$./01/") " A+&2"+%'(B%':"$%'(CD# " 8&'*)/5&)"+%'(6/E"%'*6' F> GHI!(:&$(#:B;%"(&2+':"()#/2'%/ J> GK;/09;&)/*")/ A" 4'(3-+<38)%! #$%& -23"&4 51/6) #$%& #$%& C" D+&()$083%-,>+-3! '! "

172 <2%&,*)(=!>?/)()*(2"&2%&,&*&(0,#"),-&!"#$%&'.&"(/&(-0&$)*1(02%&,1(3&%#(+)$4#( 0,"54,5")"1*16(12%)417)/&(,&84#( )'2%&'&*,)"1/#(21'&,*&(#2&"17)/&9(!"#$%&'()*("&+),&- :&+),&-!#-&;1/(0,"54,5"#(-0&$)*&(02%&,19 <2%&,*)(=!>?/)("13D&%)/#(02%&,(*1(-",#-&(3(#J"1/1')!"#$%& '& <%1$&(%10,*#0,)A BC(=!>?/)(*5D)/#(2")-1,*&( -'&0*)4&9!"# $%&!"# $%&!"# $%&!"# $%& -)"#-9( HC(I&('#"&'#(D&G)*)"1,)( 2#-&31-('&D(2#D1,4#-*)')( #$/&4,)9( $ ' ( )

173 !"#$%&'()*"+&,-(!"#$%&'()*+,#-#.'/*(0*1%,)'2,*.%(0"-*)%(3%4( 5 67&-'8'$%,/*(0)$79)7$'$%,'+("#:%)9#;(,%(0"-*)< 5 =*>','8'/#("#;*3%;(1*:("#:%)9'('3(*,*.%(0"-*),*.%(1*0)%( 0("#:%)9'(;(:$7.'+(0"-*),'+(1*0)'+? #$% #$%!"# $%&' #$% #$%!"# $%&'( #$% #$% #$%!"# $%&'( #$%!"# $%&'( #$% #$%!.('/(*()*"#$%&'(0)*"+&,-"#!" #$%&'()*#+,-./*0%1*)2/3'*4'*%(./01/ 5" #$%&'()*6778*#+,9*:'*;'<0%*;.=:./*:%>1%$'.%*:%*1/<* $%:'10/ E" F0;.=G)*+CD*>1'B0/*:&=A)<*#+,9*:'*;'<0%*;.=:./* %:0&)./.%*>%&%:3/*%(./01/" &! " $ ' $%:'10%B! P31)1/1/*>%*$%B/4'3/*>*$%B/4'B'2) $%:'10%B3/*B)&/*)3*%2%A%G'*%:0&)B'3./*3%B)<*B)&%B" )12*3$2$',&/(4&)*"#$%&'(0) )*"+&,-"#)'&)5*3$,6! ()*+,*-)./0,1! ***8%:'10)*>%*>'2%-%$)>3) " R/*'$;)0'O).'*:%()*$%:'10/9*0)*>%*$&/:>1'B;./3)*4*3/$%43'3)2* (/>/:3.'0%29*2%&'*'$;)0'O).'*):/31)Q)O)&'1)*#+,-./9*0)*):/31)Q)O)&'.%* >;%B'&./*4*:/Q)3)O).'2)*+CDS*)3*TUI*)4&'4%B" #$% #$% #$% #$% #$% #$% #$% #$% #$% #$%! **S$;/1*$%:'10%B*./*%:$&1*! 7%*$%2/3)9*:'*;'<0%*'$;)0'O)./*%:0&)B'.%*3%B/*$%:'10%B3/*B)&/*B* G'>=*)4B'.'3.'"*!"# $%&'!"# $%&'(!"# $%&'(!"# $%&'( &! " $ '

174 !"#$%&'(&')$*+,'$-./.$ %*-$01&2(,$'.$3+4,/56$7.8$9::;!!"#$%&'()* "!"#$%&%'()*+,-#./-*+0%1,-23'/%1,3-2(/4-5)%1,6#%'4,)(,.3$+/"7, "!-5+6-5()*+,./5('%,8+2,'(6$%0)%8%,3-2(/4-5)%8%,5%'%,! %*-$01&2(,$'.$3+4,/56$B,+/,=1,2$9::C! ().4*5,')&'(4$&.)0-1.2)&$).0-5&?>>>>F67,77

175 !"#$$%&'()*$+,$-./*012$3,(*4$5667!"#$%&'()*$+,$-./*012$:*.0$56;6!"#$%&'()*$+,$-./*012$81/'9$5667!"#$-0,0'-0'),2$81/'9$5667!"#$%& '"(")(*+%,-./ 0(")(1-"23 3*<', =7>?666?666 5;5?666?666!'F*$:4'*+4*- 5?A57?666?666 G*EH(,.I'4$#,0, C?67J?666?666 J=?666?666 5;A?666?666 D1&/'4,0'E+- K-*($G*+*(,0*$ LE+0*+0 L(E--N#EO,'+ *"6$- 789:78;;;8;;;!"#"$%&&%'(")*%+&,-".*'/"01)123'42 '"(")(4%&5/ 0(")( 4%&5/ ;?5C>?666 A?755?666 ;CC?;77?666 A?6C>?666 ;?MM7?666 C?775?666 <=>8?=>8;;;

176 !!!"#$%&'(%)*!!!+')!$',&-!.'/*0%1-!2!3*14 5/2&'$.%&!6'!#-7*6'.*!#-0'3&* 3'()$%04,!, 7-89*$-* 3'()$%04,!, 5,*/6#* +$,-./0 1(2'($* " #+,-.+/012! #92:;(< " 7+1,.5426=:2!51.%&92)*< " " D%/'%4/2B)=2! D%/'%4/92:;(< #$%&' #$%&' #$%&' #$%&' #$%&' " #$%&' #$%&' #$%&' #$%&' #$%&' " )%4I02EJ?51G+/+2! =:2!51.%&92)*<!"#$% &'()*!"#$% &'()*!"#$% &'()*!"#$% &'()* " =5&K%1526)*B &G< (! " ) * 8-7*6'.%!#-0'3&%!7!#/*#$*3*.%,! 23-/%37',!91*2,:#2; "#$%&'(%)*!2!2#*(%<%=.-!0-1*.->!&%!:#-/'?$)')-! #-7*6'.*!#-0'3&*!%6!2#$*3' <#&'),.'=, :($2-,!$% ;'$9 8-0'3&-7.'!<:6%)'!"#$%&'()*+,-(*(.,/(*('/,0$($%'*"#0-,1* '%*23,*"#1%/),4*)(*3#*1#3/#"'(*5%*#&6,)/7* 8'%'(*"$#&-,.(9* ****:$,3-()%2,*3;,. ****<,=,2%'6,*',)#'3(3/,'/'#3/( >,L5A/ >,L5A/ >,L5A/ >,L5A// >,L5A/ >,L5A/ >,L5A/ >,L5A/ * (! " )

177 !"#$%&'()*+&,$!"#$%&'(&)* +,#-.&*'#/0&*.&*$%)"'* %#-&'0#+ 1%#2&3)4&5* 67%"-(&8* 9"+:;*(.*<)(=02* *%#-&'0" >#-&'0#+.(*$%)"'*(.*($0&).(0(! ***,''%5EE(F$G$";G"-;G=.E$"2+(="$EH&)=#.$E#34"='$"&2=,E(.-"IG4$%! ***,''%5EEFFFG-"2(G("E! BF##J)"*?1M7C8*1BND! A&'$#.*?Q%".*1.(+"2$(':8*1RD

Državni izpitni center SPOMLADANSKI IZPITNI ROK *M * NAVODILA ZA OCENJEVANJE. Četrtek, 2. junij 2016 SPLOŠNA MATURA

Državni izpitni center SPOMLADANSKI IZPITNI ROK *M * NAVODILA ZA OCENJEVANJE. Četrtek, 2. junij 2016 SPLOŠNA MATURA Državni izpitni center *M16178113* SPOMLADANSKI IZPITNI ROK NAVODILA ZA OCENJEVANJE Četrtek, 2. junij 2016 SPLOŠNA MATURA RIC 2016 M161-781-1-3 2 IZPITNA POLA 1 1 1 2 1 3 3 4 1 5 3 6 2 7 1 8 1 9 1 10 3

More information

Strukturirani poizvedovalni jezik SQL

Strukturirani poizvedovalni jezik SQL Računalništvo Strukturirani poizvedovalni jezik SQL Danijel Skočaj, Evelin Vatovec Krmac Univerza v Ljubljani Fakulteta za pomorstvo in promet Literatura: Evelin Vatovec Krmac, Računalništvo in informatika,

More information

Sistemske zahteve za SAOP

Sistemske zahteve za SAOP Sistemske zahteve za SAOP Samostojna delovna postaja višji). icenter je ERP sistem, ki zagotavlja popolno kontrolo nad vsemi poslovnimi procesi v podjetju. V tej postavitvi je SAOP icenter nameščen na

More information

Razvoj jezika za iskanje, povezovanje in predstavitev podatkov

Razvoj jezika za iskanje, povezovanje in predstavitev podatkov UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Ernest Štukelj Razvoj jezika za iskanje, povezovanje in predstavitev podatkov DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU SMER PROGRAMSKA OPREMA

More information

Transakcije v MariaDB/MySQL (transakcija A)

Transakcije v MariaDB/MySQL (transakcija A) Transakcije v MariaDB/MySQL (transakcija A) Pomožni elementi In [1]: # pyodbc import pyodbc try: cn1.close() except: pass # MariaDB/MySQL conn = "DRIVER={MySQL ODBC 5.3 Unicode Driver};SERVER=localhost;DATABASE=sandbox;UID=tu

More information

2.1 Uvod v podatkovne baze

2.1 Uvod v podatkovne baze 2. Podatkovne baze Uvod v podatkovne baze Predstavitev podatkov Relacijski podatkovni model Povpraševalni jezik SQL Modeliranje podatkov 2.1 Uvod v podatkovne baze Podatkovna osnova informacijskih sistemov

More information

Session:E07 GALIO - DB2 index advisor, how we implemented it and what we get from self-made expert tool

Session:E07 GALIO - DB2 index advisor, how we implemented it and what we get from self-made expert tool Session:E07 GALIO - DB2 index advisor, how we implemented it and Viktor Kovačević, MSc Hermes Softlab 6th October 2009 14:15 (60') Platform: UDB / LUW OUTLINE Application & Database tuning Self made index

More information

Programski jezik Java

Programski jezik Java Programski jezik Java Interno gradivo za predmet Algoritmi in programski jeziki (4. letnik) ArrayList (neprečiščeno besedilo) ArrayList Java class ArrayList(java.util.ArrayList) je hiter in za uporabo

More information

IP PACKET QUEUING DISCIPLINES AS BASIC PART OF QOS ASSURANCE WITHIN THE NETWORK

IP PACKET QUEUING DISCIPLINES AS BASIC PART OF QOS ASSURANCE WITHIN THE NETWORK UDK621.3:(53+54+621 +66), ISSN0352-9045 Informacije MIDEM 39(2009)2, Ljubljana IP PACKET QUEUING DISCIPLINES AS BASIC PART OF QOS ASSURANCE WITHIN THE NETWORK Sasa Klampfer, Joze Mohorko, Zarko Cucej University

More information

Prirejanje in preverjanje tipov

Prirejanje in preverjanje tipov Uvod v C# Drugi del Dedovanje Sintaksa Prirejanje in preverjanje tipov Kaste preverjenih tipov Prekrivanje metod Dinamično povezovanje (poenostavljeno) Skrivanje Dinamično povezovanje (s skrivanjem) Fragile

More information

Vodnik skozi Google Analytics Beta verzija 1. del. prehod s stare kode (urchin.js), k novi kodi za sledenje (ga.js)

Vodnik skozi Google Analytics Beta verzija 1. del. prehod s stare kode (urchin.js), k novi kodi za sledenje (ga.js) Vodnik skozi Google Analytics Beta verzija 1. del prehod s stare kode (urchin.js), k novi kodi za sledenje (ga.js) Ta vodnik je povzetek Googe vodiča ' Tracking Code Migration Guide Switching from urchin.js

More information

Poglavje 7. Indeksi z uporabo drevesnih struktur Povzeto po [1]

Poglavje 7. Indeksi z uporabo drevesnih struktur Povzeto po [1] Poglavje 7 Indeksi z uporabo drevesnih struktur Povzeto po [1] - 1 - Indeksi uvod.. Včasih hočemo najti vse zapise, ki imajo določeno vrednost v določenem polju INDEKS je zunanja podatkovna struktura,

More information

Podatkovne baze I in Osnove podatkovnih baz

Podatkovne baze I in Osnove podatkovnih baz Podatkovne baze I in Osnove podatkovnih baz dr. Rok Rupnik Šolsko leto 2007/2008-1 - Splošne informacije Priporočena literatura [1] Raghu Ramakrishnan, Johannes Gehrke (2003). Database Management Systems,

More information

Delavnica za konfiguriranje dostopovnih točk WEB konfiguracija LANCOM L-54

Delavnica za konfiguriranje dostopovnih točk WEB konfiguracija LANCOM L-54 Delavnica za konfiguriranje dostopovnih točk WEB konfiguracija LANCOM L-54 Boštjan Lemut Prva povezava na L-54 s povezovalnim kablom povežemo mrežna vmesnika na računalniku in L-54 v brskalniku vpišemo

More information

Delavnica za konfiguriranje dostopovnih točk Konfiguracija LANCOM L-54 z uporabo orodja LANConfig

Delavnica za konfiguriranje dostopovnih točk Konfiguracija LANCOM L-54 z uporabo orodja LANConfig Delavnica za konfiguriranje dostopovnih točk Konfiguracija LANCOM L-54 z uporabo orodja LANConfig Boštjan Lemut Prva povezava na L-54 s povezovalnim kablom povežemo mrežna vmesnika na računalniku in L-54

More information

» Nakup in vzdrževanje Oracle programske opreme «Tehnične specifikacije

» Nakup in vzdrževanje Oracle programske opreme «Tehnične specifikacije Obrazec P-5 Specifikacije 30K250316» Nakup in vzdrževanje Oracle programske opreme «Tehnične specifikacije KAZALO VSEBINE 1. Predmet javnega naročila...3 1.1. SKLOP-1: STORITEV VZDRŽEVANJA ORACLE LICENČNE

More information

CIS-331 Fall 2014 Exam 1 Name: Total of 109 Points Version 1

CIS-331 Fall 2014 Exam 1 Name: Total of 109 Points Version 1 Version 1 1. (24 Points) Show the routing tables for routers A, B, C, and D. Make sure you account for traffic to the Internet. Router A Router B Router C Router D Network Next Hop Next Hop Next Hop Next

More information

Q: Do You made a backup before upgrade? A: Only cowards make backups!

Q: Do You made a backup before upgrade? A: Only cowards make backups! Q: Do You made a backup before upgrade? You z malo - you A: Only cowards make backups! Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies.

More information

Algoritmi in podatkovne strukture 2. Urejanje (sorting)

Algoritmi in podatkovne strukture 2. Urejanje (sorting) Algoritmi in podatkovne strukture 2 Urejanje (sorting) osnove, metode deli in vladaj, kopica Andrej Brodnik: Algoritmi in podatkovne strukture 2 / Urejanje (sorting) osnove, metode deli in vladaj, kopica

More information

Navodila za interaktivne naloge Bober

Navodila za interaktivne naloge Bober Avtorji dokumenta: Dean Gostiša , Lovro Podgoršek Verzija dokumentacije: 1.1 Datum in kraj: 24. 7. 2013, Ljubljana Navodila za interaktivne naloge Bober Uvod 1.

More information

SPARE CONNECTORS KTM 2014

SPARE CONNECTORS KTM 2014 SPAREPARTSCATALOG: // ENGINE ART.-NR.: 3208201EN CONTENT CONNECTORS FOR WIRING HARNESS AA-AN CONNECTORS FOR WIRING HARNESS AO-BC CONNECTORS FOR WIRING HARNESS BD-BQ CONNECTORS FOR WIRING HARNESS BR-CD

More information

4. Specifications and Additional Information

4. Specifications and Additional Information 4. Specifications and Additional Information AGX52004-1.0 8B/10B Code This section provides information about the data and control codes for Arria GX devices. Code Notation The 8B/10B data and control

More information

Podatkovni modeli in jeziki

Podatkovni modeli in jeziki Podatkovni modeli in jeziki 2018/19 Iztok Savnik, FAMNIT 1 Osnovni podatki Naslov: Predavatelj: Vaje: Točke: Komunikacija: Govorilne ure: URL: E-učilnica: Podatkovni modeli in jeziki dr. Iztok Savnik domače

More information

SPAREPARTSCATALOG: CONNECTORS SPARE CONNECTORS KTM ART.-NR.: 3CM EN

SPAREPARTSCATALOG: CONNECTORS SPARE CONNECTORS KTM ART.-NR.: 3CM EN SPAREPARTSCATALOG: CONNECTORS ART.-NR.: 3CM3208201EN CONTENT SPARE CONNECTORS AA-AN SPARE CONNECTORS AO-BC SPARE CONNECTORS BD-BQ SPARE CONNECTORS BR-CD 3 4 5 6 SPARE CONNECTORS CE-CR SPARE CONNECTORS

More information

Naslavljanje v IP. Miran Meža

Naslavljanje v IP. Miran Meža Naslavljanje v IP Miran Meža Omrežje vseh omrežij Avtonomni sistem Avtonomni sistem Avtonomni sistem Avtonomni sistem Avtonomni sistem Avtonomni sistem Omrežje vseh omrežij Usmerjanje prometa: poznati

More information

Podatkovno procesiranje v relacijskih sistemih

Podatkovno procesiranje v relacijskih sistemih Podatkovno procesiranje v relacijskih sistemih Iztok Savnik, FAMNIT. Vsebina Vgnezden SQL Dinamični SQL Shranjene procedure in funkcije Prožilci Vgnezden SQL Pristop: Vgnezdi SQL stavke v gostiteljski

More information

ABBYY rešitve za prepoznavo in klasifikacijo dokumentov

ABBYY rešitve za prepoznavo in klasifikacijo dokumentov ABBYY rešitve za prepoznavo in klasifikacijo dokumentov preabbyy FlexiCapture 9.0. Overview. 1 doc: 10977 Lokalna prisotnost ABBYY: Moscow, Russia; Munich, Germany; Bracknell, UK; Kiev, Ukraine; Milpitas,

More information

Prometno načrtovanje xdsl

Prometno načrtovanje xdsl Prometno načrtovanje xdsl 1 Kazalo Prometno načrtovanje naročniške zanke Prometno načrtovanje MSAN Izbira agregacijskega modela Izbira opreme 2 Potrebe po pasovni širini Zahtevana pasovna širina na uporabnika

More information

CIS-331 Exam 2 Fall 2015 Total of 105 Points Version 1

CIS-331 Exam 2 Fall 2015 Total of 105 Points Version 1 Version 1 1. (20 Points) Given the class A network address 117.0.0.0 will be divided into multiple subnets. a. (5 Points) How many bits will be necessary to address 4,000 subnets? b. (5 Points) What is

More information

Imenski prostori, poti in kazalci v XML

Imenski prostori, poti in kazalci v XML Imenski prostori, poti in kazalci v XML Iztok Savnik 1 Imenski prostori v XML XML dokument lahko uporablja atribute, elemente in definicije, ki se nahajajo v drugih datotekah Modularna zasnova Ne sme priti

More information

Hitra rast hranjenih podatkov

Hitra rast hranjenih podatkov Tomaž Borštnar - član uredništva računalniške revije Monitor od začetka (oktober 1991; ne-pc okolja (Unix, etc) - sodelavec YUNAC in ARNES od začetka - postavil in upravljal večino strežnikov na SiOL -

More information

DB2 podatkovna baza v praksi

DB2 podatkovna baza v praksi DB2 podatkovna baza v praksi Aljoša Trivan, Mikropis holding d.o.o. aljosa.trivan@mikropis.si 2007 IBM Corporation Agenda Mikropis Splošno Fleksibilnost Vzdrževanje Backup SQL objekti in SQL stavki Novosti

More information

Osnove programskega jezika C++

Osnove programskega jezika C++ Osnove programskega jezika C++ 1 O S N O V E P R O G R A M I R A N J A V C + + U P O R A B A P R O G R A M A CODE::B L O C K S programski stavek Nekaj osnovnih pojmov (1.) definicija, deklaracija, ukaz

More information

CIS-331 Spring 2016 Exam 1 Name: Total of 109 Points Version 1

CIS-331 Spring 2016 Exam 1 Name: Total of 109 Points Version 1 Version 1 Instructions Write your name on the exam paper. Write your name and version number on the top of the yellow paper. Answer Question 1 on the exam paper. Answer Questions 2-4 on the yellow paper.

More information

CIS-331 Fall 2013 Exam 1 Name: Total of 120 Points Version 1

CIS-331 Fall 2013 Exam 1 Name: Total of 120 Points Version 1 Version 1 1. (24 Points) Show the routing tables for routers A, B, C, and D. Make sure you account for traffic to the Internet. NOTE: Router E should only be used for Internet traffic. Router A Router

More information

Fakulteta za elektrotehniko, računalništvo in informatiko Inštitut za avtomatiko Laboratorij za obdelavo signalov in daljinska vodenja

Fakulteta za elektrotehniko, računalništvo in informatiko Inštitut za avtomatiko Laboratorij za obdelavo signalov in daljinska vodenja Fakulteta za elektrotehniko, računalništvo in informatiko Inštitut za avtomatiko Laboratorij za obdelavo signalov in daljinska vodenja Navodila za vaje pri predmetu Internetne tehnologije VAJA 2 Dušan

More information

Organizacija računalnikov (OR) UNI-RI, 3.l. RS Vaje. doc.dr. Mira Trebar

Organizacija računalnikov (OR) UNI-RI, 3.l. RS Vaje. doc.dr. Mira Trebar Organizacija računalnikov (OR) UNI-RI, 3.l. RS Vaje doc.dr. Mira Trebar 2 Vaja 1 (11.10.2010) Vaje so obvezne (delo v laboratoriju + doma) S1: Logisim MIPS procesor eno-cikelna izvedba ( logisim ) MIPS

More information

July Registration of a Cyrillic Character Set. Status of this Memo

July Registration of a Cyrillic Character Set. Status of this Memo Network Working Group Request for Comments: 1489 A. Chernov RELCOM Development Team July 1993 Status of this Memo Registration of a Cyrillic Character Set This memo provides information for the Internet

More information

Tehnike programiranja PREDAVANJE 2 Uvod v JavaScript

Tehnike programiranja PREDAVANJE 2 Uvod v JavaScript Tehnike programiranja PREDAVANJE 2 Uvod v JavaScript Predavanje 2 Ponovitev Predavanje 1 Naloge Uvod v JavaScript Pravila Primeri Priprava na laboratorijske vaje Pregled orodij ldos.fe.uni-lj.si >študij

More information

Objektno-relacijski sistemi za upravljanje podatkovnih baz - SQL3

Objektno-relacijski sistemi za upravljanje podatkovnih baz - SQL3 Objektno-relacijski sistemi za upravljanje podatkovnih baz - SQL3 Iztok Savnik FAMNIT, 2011/12 Potek predstavitve Razvoj SQL standardov SQL2 SQL3 - Pregled vsebine SQL3 - Pregled gradnikov Zaključki Literatura

More information

Skriptni jezik lupine Bash

Skriptni jezik lupine Bash Robert Meolic meolic@uni mb.si Skriptni jezik lupine Bash interno gradivo za predmet VSO, 2006/07 1. LITERATURA Pri sestavljanju gradiva o skriptnem jeziku lupine Bash sem uporabljal internet in naslednji

More information

Razširljiv nadzor velikih oblačnih sistemov

Razširljiv nadzor velikih oblačnih sistemov Univerza v Ljubljani Fakulteta za računalništvo in informatiko Nejc Saje Razširljiv nadzor velikih oblačnih sistemov MAGISTRSKO DELO ŠTUDIJSKI PROGRAM DRUGE STOPNJE RAČUNALNIŠTVO IN INFORMATIKA Mentor:

More information

How we calculate volume with the use of NTF method. Kako izračunamo volumen z uporabo metode NTF

How we calculate volume with the use of NTF method. Kako izračunamo volumen z uporabo metode NTF RMZ Materials and Geoenvironment, Vol. 55, No. 1, pp. 127-134, 2008 127 How we calculate volume with the use of NTF method Kako izračunamo volumen z uporabo metode NTF An e s Du r g u t o v i ć 1, Mi l

More information

CIS-331 Exam 2 Fall 2014 Total of 105 Points. Version 1

CIS-331 Exam 2 Fall 2014 Total of 105 Points. Version 1 Version 1 1. (20 Points) Given the class A network address 119.0.0.0 will be divided into a maximum of 15,900 subnets. a. (5 Points) How many bits will be necessary to address the 15,900 subnets? b. (5

More information

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end. NAREDBA CIKLUSA SA PREDUSLOVOM WHILE 1.Odrediti vrednosti s i p nakon izvrsenja sledecih naredbi za dato a=43, a=34, a=105 program p1; var a,s,p:integer; write('unesite a:');readln(a); p:=a; s:=0; while

More information

Razred File vsebuje osnovne metode za delo z datotekami, kot sta branje in zapisovanje.

Razred File vsebuje osnovne metode za delo z datotekami, kot sta branje in zapisovanje. Delo z datotekami Razred File Razred File vsebuje osnovne metode za delo z datotekami, kot sta branje in zapisovanje. Deklaracija objekta File poteka tako: File ime = new File(pot_do_datoteke_in_ime);

More information

RAZLOG ZA IZVAJANJE PROGRAMA POPRBAZA

RAZLOG ZA IZVAJANJE PROGRAMA POPRBAZA RAZLOG ZA IZVAJANJE PROGRAMA POPRBAZA POPRBAZA je namenjen večji reorganizaciji podatkov v računalnikovem spominu. Reorganizacijo narekujejo bodisi zakonske spremembe, bodisi novosti v programu. Zato je

More information

Primerjava in analiza učinkovitosti podatkovnih baz DB2 in MySQL

Primerjava in analiza učinkovitosti podatkovnih baz DB2 in MySQL Univerza v Ljubljani Fakulteta za računalništvo in informatiko Nedim Husaković Primerjava in analiza učinkovitosti podatkovnih baz DB2 in MySQL DIPLOMSKO DELO VISOKOŠOLSKI ŠTUDIJSKI PROGRAM PRVE STOPNJE

More information

Državni izpitni center *M * JESENSKI IZPITNI ROK RAČUNALNIŠTVO NAVODILA ZA OCENJEVANJE. Sreda, 31. avgust 2011 SPLOŠNA MATURA

Državni izpitni center *M * JESENSKI IZPITNI ROK RAČUNALNIŠTVO NAVODILA ZA OCENJEVANJE. Sreda, 31. avgust 2011 SPLOŠNA MATURA ržavni izpitni center *M2783* RČUNLNIŠTVO JSNSKI IZPITNI ROK NVOIL Z ONJVNJ Sreda, 3. avgust 2 SPLOŠN MTUR RI 2 2 M2-78--3 IZPITN POL Obkrožite pravilno trditev.. Kakšna je vzdolžna pariteta naslednjega

More information

OGRODJE ZA OPTIMIZACIJO INDEKSOV V MYSQL BAZAH PODATKOV

OGRODJE ZA OPTIMIZACIJO INDEKSOV V MYSQL BAZAH PODATKOV UNIVERZA V LJUBLJANI FAKULTETA ZA ELEKTROTEHNIKO MATJAŽ MRGOLE OGRODJE ZA OPTIMIZACIJO INDEKSOV V MYSQL BAZAH PODATKOV DIPLOMSKO DELO UNIVERZITETNEGA ŠTUDIJA Mentor: doc. dr. Boštjan Murovec Ljubljana,

More information

Jezik Baze Podataka SQL. Jennifer Widom

Jezik Baze Podataka SQL. Jennifer Widom Jezik Baze Podataka SQL SQL o Jezik koji se koristi u radu sa relacionim bazama podataka o Nije programski jezik i manje je kompleksan. o Koristi se isključivo u radu za bazama podataka. o SQL nije case

More information

PROGRAMIRANJE II: KONCEPTI PROGRAMSKIH JEZIKOV

PROGRAMIRANJE II: KONCEPTI PROGRAMSKIH JEZIKOV 1 U N I V E R Z A N A P R I M O R S K E M Fakulteta za matematiko, naravoslovje in informacijske tehnologije Iztok Savnik SKRIPTA ZA PREDMET PROGRAMIRANJE II: KONCEPTI PROGRAMSKIH JEZIKOV ŠTUDIJSKI PROGRAM

More information

Calculation of volume with the use of NTF method. Izračun volumnov z uporabo NTF metode

Calculation of volume with the use of NTF method. Izračun volumnov z uporabo NTF metode RMZ - Materials and Geoenvironment, Vol. 53, No. 2, pp. 221-227, 2006 221 Calculation of volume with the use of NTF method Izračun volumnov z uporabo NTF metode Milivoj Vulić 1, Anes Durgutović 2 1 Faculty

More information

Nataša Knez. Primerjava relacijske in NoSQL podatkovne baze in opredelitev kriterijev za pomoč pri izbiri najprimernejše podatkovne baze

Nataša Knez. Primerjava relacijske in NoSQL podatkovne baze in opredelitev kriterijev za pomoč pri izbiri najprimernejše podatkovne baze UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Nataša Knez Primerjava relacijske in NoSQL podatkovne baze in opredelitev kriterijev za pomoč pri izbiri najprimernejše podatkovne baze DIPLOMSKO

More information

formati slike in branje slike pomen in nekaj primerov EM spekter aplikacije v posameznih delih spektra o matriki slike

formati slike in branje slike pomen in nekaj primerov EM spekter aplikacije v posameznih delih spektra o matriki slike Strojni vid pri tehnoloških meritvah formati slike in branje slike pomen in nekaj primerov EM spekter aplikacije v posameznih delih spektra o matriki slike formati slike in branje slike slika je običajno

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka Ana Spasić 5. čas 1 Podupiti, operatori exists i in 1. Izdvojiti imena i prezimena studenata koji su položili predmet čiji je identifikator 2001. Rešenje korišćenjem spajanja

More information

UYM-UOM-UOY-UOD- UOS-UOB-UOR

UYM-UOM-UOY-UOD- UOS-UOB-UOR UY-UO-UOY-UOD- UOS-UOB-UOR Indexable date stamps at.: Acier inoxydable 5-55 HRC :15 Remove inner insert from the outer insert using a screwdriver REF* REF REF REF REF REF REF D F 1 UY 4/2* UO 4 UOY 4/2*

More information

The cache is 4-way set associative, with 4-byte blocks, and 16 total lines

The cache is 4-way set associative, with 4-byte blocks, and 16 total lines Sample Problem 1 Assume the following memory setup: Virtual addresses are 20 bits wide Physical addresses are 15 bits wide The page size if 1KB (2 10 bytes) The TLB is 2-way set associative, with 8 total

More information

Družina IEEE802 Poddružina IEEE802.1 Priključitev v omrežje IEEE802.1x

Družina IEEE802 Poddružina IEEE802.1 Priključitev v omrežje IEEE802.1x 1 Družina IEEE802 Poddružina IEEE802.1 Priključitev v omrežje IEEE802.1x 2 družina standardov, ki opisujejo delovanje lokalnih (LAN) in mestnih (MAN) omrežij delo opravljano v delovnih skupinah več na

More information

VRIJEDNOSTI ATRIBUTA

VRIJEDNOSTI ATRIBUTA VRIJEDNOSTI ATRIBUTA Svaki atribut (bilo da je primarni ključ, vanjski ključ ili običan atribut) može i ne mora imati ograničenja na svojim vrijednostima. Neka od ograničenja nad atributima: Null / Not

More information

Spletni urejevalnik JSON datotek s podano vsebinsko shemo

Spletni urejevalnik JSON datotek s podano vsebinsko shemo Univerza v Ljubljani Fakulteta za računalništvo in informatiko Marko Struna Spletni urejevalnik JSON datotek s podano vsebinsko shemo DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO

More information

Ljubljana,

Ljubljana, Ljubljana, 9. 4. 2018 Katalog znanj in vzorci nalog za izbirni izpit za vpis na magistrski študij Računalništvo in informatika 2018/2019 0 KATALOG ZNANJ ZA IZBIRNI IZPIT ZA VPIS NA MAGISTRSKI ŠTUDIJ RAČUNALNIŠTVO

More information

Scorciatoie da tastiera - Circad 4.09

Scorciatoie da tastiera - Circad 4.09 Scorciatoie da tastiera - Circad 4.09 File FE New File - File FO Open File - File FR Re-Open - File FT Total Recall - File FD Load - File FC Close File - File FE Erase File - File FS Save File - File FA

More information

UDF for volume calculation with the use of NTF method. Lastne Excel funkcije za izračun prostornin po NTF metodi

UDF for volume calculation with the use of NTF method. Lastne Excel funkcije za izračun prostornin po NTF metodi RMZ Materials and Geoenvironment, Vol. 54, No. 3, pp.419-425, 2007 419 UDF for volume calculation with the use of NTF method Lastne Excel funkcije za izračun prostornin po NTF metodi Mi l i v o j Vu l

More information

PCL ISO 8859/5 Latin/Cyrillic

PCL ISO 8859/5 Latin/Cyrillic Page 1 of 5 PCL Symbol Se t: 10N Unicode gly ph correspondence tables. Contact:help@redtitan.com http://pcl.to $20 U0020 Space -- -- -- -- $21 U0021 Ê Exclamation mark -- -- -- -- $22 U0022 Ë Quotation

More information

TEHNIČNA POJASNILA GLEDE IZPOLNJEVANJA ITS POROČIL

TEHNIČNA POJASNILA GLEDE IZPOLNJEVANJA ITS POROČIL TEHNIČNA POJASNILA GLEDE IZPOLNJEVANJA ITS POROČIL Tip dokumenta IT-TN Oznaka dokumenta BS-IT-RA-TN-ITS-dod Verzija dokumenta 1.4 Status dokumenta Datum zadnje spremembe dokumenta 23.11.2017 Zgodovina

More information

Predstavitev teksta v računalniku

Predstavitev teksta v računalniku Predstavitev teksta v računalniku Za tekst, ki ga vidimo na zaslonu računalnika, sta potrebna dva koraka 1. Najprej je potrebno določiti, kako so črke in še nekateri drugi ne-numerični znaki predstavljeni

More information

ECHO Process Instrumentation, Inc. Modbus RS485 Module. Operating Instructions. Version 1.0 June 2010

ECHO Process Instrumentation, Inc. Modbus RS485 Module. Operating Instructions. Version 1.0 June 2010 ECHO Process Instrumentation, Inc. Modbus RS485 Module Operating Instructions Version 1.0 June 2010 ECHO Process Instrumentation, Inc. PO Box 800 Shalimar, FL 32579 PH: 850-609-1300 FX: 850-651-4777 EM:

More information

ABO R O P 1 U O N SEB O A Z

ABO R O P 1 U O N SEB O A Z 1 Barvno upravljanje je sistemati no vodenje barvnih pretvorb med barvnimi prostori naprav, uporabljenih v procesu barvne reprodukcije. Namen barvnega upravljanja Zagotoviti barvno usklajenost reprodukcije

More information

Obravnava izjem (exception handling)

Obravnava izjem (exception handling) Obravnava izjem (exception handling) Ko umre programer Uvod Ne glede na to, kako dobro smo načrtovali nek program, je še vedno možnost, da lahko med izvajanjem pride do kakšnih napak. Dobro načrtovan program

More information

CIS-331 Exam 2 Spring 2016 Total of 110 Points Version 1

CIS-331 Exam 2 Spring 2016 Total of 110 Points Version 1 Version 1 1. (20 Points) Given the class A network address 121.0.0.0 will be divided into multiple subnets. a. (5 Points) How many bits will be necessary to address 8,100 subnets? b. (5 Points) What is

More information

DOKUMENTACIJA ZA NAROČILO ORDERS D.96A (EAN008) Version: 1.0 Draft

DOKUMENTACIJA ZA NAROČILO ORDERS D.96A (EAN008) Version: 1.0 Draft DOKUMENTACIJA ZA NAROČILO ORDERS D.96A (EAN008) Version: 1.0 Draft Author: Publication: Trading Partner: Mercator, d.d. Modified: 04/25/2003 Notes: Naročilo-alenka_eds.ecs 1 For internal use only ORDERS

More information

New Media & Language Technologies Jozef Stefan International Postgraduate School January Speech apps. Jerneja Žganec Gros

New Media & Language Technologies Jozef Stefan International Postgraduate School January Speech apps. Jerneja Žganec Gros New Media & Language Technologies Jozef Stefan International Postgraduate School January 2005 Speech apps Jerneja Žganec Gros jerneja@alpineon.com THE VOICE WEB The voice web offers access to information

More information

Reševanje časovno zahtevnih opravil z orodjem ORACLE

Reševanje časovno zahtevnih opravil z orodjem ORACLE Ervin Črešnjovnjak Reševanje časovno zahtevnih opravil z orodjem ORACLE Diplomsko delo Maribor, junij 2011 I Diplomsko delo univerzitetnega študijskega programa REŠEVANJE ČASOVNO ZAHTEVNIH OPRAVIL Z ORODJEM

More information

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO. Rok Bertoncelj. Parsek CMS 2.0 DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU

UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO. Rok Bertoncelj. Parsek CMS 2.0 DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Rok Bertoncelj Parsek CMS 2.0 DIPLOMSKO DELO NA UNIVERZITETNEM ŠTUDIJU Mentor: prof. dr. Marko Bajec Ljubljana, 2010 IZJAVA O AVTORSTVU

More information

Dostop do podatkov Svetovne banke v orodju Orange

Dostop do podatkov Svetovne banke v orodju Orange Univerza v Ljubljani Fakulteta za računalništvo in informatiko Miha Zidar Dostop do podatkov Svetovne banke v orodju Orange DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM RAČUNALNIŠTVO IN INFORMATIKA Mentor:

More information

OCAML-LEX I.Savnik. 2008/10/ /10/11 (popravki) ENOSTAVNI PRIMERI

OCAML-LEX I.Savnik. 2008/10/ /10/11 (popravki) ENOSTAVNI PRIMERI OCAML-LEX I.Savnik 2008/10/04 2012/10/11 (popravki) ENOSTAVNI PRIMERI Enostaven primer programa, ki bere vhodno datoteko znak za znakom. V primeru, da naleti na niz znakov "current_directory" ga zamenja

More information

Preverjanje pravilnosti programov z odvisnimi tipi v programskem jeziku Idris

Preverjanje pravilnosti programov z odvisnimi tipi v programskem jeziku Idris Univerza v Ljubljani Fakulteta za računalništvo in informatiko Blaž Repas Preverjanje pravilnosti programov z odvisnimi tipi v programskem jeziku Idris DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI PROGRAM PRVE

More information

PODATKOVNE BAZE NOSQL

PODATKOVNE BAZE NOSQL PODATKOVNE BAZE NOSQL Aljaž Zrnec, Dejan Lavbič, Lovro Šubelj, Slavko Žitnik, Aleš Kumer, Marko Bajec Univerza v Ljubljani, Fakulteta za računalništvo in informatiko, Laboratorij za podatkovne tehnologije,

More information

Razvoj spletne aplikacije za urejanje datotek JSON z ogrodjem Django

Razvoj spletne aplikacije za urejanje datotek JSON z ogrodjem Django UNIVERZA V LJUBLJANI FAKULTETA ZA RAČUNALNIŠTVO IN INFORMATIKO Damjan Vidonja Razvoj spletne aplikacije za urejanje datotek JSON z ogrodjem Django DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJ RAČUNALNIŠTVO IN IINFORMATIKA

More information

posebna e-izdaja September 2011 Letnik XIV Kompas Xnet vaš IT outsourcing partner.

posebna e-izdaja September 2011 Letnik XIV Kompas Xnet vaš IT outsourcing partner. posebna e-izdaja September 2011 Letnik XIV Kompas Xnet vaš IT outsourcing partner. ISSN: 1408-7863 Bleeding Edge 2011 29. in 30. september 2011 Pre-conf seminarji: 28 september Kompas Xnet d.o.o. Stegne

More information

CMSC 313 Lecture 03 Multiple-byte data big-endian vs little-endian sign extension Multiplication and division Floating point formats Character Codes

CMSC 313 Lecture 03 Multiple-byte data big-endian vs little-endian sign extension Multiplication and division Floating point formats Character Codes Multiple-byte data CMSC 313 Lecture 03 big-endian vs little-endian sign extension Multiplication and division Floating point formats Character Codes UMBC, CMSC313, Richard Chang 4-5 Chapter

More information

Izdelava sistema za upravljanje sredstev

Izdelava sistema za upravljanje sredstev Univerza v Ljubljani Fakulteta za računalništvo in informatiko Kerry Mahne Izdelava sistema za upravljanje sredstev DIPLOMSKO DELO VISOKOŠOLSKI STROKOVNI ŠTUDIJSKI PROGRAM PRVE STOPNJE RAČUNALNIŠTVO IN

More information

Name Class Date. Find corresponding parts using the order of the letters in the names.

Name Class Date. Find corresponding parts using the order of the letters in the names. 4-1 Reteaching Congruent Figures Given ABCD QRST, find corresponding parts using the names. Order matters. For example, This shows that A corresponds to Q. Therefore, A Q. For example, This shows that

More information

Poglavje 3. SUPB in načini dostopa do podatkov

Poglavje 3. SUPB in načini dostopa do podatkov Poglavje 3 SUPB in načini dostopa do podatkov SUPB in načini dostopa do podatkov SUPB: kompleksna zbirka programov, ki v okviru podatkovnega sistema skrbijo za podatke in zagotavlja uporabnikom dostop

More information

TEHNIČNA POJASNILA GLEDE IZPOLNJEVANJA ITS POROČIL

TEHNIČNA POJASNILA GLEDE IZPOLNJEVANJA ITS POROČIL TEHNIČNA POJASNILA GLEDE IZPOLNJEVANJA ITS POROČIL Tip dokumenta IT-TN Oznaka dokumenta BS-IT-RA-TN-ITS-dod Verzija dokumenta 1.1 Status dokumenta Datum zadnje spremembe dokumenta 30.01.2014 Zgodovina

More information

Osnove algoritmov in podatkovnih struktur I (OAPS I)

Osnove algoritmov in podatkovnih struktur I (OAPS I) Univerza v Ljubljani Fakultetazaračunalništvo in informatiko Igor Rožanc Osnove algoritmov in podatkovnih struktur I (OAPS I) 2. letnik, VSP Računalništvo in informatika, vse smeri PROSOJNICE ZA 8. PREDAVANJA

More information

Programming. User s Manual. Ver:3.2. Contents - 1 -

Programming. User s Manual. Ver:3.2. Contents - 1 - Programming User s Manual Ver:3.2 Contents - 1 - Set Up Flow Chart...3 一. Systems Information 1.1 Set All Default...4 1.2 Version Information...4 二. Systems Setting 2.1 Interfaces...5 2.1.1 Keyboard Wedge

More information

UNH-IOL MIPI Alliance Test Program

UNH-IOL MIPI Alliance Test Program DSI Receiver Protocol Conformance Test Report UNH-IOL 121 Technology Drive, Suite 2 Durham, NH 03824 +1-603-862-0090 mipilab@iol.unh.edu +1-603-862-0701 Engineer Name engineer@company.com Panel Company

More information

Razširitve CMS z lastnimi moduli

Razširitve CMS z lastnimi moduli Univerza v Ljubljani Fakulteta za računalništvo in informatiko Matjaž Čepar Razširitve CMS z lastnimi moduli DIPLOMSKA NALOGA NA UNIVERZITETNEM ŠTUDIJU Mentor: doc. dr. Andrej Brodnik Ljubljana 2014 Rezultati

More information

DOKUMENTACIJA ZA POTRDITEV NAROČILA EANCOM ORDRSP D96A (EAN005) Version: 1.0 Draft

DOKUMENTACIJA ZA POTRDITEV NAROČILA EANCOM ORDRSP D96A (EAN005) Version: 1.0 Draft DOKUMENTACIJA ZA POTRDITEV NAROČILA EANCOM ORDRSP D96A (EAN005) Version: 1.0 Draft Author: Publication: 11.3.2002 Trading Partner: Mercator, d.d. Notes: potr_nar_al.ecs 1 For internal use only ORDRSP Purchase

More information

C 30D C 5W ; E ARID ZONE RESEARCH Vol.30 No.5 Sept.2013 Nino , 2, 3 (1., ;2., ;3., )!:!"# $%&' &' ()* +,- (./0)*1 23

C 30D C 5W ; E ARID ZONE RESEARCH Vol.30 No.5 Sept.2013 Nino , 2, 3 (1., ;2., ;3., )!:!# $%&' &' ()* +,- (./0)*1 23 C 30D C 5W 2013 9; E ARID ZONE RESEARCH Vol.30 No.5 Sept.2013 Nino3.4 1 2 1 1, 2, 3 (1., 750002;2., 750002;3., 730020)!:!"# $%&' &'()* +,- (./0)*1 234 56, 78 9:# 1 2; < 34.=> 56,!"561?@AB 7 C19:DE, F1GH

More information

Osnove programskega jezika C

Osnove programskega jezika C Rok Vrabič, Lovro Kuščer Osnove programskega jezika C Gradivo za vaje pri predmetih Mehatronski sistemi in Diskretni krmilni sistemi Ljubljana, 2014 Kazalo 0 Uvod... 1 1 Prvi C program... 2 1.1 Zgodovina

More information

CIS-331 Final Exam Spring 2015 Total of 115 Points. Version 1

CIS-331 Final Exam Spring 2015 Total of 115 Points. Version 1 Version 1 1. (25 Points) Given that a frame is formatted as follows: And given that a datagram is formatted as follows: And given that a TCP segment is formatted as follows: Assuming no options are present

More information

Saturday 星期六 Mixed ("A" Course) / AWT. Final Version Last Updated: 09 January 2015 at 11:30

Saturday 星期六 Mixed (A Course) / AWT. Final Version Last Updated: 09 January 2015 at 11:30 10 01 2015 Saturday 星期六 Mixed ("A" Course) / AWT 33 Final Version Last Updated: 09 January 2015 at 11:30 ! '!/ 01'! &1 "!!/!', ),!!!/!'!!, ( &1 "!! &1 "' &"1 2&!!,! ' &"1 2&! &1 "*.!/!&1 ", 3 4 &&!5!/-

More information

Programming User s Manual

Programming User s Manual Programming User s Manual For Virtuos HT-310 Ver:3.2.2a - 1 - Contents Set Up Flow Chart... 3 一. Systems Information 1.1 Set All Default... 4 1.2 Version Information... 4 二. Systems Setting 2.1 Interfaces...

More information

Selitev aplikacije iz Oracle Forms v Oracle ADF (Application migration from Oracle Forms to Oracle ADF)

Selitev aplikacije iz Oracle Forms v Oracle ADF (Application migration from Oracle Forms to Oracle ADF) Univerza na Primorskem FAKULTETA ZA MATEMATIKO, NARAVOSLOVJE IN INFORMACIJSKE TEHNOLOGIJE ZAKLJUČNA NALOGA Selitev aplikacije iz Oracle Forms v Oracle ADF (Application migration from Oracle Forms to Oracle

More information

Twitter Bootstrap in razvoj spletnega repozitorija za Cacti

Twitter Bootstrap in razvoj spletnega repozitorija za Cacti Univerza v Ljubljani Fakulteta za računalništvo in informatiko Fakulteta za matematiko in fiziko Nejc Župec Twitter Bootstrap in razvoj spletnega repozitorija za Cacti DIPLOMSKO DELO UNIVERZITETNI ŠTUDIJSKI

More information

CD _. _. 'p ~~M CD, CD~~~~V. C ~'* Co ~~~~~~~~~~~~- CD / X. pd.0 & CD. On 0 CDC _ C _- CD C P O ttic 2 _. OCt CD CD (IQ. q"3. 3 > n)1t.

CD _. _. 'p ~~M CD, CD~~~~V. C ~'* Co ~~~~~~~~~~~~- CD / X. pd.0 & CD. On 0 CDC _ C _- CD C P O ttic 2 _. OCt CD CD (IQ. q3. 3 > n)1t. n 5 L n q"3 +, / X g ( E 4 11 " ') $ n 4 ) w Z$ > _ X ~'* ) i 1 _ /3 L 2 _ L 4 : 5 n W 9 U~~~~~~ 5 T f V ~~~~~~~~~~~~ (Q ' ~~M 3 > n)1 % ~~~~V v,~~ _ + d V)m X LA) z~~11 4 _ N cc ', f 'd 4 5 L L " V +,

More information