)$.8/7$ ,1)250$7,.< 0$6$5<.29$ 81,9(56,7$ 9 %51 3 tNODG\ N S HGQiFH 39 $UFKLWHNWXUD UHODQtFK GDWDEi]t Milan Drášil, únor 2003 =$'1Ë 3 Ë./$'8 352 39 3 Ë./$' 3 Ë./$' 3 Ë./$' 3 Ë./$' 3 Ë./$' 3 Ë./$' 3 Ë./$' 3 Ë./$' 3 Ë./$' )DNXOWD ,QIRUPDWLN\ 0DVDU\NRYD 8QLYHUVLWD Y %UQ 39 S tNODG\ 1 =$'1Ë 3 Ë./$'8 352 39 1) .DWDVWU QHPRYLWRVWt YHGH ~GDMH R YODVWQLFWYt SR]HPN SDUFHO D EXGRY 2) 1HPRYLWRVW P H YODVWQLW ÄRSUiYQ Q VXEMHNW D WR L iVWHQ 3) 2SUiYQ Q VXEMHNW P H YODVWQLW YtFH QHPRYLWRVWt 4) 2SUiYQ Q VXEMHNW MH EX I\]LFNi RVRED SUiYQLFNi RVRED QHER VSROHQp MP Qt PDQHO 5) Právnická osoba je identifikována ,ý2HP I\]LFNi RVRED MH LGHQWLILNRYiQD URGQP tVOHP 6) 5RGQp tVOR Pi VWUXNWXUX EX RRMMDDccc nebo RRMMDDcccc. Pokud je rodné tVOR GHVHWLPtVWQp SRWRP MH G OLWHOQp 7) 3DUFHOD MH LGHQWLILNRYiQD NyGHP NDWDVWUiOQtKR ~]HPt VWiWQt tVHOQtN W\SHP SDUFHO\ VWDYHEQt QHVWDYHEQt SDUFHOQtP tVOHP D SRGORPHQtP 8) %XGRYD MH LGHQWLILNRYiQD NyGHP iVWL REFH VWiWQt tVHOQtN D tVOHP SRSLVQP UHVS HYLGHQQtP 9) 2EHF VH VNOiGi ] QHER YtFH iVWt REFH 10)Obec se skládá z 1, nebo více katastrálních území. 11)ýiVWL REFH D NDWDVWUiOQt ~]HPt QHMVRX VNODGHEQp 12)9ODVWQLFNp Y]WDK\ MVRX YHGHQ\ QD OLVWHFK YODVWQLFWYt D WR WDN H Y iVWL $ MVRX XYHGHQ\ RSUiYQ Qp VXEMHNW\ VH podílem vlastnictví ke všem nemovitostem, které jsou uvedeny v ásti B. QDS Okres: 3209 Praha - východ 2EHF tDQ\ .DW ~]HPt tDQ\ X 3UDK\ ýtVOR /9 $ 9ODVWQtN SR DGt MPpQR Qi]HY D DGUHVD ,GHQWLILNiWRU Podíl 1 Josef Novák Podlesná 11, Brno 581205/3256 1/2 2 Pavel Novák Sady 15, Olomouc 351231/454 1/2 B Parcelní 9P UD ýiVW obce Druh ... ... tVOR P tVOR %XGRY\ 1452/2 4584 louka RUQi S GD . . 13)6RXHW SRGtO QD OLVWX YODVWQLFWYt MH 14)1D OLVWX YODVWQLFWYt MH XYHGHQD DOHVSR MHGQD QHPRYLWRVW 15)1HPRYLWRVW MH XYHGHQD SUiY QD MHGQRP OLVWX YODVWQLFWYt 1 3 tNODG\ MVRX HHQ\ Y UiPFL 5'%06 25$&/( SUR MLQp 64/ GDWDEi]H WDWR HHQt QHPXVt SODWLW )DNXOWD ,QIRUPDWLN\ 0DVDU\NRYD 8QLYHUVLWD Y %UQ 39 S tNODG\ 2 3 Ë./$' 9\WYR WH NRQFHSWXiOQt GDWRY PRGHO UHSUH]HQWRYDQ (5 GLDJUDPHP Parcela je na listu vlastnictví 1,10,n Budova je na listu vlastnictví 1,1 0,n Vlastní 0,n 0,n ¤¨§ 1,n1,1 Budovy v obci 0,n 1,1 Obec se skládá z KÚ 1,n 1,1 Parcely v KÚ 1,n 1,1 Obce za okres 1,n 1,1 ParcelaList vlastnictvíBudova 2SUiYQ Q VXEMHNW ObecýiVW REFH Katastrální území Okres )DNXOWD ,QIRUPDWLN\ 0DVDU\NRYD 8QLYHUVLWD Y %UQ 39 S tNODG\ 3 3 Ë./$' 1DYUKQ WH ORJLFN GDWRY PRGHO UHSUH]HQWRYDQ 3'0 GLDJUDPHP WM WDEXON\ D UHIHUHQQt LQWHJULWD Návrh fyzického datového modelu bude kopíruje entity z 3 tNODG , s jedinou výjimkou. Vazba ,,9ODVWQt (kardinality M:N) je realizována tabulkou. ID = ADRESA_OKRES ID = ID_CAST_OBCE ID_KU = LV_KU ID_LV = CIS_LV ID = ID_OBEC ID = ID_OBEC ID = ID_OKRES ID = ADRESA_OKRES ID = ADRESA_OBEC ID = ADRESA_COBCE ID = SJM_PARTNER1 ID = SJM_PARTNER2 ID = ID_KU ID_KU = ID_KU ID_LV = CIS_LV ID_KU = ID_KU ID_LV = ID_LV ID = ID_OPSUB P01_BUDOVA TYP_CISLA CISLO_DOMOVNI ID_CAST_OBCE LV_KU CIS_LV VARCHAR2(1) NUMBER(5) NUMBER(5) NUMBER(6) NUMBER(5) P01_CAST_OBCE ID NAZEV ID_OBEC NUMBER(5) VARCHAR2(64) NUMBER(5) P01_KAT_UZ ID NAZEV ID_OBEC NUMBER(5) VARCHAR2(64) NUMBER(5) P01_LV ID_KU ID_LV NUMBER(6) NUMBER(5) P01_OBEC ID NAZEV ID_OKRES NUMBER(5) VARCHAR2(64) NUMBER(5) P01_OKRES ID NAZEV NUMBER(4) VARCHAR2(64) P01_OPSUB ID ICO RC SJM_PARTNER1 SJM_PARTNER2 PRIJMENI JMENO TITUL_PRED TITUL_ZA ADRESA_OKRES ADRESA_OBEC ADRESA_COBCE ADRESA_CPOP NUMBER NUMBER(8) NUMBER(10) NUMBER NUMBER VARCHAR2(128) VARCHAR2(64) VARCHAR2(16) VARCHAR2(16) NUMBER(4) NUMBER(5) NUMBER(5) NUMBER(5) P01_PARCELA ID_KU PARC_TYP PARC_CIS PAR_POD DRUH_POZ NEM_VYUZ VYMERA CIS_LV NUMBER(6) NUMBER(1) NUMBER(4) NUMBER(3) NUMBER(2) NUMBER(3) NUMBER(9) NUMBER(5) P01_VLASTNI ID_KU ID_LV ID_OPSUB PODIL_CITATEL PODIL_JMENOVATEL NUMBER(6) NUMBER(5) NUMBER NUMBER NUMBER )DNXOWD ,QIRUPDWLN\ 0DVDU\NRYD 8QLYHUVLWD Y %UQ 39 S tNODG\ 4 3 Ë./$' Sestavte zakládací skript pro tabulky P01_OKRES,P01_OBEC,P01_CAST_OBCE, P01_KAT_UZ,P01_BUDOVA,P01_PARCELA. Dbejte na to, aby NDNi WDEXOND P OD SULPiUQt NOt D E\O\ UHDOL]RYiQ\ YHFKQ\ YD]E\ ] diagramu v 3 tNODG DROP TABLE P01_OKRES cascade constraints; create table P01_OKRES ( ID number(4), NAZEV varchar2(64), constraint P01_OKRES_PK primary key (id) ); DROP TABLE P01_OBEC cascade constraints; create table P01_OBEC ( ID number(5), NAZEV varchar2(64), ID_OKRES number(5) NOT NULL, constraint P01_OBEC_PK primary key (ID), constraint P01_OBEC_FK01 foreign key (ID_OKRES) references P01_OKRES(ID) ); DROP TABLE P01_CAST_OBCE cascade constraints; create table P01_CAST_OBCE ( ID number(5), NAZEV varchar2(64), ID_OBEC number(5) NOT NULL, constraint P01_CAST_OBCE_PK primary key (ID), constraint P01_CAST_OBCE_FK01 foreign key (ID_OBEC) references P01_OBEC(ID) ); DROP TABLE P01_KAT_UZ cascade constraints; )DNXOWD ,QIRUPDWLN\ 0DVDU\NRYD 8QLYHUVLWD Y %UQ 39 S tNODG\ 5 create table P01_KAT_UZ ( ID number(6), NAZEV varchar2(64), ID_OBEC number(5) NOT NULL, constraint P01_KAT_UZ_PK primary key (ID), constraint P01_KAT_UZ_FK01 foreign key (ID_OBEC) references P01_OBEC(ID) ); DROP TABLE P01_BUDOVA cascade constraints; create table P01_BUDOVA ( TYP_CISLA VARCHAR2(1), /* P - popisne, E evidencni */ CISLO_DOMOVNI number(5), /* cislo popisne nebo evidencni */ ID_CAST_OBCE number(5) NOT NULL, CIS_LV number(5), constraint P01_BUDOVA_PK primary key (ID_CAST_OBCE,TYP_CISLA,CISLO_DOMOVNI), constraint P01_BUDOVA_FK01 foreign key (ID_CAST_OBCE) references P01_CAST_OBCE(ID), constraint P01_BUDOVA_CH01 check (TYP_CISLA IN ('E','P')), constraint P01_BUDOVA_CH02 check (CISLO_DOMOVNI>0) ); drop table P01_PARCELA cascade constraints; create table P01_PARCELA ( ID_KU number(6), PARC_TYP number(1), PARC_CIS number(4), PAR_POD number(3), DRUH_POZ number(2), NEM_VYUZ number(3), VYMERA number(9), CIS_LV number(5), constraint P01_PARCELA_PK primary key (ID_KU,PARC_TYP,PARC_CIS,PAR_POD), constraint P01_PARCELA_FK01 foreign key (ID_KU) references P01_KAT_UZ(ID), constraint P01_PARCELA_CH01 check (PARC_TYP IN ('1','2'))); )DNXOWD ,QIRUPDWLN\ 0DVDU\NRYD 8QLYHUVLWD Y %UQ 39 S tNODG\ 6 3 Ë./$' 'R ]DNOiGDFtKR 64/ VNULSWX GRSO WDEXON\ 2SUiYQ QFK VXEMHNW 3B2368% VH VORXSFL - ,ý2 - 5ý - 5ý 5ý X 6-0 - Jméno - 3 tMPHQt - 7LWXO\ S HG MPpQHP - Tituly za jménem - Adresa_okres - Adresa obec - $GUHVD iVW REFH - $GUHVD tVOR SRSLVQp RULHQWDQt - + nutné vazební sloupce /LVW YODVWQLFWYt 3B/9 VH VORXSFL - ID (identifikace) - + nutné vazební sloupce 9D]ED PH]L 2SUiYQ QPL VXEMHNW\ D /9 3B9/$671Ë VH VORXSFL - 3RGtO LWDWHO - Podíl ­ jmenovatel - + nutné vazební sloupce Uprav v 64/ VNULSWX FK\E MtFt YD]E\ )DNXOWD ,QIRUPDWLN\ 0DVDU\NRYD 8QLYHUVLWD Y %UQ 39 S tNODG\ 7 create table P01_OPSUB ( ID int, ICO number(8), RC number(10), SJM_PARTNER1 int, SJM_PARTNER2 int, PRIJMENI varchar2(128), JMENO varchar2(64), TITUL_PRED varchar2(16), TITUL_ZA varchar2(16), ADRESA_OKRES number(4) not null, ADRESA_OBEC number(5) not null, ADRESA_COBCE number(5) not null, ADRESA_CPOP number(5) not null, constraint P01_OPSUB_PK primary key (ID), constraint P01_OPSUB_FK1 foreign key (ADRESA_OKRES) references P01_OKRES(ID), constraint P01_OPSUB_FK2 foreign key (ADRESA_OBEC) references P01_OBEC(ID), constraint P01_OPSUB_FK3 foreign key (ADRESA_OBEC) references P01_OBEC(ID), constraint P01_OPSUB_FK4 foreign key (ADRESA_COBCE) references P01_CAST_OBCE(ID), constraint P01_OPSUB_FK5 foreign key (SJM_PARTNER1) references P01_OPSUB(ID), constraint P01_OPSUB_FK6 foreign key (SJM_PARTNER2) references P01_OPSUB(ID) ); create table P01_LV ( ID_KU number(6), ID_LV number(5), constraint P01_LV_PK primary key (ID_KU,ID_LV), constraint P01_LV_FK1 foreign key (ID_KU) references P01_KAT_UZ(ID) ); alter table P01_PARCELA add constraint P01_PARCELA_FK3 foreign key (ID_KU,CIS_LV) references P01_LV(ID_KU,ID_LV); alter table P01_PARCELA modify CIS_LV not null; alter table P01_BUDOVA add LV_KU number(6); )DNXOWD ,QIRUPDWLN\ 0DVDU\NRYD 8QLYHUVLWD Y %UQ 39 S tNODG\ 8 alter table P01_BUDOVA add constraint P01_BUDOVA_FK3 foreign key (LV_KU,CIS_LV) references P01_LV(ID_KU,ID_LV); alter table P01_BUDOVA modify CIS_LV not null; alter table P01_BUDOVA modify LV_KU not null; create table P01_VLASTNI ( ID_KU number(6), ID_LV number(5), ID_OPSUB int, PODIL_CITATEL int, PODIL_JMENOVATEL int, constraint P01_VLASTNI_PK primary key (ID_KU,ID_LV,ID_OPSUB), constraint P01_VLASTNI_FK1 foreign key (ID_KU,ID_LV) references P01_LV(ID_KU,ID_LV), constraint P01_VLASTNI_FK2 foreign key (ID_OPSUB) references P01_OPSUB(ID) ); )DNXOWD ,QIRUPDWLN\ 0DVDU\NRYD 8QLYHUVLWD Y %UQ 39 S tNODG\ 9 3 Ë./$' Sestrojte dotazy, které vrátí: a) -PpQR S tMPHQt D DGUHVX RSUiYQ QpKR VXEMHNWX ,' %d) b) 3DUFHO\ D SRGtO\ YH YODVWQLFWYt RSUiYQ QpKR VXEMHNWX ,' %d) c) Sestrojte dotaz, který vrátí všechny vlastníky parcely, podíly a jejich adresy, je-li vstupem její úplná identifikace (tj. jejt SULPiUQt NOt select OS.JMENO, OS.PRIJMENI, OK.NAZEV, OB.NAZEV, CO.NAZEV, OS.ADRESA_CPOP from P01_OKRES OK, P01_OBEC OB, P01_CAST_OBCE CO, P01_OPSUB OS where OS.ID =%d AND OS.ADRESA_OKRES=OK.ID AND OS.ADRESA_OBEC =OB.ID AND OS.ADRESA_COBCE=CO.ID; select KU.NAZEV, PA.PARC_TYP, PA.PARC_CIS, PA.PAR_POD, VL.PODIL_CITATEL||`/`||VL.PODIL_JMENOVATEL from P01_VLASTNI VL, P01_PARCELA PA, P01_KAT_UZ KU where VL.ID_OPSUB=%d AND VL.ID_KU =PA.ID_KU AND VL.ID_LV =PA.CIS_LV AND PA.ID_KU =KU.ID; )DNXOWD ,QIRUPDWLN\ 0DVDU\NRYD 8QLYHUVLWD Y %UQ 39 S tNODG\ 10 3 Ë./$' Zrušte v WDEXOFH UHVS ]DNDWH SRXtYiQt YL] alter table .. modify .. disable) integritní RPH]HQt SULPiUQtKR NOtH 3B2368%B3. 3RNXVQ YORWH GR 3B2368%B3. Q NROLN iGN ] QLFK Q NWHUp PDMt VWHMQi ,' a) 2GVWUD WH GXSOLFLWQt iGN\ P01_OPSUB_PK b) Znovu povolte integritní omezení P01_OPSUB_PK. 0HWRGD D FUHDWH VHTXHQFH S E DOWHU WDEOH 3B2368% DGG 320 LQW F XSGDWH 3B2368% VHW SRP SQH[WYDO G GHOHWH IURP 3B2368% $ ZKHUH SRP! VHOHFW PD[SRP IURP 3B2368% % ZKHUH DLG ELG H DOWHU WDEOH 3B2368% GURS FROXPQ 320 I GURS VHTXHQFH S 0HWRGD .DG 64/ 6(/(&7 83'$7( obsahuje fiktivní sloupec 52:180, který obsahuje ]SUDFRYiYDQ iGHN D DOWHU WDEOH 3B2368% DGG 320 LQW E XSGDWH 3B2368% VHW SRP URZQXP G GHOHWH IURP 3B2368% $ ZKHUH SRP!VHOHFW PD[SRP IURP 3B2368% % ZKHUH DLG ELG 0HWRGD Fiktivní sloupec 52:,' Y NDGp WDEXOFH REVDKXMH ÄDGUHVX iGNX WDEXON\ MH XQLNiWQt SUR celou instanci databáze ORACLE. GHOHWH IURP 3B2368% $ ZKHUH 52:,'! VHOHFW PD[52:,' IURP 3B2368% E ZKHUH DLG ELG )DNXOWD ,QIRUPDWLN\ 0DVDU\NRYD 8QLYHUVLWD Y %UQ 39 S tNODG\ 11 3 Ë./$' Realizujte trigger, který na tabulce P01_OPSUB DXWRPDWLFN\ QDSOQt SULPiUQt NOt (ID) hodnotou se sekvence P01_OPSUB_SEQ a zkontroluje korektnost sloupce RC URGQp tVOR 3 Ë./$' V tabulce 3B2368% MVRX UHGXQGDQWQt FL]t NOtH $'5(6$B2.5(6 3B2.5(6 $'5(6$B2%(& 3B2%(& jejich hodnota lze odvodit z tabulek 3B&$67B2%&( a 3B2%(&.2 Mohou však být nekonzistentní, tj. v MHGQRP iGNX WDEXON\ 3B2368% je uvedena REHF NWHUi QHQt QDG t]HQD iVWL REFH DWG a) =IRUPXOXMWH 64/ VNULSW NWHU W\WR NOtH XYHGH GR VRXODGX b) =DMLVW WH triggerem), aby k takové situaci nemohlo dojít. 3 Ë./$' 'DWRY PRGHO GRSO WH WDEXONRX CREATE TABLE P01_REPORT ( ID INT, LINE_NO INT, LINE VARCHAR2(1024), CONSTRAINT P01_REPORT_PK PRIMARY KEY (ID,LINE_NO) ) Sestavte PL/SQL proceduru GENERATE_LV (v package P01) SDFNDJH 3 LV SURFHGXUH GENERATE_LV .8 in INT, /* katastrální uzemí */ /9 LQ ,17 tVOR OLVWX YODVWQLFWYt ,' LQ LQW UHSRUW LG HQG 3 SR MHMtP SURYHGHQt begin P01. GENERATE_LV(NXOY[[); end; / 2 1HPXVt VH QXWQ MHGQDW R DQDO\WLFNRX FK\EX G YRGHP P H EW ]U\FKORYiQt GRWD] )DNXOWD ,QIRUPDWLN\ 0DVDU\NRYD 8QLYHUVLWD Y %UQ 39 S tNODG\ 12 S tND] SELECT LINE FROM P01_REPORT WHERE ID=[[ ORDER BY LINE_NO vrátí výpis - list vlastnictví v WpWR IRUP Okres: 3209 Praha - východ 2EHF tDQ\ .DW ~]HPt tDQ\ X 3UDK\ ýtVOR /9 $ 9ODVWQtN SR DGt MPpQRQi]HY D DGUHVD ,GHQWLILNiWRU Podíl 1 Josef Novák Podlesná 11, Brno 581205/3256 1/2 2 Pavel Novák Sady 15, Olomouc 351231/454 1/2 B Parcelní 9P UD ýiVW ýtVOR Druh tVOR P REFH EXGRY\ 1452/2 4584 louka RUQi S GD