View
237
Download
1
Category
Preview:
Citation preview
Osnove Podatkovnih Baz
--skripta--
2010/2011
Pripravila:Iztok SavnikMatjaž Kljun
KazaloUvod 3Realcijsko 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 49Arhitektura 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 148Aplikacije Podatkovnih Baz 151 SQL v aplikacijski kodi 151 Vaje 161 Semantične tehnologije in spletne aplikacije 163
!"#$%&'(')((
!*+!,-%"!./01!,+23%#/4
25678%*9:;<8$%=/>+20
!"#$%&'(')((
!?;7:;<%@7A968<
B !"#$%&%'#()*++++++25678%*9:;<8B ,-.-'#/'C%%%%%%%%%%%>96D9E%1FDG;B 0%)#C%%%%%%%%%%%%%%%%%/:A<67H;I%<;%F9J7H967H<D?8IB 12&2".(/#%3"#C%%"7%@HIA9:9;DGB 456.'C%%%%%%%%%%%%%%%%%@<?;<%K%A7L9MI%;9F7NI%K%G?6;<
!"#$%&'(')((
O<6IH96GH9B 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'-?+XHA%%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+FGUP !"#8(#$+-/2&.P !"#8(#$+$#(2&+2@#/#%
!"#$%&'(')((
19D%DI%*]"#^
B *<?6IL%59%]@H9:FD9;DI%?%"7A9687:;<L<%#959L<B ,IF<89$%@7:I59;9%5J<H89%@7A9687:WB >7AIF<H9%787FDI%:%HI9F;IL%?:I6GW
! %-;6<6I6I%_IWNW$%7?IJI$?6GAI;6<$@HIALI6<WWW`! %Q95LIHD9%_IWNW$%07;I%DI%:@<?9;%;9%"#`
B *]"#%DI%@H7NH9L?8<%?<?6IL%59%?RH9;DI:9;DI%@7A9687:%<;%G@H9:FD9;DI%?%@7A9687:;<L<%J959L<W
!"#$%&'(')((
.9676I8I%:?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:IAJIWB 49aM<69%@7A9687:%@HIA%;I87;?<?6I;U7$%8<%DI%
F9R87%@7?FIA<U9%:IM<R%R8H96;<R%G@7H9J;<87:WB 49aM<69%@HIA%<5@9A7L%?<?6IL9WB ,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<DIWB "7A9687:;9%<;6INH<6I69%<;%:9H;7?6WB ];<b7HL;7%9AL<;<?6H<H9;DI%@7A9687:WB 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%<;%87F<M<;9W%%! .<N<69F;I%8;D<E;<UI$%<;6IH986<:;<%:<AI7$%TI;7LI%
@H7DI86$%WWW%%! 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
!
!"#$%&'(')((
"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 QIF9U<D?8<%@7A9687:;<%L7AIF%DI%;9DJ7FD%@7N7?67%G@7H9JFD9;%L7AIF%A9;I?W! !?;7:;<%87;UI@6<C%HIF9U<D9$%8<%DI%:%7?;7:<%69JIF9%?%
?67F@U<%<;%%:H?6<U9L<W! ,?989%HIF9U<D9%<L9%?RIL7$%8<%7@<?GDI%?67F@UI%<;%
: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,&10!2234" !50(&67*!8$!8/,$%*+'&'09/0*-:$(.'$'0!-!2;3#
$%&%'()*+,-.)
/0(1-234)5()*+,-.)
6075-8*9 6075-8*: 6075-8*;
!"#$%&'(')((
"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 /@F<89U<DI%?I%;I%G8:9HD9D7%?%6IL%8987%?7%@7A968<%?6HG86GH<H9;<%<;%?RH9;DI;<W
B _28.R/%+62$%'L2&/%+/#2$&.-/2-'C%%49aM<69%@HIA%?@HILILJ9L<%:%F7N<M;<%?6HG86GH<%@7A9687:W%
B `.5.R/%+62$%'L2&/%+/#2$&.-/2-'C%%%49aM<69%@HIA%?@HILILJ9L<%b<5<M;I%@7A9687:;I%?6G86GHI%@7A9687:W%
" !<+&!0(!+&'10='!/0%$%1+*#!/,$(+086*!./0,&1$!">5?!@
!"#$%&'(')((
17;6H7F9%?7M9?;IN9%A7?67@9B *7M9?;7%<5:9D9;DI%G@7H9J;<a8<R%@H7NH9L7:%DI%
J<?6:I;7%59%A7JHI%@IHb7HL9;?I%*]"#W%! .7?67@%A7%A<?89%DI%@7N7?6%<;%HIF96<:;7%@7M9?I;$%5967%DI%
@7LILJ;7%A9%DI%@H7UI?7H%:I?%M9?%59@7?FI;%;9%:IM<R%?7M9?;<R%@H7NH9L<R%G@7H9J;<87:W%
B "HI8H<:9D7MI%?I%98U<DI%H95F<M;<R%G@7H9J;<a8<R%@H7NH9L7:%F9R87%:7A<D7%:%;I87;?<?6I;6;7?6%@7A9687:W%+9%@H<LIH$%MI8%?I%DI%:@<?9F$%;<%@9%?I%aI%<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%! ]@7H9J;<8<%F9R87%?@IU<b<U<H9D7%I;7?69:;I%./'#8".'#'/#+2<#).'&#+;9A%
@7A968<%<;%@7A9687:;9%J959%J7%59N767:<F9%:IFD9:;7?6%7LID<6I: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<DB *]"#%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
D`%J7%L7H9F9%@7M9896<%A78FIH%
@H:9%;I%87;M9m%?%6IL%DI%AIb<;<H9;9%GHIDI;7?6%6H9;?98U<DW
# *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%
!"#$%&'(')((
49N769:FD9;DI%967L<M;7?6<
B *]"#%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
B 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`
!"#$%&'(')((
.;I:;<8%_O7N`B +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
B 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
B .;I:;<8%?I%@7N7?67%@7A:7D<%59H9A<%:9H;7?6<%<;%?I%@H9:<F7L9%9HR<:<H9%;9%@IH?<?6I;6;IL%LIA<DGW
B ,?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%
!"#$%&'(')((
#95I%7?HIMGDID7%?FIAIMI%FDGA<%WWWB "H7A9D9FU<%*]"#WB Q95:<D9FU<W
P +9MH67:9FU<%<;b7HL9U<D?8<R%?<?6IL7:WP "H7NH9LIHD<WP oIJL9?6IHW
B 17;M;<%G@7H9J;<8<WP ]@7H9J;<8<%<;bW%*<?6IL7:$%:;9a9FU<WWW
B /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
!"#$%&'(')((
*6HG86GH9%*]"#
B 0<@<M;<%*]"#%<L9%;<:7D?87%9HR<6I86GH7W
B *F<89%;I%@H<895GDI%87L@7;I;6%59%87;6H7F7%R8H96;IN9%A7?67@9%<;%HIU7:IHVW%
B 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#()
9:
!"#$%"&'$()%$&
$'$*$+),"&
-$.,($/$&0-(),.1*)&
2$3,$4)&".&
(151#).%1
!"#$%&'(')((
"7:5I6I8
B *]"#%?I%G@7H9JFD9%59%H787:9;DI%_?@HIL<;D9;DI$%@7<5:IA7:9;DI`%:IF<8<R%5J<H8%@7A9687:W
B "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
B +<:7D<%9J?6H98U<DI%;GA<D7%@7A96W%;I7A:<?;7?6WB *]"#%6<@<M;7%<L9%;<:7D?87%9HR<6I86GH7W%B /AL<;?6H967H%"#%<L9%7AN7:7H;7%?FGEJ7%<;%DI%A7JH7%@F9M9;%e%
$
B *]"#%DI%I;7%7A%a<Ha<R$%J7FD%59;<L<:<R%@7AH7M<D%p*
!"#$%&'(')((
*+,-./012/%345-62478/%945+,
:;642%<-78/2$%=>?@:A
!"#$%&'(')((
B-2-0%C6D5/0%E+,-./012+F-%945+,-G%
H @-0C/EC+%D34E-I,0-8%945+,JK "E45-0-,./L%:#?$%:8M4E9/N$%?/.E414M6$%!E-.,+$%
<OI-1+$%/65J
H PQ+F-.O%1O16+91R%7%16-E/S%945+,/SJK @3EJ$%:#?%:?<
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-%345-62478-%I-;-
H 2$*+,-#.%+/345/0'!6-,+/)$*+,-#7
H 2$*+,-#+5%57-%5+,-LK 8'.&+',+%L%&+"$*+$%2/%/9-%7E16/.+%/8%164,3.+J%%
Z7E16/.%[%%+)1-'+*'!.&$%Z164,3.+7%[%.&!9'#+7K :;$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.%6 78 9-:
/0188 ;,+)<= 4,+)<=5$+ 78 1-8
/01/> ;,+)<= 4,+)<=56" 7? ?-0
!@;+,#")+&)'!*@A@0B@!*'.)<+@A@/B@3!%@3,!*"=%@@@@@@@,+C&"D)%
!@E&"@$',+<'@F"*"@3!%@3,!*"=%@3@*+F%&"@,+C&"D)%G
!"#$%&'(')((
*+,-./012/%34536-7+5-,8/%0+9/2/
: ;-05+<0-%=4<%6+,-./012+>-%=4?+,-@%
34?3/6-%+841A-5+8%34536-7+5-,8/%0+9/2%9%5+,/24%/96-984%
=4<04B
: C36-7-80-%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%
!"#$%&'(')((
"4536-7+5-,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%
!"#$%&'(')((
"4536-7+5-,8/%0+9/2%FJK
: C36-7-80+!"#$%&'%"()*"&+,-*.+*/"0%")$")+12%"34"5*+6
!"#"$%&&'()*+&&!,-./0,1&!23")"&&!45,6785,9:;
<&=>76?60@/A&!"#$%#&#'()*&#)&+",#)&$-./()-"04
!"#"$%&&!41B/C&!4D8E10()*+&!,-./0,1&!
51. 1B/ D8E10 5,67 >8
FGHHHI8J6K 08J6KL>/M :; G4N
FGH;; O760@P K760@PLB6 :; G4Q
!"#$%&'(')((
%"4536-7+5-80+%8-?%5+</=/%6+,-./0-=/
: V-0%/96-<E8-%
%%%%%8-1,+?80+%
%%%%%536-7-80+W
!"#"$%&&!41B/C&=4>1.()*+&&&&!,-./0,1&!C&=>15&=23")"&&!451.9=451.&RIS&=48P/069T:UV
!"#$% &"'#(
)*+,-. /%0$%1*#-+
2#( '#( 0.%,+
34546 7+8% 3
34546 9+1%$+1#:+ ;
34<3= /%0$%1*#-+ 6=
34<<< >?0(0@#,+ ;
)/D6P1@1&!,-./0,1&10&=>15A
S8W1B8A
51. 06B/ D8E10 !,67 >8
FGHHH I8J6K 08J6KL>/M :; X4Q
FGH;; O760@P K760@PLB6 :; H4;
FGHFU O760@P K760@PLM1 :Y Y4G
!"#$%&'(')((
*+,-+./0,%+,1.2-0%3%456
7 *+,-+./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>.8
7 9.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&&
!"#$%&'(')((
#+-;./0,%-/%;:+,F-/0./0,%+,1.2-0
7 HI?+/0-%@>.=%-=C+-G,%+,1.2-0?%4B@A,/B-%JJ%;E,F?%-/%=.:-;,8%%
E"FG&%$'(#&&)*+,-.*/&
! )H-8:&I*+,-.*/&1B>-8-./8:&*=J:7&,=&,:,=8:&.:K&=*>/L+*&!"#$&1&J=*->/8&:B/I-8:&J>=M&1*=.:K=.M=&I*+,-.*=N
$(%#"&%$'(#&&)*+,-.*/
$EE&!F(OP@&J>=M2&K=>DH=>04Q6
!"#$%&'(')((
K?A.0./0,%-/%C+-;./0,%=.:-;?3
7 L;B.310./0,%,/,I.%=.:-;.M
?@)#"%&?@%F&)*+,-.*/01/,7&/8-7&9:;/.7&1*=>7&B:6C$(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%!#+)*$*4!"#$%&'(')((
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,8R 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-+./,%NP8R 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
!"#$%&'(')((
"*+,-*.+%/0123
4 5.67+8-%-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%%%5.67+8-%%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>%
!"#$%#&%$'(#&)*+,&&&-,+.&!/$"-012&&&&&*+.&&!/$"-0123&&&&&45678&!/$"-023&&&&&9":;$"<&=#<&&-,+.3*+.2&2
! "*-;+0.6=%UV-%A-.<H-%W92A<.9-%+.%C*<A,<9%+,-,6%<.6%@-,6%68<.6>X
! ?<C*-;+0.6=%UY92A<.9+%@<%0-P/6%;C+W<16%.-%@-,6%<.%C*<A,<9%+.%A6:+16%<.6%@-,6%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%=%5.67+8-%-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 ]C+@I(!)=%@9*+.H$%/!)=%@9*+.H$%'4#$5=%@9*+.HJE 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>%E ?-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
,+. +G6 H4I+7 DE8J *4
KLMMM ?4N8O 74N8OP5, QR ST0
KLMRR =J87U5 OJ87U5PG8 QR MTR
KLMK1 =J87U5 OJ87U5PV+ QW WTL
!"# $"# %&'#(
)*+++ ,'-( )
)*+++ .'/(0'/"1' 2
)*+)3 4(50(/&"6' 73
)*+++ 8%5#59":' 2
)*+,DEF.67E+
!"#$%&'(')((
*+,-.+/01+213%435343263%72.3,47.3.3
8 "-,0319-%:7%.+;307%<.=>32.7%72%?@7:A%%!"#%/%.+;307%?@7:%13%.=1%B01=6$%B7%4353432C74+%.+;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 "-;47G31-%:3%.=>7%@47@+>+1-67%F+@7:7%/%?@7:D%I J3%>-/-07%:3%;47:+213%F+@7:+%<.=>32.7%2+%B+.343,+%:3%4353432C74+1-%
F+@7:7%7F%.+;303%?@7:D%I ?43>2-:.7%F;47:+27K%!"#%:3%/%.+;307%?@7:%@-:.+/7%2+%@47/F3.-%
/43>2-:.D%I <LMN%"-:.+/7%/43>2-:.7%7F;47:+27K%!"#%/%?@7:%2+%2=00%/43>2-:.$%B7%
@-9327%(*,(%(/%+07%(*(%&*#*(/D
8 "->-;2-%/%@47934=$%>+%:3%B01=6%:7>%/%.+;307%<.=>32.7%:@439327D%
!"#$%&'(')((
O35343262+%72.3,47.3.+%/%<LM%
8 <LM)P&%72%%<LMN(PPP%@->@74+%/:3%Q%9-R2-:.7%@47%;47:+21=%72%@-@4+/01+21=D%I "47/F3.-%13%J!%STUV!J%%%
W#*0*)*12-#%)*+3*+,%&'(3*(XI 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%4353432C74+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->3074+9-%F%430+C71:B79%9->30-9D
8 M+KB-%@43/3479-%@->+.B-/2-%;+F-%+07%13%/%:B0+>=%F%72.3,47.3.2797%-9317./+97%D%J3%9-439-%@+%JVE!MV%:B03@+.7$%>+%13%-9317.3/%@4+/702+%F%-@+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-0-67.3/$%>+%: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-/D8 Z2-:.+/2-%72%72.=7.7/2-$%.432=.2-%2+1;-01%@-,-:.-%
=@-4+;01+2%9->30D%8 V2.3,47.3.23%-9317./3%0+KB-%/23:39-%/%@->+.B-/2-%
;+F-%2+%-:2-/7%0+:.2-:.7%9->3074+23,+%@->+.B-/23,+%-B-01+D%<["#%@43/347%/301+/2-:.%-9317.3/D%%I "-939;27%-9317./7N%@479+427%72%.=1%B01=6DI ?3>2-%:-%>357274+23%>-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%
1. Naloga
Narišite relacijski podatkovni model baze podatkov, ki obsega podatke o poslovanju naftnedruž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.
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
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
OPB, 2009/10
Relacijska algebra
Iztok Savnik, FAMNIT
OPB, 2009/10
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.
OPB, 2009/10
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.
OPB, 2009/10
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.
OPB, 2009/10
Primeri relacij
mid mime ocena star
22 novak 7 45.0
31 kranjc 8 55.5
58 petelin 10 35.0
mid mime ocena star
28 volk 9 35.0
31 kranjc 8 55.5
44 jauk 5 35.0
58 petelin 10 35.0
mid lid dan
22 101 10/10/96
58 103 11/12/96
!"
#"
#$
• 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.OPB, 2009/10
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.
!"
#$
%
OPB, 2009/10
Projekcija!"!#$ %&#'($
)%*+$ ,$
+-('.&$$ /$.(0+$ 1$2#3#*"'$ 45$
$
)2(,
Socenamime"
63(-$
7185$1181$
$
)2(Sstar"
• 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?)
OPB, 2009/10
Selekcija
)2(8
Socena>!
!"9$!"!#$ %&#'($ 63(-$
:/$ )%*+$ ,$ 7185$1/$ 2#3#*"'$ 45$ 7185$
$
!"!#$ %&#'($
)%*+$ ,$
2#3#*"'$ 45$$
))2(8
(,
Socenaocenamime >!"
• 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.)
OPB, 2009/10
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$56$ /,)(7'$ 8$ 2232$28$ 9%+%:"($ 64$ 5234$11$ 7);/$ 2$ 5234$-8$ .&:/$ <$ 5234$
$
!"#$!"!%$ &'%()$ *+),$
56$ /,)(7'$ 8$ 2232$28$ 9%+%:"($ 64$ 5234$
$
S S1 2!
S S1 2"
!"#$!"!%$ &'%()$ *+),$
--$ (&.)/$ 0$ 1234$$
S S1 2#OPB, 2009/10
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.
)11),25,11(( RSmidmidC $%%&
=!"#>$ !"!%$ &'%()$ *+),$ =!"#>$ :"#$ #)?$
--$ (&.)/$ 0$ 1234$ --$ 646$ 64@ 64@ <A$
--$ (&.)/$ 0$ 1234$ 28$ 645$ 66@ 6-@ <A$
56$ /,)(7'$ 8$ 2232$ --$ 646$ 64@ 64@ <A$
56$ /,)(7'$ 8$ 2232$ 28$ 645$ 66@ 6-@ <A$
28$ 9%+%:"($ 64$ 5234$ --$ 646$ 64@ 64@ <A$
28$ 9%+%:"($ 64$ 5234$ 28$ 645$ 66@ 6-@ <A$$
!$B,%"!%(&.)(7%C$
OPB, 2009/10
Stik (Join)• Stik s pogojem:
• Shema rezultata: enako kot kartezijski
produkt.
• Manj n-teric kot produkt; da se izračunati
hitreje.
• Včasih ga imenujejo theta-stik.
R c S c R S"# = $' ( )=!"#>$ !"!%$ &'%()$ *+),$ =!"#>$ :"#$ #)($
--$ (&.)/$ 0$ 1234$ 28$ 645$ 66@ 6-@ <A$56$ /,)(7'$ 8$ 2232$ 28$ 645$ 66@ 6-@ <A$
$
11 .1.1 RS midRmidS <#"
OPB, 2009/10
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$
$
11 RS idm#"
OPB, 2009/10
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 =
– 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.
{ }x x y A y B| ,! " # "
$OPB, 2009/10
Primer deljenja A/B
!"#$ %"#$
!&$ %&$!&$ %'$!&$ %($!&$ %)$!'$ %&$!'$ %'$!($ %'$
!)$ %'$
!)$ %)$$
%"#%'
%"#%'%)
%"#%&%'%)
!"#!&!'!(!)
!"#!&!)
!"#!&
*
+&+'
+(
*,+& *,+' *,+(
OPB, 2009/10
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"#!56OPB, 2009/10
Poišči imena mornarjev, ki so rezervirali
ladjo #103
• Rešitev 1: ))(( Re103 Mornarjimime zervacijelid !"=
(%
#$91:6512$'8 ),!( Re! " #
zervacijelidTemp=
()
) ( , )Temp Temp Sailors$ ! "!
)$(Tempmime%
#$91:6512$(8 )Re(103( Mornarjizervacijelidmime !"
=(%
OPB, 2009/10
Poišči imena vseh mornarjev, ki so
rezervirali rdečo ladjo.
• Informacije o barvah ladij so dostopne v
relaciji Ladje; potrebujemo še en stik:
)Re)(( MornarjizervacijeLadjerdecabarvamime !"!"=
!"
#!Bolj učinkovita rešitev:
))Re)((( MornarjizLadjerdecabarvalidmidmime !"!"=
!"""
"#$%&%'($)*!#)%'+,-.!.%!/(0,1!$)!*,0%$,+!).!-(/%!#*+%!#)%'+,-.%2OPB, 2009/10
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:
))(,( Ladjezelenabarvardecabarva
Temp=#=
!$
)Re( MornarjizervacijeTempmime !"!""
#!3,&#!4,!-(!-,5%/%*($%!'!6/%7)2!!89(:);<
#!9(7!4,!'=)-%>!?,!7,!!!!!!'(&,/7(/!'!!!!!;# %
OPB, 2009/10
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.
))Re)((,1( zervacijeLadjerdecabarvamid
Temp !"=
!"$
!
))21(( MornarjiTempTempmime !"&" !
))Re)((,2( zervacijeLadjezelenabarvasid
Temp !"=
!"$
OPB, 2009/10
Poišči imena mornarjev, ki so rezervirali
vse ladje
• Uporaba deljenja; sheme vhodnih relacij
morajo biti pazljivo izbrane:
))(/)Re,(,( Ladjelid
zervacijelidmid
Temp ""$
)( MornarjiTempmime !""
# @@@!&)*/(*7,>!:%!4)!*,',*+%*(1%!+4,!1(-7,!AB,15%/CD
)lim(/ Ladjedelfinelid =
!"@@@@@
OPB, 2009/10
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.
1. Relacijska algebra - LETALSKI POTNIŠKI PROMETVzemimo 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.
2. Relacijska algebra – NAFTNA DRUŽBAVzemimo naslednjo shemo:
CISTERNE _IdC: integer, SerijskaSt: integer, kapaciteta: integer, DtServisa: dateNAROCILA _IdN: integer, St:integer, Datum: date, Kolicina: integerDOBAVA _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 123456. b) Poišči vse IdN naročil, ki jih je izpolnila cisterna s serijsko številko 123456 ali 123457. c) Poišči vse IdN naročil, ki ali zahtevajo količino 10.000 enot ali pa jih je
izpolnila cisterna s serijsko številko 123456. d) Poišči vse IdN naročil, ki jih je izpolnila cisterna s serijsko številko 123456 in cisterna s serijsko številko 123457. 3. Imamo naslednji shemo
Avto idA Model Barva StVratPregled idO idAOperater idO Ime DelDoba
a) Poišči imena vseh operaterjev ki so pregledali rdeče avteb) Poišči imena mornarjv, ki so pregledali idA 2c) Poišči imena vseh operaterjev ki so pregledali rdeče ALI zelene avte pri čemer uporabimo preimenovanjed) Poišči imena vseh operaterjev ki so pregledali rdeče IN zelene avte pri čemer uporabimo preimenovanjee) Poišči imena operaterjev ki so pregledali vse avtomobilef) Poišči imena operaterjev ki so pregledali vse avtomobile modela Golf
OPB, 2009/10
SQL: Poizvedbe, Integritetne omejitve, Prožilci
Iztok Savnik, FAMNIT
OPB, 2009/10
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 mime ocena star 22 novak 7 45.0 31 kranjc 8 55.5 58 petelin 10 35.0
mid lid dan 22 101 10/10/96 58 103 11/12/96
!"
#"
#$mid mime ocena star !" volk # .$% & $' kranjc " .%% % (( jauk % .$% & %" petelin ' & .$% &
OPB, 2009/10
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
) ; primerjave so povezane z logičnimi operacijami
AND, OR in NOT.
• DISTINCT je opcijska ključna beseda, ki pove da naj se iz rezulatata
odstranijo duplikati. Privzeto duplikati niso odstranjeni!
!"#"$%&&&&&&&&'()!%)*$%+&,-./0123.435-6789&&&&&&&&&,-./0125-:0;3<=>"7"&&&&&&&&?@A@<23.435-
< > = ! " #, , , , ,
OPB, 2009/10
“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.
OPB, 2009/10
Primer konceptualne evaluacije
!"#"$%&&!'()(*+,-.&&&&&./01203)&.4&,*5*0627)3*&,89","&&.'():;,'():&<=>&,'?):;@AB
C():D&()(*& /7*12& EF20& C():D& ?):& :21&
GG& 1/62H& I& JK'A& GG& @A@& @AL @AL MN&
GG& 1/62H& I& JK'A& KO& @AB& @@L @GL MN&
B@& H02137& O& KK'K& GG& @A@& @AL @AL MN&
B@& H02137& O& KK'K& KO& @AB& @@L @GL MN&
KO& P*F*?)1& @A& BK'A& GG& @A@& @AL @AL MN&
KO& P*F*?)1& @A& BK'A& KO& @AB& @@L @GL MN&&
OPB, 2009/10
Spremenljivke
• Potrebne so samo v primeru, da ista relacija
uporablja dvakrat. Prejšnje vprašanje se lahko napiše
tudi na sledeč način:
!"#"$%&&.'()(*+,-.&&&&&./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<#V
OPB, 2009/10
Poišči mornarje, ki so rezervirali vsaj eno ladjo
• Kaj se zgodi, če dodamo DISTINCT ?
• Kako vpliva zamenjava M.mid z M.mime na izvajanje
SELECT stavka? Kaj če dodamo DISTINCT ?
!"#"$%&&.'():+,-.&&./01203)&.4&,*5*0627)3*&,89","&&.'():;,'():
OPB, 2009/10
Izrazi in nizi
• 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.
!"#"$%&&.'EF204&EF20@;.'EF20WK4&GX.'EF20&<!&EF20G+,-.&&./01203)&.89","&&.'()(*&#VY"&Z[\]=^
OPB, 2009/10
Poišči id-je mornarjev, ki so rezervirali rdečo ali zeleno ladjo
• UNION: Uporablja se za
izračun unije dve unija-kompatibilnih 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?)
!"#"$%&&'()*+,-.'&&'/01203*&'4+35&-5650728*35&-9:"-"&&'()*+;-()*+&<=>&-(?*+;#(?*+<=>&@#(A2072;B0+582C&.-&#(A2072;B65?512CD
!"#"$%&&'()*+,-.'&&'/01203*&'4+35&-5650728*35&-9:"-"&&'()*+;-()*+&<=>&&#(?*+;-(?*+&&&&&&&&&&&&&&&&<=>&#(A2072;B0+582CE=F.=!"#"$%&&'()*+,-.'&&'/01203*&'4+35&-5650728*35&-9:"-"&&'()*+;-()*+&<=>&#(?*+;-(?*+&&&&&&&&&&&&&&&&<=>&#(A2072;B65?512C
OPB, 2009/10
Poišči id-je mornarjev, ki so rezervirali rdečo in zeleno ladjo
• INTERSECT: lahko
uporabljamo nad unija-kompatibilnimi množicami n-
teric.
• Vključena je v SQL/92
standard; nekateri sistemi
operacije ne podpirajo.
!"#"$%&&'()*+,-.'&&'/01203*&'4+35&#G4&-5650728*35&-G4&&&&&&&&&&&&+35&#H4&-5650728*35&-H9:"-"&&'()*+;-G()*+&<=>&-G(?*+;#G(?*+&&<=>&&'()*+;-H()*+&<=>&-H(?*+;#H(?*+&&<=>&@#G(A2072;B0+582C&&&<=>&#H(A2072;B65?512CD
!"#"$%&&'()*+,-.'&&'/01203*&'4+35&-5650728*35&-9:"-"&&'()*+;-()*+&<=>&#(?*+;-(A*+&&&&&&&&&&&&&&&&<=>&#(A2072;B0+582CF=%"-!"$%!"#"$%&&'()*+,-.'&&'/01203*&'4+35&-5650728*35&-9:"-"&&'()*+;-()*+&<=>&#(?*+;-(?*+&&&&&&&&&&&&&&&&<=>&#(A2072;B65?512C
I?3JKL
OPB, 2009/10
Vgnezdena vprašanja
• 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.
!"#"$%&&'()*)5,-.'&&'/01203*&'9:"-"&&'()*+&F=&&@!"#"$%&&-()*+&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,-.'&&-5650728*35&-&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&9:"-"&&-(?*+;GMND
O/*PK*&*)512&)/01203574&Q*&R/&056507*02?*&?2+3/&SGMNT
OPB, 2009/10
Vgnezdena vprašanja (2)
• 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?)
!"#"$%&&'()*)5,-.'&&'/01203*&'9:"-"&&&"UF!%!&&@!"#"$%&&V&&&&&&&&&&&&&&&&&&&&&&&&&&&&&,-.'&&-5650728*35&-&&&&&&&&&&&&&&&&&&&&&&&&&&&&&9:"-"&&-(?*+;GMN&<=>&'()*+;-()*+D
O/*PK*&*)512&)/01203574&R/&056507*02?*&?2+3/&SGMNT
OPB, 2009/10
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
OPB, 2009/10
Poizvedbe z INTERSECT : uporaba IN
• 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?)
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&89OP/-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
OPB, 2009/10
Deljenje v SQL
• Težja pot; brez EXCEPT:
!"#"$%&&+4=1=6()*+&&+,-./-01&+23")"&&9*%&"SQ!%!&&&&&&&&&&&&&&;;!"#"$%&M1F&&&&&&&&&&&&&&&&()*+&&#/F06&#B&&&&&&&&&&&&&&&"S$"C%&&&&&&&&&&&&&&&&;!"#"$%&M1F&&&&&&&&&&&&&&&&&()*+&&)6L6-H/5106&)&&&&&&&&&&&&&&&&&23")"&)4=1F>+4=1F&&&&&&&&&&&&&&&&&&&&&&89O&)4M1F>#4M1FBB
!"#"$%&&+4=1=6()*+&&+,-./-01&+23")"&&9*%&"SQ!%!&&;!"#"$%&M1F&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&()*+&&#/F06&#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&23")"&&9*%&"SQ!%!&&;!"#"$%&&)4M1F&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&()*+&&)6L6-H/5106&)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&23")"&&)4M1F>#4M1F&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&89O&)4=1F>+4=1FBB
+,-./-01&T/J,I&F/&444
.6&,PKT/0/&M/F0/&P-6L&F/&.6P1&444
,PKT/0/M/&-6L6-H/510/&+&M/F06&#
C,1DE1&=,-./-06I&J1&K,&-6L6-H1-/M1&HK6&M/F064
;UB
;<B
OPB, 2009/10
Agregacijske operacije
• Pomembna razširitev relacijske algebre.
$*V9%&;'B$*V9%&;&WOQ!%Q9$%X&8B!V+&;&WOQ!%Q9$%X&8B8YZ&;&WOQ!%Q9$%X&8B+8S&;8B+Q9&;8B
!"#"$%&&8YZ&;+4KT/-B()*+&&+,-./-01&+23")"&&+4,56./>U[
!"#"$%&&$*V9%&;'B()*+&&+,-./-01&+
!"#"$%&&8YZ&;&OQ!%Q9$%&+4KT/-B()*+&&+,-./-01&+23")"&&+4,56./>U[
!"#"$%&&+4=1=6()*+&&+,-./-01&+23")"&&+4,56./>&;!"#"$%&&+8S;+<4,56./B&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&()*+&&+,-./-01&+<B
K1.\M6&5,M]=.
!"#"$%&&$*V9%&;OQ!%Q9$%&+4,56./B()*+&&+,-./-01&+23")"&+4=1=6>?=1@/A
OPB, 2009/10
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.
!"#"$%&&'()*)+,&'-.&/'(01234567'&&'83923:*&'
!"#"$%&&'()*)+,&'(0123567'&&'83923:*&';<"6"&&'(0123&=&&&&&&&&&&&&&&/!"#"$%&&'-.&/'>(01234&&&&&&&&&&&&&&&567'&&'83923:*&'>4
!"#"$%&&'()*)+,&'(0123567'&&'83923:*&';<"6"&&/!"#"$%&&'-.&/'>(01234&&&&&&&&&&&&&&&567'&&'83923:*&'>4&&&&&&&&&&&&&&&=&'(0123
OPB, 2009/10
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: !
!"#"$%&&'?@&/'(01234567'&&'83923:*&';<"6"&&'(8A+92&=&*
583&*&=&B,&>,&(((&,&BCD
OPB, 2009/10
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+
OPB, 2009/10
“Konceptualna” evaluacija
" Najprej izračunamo kartezijski produkt relacij iz seznam-relacij.
" 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 seznamu-skupine.
• Ena n-terica se generira za eno od izbranih skupin.
OPB, 2009/10
Poišči starost najmlajšega mornarja, ki je star več kot 18, v
skupinah, ki pripadajo ocenenam in vsebujejo vsaj dva takšna
mornarja.
!"#"$%&&'()*+,-.&&'/0&1'(23-45&6!&78,23-4
9:;'&&')4,-4<8&'=>":"&&'(23-4&?@&ABC:;DE&FG&&'()*+,->6H/0C&&$;D0%&1I5&?&A
mid mime ocena star 22 novak 7 45.0 29 pevec 1 33.0 31 kranjc 8 55.5 32 andrej 8 25.5 58 petelin 10 35.0 64 tom 7 35.0 71 kos 10 16.0 74 tom 9 35.0 85 miha 3 25.5 95 janez 3 63.5 96 egon 3 25.5
;JK)L)4M
!-8N)42&8,23-,*+M
ocena minstar 3 25.5 7 35.0 8 25.5
OPB, 2009/10
Poišči starost najmlajšega mornarja, ki je star več kot 18, v
skupinah, ki pripadajo ocenam in vsebujejo vsaj dva takšna
mornarja.
ocena star 7 45.0 1 33.0 8 55.5 8 25.5 10 35.0 7 35.0 10 16.0 9 35.0 3 25.5 3 63.5 3 25.5
ocena minstar 3 25.5 7 35.0 8 25.5
ocena star 1 33.0 3 25.5 3 63.5 3 25.5 7 45.0 7 35.0 8 55.5 8 25.5 9 35.0 10 35.0
OPB, 2009/10
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.
ocena star ! ."# $ % .&& $ ' .## # ' .(# # % $ .&# $ ! .&# $ % $ .% ) $ * .&# $ & .(# # & .)& # & .(# #
ocena star % &&.$ & .(# # & .)& # & .(# # ! "#.$ ! .&# $ ' .## # ' .(# # * .&# $ % $ .&# $
ocena minstar ! .&# $ ' .(# #
HAVING COUNT (*) > 1 AND EVERY (M.star <=60)
Kaj je rezultat spremembe EVERY vANY?
OPB, 2009/10
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.
ocena minstar 3 25.5 7 35.0 8 25.5
!"#"$%&&'()*+,-.&&'/0&1'(23-45&6!&78,23-4
9:;'&&')4,-4<8&'=>":"&&'(23-4&?@&AB&&&&&60O&'(23-4&P@&QRC:;DE&FG&&'()*+,->6H/0C&&$;D0%&1I5&?&A
;JK)L)4
')4,-4<8
mid mime ocena star 22 novak 7 45.0 29 pevec 1 33.0 31 kranjc 8 55.5 32 andrej 8 25.5 58 petelin 10 35.0 64 tom 7 35.0 71 kos 10 16.0 74 tom 9 35.0 85 miha 3 25.5 95 janez 3 63.5 96 egon 3 25.5
OPB, 2009/10
Za vsako rdečo ladjo poišči število rezervacij.
• 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 ?
!"#"$%&&#'()*+&&$,-.%&/01&2!&345678,9&&9:;5<;=)&9+&#<*=<&#+&8>?>;@<4)=>&8AB"8"&&9'3)*C8'3)*&2.D&8'()*C#'()*&2.D&#'E<;@<CF;*>4<GH8,-I&JK&&#'()*
OPB, 2009/10
Poišči vse ocene za katere je povprečna starost minimalna po vseh ocenah
! Agregacijske operacije se ne morejo gnezditi!
!"#"$%&&9':4>5<78,9&&9:;5<;=)&9AB"8"&&9'L6<;&C&&&&&&&&&&&&&&&&/!"#"$%&&9M.&/2NH&/9O'L6<;11&&78,9&9:;5<;=)&9O1
!"#"$%&&%>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!&%>3PAB"8"&&%>3P'P:@P;>4=>&C&/!"#"$%&&9M.&/%>3P'P:@P;>4=>1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&78,9&&%>3P1
!Q:;>R65<&;>S)6>@&?&!T#UVO1W
OPB, 2009/10
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.
OPB, 2009/10
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.
OPB, 2009/10
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#"61/17&&!8$"09:;6*<7,-&&34%#5#"6=>-+&&"#$(6?"3)$"@&A#@&&01/2;6!8#!A&&0&*<7,-&BC&9&
$4D&*<7,-&EC&9:&;&&&
!"#$%#&%$'(#&&"7F7+G-</.70&1/2&&34%#5#"6H/2&&34%#5#"62-I&&D$%#6?"3)$"@&A#@&&01/26J/262-I;6!K4L%"$34%&&'+7FM7F7+!8#!A&&0NM7F7+*O&EB
0&L#(#!%&&(PH/17Q"K)&&(-2.7&(R8#"#&&(PH/2CH/2;;;
OPB, 2009/10
Omejitve preko večih relacij!"#$%#&%$'(#&&)*+,-+./&)
0&1/2&&34%#5#"61/17&&!8$"09:;6*<7,-&&34%#5#"6=>-+&&"#$(6?"3)$"@&A#@&&01/2;6!8#!A&&0&0L#(#!%&!KS4%&0)P1/2;&Q"K)&)*+,-+./&);T&0L#(#!%&!KS4%&0(PH/2;&Q"K)&(-2.7&(;&E&9::&;&&&
• Če je relacija
Mornarji prazna
potem je lahko v
relaciji Ladje
karkoli.
• ASSERTION je
prava rešitev; ni
povezana z
nobeno tabelo.
!"#$%#&$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::&;
V>7G/H*&H-2/.&=WUX-.&=&Y>7G/H*11*+,-+.7G&.7&E&9::&
OPB, 2009/10
Prožilci
• 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.
OPB, 2009/10
Prožilec: Primer (SQL:1999)
CREATE TRIGGER ShraniMladeMornarjeAFTER INSERT ON MORNARJI
REFERENCING NEW TABLE NoviMornarjiFOR EACH STATEMENT
INSERTINTO MladiMornarji(mid, mime, star, ocena)SELECT mid, mime, star, ocenaFROM NoviMornarji NWHERE N.star <= 18
OPB, 2009/10
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.
OPB, 2009/10
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.
1. SQL - LETALSKI POTNIŠKI PROMET
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: integerPRISTANE _IdLE: integer, _IdTL: integer, DatumOd: dateLET: _IdLet: integer, IdTL: integer, IdLE_vzleta: integer, IdLE_pristanka: integer, cas_vzleta: date, cas_pristanka: date, id_pilotREZERVACIJE _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 2000.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.
m) Poišči vse IdLE letališč, na katerih lahko pristanejo vsi tipi letal.
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: dateNAROCILA _IdN: integer, IdS: integer, St:integer, Datum: date, Kolicina: integerDOBAVA _IdN: integer, _IdC: integer, Datum: date, Kolicina: integer IdV: integerVOZNIK _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 2000.c) Poišči vse številke naročil, za katere je pri dobavi goriva sodelovala cisterna s serijsko številko 123456. d) Poišči vse IdN naročil, ki jih je izpolnila cisterna s serijsko številko 123456 ali 123457. e) Poišči vse IdN naročil, ki ali zahtevajo količino 10.000 enot ali pa jih je izpolnila cisterna s serijsko številko 123456. f) Poišči vse IdN naročil, ki jih je izpolnila cisterna s serijsko številko 123456 in cisterna s serijsko številko 123457.g) Izbriši vse zapise v tabeli CISTERNE, za katere velja, da je kapaciteta cisterne manjša od 5000.h) Zapišite SQL stavek za spreminjanje podatka o datumu zadnjega servisa cisterne v tabeli CISTERNE z novo vrednostjo 1.1.2005, za vse tiste cisterne, kjer je datum starejši od 1.1.2000.
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 16.000 ali 24.000.
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: integerPRISTANE _IdLE: integer, _IdTL: integer, DatumOd: dateLET: _IdLet: integer, IdTL: integer, IdLE_vzleta: integer, IdLE_pristanka: integer, cas_vzleta: date, cas_pristanka: date, id_pilot: integerREZERVACIJE _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: integerSTEVARDESA _IdS: integer, IdLD: integer ime: varchar(50), Priimek: varchar(50), StLetov: integerLETALSKA_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.
- Številke letal, ki imajo drugo 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 B747. - Imena vseh letališč, ki so v ZDA in je na njih pristalo letalo tipa B747. - 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 300. - 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 300. - Imena in priimki pilotov, ki so že pilotirali letala s kapaciteto večjo od 300. - 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: dateNAROCILA _IdN: integer, IdS: integer, St:integer, Datum: date,
Kolicina: integerDOBAVA _IdD: integer, IdN: integer, IdC: integer, Datum: date, Kolicina: integer IdV: integerVOZNIK _IdV: integer, Ime: varchar(50), Priimek: varchar(50), StKazni: integerZAPOSLENIBC _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 10.000 l ali pa so bila izpolnjena z dobavo cisterne, katere leto izdelave je enako 2000. - Številke vseh naročil, ki zahtevajo količino višjo od 10.000 l in so bila izpolnjena z dobavo cisterne, katere leto izdelave je enako 2000. - 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 10.000 l zaloge dizelskega goriva. - Številke vseh naročil, za katere je bila opravljena dobava s cisterno, katere kapaciteta je bila večjo od 20.000.
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 20.000. - Imena in priimki šoferjev, ki so že vozili cisterne s kapaciteto večjo od 20.000. - 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 20000.
OPB, 2009/10
Relacijski račun
Iztok Savnik, FAMNIT
OPB, 2009/10
Relacijski račun
• 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.
OPB, 2009/10
Domenski relacijski račun
• Vprašanje ima obliko:
x x xn p x x xn1 2 1 2, ,..., | , ,...,!
"
###
$
%
&&&
'
()
*)
+
,)
-)
!!Odgovor vsebuje n-terice
za katere vrne izraz vrednost true.
x x xn1 2, ,...,p x x xn1 2, ,...,!
"
###
$
%
&&&
!!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.OPB, 2009/10
DRC Formule
• Atomična formula:– , ali X op Y, ali X op const
– op je lahko
• Formula:– atomična formula, ali
– , kjer so p in q formule, ali
– , kjer je sprem. X prosta v p(X), ali
– , kjer je sprem. X prosta v p(X)
• Uporaba kvantifikatorjev in poveže sprem. X.
– Spremenljivka, ki ni povezana je prosta.
x x xn Rname1 2, ,..., .< > = / 0 1, , , , ,
¬ 2 3p p q p q, ,4X p X( ( ))5X p X( ( ))
4 X 5 X
OPB, 2009/10
Proste in vezane spremenljivke
• Uporaba kvantifikatorjev in v formuli
izvrši povezovanje X.
– Spremenljivka, ki ni vezana je prosta.
• Poglejmo spet definicijo izraza (vprašanja):
! X " X
x x xn p x x xn1 2 1 2, ,..., | , ,...,#
$
%%%
&
'
(((
)
*+
,+
-
.+
/+
!!"#$#%&'("#$)*+$,-((./0$#$&1)*,2$(345(6665(3&(2*(.$(&'7')')"(&'(1$,"("8(9:;(."($8*&$(./0$#$&1)*,2$5(2*(."(1'72"(/0".+$(,(<"0#=1*(/>666?6
OPB, 2009/10
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 na levi strani `|’ (beremo: “tako
da”) pravi, da je vsaka n-terica , 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’.
+/
+.-
+,
+*) >01><>< 7,,,|,,, TMornarjiATNIATNI
MornarjiATNI >1< ,,,
I N T A, , ,I N T A, , ,
OPB, 2009/10
Poišči mornarje z oceno > 7, ki so
rezervirali ladjo #103
• Uporabili smo kot okrajšavo
za
• Kvantifikator je bil uporabljen za povezovanje
(Stik) n-teric iz relacije Rezervacije z n-tericami iz
relacije Mornarji.
+,
+*) 0>01><>< 7,,,|,,, TMornarjiATNIATNI
+/
+.-
(((
'
&
%%%
$
# =0=01><! 103Re,,,, BrIIrzervacijeDBrIrDBrIr
( )! Ir Br D, , . . .( )( )( )! ! !Ir Br D . . .
!
OPB, 2009/10
Poišči vse mornarje z oceno > 7, ki so
rezervirali rdečo ladjo.
• Oklepaji kontrolirajo področje povezovanja
kvantifikatorja .
• Izrazi delujejo kompleksno vendar uporabniški
vmesnik (MS Access, QBE) na osnovi DRC je
intuitiven.
+,
+*) 0>01><>< 7,,,|,,, TMornarjiATNIATNI
%%
$
# 0=01><! IIrzervacijeDBrIrDBrIr Re,,,,
+/
+.
-
(((
'
&
(((
'
&
%%%
$
# =0=01><! rdecaCBrBLadjeCBNBCBNB ,,,,
OPB, 2009/10
Poišči mornarje, ki so rezervirali vse
ladje.
• Poišči vse mornarje I tako, da za vsako 3-terico
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.
!"
!#$ %&><>< MornarjiATNIATNI ,,,|,,,
'&><¬()))
*
+
,,,
-
.
)))
*
+ LadjeCBNBCBNB ,,,,
!/
!0
1
,,,
-
.
,,,
-
.
,,
-
.
))
*
+
))
*
+ =%=%>&<2 BBrIrIzervacijeDBrIrDBrIr Re,,,,
B BN C, ,
OPB, 2009/10
Poišči mornarje, ki so rezervirali vse
ladje (spet!)
• Enostavna notacija, isto vprašanje. (Bolj čisto!)
• ... mornarje, ki so rezervirali vse rdeče ladje:
!"
!#$ %&><>< MornarjiATNIATNI ,,,|,,,
LadjeCBNB &><( ,,
!/
!0
1
,,,
-
.
)))
*
+
,,
-
.
))
*
+ =%=&><2 BBrIrIzervacijeDBrIr Re,,
!/
!0
1
,,,
-
.
)))
*
+
,,
-
.
))
*
+ =%=&><2'3 BBrIrIzervacijeDBrIrrdecaC Re,,!!!!!
OPB, 2009/10
Varni izrazi & Izrazna moč
• Mogoče je zapisati korekten izraz relacijskega
računa, ki ima neskončno število odgovorov.
Pravimo, da takšni izrazi niso varni.
– Primer:
• 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.
!/
!0
1
!"
!#
$
,,,
-
.
)))
*
+ &¬ MornarjiSS|
OPB, 2009/10
Povzetek
• Relacijski račun je deklarativen (ne-
proceduralen); 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”.
Relacijski račun
1. Relacijski račun - LETALSKI POTNIŠKI PROMETVzemimo naslednjo shemo:
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 B747.
2. Relacijski račun – NAFTNA DRUŽBAVzemimo naslednjo shemo:
CISTERNE _IdC: integer, SerijskaSt: integer, kapaciteta: integer, DtServisa: dateNAROCILA _IdN: integer, St:integer, Datum: date, Kolicina: integerDOBAVA _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 relacijskem računu (DRC).
a) Poišči vse številke naročil, za katere je pri dobavi goriva sodelovala cisterna s serijsko številko 123456.
b) Poišči vse IdN naročil, ki jih je izpolnila cisterna s serijsko številko 123456 ali 123457. c) Poišči vse IdN naročil, ki ali zahtevajo količino 10.000 enot ali pa jih je izpolnila cisterna s serijsko številko 123456. d) Poišči vse IdN naročil, ki jih je izpolnila cisterna s serijsko številko 123456 in cisterna s serijsko številko 123457.
3. Relacijski račun – SPLETNI FORUMVzemimo naslednjo shemo:
UPORABNIK _idu uporabniško_ime geslo enaslov vlogaUPORABNIK_VLOGA _idu _idvVLOGA _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 Janezd) Izpiši objave iz foruma z imenom "Splošno", ki so bile objavljene pred 1. 12. 2010
OPB, 2009/10
Query-by-Example (QBE)
Iztok Savnik, FAMNIT
OPB, 2009/10
QBE: Uvod
• “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, …
OPB, 2009/10
Primeri tabel za QBE
Boats bid bname color
Sailors sid sname rating age
Reserves sid bid day• Uporabniki definirajo
vprašanja s primeri tabel, ali skeleti.
OPB, 2009/10
Osnove
Sailors sid sname rating age
P._N P._A
• Izpiši vsa imena mornarjev
! !"#$%$&'()&*+,-.,/)&"&,.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
OPB, 2009/10
And/Or vprašanja
Sailors sid sname rating ageP. < 30P. > 20
• Imena mornarjev, ki so mlajši od 30 ali starejši od 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
OPB, 2009/10
Duplikati
Sailors sid sname rating ageUNQ. P. < 30
• Ena vrstica vsebuje P: duplikati niso izločeni
privzeto; izločenje dosežemo z UNQ.
Sailors sid sname rating ageALL. _Id P. < !"
_Id P. > #"
!!"#$$%&'()*$+$,-$$./01)23()$'4$)+14#"5)$0&)%+"(46$13724$0&"0&"#)84$)+14#"59"$./01)23(4%$+$:;;<
OPB, 2009/10
Vprašanja s stikom
Sailors sid sname rating age_Id P._S > #$
Reserves sid bid day_Id ‘ / / ’% #& '(
• Imena mornarjev, ki so rezervirali ladjo za dan
8/24/96 in so starejši od 25 (datumi in nizi imajo
narekovaje):
!=()2$9"$.">)5)&35$+$/9"8394#)83$'0&"8"19)%2383<
OPB, 2009/10
Stiki
• 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.
OPB, 2009/10
Stik
Sailors sid sname rating age
_Id P. P.
Reserves sid bid day
22 _B
_Id _B
• Imena in starost mornarjev, ki so rezervirali ladjo, ki
jo je rezerviral mornar z sid = 22:
OPB, 2009/10
Neimenovani stolpci
Sailors sid sname rating age
_Id P. _R _A P._D P.(_R/_A)
Reserves sid bid day
_Id _D
• Uporabno, če želimo izpisati rezultate nekega izraza
ali natiskati polja iz dveh relacij.
– Nekateri QBE dovoljujejo P. v samo eni tabeli !
OPB, 2009/10
“Negativne tabele”
• Negacijo damo pod imenom relacije:
Sailors sid sname rating age
_Id P._S
Reserves sid bid day
_Id _B¬
OPB, 2009/10
Agregacija
Sailors sid sname rating age
G. G.P.AO _A P.AVG._A
• QBE podpira AVG, COUNT, MIN, MAX, SUM
– Nobena operacija ne eliminira duplikatov, razen COUNT
– Imamo tudi AVG.UNQ. ...
!!"#$%&'()(*+(,#(-.#/%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$'(4-.7-4&'3,9#(#%7.4&'3#+(
OPB, 2009/10
Ločeni pogoji
Sailors sid sname rating age
G.P. _A
CONDITIONS
AVG._A > !"
• 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:
!!"#$%$&'()*+,+'(-)")./0)1&)234
Sailors sid sname rating age
P. _A
CONDITIONS
20 < _A AND _A < 30
OPB, 2009/10
Poišči mornarje, ki so rezervirali vse ladje
Sailors sid sname rating age
P.G._Id
CONDITIONS
COUNT._B1= COUNT._B2
• Vprašanje z deljenjem• Potrebovali bomo agregacijske operacije (in update).
Reserves sid bid day
_Id _B1
!5$6+)7$86+)9*#(:(&1:+)-*#$;$&'(<)=$)1"*1;()1:(&$):+#&$#'(-<)61)9+)#("(#-1#$71)-9()7$='(>
Boats bid bname color
_B2
OPB, 2009/10
Vstavljanje zapisov
Sailors sid sname rating age
I. _Id _N _A
CONDITIONS
_A > 18 OR
_N LIKE ‘C%’
• Vstavljanje enega zapisa:
Students sid name login age
_Id _N _A
!?9@$-7'$&'()-(A)"$*19+-)B#$@1&,)'()&C77)-)9*+=&'18)"$*1918D4
Sailors sid sname rating age
I. 74 Janice 7 14
OPB, 2009/10
Brisanje in update
Sailors sid sname rating age
_Id < 4
• Pobriši vse rezervacije za mornarje, ki imajo rating < 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
OPB, 2009/10
Omejitve pri popravljanju zapisov
• 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 agejohn _Ajoe U._A+1
!"#$%&%'"()*&$+,"'&+,)$(+-.$/&-01,"'&+,$2",-'-3"$/&.4"$4"#$5%&'"6)*&0 OPB, 2009/10
Poišči mornarje, ki so rezervirali vse ladje (Spet!)
Sailors sid sname rating age_Id P._S
Reserves sid bid day_Id _B
• Hočemo poiskati mornarje _Id tako, da ne obstaja ladja _B, ki je nebi rezerviral _Id:
Boats bid bname color_B ¬¬
!!-7-3"74&$(%'"8"4#-9$$1%'-*-47#)(2"$:;$+-$4-$%&#"()$($%&<),)(4)$('+,)=)>$
!?$2"284-*$('+,4-*$'-@5$4"#$+-$&6'"(4"("#&$4-3",)(4-$('+,)=-0
OPB, 2009/10
Uporaba pogledov
Sailors sid sname rating age_Id P._S
Reserves sid bid day_Id _B
• Poišči mornarje, ki niso rezervirali neko ladjo _B:
Boats bid bname color_B ¬
BadSids sidI. _Id
!A&)8B)$*&'4"'#-C$2)$4)+&$($4-2)$*4&D)=)E
Sailors sid sname rating age_Id P._S
BadSids sid_Id¬
OPB, 2009/10
MS Access
OPB, 2009/10
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.
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
-- phpMyAdmin SQL Dump-- version 3.2.2.1deb1-- http://www.phpmyadmin.net---- Host: localhost-- Generation Time: Jan 28, 2010 at 02:19 PM-- Server version: 5.1.37-- PHP Version: 5.2.10-2ubuntu6
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!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`
--
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`--
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` (
`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);
!"#$%&'(')((%%%%%%%%
*+,-+%+.%/01213-3
4512-%607.+-$%89:;4<
!"#$%&'(')((%%%%%%%%
*+,-+%+.%/01213-3%
= 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/01-27.2%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
!"#$%&'(')((%%%%%%%%
*+,-+./.0/%12345
!"#$%&
!!"#$%&'!('!)*+,-$!./*0!12!)*3(0
'(
!!4$56!('!/*'7,56!.$+'*!,.!)'.!(!&,7!/$8,9,$.,*67$!:#6)$!.6;!(#';7,0!<#';,!/$;!:#6)67,!,7'.=-'7$!!"#"$%&'(!
)"*+*
!,&-./0,#/&
1#/*
!!>*6.-'3/,(6.-'!/$+'56!(67$!/*'5$!'.'!:#6)'!)!;6.'7!+*'.=+5=0
2"&3
2&/4#,
!)*#+,")($!('(+6)#-'.,!,8!)'&,?!-&,.+'/&0)@5,!($!A,5(.,B0
!"#$%&'(')((%%%%%%%%
6+30+-%1+%1234+7./%3085.2
9 :53%1+30+-5%;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%-+150+7%2E).5%-+78FC/%-?+FD/=
9 :53%2345.C5%2.%8+05G2C345%E5453.20/7%-8/7?51HC/05I" :53%2345.C5%3/%3-8/,2.C5%+1%(%1+%&',3/G" J+05G2C345%E5453.20/7%3/%3-8/,2.C5%+1%'%0+%(',3/G" :53%-8/.+35%C/%02-2D.+%(,3/G%E5%K*#%3085.
9 *?CHD%E5%,5.CF+%L)!%G/.+@%M E,5.CF502%D53%2345.C5%)%8+0I%E5453.20/7N%%M O581<58/%73I%3+P0<58/%8/F20/7Q
!"#$%&'(')((%%%%%%%%
"82,/8@%L#R%6/343058ST/%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%E5453.20/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+[3085.342T%-?+FD$%42%3/%7802C+%Z$&''%780I),2.%
9 "?+FD5%73/>HC/%WIWX%U#%-+1504+7$%A+30+05%C/%&I\%A2A5>20)2.GT&I%
9 O208+30%-8/.+35%C/%GG5I%(W%R#)3
"82,/8C575@
9 6+30+-%1+%12345%C/%GG5I%('%,3/G3
9 6+30+-%1+%A?57./A5%3-+,2.5%GG5I%\'%.5.+3/G+.13N
!"#$%&'(')((%%%%%%%%
"82,/8@%66J
]05.1581%^?+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
!"#$%&'(')((%%%%%%%%
*+,-./,0%123430%56%-.748
9 :35;,</=%>5!"#$%&'!?%7/+65=%%! #234.%56%.7/.%72,-.$%4.%72,-.@3%! #234.%56%.7/,A%;.2.5-+8$%4.%72,-.@3%! #234.%56%737,-5,A%;.2.5-+8B%
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.743053%<32@,%F-.74%6++6PGBQ 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,%375305.%/,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;,B9 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%-.743053%<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%-.74305.%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
!"#$%&'(')((%%%%%%%%
*+,-%.%/012-3405%67-18-7-5
9 :;<40=<0%403-%>?"#%/+,;%.%/012-3405%6-540,40@205%67-18-7-5A
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%1+23+4J4+5%67-18-7K%4;%/012KL%%M B0@<0%403-<0%4+%6-87+HK<+<-%3+/+80%2;2-%<+%8-%4;7+<+4-%-.A%
2;2-%1+%/+,;%1%67-1805%67-18-7-5A
!"#$%&'(')((%%%%%%%%
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
9 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%-2307
9 ).'=%'(187;4%04%3740%4<+4%4;1,-3A%%
" !"#!$%&'(!)*#+,-+#,%.(!/%&0#,#!12)*34!5#',3!)*#6$#+7
!!)(0#.!$%&'(!,2%)*#8!)*#9#*#.(!,#:!50*%2-!;
!"#$%&'(')((%%%%%%%%
B+J%-%/+,K%.%35+1A%6-540,402-5
# I;C8+3;4;%187;4%5-7;%H080%*+="2/,(# B0/4-%5-7;%H080$%J+%<+%187;4%167+5+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
!"#$%&'(')((%%%%%%%%
*+,-+./01.%2-%2-3.41-56%7+,-40
8 !950,%02:,-4%7%!"#$"%&'()*+$,%-($.%/! ;<=$%=,-%>01)23?$%@<=$%0+AB
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%
7.95.4N40%E,./C.A%+-:.C.B! F%6950,1.5%P%F%7+,-40%A-+6+.9.%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%707+.3
%%%%!*%M,.1-%A0796540%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,.467C10567+8 U.9-+.,.%63.10+5.$%4E,B$%A-+6+.9.%7.%4.%36,-16%
,-2+.2-+0%E,.96%5.C0967+0%A079-B8 R.C6%2%53.7403%E6340C40963%5%*="#%2-D+.5-%
236V467+J! ",0E.+0%7+,-4%5%53.740%E6340C409$%E,070C0+0%7D,-41.5-41.%
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%
!"#$%&'(')((%%%%%%%%
X6,3-+%2-E07-J%%X0974-%A6CV04-
8 G4Y6,3-H01-%6%+0E0D%E6C1-%1.%.4-9-%2-%57.%2-E07.%5%A-+6+.90I%7D,-41M1.%7.%5%!'!"%,!3%,*3$"$1)&89
8 "60QN0%':")*E6C1.%4.%2-D+.5-%E,./C.A%57.D%2-E0765B
!"#$%#&'#(")$%'*+,
!" !# !$ !%
&" &# &$ &%
-(")$%'.'+/01/02
!"#$%&'(')((%%%%%%%%
X6,3-+%2-E07-J%Z-,0-:0C4-%A6CV04-8 R5-%-C+.,4-+054-%Y6,3-+-%>F%E6C1%1.%Y09746?J
" '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
C D D D D
E78%8F9$):
G$):('"$'4(BH8:8#('"'9$"8I#&H'"&HI$)$H
J1''''''''''''''''''''J2'''''''''''''''''''JK''''''''''''''''''''JC
J1'''''''''''''J2'''''''''''''JK'''''''''''''JC
G$):8'$;H&<$%'(74&I57$%
!"#$%&'(')((%%%%%%%%
*+,-./%0/,.123%4.5202%627018%9+:;218
! !"#$%&$'&(&)%*+",&$'-&#+.'"/&012&&3&#+4$&"/*.+,"*$4$&5"6*.4"&#+.7$8",9.&5"#$%:4&5"&#+"5.,&#+:%*:+&%#+.7.7;:&+$'<&,$&4.',:&%#+.9.7/9$4:2
!"#$%&'(!"#$%&')
!"#$%&'*
!"!"! !"!"!
* +(,-'-'-
+''---''''.'')''(!/0123 456+/!
!"#$%&'(!"#$%&')
!"#$%&'*
*#7%8#$#9:";8<;"
!"#$%&'+
((
=<-'7%:>8;?' =<-':"#$%&;?
!"#$%&'(')((%%%%%%%%
*+,-./%0/,.123%4.5202%<.,2.=2:18%9+:;218
@ ="68:&#+.7$8"7:&5"#$%.&#:&%*+",$&,.&'"&;$&%#+.7.,$/$&+$'<&#+$4/">,"&#+.'%*"4$*.4&*?'$&5"&5"#$%.&%&@$8%,:&':/A$,:2
A<"%9'>B>$'C'D>E*F
B>$'C'D>E)F
B>$'C'D>E(F
1%7%&#G'9%'7%H#<#I'9#7%8#$-:";8<;"%-'
3>"#I<;">J':"#$%&;?
*'''''''''''-'-'-'''''''''''')'''''''''(), (K )L *
M:"#$%&;?
!"#$%&'(')((%%%%%%%%
>./+/878%?.520+<
@ A/,.1%.:2%=:+7%B8%!C%?.%D)!@ E2FB2%12<+B2%AG"#%98:HB8B+%?%5"#$%$%/8,%?%
'"*:*.8"7$&5"#$%:4@ >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
!"#$%&'(')((%%%%%%%%
V8H,8B818%9./+/878%
@ V.B81+0/.<18BF.%9./+/8W1.%0/,H7/H,.Q 4.5202%12-.B+%1+=818%H,8B81+0/2NQ J.7+%7+/%08%9./+/87.%-.1BF.%21%<8W.$%/.7+%08%
9+9.B.B+%21%+9<?8-.B+%0/,.12%R=:+72SN%
@ "+/,8=1+%B8%0U,.1B8<./2%5+9./78%+3%Q %*+",.6%9./+/878" ,.?#:+";/9.,.7&#+:%*:+?%1.%0/,.18U" 5"#$%$6&1.%0/,.12
@ !=0/.B.%<8:27+%.:/8,1./2<%?.%0U,.1B8<.1B8%5,890/.<:B812U%5+9./7+<N%
!"#$%&'(')((%%%%%%%%
*+,-+.+/0%10232+40%5678+6+/25-0/0%%9%9+:/0636
; <=%>80?/+%92-0/5%5/%9060%10232+40%63-020%@525%9A-0/.+/0%/+4.+%/0%1594,B%
; C9040%92-0/%?9+@,.+%&%D40:08E0F%5/%731024+B
!"#$%#&'(#%
)*+,&'(#%
)*+,&'(#%
)*+,&'(#%
!"#$
%&'()
)*+,&'(#%
)*+,&'(#% -'(#%./01.0.2#3*0
4(#56%04(*&'*(
)*"%60&'(#%.
!"#$%&'(')((%%%%%%%%
*+,-+.+/0%10232+40%:%15-+423-5.+6%92-0/5%
; 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-+423-5.%.+%:@5-40%92-0/5I%5678+6+/20E5.0%:%9+:/063?%.+%+/0%082+-/025?0B%! !"#$%&'()%*$+,'-./%$+'0"'1/"2"0'&%$03+'45.'3.6'*-",'-./%$+7
)*+,&'(#%07
)*+,00&'(#%08
)*+,0&'(#%09
!"#$%#&'(#%
)*+,-./+0
!"#$%&'(')((%%%%%%%%
J592+6945%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+4+$%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
; J202592540$%0,23-5:0E5.0$%?+854392%@0:+/0%92-0/5$%521B
" !"#$#%&'(!)&!)*+#,-.,(!/&$!+.%#0(-.: !"#$%&'(')((%%%%%%%%
Q22-RS02L022-R/06+$%-+8R/06+$%2T7+$%7395253/N
#''(;%#260 (6";%#260 '<460 4*&.'.*%0#''(;%#260 =''(.>?'6;@#'0 &'(.%A0 70(6";%#260 =''(.>?'6;@#'0 &'(.%A0 80'<460 =''(.>?'6;@#'0 &'(.%A0 B04*&.'.*%0 =''(.>?'6;@#'0 .%'6A6(0 C0&.+0 -'?+6%'.0 &'(.%A00 70.260 -'?+6%'.0 &'(.%A0 80"*A.%0 -'?+6%'.0 &'(.%A0 B0&'#(0 -'?+6%'.0 .%'6A6(0 C0*D6%#0 -'?+6%'.0 (6#"0 E0F.+0 G#1?"'6'#0 &'(.%A0 70F.260 G#1?"'6'#0 &'(.%A0 804"#D#0 G#1?"'6'#0 (6#"0 B0
0
*
!"#$%&'(')((%%%%%%%%
"*+,-.-/
0 123/%4-%5*6-72%5-8323.-7.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*@%927292,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-%58-7-3.2%+-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>=%
!"#$%&'(')((%%%%%%%%
*+,-./0
*123.%456+0.$%789:*;
!"#$%&'(')((%%%%%%%%
<=-6-/+0%0+,-./0
> !"#$%&'(")%'#*($+%$,-.%'/-*)($*,#0($!"?@ %"3,52.36+0%15A0/0%1%6=-,+3/2B3%.CBDE5%!@ %F!$%=0,%A3,G%15A0/5%1%6=-,+3/2B3%0/.5C+-H5%.CBDE5%!I@ %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,52.36+0M%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> PP;-#<3#$*0($<'=.()'($0$,-*,"(32(4$>$?@AQQ
! R-%/3%A3,52.0%6%D=-B-+0M%,5232-.0%+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%,5232-.3G%
" !!"#$%&'()*+&',-$+&'%)./"$'0.1$+2.$'1)3&3$+$4
!"#$%&' !"#$%&( !"#$%&)!"#$%&* +,-$".,/%$&-$"0
.( .).' 1%-2.3%$&-$"0
!"#$%&'(')((%%%%%%%%
*489
> *+,-./+5%,5232-.5%B-%6/--+3%C5M.3%A=-V-B%6-C0.5G%*,-B3%C5M.3%A3+360J3W
" '50230'623-).07'82$9:/$/&',&1)3+&8.$'8,02$#
+4
5' +
'5 ( +
(5 6
+ 6
1%-2.3%7&/873
),"#$%92
3"#$%7
+#2:7/%$3"#$%
;3%,/%2&3"#$%7
<73"7
!"#$%&'(')((%%%%%%%%
*+,-
. !"#$"%&'#()%*+*#,#/%%01234%56247489%24:;4<=<9%29>31>6<4%?9%12:6@<48%:@AB=BC%%56247489%1<D4:2<4%23>6<1%1<%?9348%
%%%%%E4%?>9239>%56%?>4@1;<4%23>6<1F%. -&)#,.&$(/0$.$/%%G;>4D<923%12:6@<4H6%:@AB=6$%1D%23>6<1IC%%(((((1.2#"'%'+(($.,%&'#(0+)%*,+/&$3(/0$.+/$%:1%29%;%@1231JF. -.,%&'#/%%K6=<1%;%:9>4<BC%B?9>6L1%?>184>A6;9%:@AB=4;%56%12:6<A4%
@1236F%%M4<6%N@9H%O%P%C%O%N%Q%;?129;)1<DF23>6<$%P%N%Q%@1239;F
. 4.*%/$/%%"91E=1%@123%1<%56?1E1%?9DF%;?12F%
. -56"$7$/%%"91E=1%@123%1<%15L>1E1%;?12%15%@1236C%15L>1E1%?>4@1;<9%23>6<$%=4%A4%?>65<6F
! !"#$#%&'$!(#)*+#*)$!,)-.-($/!!!"#$!%&$'&()*+,"$'&(-"$./-!-%,"#,00
!"#$%&'()*+
,*#-.&*-%&'()*+
!(-/+0*-%&'()*+
!"#$%&'(')((%%%%%%%%
">184>%*+,-%D>4;426
. R26:9%;95@1E=4%@6J:9%;24LBA4%D;6%;?126C%<1%?93>4L4%?9%:656@S1J%<6%<62@4D<A1%@123F%%TK6:6AUV
123 143 523 563 773 763 823 893 413 443 973 :63
52 77 41 97
82
;"(-*
!"#$%&'(')((%%%%%%%%
"9%;236;@A6<AB%&WX$%YZX$%Y(X$%Y&X%FFF
123 143 523 563 773 763 823 893 413 443 973 :63
52 77 41 97
82
;"(-*
573 8<3 813
853
!(-/+0*-%
&'()*+
&'()*+%=
,*#-.&*)
&'()*
/+&'+
!(+>)(*-
!"#$%&'(')((%%%%%%%%
%%%%%%%%%%FFF%?9348%L>126<A4%Y&X$%[(X$%\]X
1 -12,"-345-"(-2/&$!,-!-'/#+$'&,0-"#+$'(0-,'-'(-#67,-!-%,"#,08
123 143 523 563 773 763 823 893 443 973
52 77 41 97
82
;"(-*
573 8<3 813
!"#$%&'(')((%%%%%%%%
#*%+,-./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= RP89;/.8A/%@/:@8,2%8<;293-%@/%-92;/<A8%89%8<;293-%
@/:,/P32B%
!"#$%&"'()*'&
+,#-.%,)"'()*'&'/0$1$2$"3-4*,#-.%'5
/6&7$28-8,('&%-"8$5
!"#$%&'(')((%%%%%%%%
",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
! "!"#$%&'()'#*+,#-./01#2'#&3)45'#($#-#26.-.%47
0,,.
9: ;< =>
;? =? @? :? 9<? 9A? 9B? ;>? ;;? ;<? ;:? ;B? ==? =<? =C? =B?
9=
!"#$%&'(')((%%%%%%%%
#*%+,-.-<2%.%@,2;<8
= 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#%%%%%%%
!"#$%&'(')((%%%%%%%%
C<A2.53293-%@/:B%.@8<2%.%#*%:,-./= "/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%%
!"#$%&'(')((%%%%%%%%
*+,-./0-102%34%.%#5%672.8%9:7;<27=
> ?;1;<-/1-%@-+26218+,%:8%7-@A2:;,.;%02%@-0-<B21-%.%/;+,;C%D8,%,E6;%.%;162D+1;C%+,7-12CF%
> "8G/20%7-@/;D8%<26%:72:;+8<%;1%:7218+8<%D/0EB-%1-.@G87F
> H-DI21%02%7-@/8G%%@-%7-@/;D8J
!" #" $" %" &"
$
'()*+,-),./0,*1,2*3/2),2,*3/45/6$,*1,(41()51,./27894:;9()0/,9*3/.1,2,<)*3=>?
@90/2<0/,2,).A1-*=,*/B9,1.-4/3>?
$ !C #D
E%
E#
'()*+,-),./0,*1,2*3/2),2,*3/45/6E%,*1,(41.1*1,./27894,).,*1,
!"#$%&'(')((%%%%%%%%
"7;<27%#5%672.2+-%:8%.18+E%34
!!!"#$#%&'!$(!)*!+*!,(-.*/#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!
!" #"
;941.
E%
!C #D
EC" EF" EG" !D" !!" !C" !%" !G" ##" #C" #&" #G"
E#$
%"$" &"
!"#$%&'(')((%%%%%%%%
#7;+-102%:86F%.:;+-%;@%#5%672.2+-
> 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%+8+268.F%
> N2%:87-@62/;,2.%12%E+:2$%)*+&%,(+#(-"-./%0(
> *%:7;<27E%@/;,0-%<87-<8%@M7;+-,;%.:;+%9D;%D-P2%1-%%,%-/;%1-%+8+26-=%;@%+,-7I-%86%,F
> K/;.-102%+2%/-CD8%1-6-/0E02%.+2%68%D8721-Q%.%,2<%:7;<27E%+2%@1;P-%.;I;1-%672.2+-F
!"#$%&'(')((%%%%%%%%
R72.8%:8%.+,-./0-10E%34%;1%M7;+-10E%(S4%;1%&'4%FFF
> #7;+-102%(S4%02%218+,-.18F> #7;+-102%&'4%02%1-720218%+%:87-@62/;,.;08%
.:;+8.F%T72610;%D/0EB%02%:72:;+-1%1-.@G87F
!" #"
;941.
E%
#D
EC" EF" ##" #C" #&" #G"
E#$
%"$" &" !!" !C"
!%
!%" !G"
!"#$%&'(')((%%%%%%%%
%%%%%%%%***%+,%-.+/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/05 "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*
!$ '$ *$ &$ )"$ ))$ )#$ )!$ #"$ ##$ #!$ !)$ !+$ !*$ !($ ')$ ''$
/-0.1023456.023157-895:716-:;5<15=45316-5:5>?5804:46@A-043
!"#$%&'(')((%%%%%%%%
"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
B-895:7161;5<15
=45316-5:5804:46@!+#!)#*
)" #"
!$ '$ *$ &$ )"$))$ )#$)!$ #"$##$ #!$ !)$ !+$!*$ !($')$ ''$
*
A-043
)"
)# #!
#"
!+
!(
C45316-5:5804:46@B-895:7161;5<15
!"#$%&'(')((%%%%%%%%
"6:8272>%<69,12,10%#@%=.2:2/0
5 M6H,6/7%(D%+72.07+:,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,7.69+.0A6%QR0>76.%80<69,12,6/7+S%,0%
/7.0,2?*
!"#$%&'(')((%%%%%%%%
*+,-./0%1234350
6 !"#$%&'%7!8%9%:+34;<,%;.1=%4-;5,4%%4%4,><;:?;@%1234350=%
6 A%-20B5;%53%5+,-./0%-234313%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,C9 %402;0.+,%5+0+;?.3T0%;.13B50%9 %20>:;2</;4%20>-2:;<.;%;.13B5%71;.0J;?3.8
!"#$%&'(')((%%%%%%%%
*+0+;?.;%20>-2:;<.;%;.13B56 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
!"#$%&'()*+,)-
!#$%&'
!"#$%"&'()*"%&# !"'+#,&'()*"%&#
.
/
-01
!"#$%&'(')((%%%%%%%%
*+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,.5+0.+3P43<;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.2%/+,3/-.04.%.45678
9 !"#$%&"'%:%;7<367%=3/.>+/4+%8?/+4@%86%4+3A04.B%! #/+416%.4%3.8+416%8?/+4.%87<37+%16%3A?/+?4AB
9 ()*'%:%%)"+*,#-+"'.,%/%0&*1.2%.3,$4,*%C D+E7A%3/68?+201+>A%8?/+4.%87<37A2BC 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?.%MB9 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-
!
13*00
01
10
11
2
2
2
2
2
!"#$!%$&'!"()%$
*+!",%$&'!"()%$
DIREKTORIJ
Skupek A
Skupek B
Skupek C
Skupek D
PODATKOVNE STRANI
10*
1* 21*
4* 12* 32* 16*
15* 7* 19*
5*
!"#$%&'(')((%%%%%%%%
O8?+2.%!=/@S&'%=3A52A1.?62@
20*
00011011
2 2
2
2
!"#$!%$&'!"()%$ 2
2
DIREKTORIJ
*+!",%$&'!"()%$
Skupek A
Skupek B
Skupek C
Skupek D
Skupek A2(nov skupek)
1* 5* 21*13*
32*16*
10*
15* 7* 19*
4* 12*
19*
2
2
2
000001010011100101110111
3
3
3DIREKTORIJ
Skupek A
Skupek B
Skupek C
Skupek D
Skupek A2(nov skupek)
32*
1* 5* 21*13*
16*
10*
15* 7*
4* 20*12*
!"#$!%$&'!"()%$
*+!",%$&'!"()%$
!"#$%&'(')((%%%%%%%%
UA>64?+/1.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[.%3A52A162+416%5./67?A/.1+\! "/65%28?+201+416>:%0-,%02%.90-:"2%%87<37+%S%&*0-#2%.90-:"2%B%%! O8?+201+416%3A2,/A[.:%0-,%02%.90-:"2%.3A8?+46%]%&*0-#2*.90-:"2*<%
9 "A52A162+416%5./67?A/.1+BC H./67?A/.1%86%3A52A1.%8%7A3./+416>BC 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%
!"#$%&'(')((%%%%%%%%
"*+,*-.,/0-.%+12.34*21-/
00
01
10
11
2
!"#"$%&'()"*+,+%')-+./"01$+%*+,%-%0+)2#,()+$&3! %45(6(7"%'(0-($+,2-%0+)2#,()+$"%8%#('+)"1$259
000
001
010
011
3
100
101
110
111
-8:
0
1
1
+0!"
!"
;%<%==>
00
10
01
11
2
3
0
1
1
+0+0
+0
;%<%==>000
100
010
110
001
101
011
111
?)-+%*+, !"01$+%*+,
+0
+0
+0
+0
+0 +0
+0
+0
!"#$#%&'&()*#+&#,-.&+
!"#$%&'(')((%%%%%%%%
5*6.04/2-17 8.0/%91:3/0-/%;%.0/</-.6=>
? @.%+12.34*21-%A2.%,%+10/61<01%:B*610%B*4.6%:*%B*1;,.+C.%0/%*:0*,1%.0/3*:41%1;,.+.0.%;%C2/0-.6%.0.A/%CD*3/$%:1E.2%;%+,.61F%
7 G1B1<0.%H4.,1D3.>" (''I#%+/4*4.3/J%(''%;D*A*,);/B1:J%K5%:42/0J%($'''$'''%B*+F%,B1:*,J%
+12.34*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.T7 !"#$%&'(%B*+/43*,0.A/%,B1:/>%
? @.%C21:/0-.%B*+F%,B1:/%1;B2/;01%:3MB.3%A/%D/S3*%;+2MU16*%;%0-.A*,*%92/;E.BD-.0*%:D13*=F%%%
? @.%:.%B2,/%B*D*,1E/%+12.34*21-/%M-.6%;%+2MA*%-1S%D/S3*%;+2MU16*F%
!"#$%&'(')((%%%%%%%%
"*,;.4.3
7 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
!"#$%&'(')((%%%%%%%%
"*,;.4.3
7 %#Z%+2.,*" G1B1<0*%:*%10+.3:0.%:42/01%;/B*D0-.0.%%^_`F" #Z%+2.,*%-.%*C1</-0*%C*D-H.%*+%WXYIF" @.%:*%B*+/43*,01%,B1:1%.0/31%B*+/43*,016%;/B1:*6%B*4.6%E.B14,.%
D1:4*,%:B2.6.01-*%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
!"#$%&'(')((%%%%%%%%
"*+,-.-/
0 12,3456786%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,3456786%689-/:6%72@/*%+*96=*%9*%9*7D6@%34-76+86@%+-46DB%
0 12,5647=6+%42,3456786%689-/:%86?2%34-76+86@%:.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,9-76.+-%+4-98*:.6%
42,3456786@%GA8/H6=B%
OPB, 2009/10
Datoteke in indeksi
Iztok Savnik, FAMNIT
OPB, 2009/10
Podatki na pomnilniških
medijih
• 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.
OPB, 2009/10
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.
OPB, 2009/10
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 …)
OPB, 2009/10
B+ Drevo
!!"#$%#!&$'()*'*+!,+-.%/+&0'!1.,#$'2!/#!$+!)3'*'0#!4,3'&!5!0'6%7!!8+%3.0*'!$%3.0#!#9.*+!#0-'/$0'!1.,#$':!$.9+!1.!#$/.0*';
P0 K 1 P 1 K 2 P 2 K m P m
Indeksni zapis
Notranjastrani
strani (Sortirani po iskalnem ključu)
Listi
OPB, 2009/10
Primer B+ Drevo
• 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).
2* 3*
Root
17
30
14* 16* 33* 34* 38* 39*
135
7*5* 8* 22* 24*
27
27* 29*
Zapisi <= 17 Zapisi > 17
Podatkovni zapisiv listih so soritirani
OPB, 2009/10
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.
OPB, 2009/10
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.
OPB, 2009/10
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.
OPB, 2009/10
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.
OPB, 2009/10
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!
OPB, 2009/10
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
Podatkovni vpisi
usmerjajo iskanje
(Indeksna datoteka)
(Podatkovna datoteka)
Pod. zapisi
podatkovnih vpisov
Pod. vpisi
Pod. zapisi
!"#$%&' '$!"#$%&'
OPB, 2009/10
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%&45OPB, 2009/10
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
OPB, 2009/10
Operacije
" Pregled: branje vseh zapisov iz diska
" Iskanje z enačajem
" Iskanje področja
" Vstavljanje zapisa
" Brisanje zapisa
OPB, 2009/10
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 1.5 6 količina podatkov
OPB, 2009/10
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.
OPB, 2009/10
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!
OPB, 2009/10
Ocene: Neurejena 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
OPB, 2009/10
Ocene: Urejena datoteka
• 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.
OPB, 2009/10
Ocene: Povezano 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
OPB, 2009/10
Ocene: Nepovezano B+ drevo
• 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
OPB, 2009/10
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*0.125 + #strani z isk. zapisi)– Celotnen indeks + iskani zapisi
• Insert: Iskanje+ 2*D – 2D = branje + pisanje strani
• Delete: Iskanje+ 2*DOPB, 2009/10
Ocene operacij "#$%&'()*(+ ",$%-.#/012 "3%$%&0+'045( "+$%6.1('2 "($%7(*(2(
"8$%9(:'(5(;+#202(/#%
!" #$%!" !" &" '()*+,-
.""<$%=0'2>'#.#+#202(/#%
!" "/012&! "3/012&2!2.
42(562728()*+$
7*98(8:
'()*+,-
.2!"
'()*+,-
.!"
"?$%&0@(A;BC%>.+(/1
;$%!" "/012<2;$%! "3/012<2;$%!
.242(562728()$
7*98(8:
'()*+,-
.2"
'()*+,-
."
"D$%9(E0@;BC%>.+(/1
!"3=.#$;%: "3;2.
/012<2#$;%!:
"3/012<2#$;%!
.242(562728()$
7*98(8:
'()*+,-
.2&"
'()*+,-
.2&"
"F$%G#AE'H;6.+(/1
!"3=.#$;&%:&" "3!>#$;&%2.
42(562728()$27$:
'()*+,-
.2&"
'()*+,-
.2&"!I3(.(%1*0.>50%.#%E'(3(5%E'(+E012#@/#JK
OPB, 2009/10
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?
OPB, 2009/10
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
OPB, 2009/10
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.
OPB, 2009/10
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.
OPB, 2009/10
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.
• Več na predavanju 10 – Fizično načrtovanje relacijskih PB
OPB, 2009/10
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.
OPB, 2009/10
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.
OPB, 2009/10
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.
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
OPB, 2009/10
Pregled evaluacije poizvedb
Iztok Savnik, FAMNIT
OPB, 2009/10
Vsebina
• 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
OPB, 2009/10
Program v SUPB
• 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.
OPB, 2009/10
Primer drevesa operacij
Rezervacije Mornarji
mid=mid
lid=100 ocena > 5
mimeProjekcija
Selekcija
Stik
Relaciji
OPB, 2009/10
Evaluacija drevesa operacij• Kako evaluiramo drevo RA operacij?
– Logična in fizična optimizacija. Nivoji se zelo prepletajo!– Implementacija rel.optimozatorja = 40-50 č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.
OPB, 2009/10
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
OPB, 2009/10
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!OPB, 2009/10
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.
OPB, 2009/10
Metode dostopa! !"#$%&'%$(#$)&'*"'&+,-'.&'/(0&1*"'12#"3/4'3"+&4/*"5
" 63",+"%'%&#$#"0"'78/+"'(4&19-
" :$(#$)'.'/1%"0($;<'0/'("'=*";&'.'/>=#/'?')$,$*='/.>/3"-
! :3"?"(1/'/1%"0(5'! ("'=*";&'.'/>=#/'?')$,$*='/.>/3"'?')3/;"3='%&'($'/>=#/')3"8/0('
/(0&+1",&'0+*=@&-'
" 63/;"35''%3"?"(1/'/1%"0('1&%'A!"#$"#%B''("'=*";&'.'/(0&+1/;')$,$*";''!&'#()*#+$&,-#'/1'.''C!&'#()*#$./-<''#$%&'1"'#=%/'.''-$&,--
! D&.)3E/+1/'/1%"0(5'! ("'=*";&'.'/>=#/'?')$,$*='$>+/0"''!012$30&41567890''.&'?(&0'
/>=#'/.'/(0&+1",&'0+*=@&'/1%"0(&-
" 63/;"35''3&.)3E/+1/'/1%"0('1&%'A!"#$"#%B'("'=*";&'(')$,$*";'C!&'#()*#$&,#()*#%&'-F'''1"'=*";&')&'("'(')$,$*/''C$&,-"##+!&'#()*#$&,-"##&+/##+!.'#()*#$&,#()*#%&'--
OPB, 2009/10
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
OPB, 2009/10
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)
OPB, 2009/10
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))
OPB, 2009/10
Algoritmi za implementacijo RA
• Ogledali si bomo osnovne algoritme za relacijske
operacije
• Upoštevamo samo V/I ceno v št. prebranih blokov
OPB, 2009/10
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
OPB, 2009/10
Projekcija
• Pregled vseh n-teric relacije in izbor atributov
• Najdražja operacija je odstranitev duplikatov
• Uporaba sortiranja
• Uporaba razpršilnih funkcij
OPB, 2009/10
Stik
• Stik z vgnezdeno zanko
• Stik z drevesnim indeksom
• Stik z vgnezdeno zanko po blokih
• Stik z zlivanjem
• Stik z razpršilnim indeksom
OPB, 2009/10
Uvod v optimizacijo poizvedb
• 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
OPB, 2009/10
Kaj optimiziramo?
• 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.
Rezervacije Mornarji
mid=mid
lid=100 ocena > 5
mimeProjekcija
Selekcija
Stik
Relaciji
OPB, 2009/10
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!
Rezervacije Mornarji
mid=mid
lid=100 ocena > 5
mimeProjekcija
Selekcija
Stik
Relaciji
OPB, 2009/10
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.
OPB, 2009/10
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.
OPB, 2009/10
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.
!"#$%&'(')((%%%%%%%%
*+,-.,/01,%23-,/014506%7832,/01
9:;75%<,+=05$%>?@A9B
!"#$%&'(')((%%%%%%%%
9C8-3C3=;,/01,%D?
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
! "7G7H=7%57;%4;,2,%463C,W%G7G,=%!"#$%! D3:32+,/013I
" X4,5,%=S;320/,%0C,%Y'%:-7F7+$%%(''%=S;320/%=,%4;2,=$%('''%4;2,=0Q
! @72=,210I" X4,5,%=S;320/,%0C,%Z'%:-7F7+$%%['%=S;320/%=,%4;2,=$%Z''%
4;2,=0Q%
%&'()'*+",!"#-"+(./0/'1"!$%&'-"2.'+(01"(%)"$*-"+(./0/'1"%*'-"'/)345/6/'7)8+*/",!"#-"+(./0/'1"+"#-"+(./0/'1"#%,-"9)./21"($%&'-"2.'+(04
!"#$%&'(')((%%%%%%%%
\.=,=13%472;02,=13%:%:-0+,=13C
E A3%87;23H.13C7%+3-057%87C=0-=05,%:,%472;02,=13%+3-0506%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
!"#$%&'(')((%%%%%%%%
*+,-./01,%-,0230415/6%7%3804+14913:3
; "0/<,=%(6%"0/>/03%-2041$%5,%-,023045$%5,%14?3@3A! B?,04>3.,%-4.,%/1,%-2041%3804+14913:4
; "0/<,=3%&$%7$%C$%32=A6! %B?,04>3,%203%-20413%3804+14913:4A
!"#$%&'&()*%+,--').
/0123%4
/0123%5
623123
7#.87#.8
!"#$%&'(')((%%%%%%%%
*+,-./01,%8D1415/%-,0230415/%8%893+415/.
; E%+-4:/.%?0/<,=D%?0/>/0/.,%F%84?3@/.,%+-4:,%-2041%=42,2/:/
; G%-20413%=42,2/:/%HI%@2/+39,%?0/<,=,+
; J/9,214%K/146
%; !"#$%&''
L (#)*'*+',)%"%$!""
L -,023045%?,=M=42,2/:/%31%8=0DN3%2,:,+4
"# log2N $%1
2N &# log2N $%1 '
!"#$%&'()*
+,#-.*&/$"0
1,#-.*&/$"0
2,#-.*&/$"0
3,#-.*&/$"0
4566&7
4566&+
4566&1
4566&8
9
8:2 ;:1 9:2 3:< =:; 8:+ 1
8:2 =:;1:; 2:9 <:3 +:8 1
1:8
2:;
2:<
3:9
+:8
=:; 1
1:8
2:2
;:<
3:9
+:1
8:=
;
+:1
1:8
8:2
2:=
;:;
<:3
!"#$%&'(')((%%%%%%%%
O?9,@1,%8D1415/%-,0230415/%8%893+415/.
; P4%-,0230415/%=42,2/:/%8%G%-2041.3%31%?03%D?,04>3%-%-20413%3804+14913:46! "0/<,=%'6%D?,04>3%-'-20413%3804+14913:4A%G40/=3%%%%%%%%%%D0/5/13<%+0-2%
=,9N31/%-%-20413A'! "0/<,=%&$%C$%%32=A6%8935%-./'+0-2A%
#N (B$
9%!"#$%&'&()*%+,--').
/0123%4
/0123%9:4
623123
7#.87#.8
/0123%5
!"!"! !"!"!
!"!"!
) !"#$#%!&'(!)%*!+!,*-$./!/0-$&.$1./)$2!3$)%!4/5!1$5)%!67%-$8/#%9
!"#$%&'(')((%%%%%%%%
J/14%8D1415/Q4%-,02304154%8%893+415/.
; R2/+39,%?0/<,=,+6; J/14%H%&G%S%TU%?0/<,=,+V; G?0A$%W%-20413%3804+14913:4$%-,02304.,%=42A%
+/93:,-23%('X%-204136! "0/<,=%'6%%%%%%%%%%%%%%%%%%%H%&&%-,0230413<%+0-2%?,%W%-20413%
T84=154%+0-24%3.4%-4.,%7%-20413V%! "0/<,=%(6%%%%%%%%%%%%%%%%%H%Y%-,0230413<%+0-2%?,%&'%-20413%%
T84=154%+0-24%3.4%X%-20413V! "0/<,=%&6%%&%-,0230413%+0-23$%X'%-20413%31%&X%-20413! "0/<,=%76%%O,0230414%=42,2/:4%+/93:,-23%('X%-20413
1%# logB*1#N (B$ $
#108 (5$
#22 (4 $
!"#$%&'(')((%%%%%%%%
*+,+-./01
2 "3430%/56/7+%0+%81097+0%97+:+;+8%:%!"#$%!&'(#")#"*+,-#")".-'!")<=>!?@%%%%%%%%%%%%%%%%%%%%%
%%%%/0,#1234345)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
!"#$%&'()()*!+,-!./.0123$%0456!78!9/#1:!78!./#1;
!"#$%&'(')((%%%%%%%%
!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/.+HJ !: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+AHJ 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%/56+7+03%93;A83N/.3%8LE+7/.%/56718/Q%5%81063,0%
B+,+-E/:8/A/%/5715/HJ "7+3BE1,/%93430/%8+%:9,/:103%81%GEH%BE718/%97+6718/Q%/5%;/B-1H
2 "7/A+7@! "7/A+7%/57151@%%0,#1234345)<=>)-'089)<=>)+'08:D%! S1Q-3%F93716/A3%#T%;7+:3%51%/5715%U0,#1234345E)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,#1234345ED)
!"#$%&'(')((%%%%%%%%
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%97+67181%B1A3%+8-71EH%
! Z%E1-G8/Q%BE718/%0+%:+70+E83%:+K0+%-3E%97/%93:+518+A%/8;+-BF%
!"#$%&'(')((%%%%%%%%
"*+,+-%*./01+2
! 3*45.%6*.,7869%:+%.;<;8%=<%*<>68?<58%/2<%<?.%2+:%.=/+-,82%>%<?7+*=<7.2<;<%@&A%<?.%@BA%><%68/<7-82=+%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<%468*<C?1<7<%<?7+*=<7.28%@&AG
! "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
K L=8,7<2=<%*+J.7+2%C*+>%.>?8:.72+%/46?.-<7829M "*+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+GM !67.;.><E.1<9%8/,7*<=.%=+687*+C=+%68/<7-+%;+/%,8*7.*<=1+;G
"#$#%&'''()"&)*%&'''''''''''''''+,-./0'+,1./2+34'''''+565789:.;5'+
!"#$%&'(')((%%%%%%%%
"*81+-E.1<%
! 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%%%
"#$#%&'''()"&)*%&'''''''''''''''+,<./0'+,=./2+34'''''+5<5785<'+
!"#$%&'(')((%%%%%%%%
"*81+-E.1<K "*.;+*9
K P68*<C<%*<>6*J.?=+5<%.=/+-,<9M O%-*+<E.18%*<>6*J.?=+5<%.=/+-,<%=</%)@3&8.A3&B%/8C.;8%6<*7.E.1+X%%%
Q4=-E.1<%CDGM "*+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+GM 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%
"#$#%&'''()"&)*%&'''''''''''''''+,-./0'+,1./2+34'''''+565789:.;5'+
!"#$%&'(')((%%%%%%%%
*+,-.,+/0! 1234050%,346+407/0%/8%,607904970%48:+68;<%53=/:8%
3540;70;07/8%>,-8?@%+7%,346+407%48A.=606%%! B8%+798-,%;,85./8%;,8%23648578%064+5.68%2368C%=0D-3%
.23405=/0C3%,0C3%+798-," E2=+F+407/8%243/8-F+/8%,0C3%70%23906-3;7+D%;2+,+DG%
! B8%.48/87%H724G%948;3I%+798-,%;,85./8%;,8%23648578%064+5.68%J8%;%2489237+%+,-0=78K0%-=/.L0%/8%+A;0/07/8%:8%D+648/:8MN %"485848C3%23906-3;78%;2+,8%H+798-,7+%248K=89I%23%;4,6+$%
,2.,6+C3%78J8=/878%064+5.68%+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-,3CRGQ6+-%A%;K78A9873%A07-3%23%5=3-+DSGQ6+-%A%A=+;07/8CTGQ6+-%A%40A24:+=7+C%+798-,3C
!"#$%&'(')((%%%%%%%%
Q6+-%23%870-3,6+%878K0%064+5.60
! E=K8540M%U%!%QG%%" !26+C+A+406%/8%23648573%248;+973V%%U%"#Q%/8%;8=+-0%48=0F+/0G%%%%
! "48923,60;-8M%" W%,6407+%U$%2U%7X684+F%70%,6407%
" Y%,6407+%;%Q$%2Q%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
$%&%'(##)*+,-#####+./.01./#+23#$45670/#$289%+%##+2:/5;<$2:/5;
!"#$%&'(')((%%%%%%%%
Q6+-%A%;K78A9873%A07-3
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-+MN ]0%;,0-3%,6407%U%248584+%;,8%,6407+%48=0F+/8%Q%+7%+A2+:+%7X
684+F8%^4$,_$%-+%,8%./8C0/3G%N \%24+C84.$%90%,3%23906-3;7+%A02+,+%2340A98=/87+%23%40A=+L7+D%
,64078D%/8%60%24+,632%;8=+-3%D+648/:+G%
=70.4>?#@AB6.#0#5C#+#;7=70.4>?#@AB6.#/#5C#$#;7
5=#05#<<#/D##@?.C#4;;#E03#/F#@7#0./A6@
!"#$%&'(')((%%%%%%%%
*+,-%.%/012.3214%.51-4
! 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@
! J012.3215%.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@
!"#$%&'()*+,$(#(-.(/(0"!"#$%&'()*+,$(1(-.(2(0"
-!(#-(33(14(()'$.(%00(5#6(17()"(#$1*,)
!"#$%&'(')((%%%%%%%%
*+,-%.%,132-74?
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>EU%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/2.5147+,%*%.%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
!"#$%&'()*+,$(#(-.(/(0"!"#$%&'()*+,$(1(-.(2(8'$#$(#-(33(14((0"
%00(5#6(17()"(#$1*,)
!"#$%&'(')((%%%%%%%%
"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%,132-712%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@
!"#$%&'(')((%%%%%%%%
J012.3215%.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
895:&%':**),%*+,%; <:&5:&%':**),
!"!"!
:"-.(/$1*,)
!"#$%&'(')((%%%%%%%%
"*+,-*+%./0-12-0-%1304-%56%.*7839
! :-03;%%" 5*-/<-2%1=030>-%*-<?%@%%A1=030>+9%.*78%B%5*-/<-2%068*30>-%*-<?%" 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?" :-03%C%('''%@%('BP''CQ'''%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?" :-03%C%P''%@%PB('''%C%PP''%L)M
!"#$%&'(')((%%%%%%%%
"*+,-*%=56*3U-%J6*8+*3>TN<+>
! :-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?
!"# !$%&' (%)"$* %*'
++ #,!)"$ - ./01
+2 3,443 5 6/01
67 8,99'( 2 //0/
.. *,443 / 6/01
/2 (,!)3 71 6/01
!"# 9"# #%3 ($%&'
+2 716 7+:.:5; *,443
+2 716 77:6:5; 3,443
67 717 71:71:5; #,!)"$
67 71+ 71:7+:5; 8,99'(
67 717 71:77:5; 8,99'(
/2 716 77:7+:5; #,!)"$
!"#$%&'(')((%%%%%%%%
J8+4%1%*315*\+<0+,%+02-476,! "6*312-<+%6U-%
*-<3F+>+%1%*315*\+<06%]=04F+>6%!;%%0T8-*+F-%53*8+F+>-%+%+1%E%7-%U626%=>-<-%1%0T8-*+F3,+%53*8+F+>-%+%+1%J?
! !"#$#"%&'(")%*%+,&-.&+,&',"(/0#1%&/&!"#$%&#!'(2&!"#31#+&45)"#/6,&'(")%*%+,&7&%6&',%89%&6:)#"%*#.&;%&5#&4+#<(+,2
<%()")"=$!
=>?@?A?B
!"#$%&'$(()*
(+*&,-
./01&%/'2)&(+*&#/*%-%-+"
3-&45&6&789&#/:)0;
C?&%"$?&'&=(3?9,>>'(!D"!E
<$%#$%&
&'$(()*
D"!E
F="$?@'!,8)
1/01("
1=
1=
C?&%"$?&'&=(3?9,>>'(! D"!ED"!E
G("*"$%8?
@'8%)"=$ <>?@>?
=!A@>?
9
1/01($"B%-+"
1 789
<%()")"=$!
7
+
CH7
)#)#)
??????????????????????????????????????????????????????????????????????????????????????????????
!"#$%&'(')((%%%%%%%%
J8+4%1%*315*\+<0+,%+02-476,
! #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?
!"#$%&'(')((%%%%%%%%
*+,-%./01-%2%3-243506,07%0,8+1.97! :-2-%028+6-;+%4-3/0<0=>%
" ?3-,=+@40.-,=+%9?+A%3+6B%C%&DE@FG%H)IB%
! H%J-20%K=+7-,=->%" 43+?+30%9?+%3+6B%C%E@F%H)IB
! F-5%4307+3>%" *+,-%C%L%MD('''@N''G%C%%ON''%H)IB
! P/01%2%260;-,=+7%;.B%P/01%2%3-243506,07%0,8+1.97>" "30%70,07-6,0%1960Q0,0%.4970,-%07-/-%9?-%<+,9%LDE@FG%H)IB%%" P/01%2%3-243506,07%0,8+1.97%=+%.K4+3093+,$%Q+%.+%;+6019./0%3+6-<0=%?0./;,9%
3-2601K=+=9B%%" P/01%2%3-243506,9%JK,1<0=9%6-A19%2+69%89?39%4-3-6+60203-79B%" 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,%3-243506,0%./01%.93/03-=)493-28+60%.%197?0,-<0=9%8;+A%-/30?K/9;%./01-B%
! "9V9=0%,++,-19./0%D,43B$%%!")*+,-(/('"#*+,-G>" Z-%;V,+28+,9%2-,19%2%0,8+1.97%K493-?0%D49;+2-,9]G%#@%
83+;9B" P/01%2%260;-,=+7%0,%3-243506,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.+?,-%4307+3-%
./01-B! _,0=-%0,%3-2601-%.+%0746+7+,/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%3-243506,07%0,8+1.97>" "93-28+60%`%0,%P%2%K493-?9%3-243506,+%JK,1<0=+%4B" Z-%;.-19%Pa4-3/0<0=9%02V3-80%3-243506,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;-,%,-%493-28+60/;0%D3-24350/;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%,-3+8079%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
!"#$%&'(')((%%%%%%%%
*+,-.%-/01.21,2-31
! 45%65%.57%8+5019-:%-/.1:1%./+805;28%+8<5=%:5%8952:5.12:5%><?%+086<-@%6<012-%.%-/01.21,2-3A%61=8%+05;.-;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%L653.52728%
+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@%8+5019-:%: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%8+5019-:8J%25%8B6<1:1%6A+50-8021%<5@2-31%/1%.57-28%8+501<9-:?%%%
! "8<05B28%:5%+05C,5;1<-%1,<5021<-.5%+0-%-=+,5=52<19-:-%.6135%8+5019-: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%8+5019-:5%:5%;5,%95,8<25C1%;5,1%8+<-=-/19-:5%95,8<25%
+8-/.5;B5?%
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:
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, 30000 strani, različnih cen rezervacij je 150 in takih, ki so večje od 300 je 70 Za vsako izvajanje poizvedbe imamo na voljo 10.000 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>500
2. 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=50.
4. 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:
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, 10.000 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.
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
!780-09,:0;,%7<09=>?@
A98<.%6,=30.$%BC5DAE
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
!13<=>%<780-09,:0;>%7<09=>?@
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.<=+
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
"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</;>=GH 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
-(-"
!"#$%&'()$*+ $#&'()$*+
!", !"%
$,&'()$*+
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
"/>=,;,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;<
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
47.8-98:0;0<,%=9/,>,3<%=%?@8.7
A B7@8C73%6DE%1C,=7.%17%/,:F7@0%=%?@8.7A G,.@<HI730%6DE%?@8.0%17%8?/,=3,=,<8%.8C%
9/8;7FH/7A "81@7F0;,J%
K =L37:F730%?@8.0%17%.@0I7<8%8?%=1,.0%0C7/,;0<0%=%3,F/7<737-%?@8.H
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
#@8.%=9/,>,3<,%9/7=7F7-8%=%0:/,:%*M
A N1,.%?@8.%9817?,<%17%9/7=7F7%=%0:/,:%*MA O:/,:%*M%17%89C0-0:0/,%37%L@7F7%3,%3,F/7<737%
03%98F/7<737%?@8.7A "8F/7<730%?@8.%17%0:=,<,%.8C%9/8;7FH/,
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
!;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=+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
!;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+%
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
!783,%9,%:;,38%3,<%83=%/8;,70>=
? @:=/,A,%03<8.1,%B%3,%:/0-,/38-%.;>CDCE! !"#"$%&'()*+,%+-)+./0123+44%5+*56+,%+/%,7/8"9$"+"$.0:#5
? "=F89,3%03<8.1%B$%.0%18%C>8-,%9%830-%,;0%F8D%:=G=>0E! &;<=/%$"&'();<=/%$"&>((+?+7/2.@:=+<"+,%+72A2B0+#090:4"B05
? H8:=F89,3%03<8.1$%.0%18%C>8-,%9%830-%,;0%F8D%:=G=>0E%! &;<=/%$"&'();C%7"#21&>((+?+7/2.@:=+<"+,%+72A2B0+#090:4"B05
? 68.F83D30%:/8G;8<%I,A8;8E! ;<=/%$"&>(
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
628-,%9,%9G;8<
? "=<=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+%
!"#$%#&'()!"#*('$+,-,#.(!"!$*(/+#'$-.(%&$'(*('$+,-,#.()*(+*(#,%012,3,#4%5'&,()!"#*('$+,-,#.(,"#*('$+,-,#.(#('*(6%+,/.(+"!$*(/+#'$-1
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/0-8/
? 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+
7898:;((!<='6>2?!((!"#$%#&'(!@A828((!<"5,$%BC
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
!783,%F8;0.=1I0%/89C;I,I=F%=:8/,70>
%%%%%"=09F8<A,E
? 5,.10-,;3=%YI8F0;=%3WI8/07EZ "/=<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"+
7898:;(!"#$%&'(#)(*"!
>2?!((!"#$%&'*"+%,(-
@A828((+,#=D(EFG(<<<(EFG(+,#=H
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
!7838%1898.:0;3<1:0%=<><?8;
@ !"#$#%&'()*#+$,-%.,&'/%&'0'1#/2%! "/8A=<1:,;.,$%A,%1<%=<><?0%-8A%18B<?%38<A;0130+
! "<><?%).34/3#5$'(.%0-,%6"%C%6%7%89:1;<#/=>?@%>%?8%03A8.1%3,%).3A! "<><?%).364).3B%0-8%6"%C%6%7%CDE=89:1;<#/=>6?F89:1;<#/=>B??! =<><?%).3G/3#5$'(.%0-8%6"%C%=H,0-=>?I/):;#?7=H,0-=>?IJ'K=>??
@ 6898.:0;3<1:%=<><?,%<A18;,%;=90;%=<><?,%3,%
D-,3?E,3?8%;890.<1:0%/8DF9:,:,+%
@ L)35,$):$'(.%3#+;:.).)%
G 5,H%I%3J:8/07%K%%=/<AF.:%;182%6"+
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
!783,%D,%=9,38%3,A%;8L0-0%/89,70?,-0
@ #9<.%=<0D;8AB8M
@ 5,.10-,93<%I%3J:8/07%;%/8DF9:,:F%?8%=/<AF.:%
.,/A03,93<1:0%;182%;2<A302%/89,70?%0D%N*!5%1:,;.,+%
@ M#:#9.,/$'(.%=<;8D,3,%D%;1,.0-%=<><?8-%<A18;,%
;=90;%=<><?,%3,%;890.<1:%/8DF9:,:,+%
G L)35,$):$'(.%3#+;:.).)%C%5,H%I%3J:8/07%%K%%=/<AF.:%;182%6O0+
@ 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.,+%
!"#"$%&!"#$%&'(#)(*"'()*&!"#$%&'*"+%,(-+,"("&&-./.01&234555234&-./.06
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
48R03070?,%=/<B98-,
@ 4,3,%?8%=<0D;8AB,%N%3,A%=<A,:.<;3<%B,D<%O+%
@ "<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+
! U-,-<%'"#$,./#$'%P;$9",1'$%.0%0D/,LF3,%'"#$'%&:)$)+
@ !7830:;83,%RF3.70?,%F=<E:8;,M
! 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:,:,+
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
"/<1:</%/8E0:8;
@ "/<1:</%8.;0;,983:302%=<0D;8AB+
@ ],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:</,+
@ "/,.1,M%
G UD<>0B,-<%18%.,/:8D0?1.0-%=/<AF.:<-+
G UD<>0B,?-<%18%3,?19,BE0-%/8E0:;,-+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
71.,389%:;<0-,=39>,%;=,3,
? "/:1<:/%89%;/9@9=0.%A,<:%>,%89%;:</9B3:%:-980<0+%? C,<9/0%D9=%;/:1<:/,%;/9>=9D,-:E
F !D@013:%:D%,=>:/0<-,%A,%;/901.:@,389+F 6G1<9-%*H%%I;:/,B=8,%=9%=9@:JI1-9/8939%;=,39+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=+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
#=:.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%
;:D;/:>/,-:@$%.0%19%0A@,8,8:%93./,<%A,%@1,.:%3J<9/0P:+%
? ":93:1<,@=893%;:>=9D$%D/O0%@%@9L030%;/0-9/:@+%
!"#"$%&&'()*)+,-.'&&'/01203*&'45"-"&&'(6720&89&&&&&&:!"#"$%&&'()&*'+,-./01&&&&&&&234'&&'506/078&'+&&&&&&&934:;&<=&&'+,5>?6/;
@5.0/678&AB5C
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?F5GE-H?07?6/&I0?F?-/&-.8C5F,&
#&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(
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
R.@0@,=93P9%:;9/,P08%*S
? !-:>:L,8:HF 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+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
R.@0@,=93P9%:;9/,P08%*S
? 7"!"4/,*18%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%W916/"5X( ) ( )( )! ! !! !" ! !"# #! !" " #""" " " "
( )( ) ( )( )! ! ! !! ! ! !# #! # # !# :J5HE./.8F65-.;
!&&;057?C>87/K ( ) ( )( )( )$ $ $$ $ $"# #! !# " " " *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-.;
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
7.808,9:3;:%<=:/,;0>%*?
@ 6=ABC,3>:%1:9:.;0>:)=/<>:.;0>:%=/<D0%901D<-+%%
@ "/<>:.;0>,E%F "/<>:.;0>,%>:%.<-AD,D083,%1%1:9:.;0><$%.0%A=</,G9>,%,D/0GAD:%=/<>:.;0>:+%
@ 6:9:.;0>,$%.0%81:GA>:%=/0-:/>,8<%,D/0GAD<8%<G:2%,/HA-:3D<8%.,/D:I0>1.:H,%=/<JA.D,%1:%=/:8:J:%8%1D0.+%
!!!!!"#$!!%&!!!!!!!!"#$&!"%!&
!!!!!'#$!!"%&!!!!!!!'!#$&!!"%
(!)*!+*,*-./01!/23/41!+156!174/387*!$9
(!)*!:460*-./01!6;41</!174/387*!+7/-19
!!
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
!=D0-0I,;0>1.,%-:D<J,
@ "<:3<1D,80D:8%=/<G9:-,F 6,-0%6KLML%N%-:D<J:%J<1D<=,
@ "/<1D</%,9D:/3,D08302%=9,3<8F O=</,G9>,-<%<;:3:%=9,3<8%F O=</,G9>,-<%,9H:G/,0C3,%=/,809,%I,%01.,3>:%
:.808,9:3D302%=<0I8:JGF ?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<
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
K0=0C30%/:9,;0>1.0%<=D0-0I,D</
@ ?9H</0D:-%<13<8,3%3,%J03,-0C3:-%=/<H/,-0/,3>AF !=D-,93:%=9,3:%H/,J0-<%0I%<=D0-,9302%/:B0D:8%
=<J=/<G9:-<8
@ O=</,G,%1,-<%9:8<PA1-:/>:302%=9,3<8F Q0-,-<%-,D:/0,90I,;0>:F !-:>0-<%=/<1D</%/:B0D:8F L1.,3>:%=:/-AD,;0>%<I+%A=</,G,%J03,-0C3:H,%=/<H+F *:B0D8:%1<%1AGP<=D0-,93:R
@ !=D0-0I,D</%601D:-,%*
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"<:3<1D,80D:8%=/<G9:-,@ L-,-<%1,-<%J8:%8/1D0%8<I90BC@ 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 S1:GA>:%TDAJ0U%1:9:.;0><%03%=/<>:.;0><
@ 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><
!"
#
$
!"
#
$
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
7,89:;,3<:%,=9:/3,90;302%>=,3?;
@ !"#$%&%'()*+*%,(-.-+/'"$%*+,'-%0'+1$%1+'A 2#&+3#',#4+.-#'()*+*%,(-5-('+1$%1(
A 6%1,+.-%'+3",(3(-5%7+8%'+-'7(-%
A 9%3#'-%0',(*#:;<3($8(-+3+'",%-+=
@ 2*%'#<-#*-%'"$+3($%! >,%-'-%0'(-#'$(,%7+8#'!'#"5+3%,-%'3(5#0%'0#<5#"%! >,%-'-%0'*(.+3+'$(,%7+8%3+'!'"($3;5%7+8%'<5+)#*
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"?0B;:CD:%3,C%:3?%/:=,E0<?
@ ?#3&+-%7+8('<(,()7+8(@'"$#8()7+8('+-'%4$(4%7+8<)+/'#"($%7+8A A+'<5+)#*=
@ >$(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 C(5#0('1'+-0()<+
@ F1&($(3#'3(5#0#'1'-%8-+B8#'7(-#'
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
FG=:C@ 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
4$#;"&U'9E$%5+-4
/%*+-4'7#;-5'0+<5+-75M9E<-%3('RKOV
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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(%671+89
/
)$-.:;<"#$%&'()
/
!"#$%&'()*"#5(%67
/
="#$%&'()+8+>+%(4+?#%)7@9A
/"%'B-$511111
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
789:;!"#$%&#'()%*+,-&,"#.)%
.)/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(%671+89
/
)$-.:;<"#$%&'()
/
!"#$%&'()*"#5(%67
/
="#$%&'()+8+>+%(4+
?#%)7@9A/"%'B-$511111
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
5:=>;:%;>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
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"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:NE9OC "/:89:;%6,09>/1%R%S''%Q)JC 7,?01%B-:13:8,%/:AM9=,=,%R%&'%Q)JC 6>/=0/,3D:%A,%8/>M?N@O%R%T'%Q)JC 6.M?,D%R%SU'%Q)J
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"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=>?< "/>D:.G0D:%03%;>;,=3:%1:9:.G0D:%9,2.>%19:;0D>%?>%
@/,3DM%A,?01,%F.>=%=M;0%8/M?0/,3D:%03%0A@0/,3D:%8/M?I
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"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,
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"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
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
PF7<;
= "?F7<:-?%1A<@%A/<:L3:0%A/0-</%= "/<;A?1@,90-?%;,%0-,-?%3,17+%03;<.1<Q
B #R%;/<9?%3,%/,@03FB *,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
!"#"$%&'()*%+,-.&$/0,%1234)/5&'*+#/)!&'67")"&'()*%+,-&8&9&*,:&;(*-"<=>-)/0?@A&'()*%+,-7*B+,-&$/0,%&:+!%+,$%1'(!,*5"&8=3C
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
PF7<;
= (+%-?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?/1B 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_
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
789:;
< &+%-=>3=1?@%A B/:C:/:-=%/0;DE:%F,B01=G$%.0%F,;=HI,E=%B=8=EJ%6+/,?038KLA "/:C:/:-=%/0;DE:%F,B01=G%6+,8:M&'A 6=/?0/,-=%=C:%-3=>0N0%03%B/:C:/:-=%J1?/:F3:%F,B01:%
6,09=/1A "/=E:N0/,-=%,?/0CJ?,%/,?038%03%13,-:%?:/%F,B0H:-=%
G-:13=%/:9,N0E=A +++
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
789:;
< 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:DR9SA TF/,IJ3,-=%9,2.=%,8/:8,N0E1.:%RJ3.N0E:%F,%U*!V"%
#W%03%XYZTQU$%.:/%1=%3D?:/0N:%J/:E:3:%%B=%/,?038+A +++
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
789:;
< [+%-=>3=1?@A "/:C:/:-=%F,B01:%\/,?038$13,-:$,8:K%F,%.,?:/:%
G:9E,%/,?038KLA 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%
XYZTQUA Q:%B/:C:/:-=%B=;+F,B01=G%6,09=/1_A "=-:-C3=%F,%3:B=G:F,3:%03;:.1:
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"=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,
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
7,89:;,3<:%=:;>?@1-:/<:302%A=,3>;
B !13>;3,%>C=>D09:;%;%6E19:-%*F%%G !H/,;3,;,<>%1:%1,->%=:;>?@1-:/<:3,%C/:;:1,+G ">I=:C,=0%10%H>->%.,.>%=,2.>%@D03.>;09>%3,89:;,->%=:;>?@1-:/<:3:%
A=,3:%J%@A>/,H>%C03,-0D3:I,%A/>I/,-0/,3<,
B K:;>?@1-:/<:30%A=,30%1:%/,J=0.@<:<>%1,->%;FG L/193:-%/:C@%/:=,M0<G L%-:9>C,2%J,%C>19>A%C>%/:=,M0<G N=I>/09-02%J,%0J;,<,3<:%190.,
!"
#
$
!"
#
$
# $!"
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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%! 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:.:+%
!"
#
$
!"
#
$
# $!"
#$%$&'()**+,-.*/(0,1*2345(+/0)*,67(0,1*89$3$(*/+:
;(<(*/+:
=(<(>(<(*/+:
7
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
7,89:;,3<:%=:;>?@1-:/<:302%A=,3>;
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+%
B 403,-0D3>%A/>I/,-0/,3<:FG R,%;1,.>%A>C-3>O0M>%1:19,;=<:3>%0J%"%/:=,M0<%<:%A>9/:H3>%
>2/,3090%1,->%3,<M:3:<80%A=,3SG "=,3:%J,%7%/:=,M0<%1:19,;<,->%0J%A=,3>;%J,%7?(%/:=,M0<%9,.>%
C,%C>C,<,->%1:%:3%190.+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/:2>C%(F
B 7,89:;,->%;1:%A=,3:%J%:3>%/:=,M0<>%0J%T*!5%C:=,%6UKUVW%19,;.,
B "=,3%3,C%:3>%/:=,M0<>%<:%C:=:3%=:;>?@1-:/<:3%A=,3B 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%190.0+
B 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,+
B R,%C,3:%A>I><:%<:%A>9/:H3>%A>01.,90%>A90-,=3>%-:9>C>%C>19>A,+B ">08D:->%=,2.>%3,<M:3:<8:%A=,3:%J,%;1,.>%@/:<:3>19%/:J@=9,9,+%B _/:<:3>19%=,2.>%0J.>/0190->%.,13:<:%3A/+%J,%`*!_"%#a%
>A:/,M0<>+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/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.,
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/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,+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/7289%V:
; 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+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
X8-@A7.1381>%,AK8/0>-,
; 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 W,%?1,.8%@89-38Q0C8%B%(%/7A,C0D8%@/0.ADGF0-8%%=7%?17%@/781>,A7%/7A,C0D7
E +#",-"."+#/,-
; V+%@/7289:%%
E P-,-8%8@>0-,A37%@A,37%B,%981>8@%98%?172%-8Q302%@,/8?%/7A,C0D
E W,%?17%@89-38Q0C7%B%9?7-0%/7A,C0D,-0%@/0.ADGF0-8%=7%@/781>,A7%/7A,C0D7
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 W,%?1,.8%@8-38Q0C8%B%0T(%/7A,C0D,-0%@/0.ADGF0%=7%@/781>,A8%/7A,C0D8%%
E +#")/,-"."+#/)-
; 6.G@38:
E 3YZ3%([\Z3T([Y+++YZ3%0T([\Z3T0[Y+++
E ]]%&3
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
%789:;%(
< "=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=/1IF#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
!"#$%&
'
(")*+")*'
,-)*+.//
'0&"&12&"34
,1$5)#678
'9$):;1"33333
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
789:;%(E%"/:2=;%(
< "/:89:;,-=%@/0%-=K3:%-:@=;:%;=1@=?,%;=%6,09=/1L #G%03;:.1%1:%M>:-,%1%1:9:.B0>=%,
/,@038NO%03%A-,3>D,%
B:3=%;=1@=?,%;=%A,?01=C%6,09=/1L 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:%?=%/,@038
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
789:;%(E%"/:2=;%(
< "/:89:;,-=%;C:%-=K3:%-:@=;:%;=1@=?,%;=%*:1:/C:1L #G%03;:.1%3,%H0;%1:%M>:-,%1%1:9:.B0>=%,
-)*+.//%03%
A-,3>D,%B:3=%;=1@=?,%;=%A,?01=C%*:1:/C:1L 6:.C:3J30%?/:89:;%H=%A:9=%C:/>:@3=%19,HD,%-:@=;,L 4=1@=?%?/:.=%#G%03;:.1,%>:%@=/:>%?9,3%A,%*:1:/C:1
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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=/1L "=89:;,-=%@M;0%,9@:/3,@0C3:%,98=/0@-:R%1@0.%A%A90C,3>:-S
< P/:>:3=1@%?=%10;%L%30%M?=/,H3=
< T-,-=%!"#$%&<
=<")*<;*>$*&
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
789:;%(<%"/:2=;%&
> 6?0.%-:;%6,09=/1%03%*:1:/@:1+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.
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
!F:3,%
! 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%
()*+,*-#./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
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
!F:3,<%"/:2=;%(
> 6,09=/1A !"#$%&'()#%*#+*,$%-#.!
+*,$%-/01#
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'#0>>#),+*%$
> *:1:/@:1A !"#$%&'()#%*#<$&#.!
<$&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#),+*%$
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
!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,?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.A6#$%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*,+#
A @2#E.;.;8#<,+-30.-3.$*,K-#./483-.;4)*,-9
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
%789:;%&
< =>/,?,3@:%>A0?B:%?C:D09A%/;:B02%9,;0@%/:E:/D0/,302%>A%>A1,-:E302%-A/3,/@02+
!"#"$%&'(!)*+&$,-.%/0123,4&5,6%!&5+&7"!"38"!&7+&&'6)#,3!&'9:"3"&7(!)*;'(!)*&6.*&5(<)*;7(<)*6.*&5($,#,3;=3"*=>3,-?&<@&'(!)*A
!"#$%&'()*+,-.
,
/0()12345"#$
,
6"#$7"#$
,
&&&&&62#$72#$
,
&&&&&&&&&&&8'(9(07:0;$:
,<(=+".%
&&&&&&&&&&&>;";0?;".%&&&&&4=#9(0"...
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
789:;%&
< "/:;>A1C,D0-A$%;,%0-,-A%3,19:;3@:%03;:.1:FG *: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/
!"#"$%&'(!)*+&$,-.%/0123,4&5,6%!&5+&7"!"38"!&7+&&'6)#,3!&'9:"3"&7(!)*;'(!)*&6.*&5(<)*;7(<)*6.*&5($,#,3;=3"*=>3,-?&<@&'(!)*A
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
789:;%&F%"/:2A;%&
< @=&?"=A&19=*&$(9(B;*&10#&10;C($)&DEG 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;EG 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?;"
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
789:;%&<%"/:2=;%&> 7,%?1,.%1@0.%A:%B=@/:C3=%=D:30@0%?1:%,98=/0@-:%E,%1@0.+
F 7,%?1,.%,98=/0@:-%B=89:;,-=%?1:%-=G3:%-:@=;:%;=1@=B,%;=%3=@/,3A:%/:9,D0A:
> !"#$%&'(%#)*+",-#.#/(-(%0(-12F 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	(6(@4(:"1
> B%(@46@&#$5"6#)0:6;<"68"#<#&67(8-+'1#6(>&#<"7%C"5&E#D(#>&#>&5#,"#9(6(@4&F
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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;
!"#"$%"#&'()#
*(+,'$#!"#$%&'()*+,("-./0/%
12-'()*+,-("-3')
45'+-#-#0'6"(7*812-'()*+,-("-,')
45'+-#-#0'6"(7*8
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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"%@&#NQRK/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;$;2HKLKM?##N;N&'(O/PN#N+%6"%@&#NE#/(<#/QRK/K##N;'&7W/;'&7####[!G#/;5&7WXYZ
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"=?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+
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
"789:;:.
< "=,30%3,>%:37%/:=,?0@7A
! "/:B=:>,-7%81:%-:;7>:%>71;7C,+
! !"#"A%%6:=:.?0@:$%.0%1:%D@:-,@7%9%03>:.10E%,=0%0-,%.=@DF%
03>:.1,%81:%C7;/:G3,%C7=@,E%,=0%03>:.1%8/3:%3H;:/0?:%8%
C/0F,.78,3:-%8/1;3:-%/:>D+
< "=,30%3,>%8:F%/:=,?0@,-0A%
! I,@C/:@%3,J;:@:-7%81:%C=,3:%3,>%:37%/:=,?0@7+%
< 6:=:.?0@:%03%C/7@:.?0@:%1:%098:>:@7%F0-%20;/:@:%@:%-7B7F:+%
! K,%81,.%C=,3%9%$%/:=,?0@,-0%89,-:-7%3,@G7=@J0%C=,3%3,>%$%&%
/:=,?0@,-0%03%B,%C78:L:-7%9%1;0.7-%9%3,1=:>3@7%M37;/,3@7N%
/:=,?0@7%79+%3,@G7=@J0-%C=,37-%3,>%:37%/:=,?0@7+%
! K,%81,.7%C7>-37L0?7%/:=,?0@%72/,30-7%1,-7%3,@G7=@J0%C=,3+%%
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 spovpraš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 10.000 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 1.000 litrov in vkljlčujejo cisterne proizvajalcev 'MAN' ali 'Iveco'.
f. Poišči vse dobave goriva (IdD), pri katerih je količina višja od 1.000 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).
OPB, 2009/10
Pregled upravljanja transakcij
Iztok Savnik, FAMNIT
OPB, 2009/10
Uvod
• 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.
OPB, 2009/10
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.
OPB, 2009/10
Sočasnost v SUPB
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.
OPB, 2009/10
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.
OPB, 2009/10
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.
OPB, 2009/10
Primer
• !"#$%&'"()*(+,%(-./0)/12*&*(3!"#$45
!"# $%&'()))*+*,"--.)))$+$/"--)))%(0
!1# $%&'()))*+"2-34*.)))$+"2-34$)))%(0
! !.,/(-./0)/12*&/(6.%0%)%(7899(*:(./;<0/(=(0/(./;<0(>?(
! @.<#/(-./0)/12*&/(+"+/(,)/1%'<(./;<0<(AB("C.%)-*?(
! D*(#/./02*&%E(+/()%(C"(F8(*:,/&/$/(6.%+(FG(/$*("C./-0"?(
! !"#$%&'"()*(1/&()%($/H1"(:#"+*?(
OPB, 2009/10
Primer
• 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
OPB, 2009/10
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
podatkovne baze. OPB, 2009/10
Anomalije pri prekrivajočih transakcijah
• Branje nepotrjenih podatkov (WR konflikt,
“dirty reads”):
• Neponovljivo branje (RW konflikt):
!"#$ %&'()$*&'()$$$ $$$$$$$$$$$$$$$%&+()$*&+()$',-./
!0# %&'()$*&'()$1
!"# %&'()$$ $$$$$ $$$%&'()$*&'()$1
!0# %&'()$*&'()$1
OPB, 2009/10
Anomalije
• Prepis nepotrjenih podatkov (WW konflikt):
!"# *&'()$$ $$$$*&+()$1
!0# *&'()$*&+()$1
OPB, 2009/10
Kontrola sočasnosti z
zaklepanjem
• 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).
OPB, 2009/10
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.
OPB, 2009/10
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.
OPB, 2009/10
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.OPB, 2009/10
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.
OPB, 2009/10
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).
OPB, 2009/10
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).
OPB, 2009/10
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.
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.
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?
T1 T2a. 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?
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
7839/8:,%;<=8/>?38190
@<98.%6,;30.$%AB5C@D
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
%&AE$%<,=8/>?3,%F/>?:G0;819%03%%%%%%8H38;:G0;819
!%E,=8/>?30%/,<=8/>?0!%I/,J%8?;0138190!%4;8KJ,<38%<,.:>=,3G>%!%E,=8/>?3,%F/>?:G0;819%=8%8.302
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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
6*70#&#)8-9-)('$#%'.)$*)&#)1"#$%&'(),-)-/0'45!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/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+
!"# $%&'(,$)&'(,$$$ $$$$$ $$$$$$$%&-(,$)&-(!*# $$$ %&'(,$)&'(,$%&-(,$)&-(
!" !*'
- !"#$%&'()*+&*,)
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
7/,8%9:;01391<0
= 7/,8%9:;01391<0>%? @39%;9AB0CDE%A,%F,G<+? "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+%
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/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+%
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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&
!"#$%&'( $$)&'(!*# $$$)&'(!+# $$$$$$$$$$$$$)&'(
!"#$%&'(,)&'(!*# $$$$$$$$$$$$$$)&'(!+#$$ $$$$$$$$$$$$$$$$$$$$$)&'(
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
%78/,9:;,3;<%=,.:<8,3;,
> ?,2@<9<%8A%=,.:<8,3;B%03%AC.:<8,3;B%0=9/DB;<%B8/,90@<:;%=,.:<8,3;,+
> ?,801%@,E<:<%=,.:<8,3;,F! G@+%@/,31,.H0;$%.0%@/<3B@3A%C/I0%=,.:<8+%! J08%=,.:<8,%K6%,:0%LM! N,=,:<H%3,%9/1@A%=,2@<9%8A%=,.:<8,3;B
> ?,.:<8,3;<%03%AC.:<8,3;<%-A/,%E0@0%,@A-0O3,%A8</,H0;,+%
> "A8/,9<.%=,.:<8,3;,F%@/,31,.H0;<$%.0%C/I0;A%C<:;<3%=,.:<8%:,2.A%18/<-<30;A%=,.:<8%9%<.1.:B=09<3+%
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
%6-/@30%AE;<-0
> 6-/@30%AE;<-F%P Q0.<:%@/,31,.H0;$%.0%O,.,;A%C/BR,%C/BRA%3,%AC.:<8%
90/A9+%
> 6%1-/@30-%AE;<-A-%C<:,-A%3,%C9,%3,O03,F%P "/<8/<O<9,3;,%1-/@3<R,%AE;<-,P 4<@<.H0;,%1-/@3<R,%AE;<-,
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/<8/<O<9,3;<%1-/@3<R,%AE;<-,
> 4A:AO0%8/0A/0@<@<%R:<C<%3,%O,1A93<%=,=3,-.<+%J0%I<:0%=,.:<8$%.0%R,%C/I0%J;+%49<%-AI30%8A:0@0.0F%! "AO,.,;S7-/0F%T<%0-,%J0%90D;A%8/0A/0@<@A%8A@<-%J0%
8AO,.,%3,%J;U%10H</%J0%8/<.03<%0=9,;,3;<+%! *,30ST,.,;F%T<%0-,%J0%90D;A%8/0A/0@<@A%8A@<-%J;%
8/<.03<%0=9,;,3;<U%10H</%J0%8AO,.,+%
> T<%1<%@/,31,.H0;,%8A3A93A%1@,/@,%;<%8A@/<E3A%=,RA@A90@0$%C,%0-,%A/0R03,:3A%O,1A93A%A=3,.A+%
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
!C./09,3;<%1-/@3<R,%AE;<-,
> N/<0/,;%O,.,:30%R/,VF! WA=:0DO,%1A%@/,31,.H0;<! !E1@,;,%8A9<=,9,%AC%J0%CA%J;$%O<%J0%O,.,%3,%J;%=,%
18/ADO,3;<%=,.:<8,+%
> "</0AC0O3A%8/<9</0%,:0%0-,%O,.,:30%R/,V%H0.:<+%
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
!7./08,39:%1-/;3:<,%=>9:-,
"/0-:/?
@(?%%6ABC$%*ABC$ %%%%%%%%%6A#C@&? %%% %%%DA#C$EA#C %%%%%%%%%%DAFC@G? %%%%6AFC$%*AFC %%%%%DABC@H? %%%%%%%DA#C
!" !#
!$ !%
!" !#
!% !%!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
%%@:230.:%I,.J:K,39,
L M,3;=-1.0%K/=>J:-%L N,.J:K,39:%#O%7/:8:1L P:Q308=91.=%I,.J:K,39:
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
403,-0Q3:%K=7,;.=83:%>,I:
L 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?V @(%I,.J:3:%81:%1;/,30$%.0%81:>U9:9=%I,K01:%-=/3,/9:8%I%!"#$%&%W%(%03%
K=0XQ:%3,91;,/:9X:<,%-=/3,/9,%A3K/+$%"&'%W%Y(C+V Z,K/:9$%@&%81;,80%3=8:<,%-=/3,/9,[%!"#$%&%W%($%"&'%W%\]+V @&%I>/0X:%;U70%3,91;,/:9X:<,%-=/3,/9,%I%/,;03<%W%&%A"&'%W%^'C%;:/%
3,/:70%T=--0;+V @(%I7,9%I,.J:3:%81:%1;/,30$%.0%81:>U9:9=%I,K01:%-=/3,/9:8%I%!"#$%&%W%&%
03%K=0XQ:%3,91;,/:9X:<,%A3K/+$%"&'%W%]GC+
L Z:.=3101;:3;3=%1;,39:%"#$%Q:%9:%@(%_.=/:.;3,`a
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/=>J:-
L @(%0-KJ0T0;3=%K/:7K=1;,8J9,$%7,%9:%I,.J:30J,%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,aV "=;/:>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
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
7,.89:,3;9%03<9.1,
= >9%0-,-?%03<9.1%@,%,A/0BCA%!"#$%&%@%,8A9/3,A0D?%E&F$%:?A9-%B0%G(%-?/,8,%@,.8930A0%03<9.139%1A/,30%@%03<9.130-0%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
= >9%30%:/0-9/39M,%03<9.1,%:?A9-%-?/,%G(%@,.8930A0%D19%1A/,30%.?A%AC<0%@,.8930A0%<,A?A9.?)A,B98?$%<,%B0%?39-?M?K080%<?<,;,3;9%@,:01?D%@%!"#$%&%H%(+
!"#
!"#"
$%&'(
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
7,.89:,3;9%:/9<0.,A?D
= 7,.89:%D192%@,:01?D$%.0%C1A/9@,;?%:?M?;C%8?M0K39M,%:/9<0.,A,$%3:/+%"&(')'*+,"-"!.+
= 7,.89:,3;9%03<9.1,%;9%:?19B93%:/0-9/%@,.89:,3;,%:/9<0.,A,+
= N3<9.1%:?<:0/,%CK03.?D0A?%0-:89-93A,O0;?%@,.89:,3;,%:/9<0.,A,+%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;,+
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
%7,.89:,3;9%D%#S%</9D9102
= P,.?%8,2.?%CK03.?D0A?%@,.8939-?%<?8?K93%801A%</9D91,QI 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+%
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
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%:/?A?.?8?D%@,%@,.89:,3;9$%.0%@,M?A,D8;,;?%@,:?/9<3?%C/9<8;0D?1A%%"/0-123'0!4$#/$'*567
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
73819,:;3%,<=8/09;-%>,%>,.<;?,3@;%A/;:;1
B C1.,3@;D%%>,E30%?/0%.8/;3F%03%3,%?890%A8%<019,%:;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;%@;%:,/;3DM 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+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/0-;/!"#$%
!
"
#
$ %
&
' ( )
*+
,-
*+.
,/ 00
**. *,. *0. ,-. ,1. ,/. 02. 00.
&'#$()*+,--./0'%1$-2345,--6#)7)-2342,--8/9':)-;<4;,--8/9':)-5<4
*,
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
#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%<019M N;%3;%18%6%>,.<;?0%?/0%?/:;-%?/;28AF%8A:;E30+M H%?/,.10%A8J0-8%J8<@G0%,<=8/09;-%8A%?/;@G3@;=,+%
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/0-;/!"#$%
!
"
#
$ %
&
' ( )
*+
,-
*+.
,/ 00
**. *,. *0. ,-. ,1. ,/. 02. 00.
&'#$()*+,--6#)7)-2345,--8/9':)-5<4;,--8/9':)-;<4<,--8/9':)-;<4=------>"9$?-;@4--
*,
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
78%9:;<=0%,;>:/0?8-
@ A1.,3<8B%%C:?%D/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%I,.;8D8%:J%I>:/,<L3,FIJ:;B%@ M,N38-:%F%F:I;0=NO%3,<9;<0P<8-%.:/83O+%@ "/:?:.:;%:JLI>:/,<L3,FIJ:;%I-,3<=,%-:P3:1?0%I,%
1-/?30%%:9<8-+%
!"#$%&#'(')*+,#(-,)./)0(12&+,3)0)*+,#(-,)3)3&45$3,'61&%)0(12&+(5'*78
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
Q09/0J83%,;>:/0?8-
@ E8/<8?3:1?$%J,%/81%D:?/89O<8-:%I,.;8D%?0D,%K%18%-,3<=,%1%D:-0.,3<8-%F0=<8%D:%J/8F81O+%
@ Q09/0J83%D/01?:DB
",69(3$):)0(12&+
",69(3$):./)0(12&+
",69(3$)/)0(12&+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
%E8N30F:<1.:%I,.;8D,3<8
@ R8P.:%18%<8%:J;:N0?0%.,?8/0%30F:%I,.;8D,?0%SI,D010%F1+%1?/,30%F1+%?,98;8T+
@ U890%18%1-8;0%:J;:N,?0%:%?8-V@ ":J,?.:F30%W.:3?8<38/<0X%1:%F>38IJ830B%
;(+$6$
<(-&2&
:9#(5$
",=(91,35()-(0(
36&-*'&
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
*8=0?8FB%U:F,%1?,3<,%I,.;8D,3<,$%D/:?:.:;
@ 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 "#$),=12&+(5'*)C#&%,),=)6+&>$D$45&C()+#,9$)6+2,E5&%)!97'7F),=G6+,=('G5(30C,#87
B :./)5(4$5H)I,9):)J)./)61*+('7)
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
78930:;<1.0%=/;>;.;?%@,.?8=,3<,
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
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
"/0-8/0
A N(%=/8M?8E,%*%03%=;=/,:0%38.,<%3O>8/0CP
H N(%E;D0%6FB%@,.?8=%3,%*$%=;>8-%?,2.;%E;D0%6%
@,.?8=8%3,%3O>8/0C,2%*%03%;D9,13;%1=/8-830%1>,3<8%
:%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+%
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
%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%
!"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
!=>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<,+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
7839:*;<031;3%-;=>?
@ A,BC1%0-,%C/0%D,E>FG *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%/
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
M,?0=,B0L,
@ "/>K>/0%J;9;L>$%.0%1;%E,=;1C30%E,%C;$%=,%1>%3>%J;L,K0%.;3D?0.C+
@ M1,.,%A,BC%=;<0%38->/0S30%0=+G TJ;/,<0%S,1;K30%U09+
@ A,BC%0=:L0%1>%J/0/>=0L;%3,%.;3B8%D,E>%#H*O$%C0.%J/>=%K,?0=,B0L;+%%VE,.,L%J;C>-WX
@ *>,=6>CVP0XF%%53;U0B,%;<L>.C;K$%.0%L02%J/><>/>%A,BC%P0+
@ Q/0C>6>CVP0XF%%53;U0B,%;<L>.C;K$%.0%L02%1J/>->30%P0+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
P>1C%(
@ Y,%K1>%0%03%L%C,.;%=,%P0%Z%PL$%J/>K>/0%S>%1>%P0%E,.?L8S0%J/>=>3%PL%E,S3>+
#/
#.! 2 3
! 2 3
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
P>1C%&
@ Y,%K1>%0%03%L%C,.;%=,%P0%Z%PL$%J/>K>/0FG 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!"#$%&$'()*)()$+,-./.0)1$'23.45)6$!"#$%#$'()'#7)$/.'#8)$%&6
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
7819%:
; <,%=18%0%03%>%9,.?%@,%70%A%7>$%B/8=8/0%@,CD 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
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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);$$$4000"($9."#3$2.+3010#084.""$,'3.4)8;$<<$G(#4)$'A.8)
$$$$$$$$$$$$$$H2--#4$%$405$$$$$$$$$$$$$$$$$+67+$F)84.(4$%
+3/0)(0-*"2"-,607+-2")3
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
; 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>8TD 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,O91CD U8%B?9/8IG>8-?%./090H38%18.O0>8%L.8/%30%B01,F38%J,E8M+
<,B?/8@3,%%=,F0@,O0>,C%.?-839,/>0
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
<,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/0986891C%D <,%=,F0@,O0>?%7>$%-?/,-?%0-890%K/0986891%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/098689+D U0%B/?IF8-,$%H8%1?%R,O9%0@1%B/0/8>830%3,%E,H89.G%I/,F38%
J,E8+%
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/789:-0%7;<0-01<0=3:%.73</79:%>?;7/:@371<0
A 57/,%?,8:9:B0<0%>1:%,.<0>371<0%8/,3C,);01,3C,%>%%*:,@6:<%03%D/0<:6:<%?,%;71,-:?37%E,F<+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:+%
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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*7803173$%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[+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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<+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
78%9,:;%<%=>?0%@,A01,;0%8BC>.;%!+++
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%!+
!!"#!!! !!!!!!!!"$
%&'(!!!!!)&'(!!!*+,,-.
)&'(!!!!!*+,,-.
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
783;/8?,%L@A8/>Q381;0%03%8B38L?C0L81;
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>RP 62/,30%L1>%@,A01>%Q8.?>/%A01,?>:%3>%A8;/Q0%
FA8A/,L0%;JQ0%O<6F!G%.8%C>%A01,3C>%Q8L8?C>38+GP #?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+
!!"#!!!!!!!!!"$
%&'(!!!!!)&'(!!!!!%&*(!!+,--./
! /0!102+3.!3+!,+145!45+64+728-75!90:;+95<-.75=
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
%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
0 01
011
23'456!782985"&/:;<=/<;>;:?.@;!A*!,B@;C/,>(
*'D8548)D6E&F/G:;@H;!>;:?.@;I!C.!F,!JGKC,!=L,:GB<;!?G!B:GJM;N!(
> ?902@-!20AB+!75<4+!<5208+CD E0AB+!3+!62+B-904-!<+B259!;-302@-!45!;+.9<-8+!;-30485C!
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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,;+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
#/,789%:,9;
< =,%>1,.%?@A8.;$%.0%@?%B/8@/,3CD "?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?%
>1,.8P,%?@A8.;,%?O%G,F8;.,%F,1,$%B?;8-%@/,7F8>8%:,9;%30%B?;/8@3?%30.?70%B?3?>3?%G,P3,;0+D Q,2.?%@7?.0/,%O?.78/%B01,789%B/,>8%>8/G0A8%38%
B?;/O0+
!
"#$%%%%%%%%%%%%%%%%%%%%%%%&'()!*%+,-'#,&'
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"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
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"?OB?/,%;/,31,.90A,-%>%6VQWX&
< R1,.,%;/,31,.90A,%0-,%3,F03%O?1;?B,$%B/8O>0O83?%>870.?1;$%03%30>?%0G?7,90A8+%
!"!"!"#$%&'(&)'*($
+',*$!"!"-$.$'/'*($0-$'12
+',*$+',*$!"-$'103"44&//$1
+',*$+',*$+',*$-$'10567"44&//$1
89'6/"408%"*($4
56%$.$'/'*($0-$'1
:&%/,-$'1
;2"('/&"60<$=$(
1. Transakcija T1 in T2 imata naslednji razporeditvi nad objektoma A in B baze podatkov:
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:CommitS2: 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.
e. Kontrola vzporednosti s časovnimi žigi
f. Multi-verzijska kontrola vzporednosti s časovnimi žigi
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
!73890:;9%<8%=/>?0:90
@=:8.%6,930.$%AB5C@D
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/;EF;GH%BI@4%F,1:381:0! BB%:8-0J0:KH%%L,:8-,/381:M%
@=9/?0N8%1;%91;%,.J0N;%O,J:%,F0%387;3,+! II%83101:;3JKH%%L.83101:;3:381:M%
P;%1:,%O,J:%03%J;F8:3,%"#%.83101:;3:3,$%<8:;-%N;%<8%:/,31,.J0N0%"#%.83101:;3:3,+%
! %%@@%18F,:083H%%L0=8F,J0N,M%@=9,N,3N;%;3;%O,J:%N;%0=8F0/,38%8G%0=9,N,3N,%G/>E02%:/,31,.J0N+%
! 4%4%>/,70F0:KH%%L82/,3N,3N;MP;%O,J:%<8:/G0$%18%91;%1</;-;-7;%1:,F3;+%
Q !"#$%&'$&()*+,-($%&'$('$+E,/,3:0/,%,:8-,/381:%R%82/,3N,3N;+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
58:09,J0N,
Q B:8-,/381:H%S D/,31,.J0N,%1;%F,2.8%</;.03;%LT*8FF7,J.UM+
Q !2/,3N,3N;HS V,N%W;%3;2,%G;F,:0%6X"#Y%%L*,=F8E0YM
!"#$%&
" !"#$%&'(%)'*'+)%,%)-.*/'*/')'().0*1%2')3*4#45.0%67 89:*8;*<*8=*+#*0'"%>.*+#5#*/."4#45.)5).?
7 8@*<*8A*+#*0'"%>.*+#5#*/".&#)-.).*B#1)#$.).C?
898;8=8@8A
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/;G<81:,9.;
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;+%
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
4789%:%0:/,;3,830-%<,:739-%1=/,30
> ?,@9=9;0%;1,%A01,3B,%3,%C01.DE 68,<%9C:0;30%F,1+E !-9@9F,%92/,3B,3B7%A9C,=.9;+
> G./,C0%9.;0/B7%0:/,;3,837@,%<,:73,%37A9=/B730-%H,I=1DE J7%37$%18,<%A/7=9.+E J7%C,$%.,.9%:,@9=9;0=0%
,=9-,/391=D
!"#$%
&"'!"#$%
&"'()%*+ ()%*+
,#-.-*+
/%0-#%1
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
K7F%9%./,B0%03%1080
> !"#$#%%L:,.,B%B7%C917@,3B7%,=9-,/391=0%=7M.9NE !"#$%&'()"*'#(+,((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.9NE S,B%F7%101=7-%A,C7%A/7C73%17%1A/7-73B73,%1=/,3%
:,A0U7%3,%C01.DE ?,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-<+%
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
!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+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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+%
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
789%:%;3<=30.
> ?1,.%;3<=%@,A01%0-,%B30.,C3D%;3<=30E.D%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
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
43<=30E.0%@,A010
5DS30%C0A0%;3<=%@,A01D=Q%> TA;,C<> UD--0C> 8MD/C> V3;%
H .D3<K%ADC/P<=,3P,%,G0%A/<.030C=<
> WD-A<3@,K0P1.0%;3<=%@,A010%NU9*1O%H @,%TL4!%,.K0P<
!"#$%&'
()*
+,!#
-#./+0
!1/#)*
2334#+
5#32"#6781/#
13+#"6781/#
34/5(627*869(':$(;
$(<469(0'2(=*9(':$*
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
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/,30QH 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,+%%
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
%43<=30E.D%A01,3P<[=3,A/<P%%N789O> WD3C/DG3<%CDF.<
> !M3D=0C<=%AD%101C<-1.0%@/BE0C=0H \,@,%,3,G0@<
H *V4!%R,@,
H TL4!%R,@,
> "/0-</%DM3D=0C=<
> "/DMG<-0%A/0%DM3D=0C=0
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
78/-,938%0:;,<,3<=%>,?@
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.+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
T83@/893,%@8H.,A "=/08F0H38%6U"#%./=0/,%.83@/8938%@8H.8%:,%
-030-0:,?0<8%H,1,%E8/,C9<=3=V,%:,%8C38;0@=;%;%E/0-=/W%101@=-1.=%:/WX0@;=+%
A J,E0X0%;%F3=;30.KG C=V03Y?2=?.E803@%:,E01K%%4898H,%:,H=@=.%TL+G =3FY?2=?.E803@%:,E01K%%B1=CW<=%@/=3W@38%@,C=98%!"#$%03%
@,C=98%W-,:,302%1@/,30+%%L8%<=%Z-=2.,%.83@/893,%@8H.,[KA !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^+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"@0H<,%E=/1E=.@0;,K%T,<%<=%12/,3<=38%.<=
!"
!"#"$%"&'(!"#$%&'$(")"*!+,-
)"*#$+",-'."/'+,-/'"'0/
!./#0$1"&'$+",-'1!#+,-
2-3(4'5678
!"#
)1!2+,-
345
'6)!
.!7*'$
)"*!45
899/!'
:!981!;&<"*!
"9'!1;&<"*!
69&:'*9/5(
$%&
;"(#'/$/'*9/5
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
M381@,;3,%E/=.030@=;%@/,31,.?0<=
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<=-+%
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/7.030%8&9%
: ;<4!%=,2>7?,%=,.@7A%3,%ABC,>.02DE <0%A/BF@7-D
: "/7C73%/71>,?/0/,-B%1>,/B%?/7C3B1>%1>/,30$%17%3,A0G7%HI*JE 437?30.%17%@,2.B%A0G7%-7C%;<4!DDE 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+
: <,%.B3QL%;<4!%=,A0G0%R73CS%C37?30G.0%=,A01+ !"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"B>/C0>7?%>/,31,.Q0K7
: 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.+%
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
!F3B?0>7?%AB%=/LG0?0J%Q7@B>3,%1@0.,
! !"#$%&'(&)'$*+',$-&*'#)-&./'%0#-1'&2'&/+-)'&1"3*-+&4"/%3"56
7 8+%&9"4-6&&:'*+-;$'&2-<= >()+%*%&)"*-+"&?"@*3&2-&/'*+(%,"&'(&)'$*+',$-&*'#)-&$"/+-2&%$&)"*-+"&$%&A3/-,"&.B$",%4"56
= CDE>&F3-&")@%2-6! ./'$'F%&4G'('F%$'5
= HIE>&A#%$)%&$-A3/-,%J&?"@*36
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
B C H !"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
!F3B?0>7?J%X,=,%,3,@0=7
: *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 !1>,@0%=,A010J%4BC,K%V,Q>%.%V,Q>%>,F7@0$%AB1>,?0%
@,1>I6<\I6<$%1A/7-730%V,Q>%1>,>L1%3,%AB>/C0+E ;AC,>7%=,A01J%]7%"%30%?%^,F7@0%L-,=,302%1>/,30$
: 4BC,K%"%.%^+;+6+$%AB1>,?0%/7QI6<\I6<+
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
!73890:;9<%=,>,%*?4!@ "83890-8%>A8B89038%>,:8$%B,%/;.831:/C0/,-8%
1:,3D;%87%>/CE0:90<F "838938%89/;B38:0%91;%G8G/,9.;%H:CB0%>,%G/;.03D;3;%
I,J:KL$%G838938%89/;B38:0%MN*+
@ "/;AO;B%3,G/;D%8B%B3;9%>,G01,$%.0%91;7CD;%3,D-,3E0%/;JN6P%9%QR6+%
@ 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%,O0F 6G/;-;3D;3,%1:/,3%D;%9%QR6$%9;3B,/%/;JN6P%T%N6P%,O0F G,A;N6P%H9%4#L%! N6P+
@ *?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 !"#$%&'(')((
*+*,-,./0123,3$%4#56%%%%%%%%
!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 \;%D;%N6P%MN*%03%9;OD,%C3B83;]:N6PUUPRNN
@ S,G0E0%?3B%>,G01%>,%:8%I,J:+F \;%D;%N6P%MN*$%03%C3B83;]:N6P%KU%PRNN
@ 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
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/0-;/%873890:9;
!"#$%&'("')*+$%,
-"%.&'("')*+$%,
/*.0,"1-23-45$,"6-78
/*.0,"-29-45$,"6-7:
23-0!+5,
;<=1->%.+-23-<?@-3A
23-B%.
/*.0,"1-2:-45$,"6-73
/*.0,"1-29-45$,"6-78
;=C?DE-=B?2C=2
<?@---------<FG
-----AA
-----A8
-----3A
-----9A
-----:A
-----HA
-----H8
-----8A
-----IA
!"#$%&"'()("*$+,-*$"$.*
/01$2%3"4)%&"'()1)#+,-
5(.*6)7+,-
2+>%.+
81)9+,-*
=CJ
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
"/0-;/<%S/CE0:;9%-;B%G838930-%%%%%%%%%%%%%%%%%>,A838-
!"#$%&'("')*+$%,E-"%.&'("')*+$%,
/*.0,"1-23-45$,"6-78
/*.0,"-29-45$,"6-7:
23-0!+5,
;<=1->%.+-23-<?@-3AE-23-B%.
/*.0,"1-2:-45$,"6-73
/*.0,"1-29-45$,"6-78
;=C?DE-=B?2C=2
;<=1->%.+-29-<?@-IA
;<=1->%.+-2:-<?@-8AE-2:-"%.
;=C?DE-=B?2C=2
;<=1->%.+-29-<?@-9AE-29-"%.
<?@---------<FGAAEA8
-----3A
-----9A
-----:A
HAEH8
-----8A
-----IA
-----KA
LAEL8
-----MA
!"#$%&"'()("*$+,-*$"$.*
/01$2%3"4)%&"'()1)#+,-
5(.*6)7+,-
2+>%.+
.:7;:)<$+,-
=CJ
!"#$%&'(')((*+*,-,./0123,3$%4#56%%%%%%%%
4/780%9/:;<=-0%9/0%>/7?0@A0
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!GJ 69<,.7D%,1032/:3:%A%:>,ED7+%J ",>0%3,%K?90L=MN
B C,.:%:-=D0@0%.:<0F03:%E=<,%9/0%OP4!GJ Q>:80;,D%1=%E:<8:R@/,D,D:F0-%S,L@1+
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| = 100.000 zapisov, 100 zlogov, 80 zapisov/stran, 1250 strani |Racun| = 120.000 zapisov, 80 zlogov, 100 zapisov/stran, 1200 strani |Polog| = 1.000.000 zapisov, 120 zlogov, 66 zapisov/stran, 15151 strani |Dvig| = 1.500.000 zlogov, 120 zlogov, 66 zapisov/stran, 22727 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 100.000 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| = 5.000 zapisov, 110 zlogov, 35 zapisov/stran, 145 strani|oddaja| = 50.000 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| = 1.000.000 zapisov, 320 zlogov, 25 zapisov/stran, 40000 strani|Clan| = 10.000 zapisov, 200 zlogov, 40 zapisov/stran, 250 strani|Izposoja| = 300.000 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:
a)izpiši založbe knjig, ki si jih je izposodil član iz Ljubljane pri zaposlenem s telefonsko številko 127434 (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!
______________________________________________________________________________________________________________________________________________________________________
!"#$%&'(')((%%%
*+*,-,./0123,3$%4#56%%%%%
678%9%,:;0.,<0=1.0%.>?0
@AB>.%6,930.$%CD5E@F
!"#$%&'(')((%%%
*+*,-,./0123,3$%4#56%%%%%
"/GH;G?
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%%%%%
%678%9%,:;0.,<0=1.0%.>?0
!"#$6*&4)$-3$(&>*.$'7.?),.$)4$'7.17&9&$2&')-&231&$%$-'(.@239$'7.17&9-*39$,34)*6$A=BB$C$;&%&DE
I$$$!"#$-F&%*)$(&>*.$6'.7&G(,&,.$-'73932(,)%*3$,34)*&$1.-F)F3(,&EI$$$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$!"#;DI$$$573&+),&$'.-3G231&$LMN$4&$*()+&2,3$!"#$6*&4.%$A;8<=D
!"#$%&'(')((%%%
*+*,-,./0123,3$%4#56%%%%%
678%9%,:;0.,<0=1.0%.>?0%J3,?,;+K
"/>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%%%%%
7839:;93%6<=
"/01>?@A%%%%%7839:;0%6<=%1>,B.9%B%8?1>0>9CD1.0%D9:0.+%%%%"/9;E@/?F91?/%@/9B9;9%6<=%1>,B.9%B%@?19G39%H"I%.C0F9+%%%"?>9-%J@?/,G0-?%?G0K,D93%@/9B,D,C30.%:,%@/9B,D,3D9%.?;9%+
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
%%%!"!#$%&'$%343565738
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
7839:;93%6<=A%6@/9-93CD0B.9
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
%%%RX?%1@9F0,C%Y9//?/Z%B,/0,GC91A
%%%%%%%6<=P!4N%[C?38$%01%398,>0B9%0W%,3%9//?/%2,1%?FFJ//9;\
%%%%%%%6<=6RHRN%[F2,/T]U$%@/9;9W039;%F?;91%W?/%F?--?3%9//?/1\
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
%%^J/:?/D0
/59:7:;46<$=4>?<$?@;A<;$74$;5=4B:C:$4=:$D<:AE5FG:$.?:$H575;:;4$;5=4B:C<0I
'4>?<$<FD;56<$?@;A<;J$D;5G5;56<$7K35;:B<$:7$D<356$D;564?756<$?@;A<;$74D;5C$A4$57<$65L3<I$M<356$LD53$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$
$$$$$
'4>?<$3@F:$LD;5657:6<$4=:$:AG;:P56<$A4D:L$74$?435;5H4$?4Q5$?@;A<;I$
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
"/0-9/A%%^J/:?/$%.0%@?0_K9%0-93,%-?/3,/D9B$%.0%1?%/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
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
%678%9:3;<=;3%9%>?%"/0-;/
@2,/%6786ABACDEFG
%CHC>%678%#CIJK%4C>8B*C%6C>AJ!K
%@2,/%@L13,-;D&'FG%12M/N%@L-03/,N03:G%OPM,N%@L,:;G
%CHC>%678%CK4%4C>8B*C%6C>AJ!K
%@L-03/,N03:%Q%/,3=M-RSG
%CHC>%678%4C>8B*C%103OM%>T*6!*%U!*
%%%%6C8C>A%6+13,-;$%6+,:;%%%%%%%%%U*!5%6,0PM/1%6
%%%%VWC*C%6+/,N03:%X%?@L-03/,N03:
%%%%!*4C*%#Y%6+13,-;G
%=M%Z
%%%%CHC>%678%UCA>W%103OM%JKA!%?@L13,-;$%?@L,:;G
%%%%[/03NOR\]1%01%]=%^;,/1%MP=_3`$%@L13,-;$%@L,:;SG
%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
$
?'451'@
9;('$9A,B=,8'4*6CDE
$$FG3H#HIH$JKLM$!(4=-',$NOHKH$'(484*6PQRST
HUHV$!"#$?KH?WKH$'1(X>8-6-$JKLM$@9A,B=,8'4*6T
HUHV$!"#$HUHVYIH$'1(X>8-6-T
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
%B"J%,PN;/3,N09,
%%
K,-;1NM%=,%g0%1[/;-03h,P0%[/;9,h,P30.%/,h;%=M=,-M%.3h0i30@M%<,%=;PM%<%[M=,N.M93M%g,<M%RB"JS+
j%%"M1;g;3%1N,3=,/=0<0/,3%9-;130.?%[/M@;=k/;)Mgh;.N0+
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
j%%IM30P30.%3;M=901;3%M=%6T"#%kh,-;%.P0@;%03%h02%[/;9;=;%9%4#56n1[;@0O0f3M%.M=MG%[M=,N.M93,%g,<,%h;%P,2.M%3;.h;%9%-/;i0+
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
m4#>%B/20N;.Nk/,%
!"#$#%&$'#"()"*$+(%),-.,+(+"(/
j%%%0.1#)&2#3&/%#+#2#$&%#+%4&)1*5#%.,6(4&6,%72,++(2"#,+89%.,:13(%;<=%%%%%>"&6)(%>"(?+#)*@j%%%A.$&613&1+#)%B,+#1+#)&/%+&1&B&+3(%CDEF%B,+#1+#)&j%%%G,+#1+#)/%.,6(?(%>(%+&%.,H&"),6+#%6#$9%.$(+&:&%4&'"(6(%"($%%%%%%%%%%%%%6$&5&%#+%.$(6&3&%$(4*1"&"(%.,#46(HI%"($%),H(%+&.&)@%j%%%J,H&"),6+#%6#$/%.$(.$,2(>#$&%;<=%>"&6)(
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
74#8%9/20:;.:</,%=3,>,?+@
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:<:+
5D1:%=#/0>C;@E
%%%%%"/;B;>;%6JK%<.,L;%B%:<G%9"I+%"/0-;/E%74#8N!4#8%-D1:+%SD>,%L,%!4#8%03%74#8%%%%%%%%%%%%%%%CD30?30.%-D/,:,%M0:0%3,%.?0;3:<+
!-/;Q30%-D1:%=T;:UD/.%M/0>C;@E%%%%%"DV0?G,%<.,L;%F/;.%D-/;QG,%B-;130%DF/;-0%=-0>>?;U,/;@$%.0%.D-<30O0/,%1%FD>,:.DB30-%%%%%%%%%%%%%%B0/D-+%"D:/;M<G;%-,G2;3%74#8%CD30?30.%3,%B1,.;-%.?;3:<+%
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
74#8%/,L/;>0%03%B-;130.0%
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%%%%%
RF/,B?G,3G;%74#8%CD30?30.,%
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,)
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
"DB;L,B;%L%74#8
6%FD>,:.DB30-%B0/D-%>;?,-D%F/;.D%1;G;%=1;110D3@+%X1,.,%FDB;L,B,%0>;3:0P0O0/,%?DC0H3D%1;GDE%W%%%%74#8%R*KE
%%%!123/=<%>3?)(@(/(#A=<(@B,)C$)$+,@,)%A
"/0-;/ED@)4EF!>)#;.123/=()$/#,=GGG&3((H%@(),&/(+=IJKI79
"(EE,/@4(E!/(E9
@)LM
!!!!/(E!;!:)45,)N$E$F,)&F,@"(EE,/@4(E->)#O>%,2P2O?$%%G()289
Q!/$@/B!DRSTU/,?@4(E!,U/?@!M!&&&Q
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
7-8130.%/,9/8:,%;<338=>0<3%
?%%"<1>,@0%09<A,=0B1.0%30@<%>/83C>38%D<@,9,@8%1%D<:,>.<@3<%E,9<+%%%DCEA0=%03>%F8>G/,31,=>0<3H1<A,>0<3IJ%
@<0:%18>G/,31,=>0<3H1<A,>0<3I03>%A8@8AJ
?%%6D8=0K0=0/,%L8%1<%>/,31,.=0B8%@%:,30%D<@89,@0%1,-<ME/,A38+%%DCEA0=%E<<A8,3%F8>*8,:!3ANIJ%
@<0:%18>*8,:!3ANIE<<A8,3%EJ
?%%%O8%B8%D<1>,@AB83%,C><=<--0>%D<>8-%18%@1,.%6PQ%1>,@8.%1-,>/,%>/,31,.=0B,+%
?%%%60=8/%18%>/,31,.=0B,%9,.ABCL0%1%=<--0>IJ$%>8/%D/8.038%9%/<AAE,=.IJ+%DCEA0=%E<<A8,3%F8>RC><;<--0>IJ%,3:%@<0:%18>RC><;<--0>IE<<A8,3%EJ
?%%"/8@8/0%,A0%B8%D<@89,@,%S8%<:D/>,+%DCEA0=%E<<A8,3%01;A<18:IJ
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
H9@,B,3B8%6PQ%1>,@.<@%
%H-,-<%>/0%/,9A0L38%3,L038%9,%09@,B,3B8%6PQ%1>,@.<@T%%%%6>,>8-83>%I1>,>0L30%03%:03,-0L30%6PQ%1>,@.0J
%%%%"/8D,/8:6>,>8-83>%I18-0M1>,>0L30%6PQ%1>,@.0J
%%%%;,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%:,>,
\
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
*7189:67:1%;3,<,9=7>,3=7?
*7189:67:%=7%@79A%0@/,@73%.8/@A/B
C%%D/7>0A81;?B%D/7-,.37%17%73A%>/1:0EA%3,@,=C%%,F1A98:7;03:%38-?B%D/7-,.37%3,%>/1:0EA%@%%%%%%%%%%%%%%<A9AG73A%H:7>09.A%C%%/79,:0>7%;03:%38-?B%D/7-,.37%17%3,D/7=%,90%3,@,=C%%I0/1:;?%03%9,1:;?
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
%J=7-,3=7%K,>,%03%6LM%:0DA>
6LM%NOD7%%%%%%%%%%%%%%%%%%%%K,>,%E9,11%%%%%%%%%%%%%%%%%%%%%%%%%*7189:67:%P7:%-7:2A<
#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%%%%%
K4#RB%Q@=7-7%03%ADA@A/09,
U7G03A%=,>,+1Z9%>/[7%6LMV\E7D:0A3%G7%17%DA=,>0%3,D,.,+%%
6LM],/303P%=7%DA</,@/7<%6LMV\E7D:0A3^30%:,.A%/713,%3,D,.,%;AF1:A=%-A/,-A%:71:0/,:%7.1D90E0:3A?
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
!DA@A/09,%03%0@=7-7%;3,<,9+?
:/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%%%%%
578,%9:;,8.:<3,%=,>,
!=?7.8%4,8,=,17578,4,8,%<17=@?7%9:;,8.7%:%10187-@%>,%;7A:%1%9:;,8.:<3:%=,>:%03%.,8,A:B+
4,8,=,17578,4,8,%-;%C%D:3+B78578,4,8,EFG
))%9/038%03H:/-,80:3%,=:@8%827%;/0<7/I
6J187-+:@8+9/038A3E
%%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
*71@A8678%8/1C-;+B78P,=A71E3@AA$3@AA$3@AA$3@AAFG
68/03B%8,=A7L,-7G
Q20A7E8/1+37R8EFF%S
%%8,=A7L,-7%C%8/1+B7868/03BEKPT#UVWLT5VMFG
%%6J187-+:@8+9/038A3EKP,=A7I%K%N%8,=A7L,-7FG
%%))9/038%,AA%,88/0=@871
%%*71@A8678%D/1%C%-;+B78X:A@-31E3@AA$3@AA$8,=A7L,-7$%3@AAFG
%%Y20A7%ED/1+37R8EFF%S
%%%%%6J187-+:@8+9/038A3ED/1+B7868/03BEKX!UZ5LWLT5VM%N%K$%KFG
%%[
[
!"#$%&'(')((%%%*+*,-,./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%18-8
68/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?,Id%%%"/7<,?,A30.%9/7<7/0%1038,.1:$%9/7<7/0%8097$%.:3101873D:%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%%%%%%%%%
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
6789%.:;,
<3=%10;>%6=/03?%3,-@>%<3=%/,=03?>
))%3,-@;%0=@/,=:/
A1BC%0=@/,=:/%6,0C:/1D<3=%10;$%6=/03?%3,-@$%<3=%/,=03?E>
6,0C:/1%1,0C:/1>
))%,11F-@%=2,=%=2@%,GGC0H,=0:3%1@=1%/,=03?
A1,0C:/1%I%J
%%%%6K8KLM%10;$%13,-@%<NM!%O10;$%O3,-@
%%%%P*!5%6,0C:/1%QRK*K%/,=03?%I%O/,=03?
S>
))%/@=/0@T@%/@1FC=1
U20C@%D1,0C:/1+3@V=DEE%J
%%%%6W1=@-+:F=+G/03=C3D1,0C:/1+10;%X%Y%Y%X%1,0C:/1+13,-@EE>
S
1,0C:/1+HC:1@DE>
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
6789%0=@/,=:/Z0
4T,%=0G,%0=@/,=:/Z@T%DY.F/[:/Z@T\EO
]%%<-@3:T,3%0=@/,=:/%%%%":=/@^FZ@%0-@%03%=0G%1G@-@3CZ0T.@>%:-:?:_,%^/,3Z@%1=:CGH@T%G:%0-@3F+%%%%%":?C@Z%G/0-@/%3,%G/@Z`3Z0%G/:1:Z30H0+%
]%%":[0H0Z1.0%0=@/,=:/%%%%%":=/@^FZ@%1,-:%=0G%1G/@-@3CZ0T.@>%3,=:%FG:/,^CZ,%.:31=/F.=%PKMLR%++%<NM!O
%%%%%%A1BC%0=@/,=:/%6,0C:/1D<3=$%6=/03?$%<3=E>
%%%%%%6,0C:/1%1,0C:/1>
%%%%%%A1,0C:/1%I%+++
%%%%%%U20C@%D=/F@E%J
%%%%%%%%%%A1BC%JPKMLR%O1,0C:/1%<NM!%O10;$%O3,-@S%>
%%%%%%%%%%0a%D1,0C:/1+@3;P@=H2DEE%J%^/@,.>%S
%%%%%%%%%%))%G/:H@11%=2@%1,0C:/
%%%%%%%S
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
62/,3Z@3@%G/:H@;F/@
%b,Z%1:%12/,3Z@3@%G/:H@;F/@O%%%%%"/:?/,-$%.0%1@%0[T,Z,%G/@.:%@3@?,%1,-@?,%678%1=,T.,%%%%%<[T,Z,%1@%.:=%G/:H@1%3,%1=/@c30.F
%"/@;3:1=0O%%%%8,2.:%T?/,;0-:%,GC0.,H0Z1.:%C:?0.:%03%:1=,3@-:%^C0[F%%%%%%%%%%%%%%G:;,=.:T+%%%%5:c3,%G:3:T3,%FG:/,^,%,GC0.,H0Z1.@%C:?0.@$%/,[C0_30%%%%%%%%%%%%%%%%FG:/,^30.0+%%%%%<[:?3@-:%1@%T/,_,3ZF%[,G01dG:d[,G01%G/@.:%.F/1:/Z,+
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
62/,3Z@3@%G/:H@;F/@O%"/0-@/0
!"#$%#&'"(!#)*"#&+,-./01"23245678-93
&&&+#:#!%&+;38<=&+;39612=&!(*/%>?@
&&&A"(B&+68C-43&+=&"2324523&"
&&&DE#"#&+;38<&F&";38<
&&&G"(*'&HI&+;38<=&+;39612
62/,3Z@3@%G/:H@;F/@%0-,Z:%C,2.:%G,/,-@=/@O%%%M/0%/,[C0_3@%3,_030O%<N$%!eM$%<N!eM
!"#$%#&'"(!#)*"#&J9K42632"6789L>
&&&J/&368C-4M38<&J/%#G#"=&J/&89K42632&J/%#G#"@
*')$%#&+68C-43
&&&+#%&46789L&F&46789L&N&89K42632
&&&DE#"#&38<&F&368C-4M38<
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
62/,37838%9/:;8<=/8>%"/0-8/0
62/,37838%9/:;8<=/8%1:%?,2.:%3,901,38%@%</=A02%9/:A/,-1.02%78B0.02$%38%3=73:%@%6CD>
!"#$%#&'"(!#)*"#&%+,-./0+123&45&678&45%#9#":
;$59*$9#&<$=$
#>%#"5$;&5$?#&@A/0BCDDDECD2F+1BG'1+E2D1.6HIJ.1K
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
E?0;,378%12/,378302%9/:;8<=/
#>#!&-L;&M#945&)#!;$"#&-#!%4(5
46F&2/GN
46F&1.F/6ON
#>#!&-L;)&)#!;$"#&-#!%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=%;/!+>?@AX!!+>?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
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
!137830%69:)"65%;/,<30.0
!"#$%#&'()!%*+)&,-./0-123,
&&&&&4*)&5-123,*6&*)%#7#"8
&&&&&"#%(")0&*)%#7#"
9#!:$"#&,-.1;<&*)%#7#"
9#!:$"#&;=>"/5&*)%#7#"
0#%&;=>"/5&?&40#:#!%&!+()%4@8
&&&&&&&&&&&&&&&&&'"+A&"/5/,B/5&"
&&&&&&&&&&&&&&&&&CD#"#&"E516&?&5-123,*68
*'&4;=>"/5&F&GH8&%D#)&,-.1;<&?GI
#:0#&,-.1;<&?&HI
#)9&*'I
"#%(")&,-.1;<I!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
!137830%69:)"65%;/,<30.0
=%%:7.,>3?%1@/?-?3>A08.?%B4CD:E*CF=%%*CGH*I%8/?<371J0%K,%LHIDGM!I=%%"/0/?A,3A?%8/?<371J0%1@/?-?3>A08.,-%6CG=%%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+=%%:,2.7%Q@7/,P>A,-7%.Q/K7/A?%3,/,837%P/?K%RCSCD%69:T
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
%"78K?J?.
=%%N;3?K<?30%69:%<787>AQA?%0K8,A,3A?%@,/,-?J/0U302%1J,J0U302%@70K8?<P%8%;7J0J?>A1.?-%A?K0.Q+%=%%403,-0U30%69:%<787>AQA?%0K8,A,3A?%,<V27W%@70K8?<P%0K%;71J0J?>A1.?;,%A?K0.,+=%%5?2,30K?-%.Q/K7/A?8%7-7;7U,%P/,3A?%?3?;,%K,@01,%3,?3./,J%03%@/?-71J0%0-@?<,3U30%@/7P>?-%-?<%;71J0J?>A?-%03%69:+=%%E"M%.7J%3@/+%X4#D%0-@>?-?3J0/,%@>,1J%,P1J/,.W0A?%-?<%,@>0.,W0A7%03%4#56+
!"#$%&'(')((%%%*+*,-,./0123,3$%4#56%%%%%
"78K?J?.%B3,<,>+F
=%%69:XO%6J,J0U30%-7<?>$%@70K8?<P?%1?%@/?8?/0A7%8%U,1Q%@/?8,A,3A,+=%%62/,3A?3?%@/7W?<Q/?%0K8,A,A7%,@>0.,W0A1.7%>7;0.7%<0/?.J37%3,%1J/?Y30.Q+=%%69:)"65%1J,3<,/<%K,%@01,3A?%12/,3A?302%@/7W?<Q/+%
/* Program pozenes z: java -classpath .:./mysql-connector-java-5.1.7-bin.jar Sqltest */
import java.sql.*;
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
con.close();
}catch( Exception e ) { e.printStackTrace(); }
}}
!"#$%"&'()*+(,-.- ( .
!"#*+/01+"(/"2+343506"(0+(784"/+"(*8409*:06";</39(!*=+09
!
!/348(7"#*+/01+"5*(784"/*
"
!0+/*97*(0+(7"#*+/09*
> !0+/*97*?(7/@A9/A@*(83B*/93=(> !"#*+/09*?(83#"+(83B*/93=
> C=*(83536*(83/@"&+*(<*(79A8+3(B"43?D !9A8+*(70+/*97*?(8@35@*#0(4*293(@*<14"+6A6"63(
83B*/9"((((
D !9A8"+(+*10+(@*<A#"=*+6*(83#"+*?(8@35@*#0(4*293(A83@*&46*63(83B*/9"E(
#
FGH
> FGH?("F/"+70&4"(G*@9$A8(H*+5A*5"
> FGH(B39A#"+/0(73(+*807*+0(<(A83@*&+0I93(B"J0+0@*+0#0(<+*19*#0(
> K<+*9"(73(A83@*&46"+"(<*(0<@*L*+6"(M83#"+*N(B"43=(83B*/93=
!
!"#
$ !"#%&'()*+,-.&/&(0-12,-(&'3,4(
$ 4(05672,&/&(0-1)1&8&1.369*.6:43,'-(;.6&8&4;,96-1
!"#$%&'()*+',-.../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&/&&;5(4-6=1&01&(?6;&'3,4,;&6-&?('1.)(4-6>&.6?(4
$ #1>)(&*?(3195@1+(&!"#&01&?3,';.146.,4&;,+1-.6),A
#
!"#&6-&?(+,-
!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
$
G+,@6.4,&?36&(?6;*&?(+,-1
$ !"#&-,&(?6;*@,%
HD I,;,'-@1)&;?,=6J62,-&01&-,)(&'(+,-(
KD G-.(5(7)6&?36+6.646&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
!
!"#
$ !"#%&'%()*+,-)./0%1)*'2$ 3)*'2%&'%/')*.04'/%)*%*)1'/'5%+(20-+60&'%0/%4'%
2+7-)%0/,'8/+60)/+20908+
$ 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
D'1EF'>5%G+/%HIJI %
K4)60+,0./0%1)*'2
$ D(2)L'/%1)*'2%
$ !"#%M%!'4):86'%"'4680(,0)/%C+/<:+<'M !"#%&'%()*+,-)./0%1)*'2%NM O(040%,'1'2&0&)%/+%,8)&06+7P%+4)60+60&'
$ C+7-)%)(0L'1)%-)1(2'-4/'%.8'*/)4,0M Q)2'-60&'5%.8';'5%4'4,+.2&'/'%)>&'-,'5%R
""
!"#%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/:
2., 2,&-30"(4/"(30"(
"?
!"#%1)*'2
$ D:>&'-,P%%5((+6778889&:/;+4&90,<7.3-&:95(;4*
$ S8'*0-+,P%%5((+677+#,490,<7-=7&4&;&3("7>9>7=,&/(0,
$ O>&'-,P%%5((+6778889&:/;+4&90,<7"(/??.-7@ABCD%
$ T4+-+%,8)&06+%:4,8'9+%'/0%
().'9+.0%.%<8+=:
!""#$%%&&&'()*+#,('-./%012()'!"+,&7+4%+&!"#$%&"%U7)4'%.+2:'%04&3-!145+0"!
!"
!"#$%"&'()&*+#,-
. /+*"-012-$*&+*13%&+*4#&5
. 6*37%+4#&,*&*8-1#
. 9#4%"-1#&,*&+"-8*:*43#:#
!"##$%&&'''()*+,$-)(./0&123)*("#,-45!"##$%&&$6/-(./0&37&)-),)2#8&9(9&7/)+#./45!"##$%&&'''()*+,$-)(./0&8#+::13&;<=>?45(5
!"##$%&&'''()*+,$-)(./0&123)*("#,-45!"##$%&&'''()*+,$-)(./0&#)/,8&7/)+#1.2@3+#)45AB6068#59CD59EEEA5(5
!"##$%&&'''()*+,$-)(./0&123)*("#,-45!"##$%&&$6/-(./0&37&)-),)2#8&9(9&-+206+0)45A)2A5(5
!#
'()&,#34-:,-
$%&'()*+,'-'./01'2')2304+35(5'6)7+2070(5'
''''''''''''''''''''-'(3)8590':/);59'
. ;"-<#=3-&3*4-7#2-&>?"-<@
. A*4-7#2-&<3+1)/(0,30='3-&*,3*8#&4"*2#7B&3+"CDF86GH)7#D5$/)317+#)D5.GH)7#I
. )*"$-13-&,#34-:,-D
. AE&3*4-7#2-
. 6*3:"%43-&,#34-:,-D&'()FGH9&
!>
!"*,4*"#&#$%3
$/):1*5/3:%D52+,)8$+7)5JKL%5"##$%&&'''('M(./0&9EEE&?N&NN@/3:@8O2#+*@28P$/):1*5/3:8%D52+,)8$+7)5JKL%5"##$%&&'''('M(./0&N???&?9&/3:@87"),+P$/):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$/):1*5*83%D52+,)8$+7)5JKL%5"##$%&&'''('M(./0&N??9&QRST7"),+P5
. /+*"-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
. !*?1%2$*&,#&PK-2&*:"-2I-3&P-+#,&+"#$%"*8
!?
Q3&,4-8%:
!U*,-5V)/81.2WA9(?AU45!/3:%KXY5*,-28%/3:WA"##$%&&'''('M(./0&9EEE&?N&NN@/3:@8O2#+*@28PA5555555555*,-28%)*#)/,8WA"##$%&&'''()*+,$-)(./0&#)/,8&A45
!/3:%X)87/1$#1.25/3:%+G.6#WA"##$%&&'''()*+,$-)(./0&123)*("#,-A45!)*#)/,8%7/)+#1.2@3+#)4B6068#59CD59EEE!&)*#)/,8%7/)+#1.2@3+#)45
!&/3:%X)87/1$#1.245
!&/3:%KXY45
)*%123)*("#,-5)*#)/,8%7/)+#1.2@3+#)5AB6068#59CD59EEEA5(5
!"
!"#$%&#"'#
!"#$%&'()*+,-./012/"3&!)456789&#$%-*6)45./:;;<6==>>>1>?1,)@=0AAA=2B=BBC)45C*D-;E#C-*F/&&&&&&&&&&#$%-*64G./:;;<6==<H)%1,)@=4G=(%($(-;*=010=/&&&&&&&&&&#$%-*6(#;()$*./:;;<6==>>>1(#E$<%(1,)@=;()$*=/3&
!)4568(*G)+<;+,-&)456EI,H;./:;;<6==>>>1(#E$<%(1,)@=+-4(#1:;$%/3&!(#;()$*6G)(E;+,-C4E;(3JH@H*;&0KL&0AAA!=(#;()$*6G)(E;+,-C4E;(3!=)4568(*G)+<;+,-3&
!)4568(*G)+<;+,-&)456EI,H;./:;;<6==>>>1(#E$<%(1,)@=+-4(#1:;$%/3&!4G6%E-@HE@(3(-!=4G6%E-@HE@(3&!=)4568(*G)+<;+,-3&
!=)4567893&
(#6+-4(#1:;$%&(#;()$*6G)(E;+,-C4E;(&/JH@H*;&0KL&0AAA/&1&
(#6+-4(#1:;$%&4G6%E-@HE@(&/(-/&1&
!#
()*+,$%&#"'*$!
!"#$%&'()*+,-./012/"3&!)456789&#$%-*6)45./:;;<6==>>>1>?1,)@=0AAA=2B=BBC)45C*D-;E#C-*F/&&&&&&&&&&&&&&&&&#$%-*64G./:;;<6==<H)%1,)@=4G=(%($(-;*=010=/&&&&&&&&&&&&&&&&&#$%-*6(#;()$*./:;;<6==>>>1(#E$<%(1,)@=;()$*=/3&
!)4568(*G)+<;+,-&)456EI,H;./:;;<6==>>>1(#E$<%(1,)@=+-4(#1:;$%/3&!(#;()$*6G)(E;+,-C4E;(3JH@H*;&0KL&0AAA!=(#;()$*6G)(E;+,-C4E;(3&!4G6%E-@HE@(3(-!=4G6%E-@HE@(3&!4G6G)(E;,)&)456)(*,H)G(./:;;<6==>>>1(#E$<%(1,)@=*;E55+4=MNOP2/=3&
!=)4568(*G)+<;+,-3&
!=)4567893&
(#6+-4(#1:;$%&4G6G)(E;,)&(#*;E556MNOP2&1&
(#6+-4(#1:;$%&(#;()$*6G)(E;+,-C4E;(&/JH@H*;&0KL&0AAA/&1&
(#6+-4(#1:;$%&4G6%E-@HE@(&/(-/&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
!"
!"#$%&'(')*'
!"#$%&'()*+,-./012/"3&!)456789&#$%-*6)45./:;;<6==>>>1>?1,)@=0AAA=2B=BBC)45C*D-;E#C-*F/&& &&#$%-*6(#;()$*./:;;<6==>>>1(#E$<%(1,)@=;()$*=/3&
!)4568(*G)+<;+,-&)456EH,I;./:;;<6==>>>1(#E$<%(1,)@=+-4(#1:;$%/3&!(#;()$*6G)(E;+,-C4E;(&)4564E;E;D<(.&/:;;<6==>>>1>?1,)@=B220=JKLMG:($EF4E;(/30AAAC2NC0O&!=(#;()$*6G)(E;+,-C4E;(3&
!=)4568(*G)+<;+,-3&
!=)4567893&
(#6+-4(#1:;$%&(#;()$*6G)(E;+,-C4E;(&/0AAAC2NC0O/PP#*464E;(&1&
!!
+#,)'-'$./
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)
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&
!=)4567893$
!$
I,>85*>5)*"
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
!"
!"#$%
!"#$%&'()*+,-./012/"3&!)456789&#$%-*6)45./:;;<6==>>>1>?1,)@=0AAA=2B=BBC)45C*D-;E#C-*F/&&&&&&&&&&#$%-*6*./:;;<6==(#E$<%(1,)@=*;G4(-;*=',HEIF/3&
!)4568(*H)+<;+,-&)456EI,G;./:;;<6==(#E$<%(1,)@=H,G)*(*=J1220/3&!*6*;G4(-;*3&
!)456KE@3&&&&&&&&&!)456%+&)456)(*,G)H(./:;;<6==(#E$<%(1,)@=*;G4(-;*=L$D/=3&&&&&&&&&!)456%+&)456)(*,G)H(./:;;<6==(#E$<%(1,)@=*;G4(-;*=M,:E$(4/=3&
& &&&&&&&&!)456%+&)456)(*,G)H(./:;;<6==(#E$<%(1,)@=*;G4(-;*=N,:E--/=3&&&&&&&&&&&&&&&&&&&!)456%+&)456)(*,G)H(./:;;<6==(#E$<%(1,)@=*;G4(-;*=ME)+E/=3&&&&&&&&&&&&&&&&&&&!)456%+&)456)(*,G)H(./:;;<6==(#E$<%(1,)@=*;G4(-;*=O:G,-@/=3&
!=)456KE@3&!=*6*;G4(-;*3&
!=)4568(*H)+<;+,-3&
!=)4567893&
!"#$%
!#
&'(#)*+,%
!"#$%&'()*+,-./012/"3&!)456789&#$%-*6)45./:;;<6==>>>1>?1,)@=0AAA=2B=BBC)45C*D-;E#C-*F/&
#$%-*6*./:;;<6==(#E$<%(1,)@=*;G4(-;*=',HEIF/3&
!)4568(*H)+<;+,-&)456EI,G;./:;;<6==(#E$<%(1,)@=H,G)*(*=J1220/3&!*6*;G4(-;*&)456<E)*(PD<(./Q,%%(H;+,-/3&!)4568(*H)+<;+,-&)456EI,G;./:;;<6==(#E$<%(1,)@=*;G4(-;*=L$D/=3&!)4568(*H)+<;+,-&)456EI,G;./:;;<6==(#E$<%(1,)@=*;G4(-;*=M,:E$(4/=3&!)4568(*H)+<;+,-&)456EI,G;./:;;<6==(#E$<%(1,)@=*;G4(-;*=N,:E--/=3&
!=*6*;G4(-;*3&!=)4568(*H)+<;+,-3&
!=)4567893&
!$
-./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
!"
!"#$%&'()*+,-./012/"3&!456789:;&)<=>?5@&A!4;B8C89&#*<&DEEF>GGHHH1HI1,)JGK220GLMNOPD($QR/3S3
!)<=>?5@&#$%-*>)<=./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&
!G)<=>?5@3&
!"
#$%
&'()
*+,-
,.)*/-
(012*3
#$
%&'4(3-567156*
4310-,(2-(3-567156*8
9 %&'(,-2,+:8[)<=*>:),F()EV%&%:+;*7*.*/-(3-567156*
9 %&'(5.)+<-(3-567156*'[)<=*><,$Q+-&&%:+;*7*.*/-(=,0+(>1<=17+76+(3-567156*[)<=*>)Q-J(&&%:+;*7*.*/-(:,?@+(>1<=17+76+(3-567156*[)<=*>*YW:),F()EV6=&U%*2,-A-(B4C(,+3-.*/1(<+:(
3-567156<*
#(
D=*510-7/+(3-567156*
9 D=*5?/+<1(3-567156*(,-2,+:10(=1:1E71(>16(,-2,+:+(0(=,1@,-<5>*)(/+2*>*)
9 F5+(3-567156*(51(:+;*7*,-7+(>16(=,*<+,>*()<=>:),F()EV
9 G*(1<+/*6+0(@3+:+(H6+07156*(3-567156*I9 J,*(:+;*7*.*/*(2-31@+(0,+:7156*(3-)>1(?=1,-E3/-<1(
6?:*(157107+(6*=+(7=,K(#*<>+-E(J()
#!
J,*<+,9 #-567156((#>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 #-567156(*<-(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&
!!
!"#$%&#$'()&*'+
, -)$&(./(0/1'#$0'0"+"(&#/2"3
!"#$%&"'()"*+,"#$%-./0")123*)")#4'05,
!"#$3%#'6728,"#$%")3'9":)/0;<'*'"=)>2:?)0@5,
!"#$3%"781),"#$%")3'9":)/0;&)"3'80@5,
!@"#$%&"'()"*+5,
, 4"*5"+."(6/5(#/5/7'3
!"#$%&"'()"*+,"#$%-./0")7"A)7*B)1C''605,
!"#$3%#'6728,"#$%")3'9":)/0;&733)81)"=)>2:?)0@5
!"#$3%"781),"#$%")3'9":)/0DE3#F28*)1)"0@5,
!@"#$%&"'()"*+5,
!"
8&59+"#$%&#$'
, 80'6"0%'()&*%':(./(;&5+"#$%&#$()&*%':"3
)E%#"2G)","#$%*+(),"#$%&"'()"*+,H,
)E%("267"+."2G)","#$%*+(),"#$%&"'()"*+,H,
)E%("267"+."2G)","#$3%39I&"'()"*+J$,)E%#"2G)",H,
!"#$%&"'()"*+,"#$%-./0#"2G)"05,
!"#$3%#'6728,"#$%")3'9":)/0;<'*'"=)>2:?)0@5,
!@"#$%&"'()"*+5,
!"#$%&"'()"*+,"#$%-./0("267"+."2G)"05,
!"#$3%39I&"'()"*+J$,"#$%")3'9":)/0;#"2G)"0@5,
!@"#$%&"'()"*+5,
!" #$%&'()*+%$,-.-)/0*,1%$,%&'()*+%',$+*-,1! 2'()*03%456783%30%930-)$%:+*+
;" 930-)$%:+*+%3/'()/)0*+<38+%0+%&'()*.! =+*)>3%',$+*-3%,?&*+8+8,@
A" 4'(3-+<38)%! =+8%&)%$,B+8+%&%',$+*-3@
C" D+&()$083%-,>+-3! =+8%/+08-+@
!'%:/5(5"$"=(+&3E03%&'()*
! "
#$%& #$%&#$%&
!"#$%&'()"&)
*"+&,-$./01/")
-23"&451/6)
<%(#"6(1+&2"+/%('%=&06>(;0&#$&0
?> @4!(*"3((" A+&2"+%'(B%':"$%'(CD#
" 8&'*)/5&)"+%'(6/E"%'*6'
F> GHI!(:&$(#:B;%"(&2+':"()#/2'%/
J> GK;/09;&)/*")/
'
!"#$%&'()*("&+),&-
!"#$%&'
.&"(/&(-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%&,*)(=!>?/)()*(2"&2%&,&*&(0,#"),-&
<2%&,*)(=!>?/)()*('10@52?)
!"#$%&
$
!"#$%&'& <%1$&(%10,*#0,)A
BC(=!>?/)(*5D)/#(2")-1,*&(-'&0*)4&9
EC(F10@52?)(,&'&%/)/#(*1(G)40*)('*#8)7)(2#D1,4#-*)@(-)"#-9(
HC(I&('#"&'#(D&G)*)"1,)(2#-&31-('&D(2#D1,4#-*)')(#$/&4,)9(
!"#$%&
'
!"#$%&
(
!"#$%&
)
<2%&,*)(=!>?/)("13D&%)/#(02%&,(*1(-",#-&(3(#J"1/1')
!"#$%&'()*"+&,-(
! "
#$%
!"#$%&'
& $ '
!"#$%&'(
!"#$%&'(
!"#$%&'(
#$%
#$%
#$%
#$%
#$% #$%
#$%
#$%
#$%
!"#$%&'()*+,#-#.'/*(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/<*)2/3
?" @%*3/0:%*:%>1%$'*:%*#+,*4'A%1%B)*=$%&'(3/*+CD*$%:'10/
E" F0;.=G)*+CD*>1'B0/*:&=A)<*#+,9*:'*;'<0%*;.=:./*%:0&)./.%*>%&%:3/*%(./01/"
7)2*H/&3/&>-I//*5JJK
<11$LMMNNN"N?"%&AMC/>)A3,>>=/>MI)30/:C'1'"<12;
@%0),#0)'(0"-*)%("#;*3%,'+("#:%)9#;
! @:%&0%;)*;'<0%*$=(;)O)&'*$%:'10/*3'*>$;/1=*$%B/4'3)<*$%:'10%B
! P31)1/1/*>%*$%B/4'3/*>*$%B/4'B'2)" @&/'O).'*A;%(';3/A'*$%:'10%B3/A'*A&'Q'9*0)*$%B/4=./*
$%:'10%B3/*B)&/*)3*%2%A%G'*%:0&)B'3./*3%B)<*B)&%B"
!***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.'"*
)12*3$2$',&/(4&)*"#$%&'(0))*"+&,-"#)'&)5*3$,6
! ()*+,*-)./0,1
! "
#$%
!"#$%&'
& $ '
!"#$%&'(
!"#$%&'(
!"#$%&'(
#$%
#$%
#$%
#$%
#$% #$%
#$%
#$%
#$%
!"#$%&'(&')$*+,'$-./.$
! !"#$%&'()*" !"#$%&%'()*+,-#./-*+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$7.8$9::;
! 9(2,:;;,8%$*-)-5,<=>,/'-*%&,! ?4-$%,@A;B;;;,<=>,3-5+6(5,8+2,3-275%'%
<2&=,2$>-?$+@A,0.A,
! <=>,3-5+6(5+,%6,=C3+2%(,)(,2'"D+,3-2(/4-5)+,5%'+
!"##$%&&'($)'*+,-./&.)0-1.2)&3).4*567-84%0+9):07
!"##$%&&080,/)-5+9)0,-./&;<=>?=<67,77
!"##$%&&'($)'*+,-./&.)0-1.2)&@*9A3).5).0BC))67
-84%0+9):07!"##$%&&888D,8*8*00,E1B
().4*5,')&'(4$&.)0-1.2)&$).0-5&?>>>>F67,77
%*-$01&2(,$'.$3+4,/56$B,+/,=1,2$9::C
!"#$$%&'()*$+,$-./*012$3,(*4$5667 !"#$%&'()*$+,$-./*012$81/'9$5667
!"#$%&'()*$+,$-./*012$:*.0$56;6 !"#$-0,0'-0'),2$81/'9$5667
!"#$%& '"(")(*+%,-./ 0(")(1-"23 '"(")(4%&5/ 0(")(
4%&5/
3*<', =7>?666?666 ;6@AB;?5C>?666 6@>B
D1&/'4,0'E+-5;5?666?666 C@5B A?755?666 C@CB
!'F*$:4'*+4*- 5?A57?666?666 C=@;B;CC?;77?666 >7@AB
G*EH(,.I'4$#,0, C?67J?666?666 A=@6BA?6C>?666 5@JB
K-*($G*+*(,0*$
LE+0*+0J=?666?666 ;@;B
;?MM7?666 ;@6BL(E--N#EO,'+
5;A?666?666 C@5B C?775?666 5@JB*"6$-
789:78;;;8;;; <=>8?=>8;;;
!"#"$%&&%'(")*%+&,-".*'/"01)123'42
!!!"#$%&'(%)*
! "
#$%&'
!"#$%&'()*
( ) *
!"#$%&'()*
!"#$%&'()*
!"#$%&'()*
#$%&'
#$%&'
#$%&'
#$%&'
#$%&' #$%&'
#$%&'
#$%&'
#$%&'
+$,-./01(2'($*
3'()$%04,!,5,*/6#*
3'()$%04,!,7-89*$-*
!!!+')!$',&-!.'/*0%1-!2!3*14
5/2&'$.%&!6'!#-7*6'.*!#-0'3&*
" #+,-.+/012!1034512678#92:;(<
" 7+1,.5426=:2!51.%&92)*<
" >?5&@%&A2B)=2!10345126>?5&@%&A92:C<
" D%/'%4/2B)=2!10345126D%/'%4/92:;(<
" E-F,0.G/26EH2@+,492:C<
" )%4I02EJ?51G+/+2!10345126=:2!51.%&92)*<
" =5&K%1526)*B89281.+&G<
8-7*6'.%!#-0'3&%!7!#/*#$*3*.%,!23-/%37',!91*2,:#2;
"#$%&'(%)*!2!2#*(%<%=.-!0-1*.->!&%!:#-/'?$)')-!#-7*6'.*!#-0'3&*!%6!2#$*3'
! "
>,L5A/
( )
>,L5A/
>,L5A/
>,L5A//
>,L5A/
>,L5A/ >,L5A/
>,L5A/
:($2-,!$%;'$9
!"#$%&'()*+,-(*(.,/(*('/,0$($%'*"#0-,1*'%*23,*"#1%/),4*)(*3#*1#3/#"'(*5%*#&6,)/7*
8-0'3&-7.'!<:6%)'
8'%'(*"$#&-,.(9*
****:$,3-()%2,*3;,.****<,=,2%'6,*',)#'3(3/,'/'#3/(
*
<#&'),.'=,
!"#$%&'()*+&,$!"#$%&'(&)*
+,#-.&*'#/0&*.&*$%)"'*%#-&'0#+
1%#2&3)4&5*67%"-(&8*9"+:;*(.*<)(=02**%#-&'0"
>#-&'0#+.(*$%)"'*(.*($0&).(0(
! <&)=#.$*?@AB8*C,(.&D
!***,''%5EE(F$G$";G"-;G=.E$"2+(="$EH&)=#.$E#34"='$"&2=,E(.-"IG4$%
! B(JGK&*?6L9@8*@2")&.-D
!***,''%5EEFFFG-"2(G("E
! BF##J)"*?1M7C8*1BND
! O($(P&+*?6L9@8*@2")&.-D
! A&'$#.*?Q%".*1.(+"2$(':8*1RD
Recommended