{"id":1004,"date":"2020-05-14T23:37:14","date_gmt":"2020-05-14T21:37:14","guid":{"rendered":"http:\/\/skolarbbos.net\/?p=1004"},"modified":"2020-05-29T14:32:48","modified_gmt":"2020-05-29T12:32:48","slug":"referencijalni-integritet","status":"publish","type":"post","link":"https:\/\/skolarbbos.net\/?p=1004","title":{"rendered":"Referencijalni integritet"},"content":{"rendered":"<h2>Opcija Enforce Referential Integrity<\/h2>\n<p>Na poslednoj slici iz prethodnog predavanja prime\u0107uju se dve kolone: <strong>Table<\/strong> i <strong>Related Table<\/strong>. Prva se odnosi na tabelu <strong>Mesto<\/strong> i njen atribut <strong>IDmesta<\/strong>, a druga na tabelu <strong>U\u010denici<\/strong> i njen atribut <strong>Mesto<\/strong>. Ispod ovoga, postoji opcija <strong>Enforce Referential Integrity<\/strong> koju je mogu\u0107e uklju\u010diti. Ova opcija se odnosi na referencijalni integritet. Ukoliko se uklju\u010di, baza podataka ne\u0107e dozvoliti unos vrednosti spoljnog klju\u010da ukoliko ona ne postoji kao vrednost primarnog klju\u010da odgovaraju\u0107e tabele. U ovom konkretnom slu\u010daju to bi zna\u010dilo da baza podataka ne\u0107e dozvoliti korisniku da u tabelu <strong>U\u010denici<\/strong> upi\u0161e vrednost atributa <strong>Mesto<\/strong> koja ne postoji u tabeli <strong>Mesto<\/strong>.<\/p>\n<h2><a name=\"_Toc384656582\"><\/a>Referencijalni integritet &#8211; Opcija Cascade Update Related Fields<\/h2>\n<p>Kada se opcija <strong>Enforce Referential Integrity<\/strong> uklju\u010di, dozvoljava se uklju\u010divanje i preostale dve opcije. <strong>Cascade Update Related Fields<\/strong>, kao \u0161to naziv ka\u017ee, kaskadno a\u017eurira (Update) povezuju\u0107a polja (Fields). To zna\u010di da, ukoliko se promeni primarni klju\u010d tabele, vrednost tog primarnog klju\u010da u ulozi spoljnog klju\u010da odgovaraju\u0107e tabele \u0107e se automatski a\u017eurirati, tj. dobiti novu vrednost. U primeru, ukoliko bi se promenila neka vrednost atributa <strong>IDmesta<\/strong> u tabeli <strong>Mesto<\/strong>, automatski bi se ta vrednost dodelila odgovaraju\u0107em spoljnom klju\u010du <strong>Mesto<\/strong> u tabeli <strong>U\u010denici<\/strong>. Ukoliko se naziv mesta u tabeli <strong>Mesto<\/strong> promeni, automatski bi se prikazivala nov naziv mesta polja mesto u tabeli <strong>U\u010denici<\/strong>, jer je pode\u0161eno da ovo polje prikazuje nazive mesta, a ne <strong>IDmesta<\/strong>.<\/p>\n<h2><a name=\"_Toc384656583\"><\/a>Referencijalni integritet &#8211; Opcija Cascade Delete Related Records<\/h2>\n<p>Tre\u0107a opcija, <strong>Cascade Delete Related Records<\/strong>, razlikuje se od prethodne opcije u dve re\u010di: <strong>Delete<\/strong> i <strong>Records<\/strong>. Kao \u0161to naziv ka\u017ee, ova opcija omogu\u0107ava kaskadno brisanje (Delete) povezuju\u0107ih slogova, tj. instanci, objekata (Records). Dakle, ukoliko bi se obrisala neka instanca tabele, automatski bi se obrisale sve instance odgovaraju\u0107e tabele(a) koje su povezane sa primarnim klju\u010dem obrisane instance. U primeru, ukoliko bi se obrisalo neko mesto, dakle jedna cela instanca iz tabele <strong>Mesto<\/strong>, obrisali bi se i svi u\u010denici iz tabele <strong>U\u010denici<\/strong> koji su iz tog mesta, tj. svi koji sadr\u017ee primarni klju\u010d mesta koji je obrisan. U ovom slu\u010daju to ne bi imalo smisla, pa ne bi trebalo uklju\u010diti ovu opciju prilikom povezivanja tabela <strong>Mesto<\/strong> i <strong>U\u010denici<\/strong>. Me\u0111utim, pri povezivanju tabela <strong>U\u010denici<\/strong> i <strong>Telefoni<\/strong> ova opcija se preporu\u010duje, jer ukoliko do\u0111e do fluktuacije nekog u\u010denika, odnosno njegovog brisanja iz baze podataka, svakako bi se preporu\u010dilo i brisanje svih njegovih brojeva telefona, jer nema smisla \u010duvati ih.<\/p>\n<p><video controls=\"controls\" width=\"606\" height=\"340\"><source src=\"http:\/\/skolarbbos.net\/wp-content\/uploads\/2018\/05\/24.-i-25.-Kreiranje-veza.-Referencijalni-integritet-tabela.mp4\" type=\"video\/mp4\" \/><\/video><\/p>\n<p>Dakle, mo\u017ee se uo\u010diti da je veza prepoznata kao veza tipa one-to-many i nakon svih pode\u0161avanja, tj. uklju\u010divanja prve dve opcije i potvr\u0111ivanjem na dugme <strong>Create<\/strong>, veza izgleda kao na slede\u0107oj slici (Slika 1).<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1005\" src=\"http:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet371.jpg\" alt=\"referencijalniintegritet371\" width=\"340\" height=\"201\" srcset=\"https:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet371.jpg 340w, https:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet371-300x177.jpg 300w\" sizes=\"auto, (max-width: 340px) 100vw, 340px\" \/><br \/>\n<em>Slika 1<\/em><\/p>\n<p>Dalje, potrebno je povezati tabele <strong>U\u010denici<\/strong> i <strong>Telefoni<\/strong>, prevla\u010denjem <strong>IDu\u010denika<\/strong> iz tabele <strong>U\u010denici<\/strong> na <strong>IDu\u010denika<\/strong> tabele <strong>Telefoni<\/strong> i uklju\u010diti potrebne opcije referencijalnog integriteta kao na slede\u0107oj slici (Slika 2).<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1006\" src=\"http:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet372.jpg\" alt=\"referencijalniintegritet372\" width=\"368\" height=\"261\" srcset=\"https:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet372.jpg 368w, https:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet372-300x213.jpg 300w, https:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet372-120x85.jpg 120w\" sizes=\"auto, (max-width: 368px) 100vw, 368px\" \/><br \/>\n<em>Slika 2<\/em><\/p>\n<p>Ova veza je, tako\u0111e, tipa one-to-many i izgleda kao na slede\u0107oj slici (Slika 3).<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1007\" src=\"http:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet373.jpg\" alt=\"referencijalniintegritet373\" width=\"357\" height=\"210\" srcset=\"https:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet373.jpg 357w, https:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet373-300x176.jpg 300w\" sizes=\"auto, (max-width: 357px) 100vw, 357px\" \/><br \/>\n<em>Slika 3<\/em><\/p>\n<p>Preostaje jo\u0161 povezivanje tabela <strong>U\u010denici<\/strong>, <strong>Istorije<\/strong> <strong>u\u010denika<\/strong> i <strong>Smer<\/strong>, \u0161to zapravo zna\u010di povezivanje tabela <strong>U\u010denici<\/strong> i <strong>Smer<\/strong> preko agregiraju\u0107e tabele <strong>Istorije<\/strong> <strong>u\u010denika<\/strong>. Dakle, vr\u0161i se povezivanje tabele <strong>U\u010denici<\/strong> sa tabelom <strong>Istorije<\/strong> <strong>u\u010denika<\/strong>, a zatim tabele <strong>Smer<\/strong> sa <strong>Istorijom<\/strong> u\u010denika. <strong>Vrlo je va\u017eno prevu\u0107i primarni klju\u010d IDu\u010denika iz tabele U\u010denici na IDu\u010denika u tabeli Istorija u\u010denika, a ne obrnuto<\/strong>, jer vrednost atributa IDu\u010denika nastaje u tabeli U\u010denici, a ne u tabeli Istorija u\u010denika. Isto se odnosi i na primarni klju\u010d tabele Smer. Na slikama u nastavku (Slika 4 i Slika 5), prikazano je kreiranje ove dve veze i njihov izgled u prozoru Relationships, respektivno.<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1008\" src=\"http:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet374.jpg\" alt=\"referencijalniintegritet374\" width=\"747\" height=\"265\" srcset=\"https:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet374.jpg 747w, https:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet374-300x106.jpg 300w\" sizes=\"auto, (max-width: 747px) 100vw, 747px\" \/><br \/>\n<em>Slika 4<\/em><\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1009\" src=\"http:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet375.jpg\" alt=\"referencijalniintegritet375\" width=\"533\" height=\"248\" srcset=\"https:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet375.jpg 533w, https:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet375-300x140.jpg 300w\" sizes=\"auto, (max-width: 533px) 100vw, 533px\" \/><br \/>\n<em>Slika 5<\/em><\/p>\n<p>&nbsp;<\/p>\n<p>Sada su sve tabele povezane i<em> Relationships<\/em> prozor izgleda kao na slede\u0107oj slici (Slika 7).<\/p>\n<p style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1010\" src=\"http:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet376.jpg\" alt=\"referencijalniintegritet376\" width=\"735\" height=\"437\" srcset=\"https:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet376.jpg 735w, https:\/\/skolarbbos.net\/wp-content\/uploads\/2016\/04\/referencijalniintegritet376-300x178.jpg 300w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><br \/>\n<em>Slika\u00a06<\/em><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"Opcija Enforce Referential Integrity Na poslednoj slici iz prethodnog predavanja prime\u0107uju se<a class=\"moretag\" href=\"https:\/\/skolarbbos.net\/?p=1004\"> &lt;b&gt;[Nastavi sa \u010ditanjem...]&lt;\/b&gt;<\/a>","protected":false},"author":1,"featured_media":1002,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-1004","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft-access"],"_links":{"self":[{"href":"https:\/\/skolarbbos.net\/index.php?rest_route=\/wp\/v2\/posts\/1004","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/skolarbbos.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/skolarbbos.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/skolarbbos.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/skolarbbos.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1004"}],"version-history":[{"count":3,"href":"https:\/\/skolarbbos.net\/index.php?rest_route=\/wp\/v2\/posts\/1004\/revisions"}],"predecessor-version":[{"id":1469,"href":"https:\/\/skolarbbos.net\/index.php?rest_route=\/wp\/v2\/posts\/1004\/revisions\/1469"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/skolarbbos.net\/index.php?rest_route=\/wp\/v2\/media\/1002"}],"wp:attachment":[{"href":"https:\/\/skolarbbos.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1004"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/skolarbbos.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1004"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/skolarbbos.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1004"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}