{"id":626,"date":"2021-03-11T14:43:24","date_gmt":"2021-03-11T14:43:24","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/?post_type=chapter&#038;p=626"},"modified":"2021-05-07T13:59:09","modified_gmt":"2021-05-07T13:59:09","slug":"lisalugemine-vaated","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/chapter\/lisalugemine-vaated\/","title":{"raw":"Lisalugemine: Vaated","rendered":"Lisalugemine: Vaated"},"content":{"raw":"Siiani oleme p\u00e4ringuid kasutanud vaid selleks, et andmebaasist andmeid k\u00e4tte saada. Peat\u00fckis <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/chapter\/lihtsad-paringud\/\">Lihtsad p\u00e4ringud<\/a> mainiti ka seda, et p\u00e4ringuid v\u00f5ib alati julgelt jooksutada ning et nende jooksutamine ei saa midagi katki teha. T\u00e4psemalt m\u00f5eldi seda, et p\u00e4ringute jooksutamisega ei saa muuta andmebaasi seisu.\r\n\r\nKuigi see on t\u00f5si seni \u00f5pitu suhtes, saab p\u00e4ringuid kasutada ka andmebaasi uue sisu loomiseks, milleks on vaated. Tasub siiski meeles pidada, et vaated p\u00f5hinevad alati andmebaasi tabelites olemasolevatel andmetel.\r\n\r\nVaated on nimega p\u00e4ringud, mis v\u00f5imaldavad andmebaasis olemasolevaid andmeid uutmoodi esitada. Vaadetele viidatakse ka kui virtuaalsetele tabelitele.\r\n\r\nVaateid luuakse SQL lausete abil, nii nagu tabeleidki. Loomise lauses tuleb esmalt t\u00e4psustada vaate nimi ning seej\u00e4rel p\u00e4ring, mille p\u00f5hjal vaadet luuakse. Lause jooksutamisel luuakse vaade ehk virtuaalne tabel, milles hoiustatavad veerud ja andmeread p\u00f5hinevad sisemise p\u00e4ringu tulemusel. Seej\u00e4rel saab uute p\u00e4ringute koostamisel vaateid tabelitega samav\u00e4\u00e4rselt kasutada.\r\n\r\nVaatame \u00fchte vaate loomise lause n\u00e4idet:\r\n<ul>\r\n \t<li><code><span style=\"color: #970000\"><strong>CREATE VIEW<\/strong><\/span> v_riigid_valjalasked <span style=\"color: #970000\"><strong>AS<\/strong><\/span><\/code>\r\n<code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> riigid.id <span style=\"color: #970000\"><strong>AS<\/strong><\/span> id, nimi, <span style=\"color: #000080\"><strong>ROUND<\/strong><\/span>(<span style=\"color: #000080\"><strong>AVG<\/strong><\/span>(valjalaske_aasta)) <span style=\"color: #970000\"><strong>AS<\/strong><\/span> keskmine_teose_valjalaske_aasta\r\n<span style=\"color: #970000\"><strong>FROM<\/strong><\/span> riigid, teosed\r\n<span style=\"color: #970000\"><strong>WHERE<\/strong><\/span> teosed.riigi_id = riigid.id\r\n<span style=\"color: #970000\"><strong>GROUP BY<\/strong><\/span> riigid.id, nimi <span style=\"color: #970000\"><strong>ORDER BY<\/strong><\/span> <span style=\"color: #0000ff\">1<\/span> <span style=\"color: #970000\"><strong>ASC<\/strong><\/span><span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\r\n<\/ul>\r\nLausesisese p\u00e4ringu tulemuses on n\u00e4ha k\u00f5igi riikide ID-sid, nimesid ja nendes riikides loodud teoste keskmist v\u00e4ljalaskeaastat t\u00e4isarvuni \u00fcmardatult. \u00dchtlasi on p\u00e4ringu tulemused j\u00e4rjestatud riikide ID-de alusel kasvavalt. Saadud p\u00e4ringu tulemus ongi vaate <code>v_riigid_valjalasked<\/code> sisu.\r\n\r\nKuigi me muudame vaadete loomisel andmebaasi seisu, ei tasu ka vigaseid vaateid luues muretseda. Kui lause on struktuurselt vigane, esineb veateade ning midagi ei loodagi. Kui aga vaade loodi ning see pole selline nagu soovisid, saab seda lihtsasti kustutada. Kui tabeleid kustutati k\u00e4suga <strong><code><span style=\"color: #970000\">DROP TABLE<\/span><\/code><\/strong><code> &lt;tabeli_nimi&gt;<span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code>, siis vaateid kustutatakse k\u00e4suga <code><span style=\"color: #970000\"><strong>DROP VIEW<\/strong><\/span> &lt;vaate_nimi&gt;<span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code>. N\u00e4iteks saab n\u00e4ites loodud vaate kustutada j\u00e4rgneva k\u00e4suga:\r\n<ul>\r\n \t<li><code><span style=\"color: #970000\"><strong>DROP VIEW<\/strong><\/span> v_riigid_valjalasked<span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\r\n<\/ul>\r\nVaate loomise lause p\u00e4ringu osas n\u00e4eme ka uut mitteagregeerivat funktsiooni <strong><code><span style=\"color: #000080\">ROUND<\/span><\/code><\/strong>. Nagu nimigi viitab, \u00fcmardab see arve. Siinkohal on <code><span style=\"color: #000080\"><strong>ROUND<\/strong><\/span><\/code> j\u00e4rel sulgudes vaid \u00fcks element, \u00fcmardatav arv. See t\u00e4hendab, et argumendina saadud arv tuleb t\u00e4isarvuni \u00fcmardada. Komaga eraldatult v\u00f5ib sulgudesse lisada ka teise arvu, mis n\u00e4itab mitme komakohani \u00fcmardada.\r\n\r\nKatseta esmalt funktsiooni <span style=\"color: #000080\"><strong><code><span style=\"color: #000080\">ROUND<\/span><\/code><\/strong><\/span> mingis oma loodud p\u00e4ringus. Seej\u00e4rel uuri, mis juhtub, kui kasutada seda t\u00e4isarvude peal nii, et \u00fcmardamist n\u00f5utakse n\u00e4iteks 3 komakohani.\r\n\r\n[h5p id=\"50\"]\r\n\r\nSeekord n\u00e4eme vaate loomise lause p\u00e4ringu osas, et mooduli alguses \u00f5pitud m\u00e4rks\u00f5na <code><span style=\"color: #970000\"><strong>DISTINCT<\/strong><\/span><\/code> on v\u00f5imalik kasutada ka funktsiooni <code><span style=\"color: #000080\"><strong>COUNT<\/strong><\/span><\/code> sees erinevate v\u00e4\u00e4rtuste kokku lugemiseks. Seega pole <strong><code><span style=\"color: #970000\">DISTINCT<\/span><\/code><\/strong> tingimata seotud vaid m\u00e4rks\u00f5naga <strong><code><span style=\"color: #970000\">SELECT<\/span><\/code><\/strong>.\r\n\r\n[h5p id=\"51\"]\r\n\r\nVaatame, kuidas saab loodud vaateid t\u00e4psemalt uurida. Selleks tuleb navigeeruda vaikeskeema alamkausta <em>Views<\/em>, mis asub samal tasemel alamkaustaga <em>Tables<\/em>. Peale v\u00e4ikeste erinevuste sarnaneb vaatele topeltkliki tegemisel avanev vaade \u00fcldjoontes tabeli vastava vaatega, mida uurisime peat\u00fckis <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/chapter\/tarkvara-installeerimine-ja-naidisandmebaasi-loomine\/\">Tarkvara installimine ja n\u00e4idisandmebaasi loomine<\/a>.\r\n\r\nVaadete kasutamist peetakse osaks heast andmebaasi disainist ning p\u00f5hjuseid nende loomiseks on mitmeid. Vaatame siinkohal paari asjakohasemat neist.\r\n\r\nEsiteks saab vaateid kasutada selleks, et koguda kokku mitmest tabelist tihedalt vaja minevaid andmeid. See t\u00e4hendab seda, et iga kord, kui on tarvis kasutada andmeid mitmest tabelist, ei ole enam vaja keerukat p\u00e4ringut koostada, vaid andmed saab k\u00e4tte lihtsa vaate p\u00f5hjal loodud p\u00e4ringu abil. Vaatame \u00fchte sellist potentsiaalselt kasulikku vaadet.\r\n\r\nVaate saame luua jooksutades j\u00e4rgnevat lauset:\r\n<ul>\r\n \t<li><code><span style=\"color: #970000\"><strong>CREATE VIEW<\/strong><\/span> v_teosed_naitlemised_riigid <span style=\"color: #970000\"><strong>AS<\/strong><\/span><\/code>\r\n<code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> pealkiri, <\/code><strong><code><span style=\"color: #000080\">COUNT<\/span><\/code><\/strong><code>(naitlemine.*) <span style=\"color: #970000\"><strong>AS<\/strong><\/span> naitlejate_arv, on_film, valjalaske_aasta, vanusepiirang, zanr, nimi, rahvastikuarv, pindala<\/code>\r\n<code><span style=\"color: #970000\"><strong>FROM<\/strong><\/span> riigid, teosed, naitlemine<\/code>\r\n<code><span style=\"color: #970000\"><strong>WHERE<\/strong><\/span> teosed.riigi_id = riigid.id AND naitlemine.teose_id = teosed.id<\/code>\r\n<code><span style=\"color: #970000\"><strong>GROUP BY<\/strong><\/span> <span style=\"color: #0000ff\">1<\/span>, <span style=\"color: #0000ff\">3<\/span>, <span style=\"color: #0000ff\">4<\/span>, <span style=\"color: #0000ff\">5<\/span>, <span style=\"color: #0000ff\">6<\/span>, <span style=\"color: #0000ff\">7<\/span>, <span style=\"color: #0000ff\">8<\/span>, <span style=\"color: #0000ff\">9<\/span> <span style=\"color: #970000\"><strong>ORDER BY<\/strong><\/span> <span style=\"color: #0000ff\">2<\/span> <span style=\"color: #970000\"><strong>DESC<\/strong><\/span>, <span style=\"color: #0000ff\">1<\/span> <span style=\"color: #970000\"><strong>ASC<\/strong><\/span><\/code><code><span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\r\n<\/ul>\r\nLoodud vaates on andmeid kolmest erinevast tabelist \u2013 peamiselt kirjeldavad tunnused teoseid ning neid loonud riike, kuid juures on ka teoses n\u00e4idelnud n\u00e4itlejate arv.\r\n\r\nN\u00fc\u00fcd saame loodud vaadet kasutada edasiste p\u00e4ringute loomiseks. Oletame, et me tahame teoste ja neid loonud riikide kohta n\u00e4ha seda, mitu elanikku on iga teoses n\u00e4idelnud n\u00e4itleja kohta. Selleks saame kasutada j\u00e4rgnevat p\u00e4ringut:\r\n<ul>\r\n \t<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> pealkiri, nimi, rahvastikuarv \/ naitlejate_arv <span style=\"color: #970000\"><strong>AS<\/strong><\/span> rahvastikuarvu_naitlejate_suhe\r\n<span style=\"color: #970000\"><strong>FROM<\/strong><\/span> v_teosed_naitlemised_riigid\r\n<span style=\"color: #970000\"><strong>ORDER BY<\/strong><\/span> <span style=\"color: #0000ff\">3<\/span> <\/code><strong><code><span style=\"color: #970000\">ASC<\/span><\/code><\/strong><code>, <span style=\"color: #0000ff\">1<\/span> <span style=\"color: #970000\"><strong>ASC<\/strong> <strong>LIMIT<\/strong><\/span> <span style=\"color: #0000ff\">100<\/span><span style=\"color: #ff0000\">;<\/span><\/code><\/li>\r\n<\/ul>\r\nN\u00e4eme, kui lihtsaks tegi eelnevalt loodud vaade meile huvitava p\u00e4ringu loomise.\r\n\r\n[h5p id=\"52\"]\r\n\r\nTeiseks saab vaateid kasutada andmete kasutajatele spetsiifilisel ja\/v\u00f5i ilusal kujul kuvamiseks. See t\u00e4hendab ka seda, et kui andmebaasis tehakse struktuurseid muudatusi \u2013 luuakse uusi tabeleid, kustutakse vanasid, luuakse uusi seoseid jne \u2013 on vaade kasutaja jaoks ikka endisel kujul. Vaatame \u00fchte sobivat n\u00e4idet.\r\n\r\nOletame, et me soovime t\u00e4iendada Soome Wikipedia <a href=\"https:\/\/en.wikipedia.org\/wiki\/Finland\">lehte<\/a>. Kuna Culture (ee Kultuur), on \u00fcks lehe alapeat\u00fckkidest ning kuna Soomes loodud filmid ja sarjad on kindlasti osa Soome kultuurist, v\u00f5ime me tahta neid sinna lisada. Selleks ei saa me aga lisada meie algseid 5 andmebaasi tabelit, mis sisaldavad tuhandeid kirjeid.\r\n\r\nSeega on sobiv kasutada mingit meie enda loodud ning kujundatud vaadet. \u00dche sobiva vaate saame luua j\u00e4rgneva lausega:\r\n<ul>\r\n \t<li><code><span style=\"color: #970000\"><strong>CREATE VIEW<\/strong><\/span> v_soome_teosed <span style=\"color: #970000\"><strong>AS<\/strong><\/span><\/code>\r\n<code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> pealkiri, <span style=\"color: #000080\"><strong>ARRAY_AGG<\/strong><\/span>(isikud.nimi), valjalaske_aasta, kirjeldus\r\n<span style=\"color: #970000\"><strong>FROM<\/strong><\/span> teosed, riigid, naitlemine, isikud<\/code>\r\n<code><span style=\"color: #970000\"><strong>WHERE<\/strong><\/span> teosed.riigi_id = riigid.id <span style=\"color: #970000\"><strong>AND<\/strong><\/span> naitlemine.teose_id = teosed.id <span style=\"color: #970000\"><strong>AND<\/strong><\/span> naitlemine.naitleja_id = isikud.id <span style=\"color: #970000\"><strong>AND<\/strong><\/span> riigid.nimi = <span style=\"color: #008000\">'Finland'<\/span><\/code>\r\n<code><span style=\"color: #970000\"><strong>GROUP BY<\/strong><\/span> <span style=\"color: #0000ff\">1<\/span>, <span style=\"color: #0000ff\">3<\/span>, <span style=\"color: #0000ff\">4<\/span><\/code>\r\n<code><span style=\"color: #970000\"><strong>ORDER BY<\/strong><\/span> <span style=\"color: #0000ff\">3<\/span> <span style=\"color: #970000\"><strong>DESC<\/strong><\/span>, <span style=\"color: #0000ff\">1<\/span> <span style=\"color: #970000\"><strong>ASC<\/strong><\/span><span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\r\n<\/ul>\r\nLoodud vaates on n\u00e4ha k\u00f5igi Soomes loodud teoste pealkirju, neis n\u00e4idelnud n\u00e4itlejaid, v\u00e4ljalaske aastaid ning kirjeldusi. Selline vaade annab Soome Wikipedia lehe k\u00fclastajatele kiire \u00fclevaate seal loodud Netflixi teostest. Andmetest saab muuhulgas v\u00e4lja lugeda seda, kes on Soomes populaarsed n\u00e4itlejad, millised on ajaperioodid, mil loodi enim teoseid ning ka seda, milliseid teemasid enim k\u00e4sitletakse.\r\n\r\nVaate loomise k\u00e4igus \u00f5ppisime \u00e4ra ka uue agregeeriva funktsiooni <code><span style=\"color: #000080\"><strong>ARRAY_AGG<\/strong><\/span><\/code>. Nagu n\u00e4ha \u00fchendab see k\u00f5ik v\u00e4\u00e4rtused, siinkohal n\u00e4itlejate nimed, \u00fchte massiivi. Kuigi loodud vaade pole veel Wikipedia jaoks ehk ideaalsel kujul, on see n\u00e4idatud kujul juba inimeste jaoks p\u00e4ris h\u00e4sti loetav.\r\n\r\n[h5p id=\"53\"]\r\n\r\nN\u00fc\u00fcd oleme \u00f5ppinud seda, mis on vaated, kus neid kasutatakse ning kuidas neid ka ise luua.\r\n\r\n&nbsp;","rendered":"<p>Siiani oleme p\u00e4ringuid kasutanud vaid selleks, et andmebaasist andmeid k\u00e4tte saada. Peat\u00fckis <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/chapter\/lihtsad-paringud\/\">Lihtsad p\u00e4ringud<\/a> mainiti ka seda, et p\u00e4ringuid v\u00f5ib alati julgelt jooksutada ning et nende jooksutamine ei saa midagi katki teha. T\u00e4psemalt m\u00f5eldi seda, et p\u00e4ringute jooksutamisega ei saa muuta andmebaasi seisu.<\/p>\n<p>Kuigi see on t\u00f5si seni \u00f5pitu suhtes, saab p\u00e4ringuid kasutada ka andmebaasi uue sisu loomiseks, milleks on vaated. Tasub siiski meeles pidada, et vaated p\u00f5hinevad alati andmebaasi tabelites olemasolevatel andmetel.<\/p>\n<p>Vaated on nimega p\u00e4ringud, mis v\u00f5imaldavad andmebaasis olemasolevaid andmeid uutmoodi esitada. Vaadetele viidatakse ka kui virtuaalsetele tabelitele.<\/p>\n<p>Vaateid luuakse SQL lausete abil, nii nagu tabeleidki. Loomise lauses tuleb esmalt t\u00e4psustada vaate nimi ning seej\u00e4rel p\u00e4ring, mille p\u00f5hjal vaadet luuakse. Lause jooksutamisel luuakse vaade ehk virtuaalne tabel, milles hoiustatavad veerud ja andmeread p\u00f5hinevad sisemise p\u00e4ringu tulemusel. Seej\u00e4rel saab uute p\u00e4ringute koostamisel vaateid tabelitega samav\u00e4\u00e4rselt kasutada.<\/p>\n<p>Vaatame \u00fchte vaate loomise lause n\u00e4idet:<\/p>\n<ul>\n<li><code><span style=\"color: #970000\"><strong>CREATE VIEW<\/strong><\/span> v_riigid_valjalasked <span style=\"color: #970000\"><strong>AS<\/strong><\/span><\/code><br \/>\n<code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> riigid.id <span style=\"color: #970000\"><strong>AS<\/strong><\/span> id, nimi, <span style=\"color: #000080\"><strong>ROUND<\/strong><\/span>(<span style=\"color: #000080\"><strong>AVG<\/strong><\/span>(valjalaske_aasta)) <span style=\"color: #970000\"><strong>AS<\/strong><\/span> keskmine_teose_valjalaske_aasta<br \/>\n<span style=\"color: #970000\"><strong>FROM<\/strong><\/span> riigid, teosed<br \/>\n<span style=\"color: #970000\"><strong>WHERE<\/strong><\/span> teosed.riigi_id = riigid.id<br \/>\n<span style=\"color: #970000\"><strong>GROUP BY<\/strong><\/span> riigid.id, nimi <span style=\"color: #970000\"><strong>ORDER BY<\/strong><\/span> <span style=\"color: #0000ff\">1<\/span> <span style=\"color: #970000\"><strong>ASC<\/strong><\/span><span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\n<\/ul>\n<p>Lausesisese p\u00e4ringu tulemuses on n\u00e4ha k\u00f5igi riikide ID-sid, nimesid ja nendes riikides loodud teoste keskmist v\u00e4ljalaskeaastat t\u00e4isarvuni \u00fcmardatult. \u00dchtlasi on p\u00e4ringu tulemused j\u00e4rjestatud riikide ID-de alusel kasvavalt. Saadud p\u00e4ringu tulemus ongi vaate <code>v_riigid_valjalasked<\/code> sisu.<\/p>\n<p>Kuigi me muudame vaadete loomisel andmebaasi seisu, ei tasu ka vigaseid vaateid luues muretseda. Kui lause on struktuurselt vigane, esineb veateade ning midagi ei loodagi. Kui aga vaade loodi ning see pole selline nagu soovisid, saab seda lihtsasti kustutada. Kui tabeleid kustutati k\u00e4suga <strong><code><span style=\"color: #970000\">DROP TABLE<\/span><\/code><\/strong><code> &lt;tabeli_nimi&gt;<span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code>, siis vaateid kustutatakse k\u00e4suga <code><span style=\"color: #970000\"><strong>DROP VIEW<\/strong><\/span> &lt;vaate_nimi&gt;<span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code>. N\u00e4iteks saab n\u00e4ites loodud vaate kustutada j\u00e4rgneva k\u00e4suga:<\/p>\n<ul>\n<li><code><span style=\"color: #970000\"><strong>DROP VIEW<\/strong><\/span> v_riigid_valjalasked<span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\n<\/ul>\n<p>Vaate loomise lause p\u00e4ringu osas n\u00e4eme ka uut mitteagregeerivat funktsiooni <strong><code><span style=\"color: #000080\">ROUND<\/span><\/code><\/strong>. Nagu nimigi viitab, \u00fcmardab see arve. Siinkohal on <code><span style=\"color: #000080\"><strong>ROUND<\/strong><\/span><\/code> j\u00e4rel sulgudes vaid \u00fcks element, \u00fcmardatav arv. See t\u00e4hendab, et argumendina saadud arv tuleb t\u00e4isarvuni \u00fcmardada. Komaga eraldatult v\u00f5ib sulgudesse lisada ka teise arvu, mis n\u00e4itab mitme komakohani \u00fcmardada.<\/p>\n<p>Katseta esmalt funktsiooni <span style=\"color: #000080\"><strong><code><span style=\"color: #000080\">ROUND<\/span><\/code><\/strong><\/span> mingis oma loodud p\u00e4ringus. Seej\u00e4rel uuri, mis juhtub, kui kasutada seda t\u00e4isarvude peal nii, et \u00fcmardamist n\u00f5utakse n\u00e4iteks 3 komakohani.<\/p>\n<div id=\"h5p-50\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-50\" class=\"h5p-iframe\" data-content-id=\"50\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"AP_19_kontrollk\u00fcsimus_1\"><\/iframe><\/div>\n<\/div>\n<p>Seekord n\u00e4eme vaate loomise lause p\u00e4ringu osas, et mooduli alguses \u00f5pitud m\u00e4rks\u00f5na <code><span style=\"color: #970000\"><strong>DISTINCT<\/strong><\/span><\/code> on v\u00f5imalik kasutada ka funktsiooni <code><span style=\"color: #000080\"><strong>COUNT<\/strong><\/span><\/code> sees erinevate v\u00e4\u00e4rtuste kokku lugemiseks. Seega pole <strong><code><span style=\"color: #970000\">DISTINCT<\/span><\/code><\/strong> tingimata seotud vaid m\u00e4rks\u00f5naga <strong><code><span style=\"color: #970000\">SELECT<\/span><\/code><\/strong>.<\/p>\n<div id=\"h5p-51\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-51\" class=\"h5p-iframe\" data-content-id=\"51\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"AP_19_kontrollk\u00fcsimus_2\"><\/iframe><\/div>\n<\/div>\n<p>Vaatame, kuidas saab loodud vaateid t\u00e4psemalt uurida. Selleks tuleb navigeeruda vaikeskeema alamkausta <em>Views<\/em>, mis asub samal tasemel alamkaustaga <em>Tables<\/em>. Peale v\u00e4ikeste erinevuste sarnaneb vaatele topeltkliki tegemisel avanev vaade \u00fcldjoontes tabeli vastava vaatega, mida uurisime peat\u00fckis <a href=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/chapter\/tarkvara-installeerimine-ja-naidisandmebaasi-loomine\/\">Tarkvara installimine ja n\u00e4idisandmebaasi loomine<\/a>.<\/p>\n<p>Vaadete kasutamist peetakse osaks heast andmebaasi disainist ning p\u00f5hjuseid nende loomiseks on mitmeid. Vaatame siinkohal paari asjakohasemat neist.<\/p>\n<p>Esiteks saab vaateid kasutada selleks, et koguda kokku mitmest tabelist tihedalt vaja minevaid andmeid. See t\u00e4hendab seda, et iga kord, kui on tarvis kasutada andmeid mitmest tabelist, ei ole enam vaja keerukat p\u00e4ringut koostada, vaid andmed saab k\u00e4tte lihtsa vaate p\u00f5hjal loodud p\u00e4ringu abil. Vaatame \u00fchte sellist potentsiaalselt kasulikku vaadet.<\/p>\n<p>Vaate saame luua jooksutades j\u00e4rgnevat lauset:<\/p>\n<ul>\n<li><code><span style=\"color: #970000\"><strong>CREATE VIEW<\/strong><\/span> v_teosed_naitlemised_riigid <span style=\"color: #970000\"><strong>AS<\/strong><\/span><\/code><br \/>\n<code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> pealkiri, <\/code><strong><code><span style=\"color: #000080\">COUNT<\/span><\/code><\/strong><code>(naitlemine.*) <span style=\"color: #970000\"><strong>AS<\/strong><\/span> naitlejate_arv, on_film, valjalaske_aasta, vanusepiirang, zanr, nimi, rahvastikuarv, pindala<\/code><br \/>\n<code><span style=\"color: #970000\"><strong>FROM<\/strong><\/span> riigid, teosed, naitlemine<\/code><br \/>\n<code><span style=\"color: #970000\"><strong>WHERE<\/strong><\/span> teosed.riigi_id = riigid.id AND naitlemine.teose_id = teosed.id<\/code><br \/>\n<code><span style=\"color: #970000\"><strong>GROUP BY<\/strong><\/span> <span style=\"color: #0000ff\">1<\/span>, <span style=\"color: #0000ff\">3<\/span>, <span style=\"color: #0000ff\">4<\/span>, <span style=\"color: #0000ff\">5<\/span>, <span style=\"color: #0000ff\">6<\/span>, <span style=\"color: #0000ff\">7<\/span>, <span style=\"color: #0000ff\">8<\/span>, <span style=\"color: #0000ff\">9<\/span> <span style=\"color: #970000\"><strong>ORDER BY<\/strong><\/span> <span style=\"color: #0000ff\">2<\/span> <span style=\"color: #970000\"><strong>DESC<\/strong><\/span>, <span style=\"color: #0000ff\">1<\/span> <span style=\"color: #970000\"><strong>ASC<\/strong><\/span><\/code><code><span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\n<\/ul>\n<p>Loodud vaates on andmeid kolmest erinevast tabelist \u2013 peamiselt kirjeldavad tunnused teoseid ning neid loonud riike, kuid juures on ka teoses n\u00e4idelnud n\u00e4itlejate arv.<\/p>\n<p>N\u00fc\u00fcd saame loodud vaadet kasutada edasiste p\u00e4ringute loomiseks. Oletame, et me tahame teoste ja neid loonud riikide kohta n\u00e4ha seda, mitu elanikku on iga teoses n\u00e4idelnud n\u00e4itleja kohta. Selleks saame kasutada j\u00e4rgnevat p\u00e4ringut:<\/p>\n<ul>\n<li><code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> pealkiri, nimi, rahvastikuarv \/ naitlejate_arv <span style=\"color: #970000\"><strong>AS<\/strong><\/span> rahvastikuarvu_naitlejate_suhe<br \/>\n<span style=\"color: #970000\"><strong>FROM<\/strong><\/span> v_teosed_naitlemised_riigid<br \/>\n<span style=\"color: #970000\"><strong>ORDER BY<\/strong><\/span> <span style=\"color: #0000ff\">3<\/span> <\/code><strong><code><span style=\"color: #970000\">ASC<\/span><\/code><\/strong><code>, <span style=\"color: #0000ff\">1<\/span> <span style=\"color: #970000\"><strong>ASC<\/strong> <strong>LIMIT<\/strong><\/span> <span style=\"color: #0000ff\">100<\/span><span style=\"color: #ff0000\">;<\/span><\/code><\/li>\n<\/ul>\n<p>N\u00e4eme, kui lihtsaks tegi eelnevalt loodud vaade meile huvitava p\u00e4ringu loomise.<\/p>\n<div id=\"h5p-52\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-52\" class=\"h5p-iframe\" data-content-id=\"52\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"AP_19_kontrollk\u00fcsimus_3\"><\/iframe><\/div>\n<\/div>\n<p>Teiseks saab vaateid kasutada andmete kasutajatele spetsiifilisel ja\/v\u00f5i ilusal kujul kuvamiseks. See t\u00e4hendab ka seda, et kui andmebaasis tehakse struktuurseid muudatusi \u2013 luuakse uusi tabeleid, kustutakse vanasid, luuakse uusi seoseid jne \u2013 on vaade kasutaja jaoks ikka endisel kujul. Vaatame \u00fchte sobivat n\u00e4idet.<\/p>\n<p>Oletame, et me soovime t\u00e4iendada Soome Wikipedia <a href=\"https:\/\/en.wikipedia.org\/wiki\/Finland\">lehte<\/a>. Kuna Culture (ee Kultuur), on \u00fcks lehe alapeat\u00fckkidest ning kuna Soomes loodud filmid ja sarjad on kindlasti osa Soome kultuurist, v\u00f5ime me tahta neid sinna lisada. Selleks ei saa me aga lisada meie algseid 5 andmebaasi tabelit, mis sisaldavad tuhandeid kirjeid.<\/p>\n<p>Seega on sobiv kasutada mingit meie enda loodud ning kujundatud vaadet. \u00dche sobiva vaate saame luua j\u00e4rgneva lausega:<\/p>\n<ul>\n<li><code><span style=\"color: #970000\"><strong>CREATE VIEW<\/strong><\/span> v_soome_teosed <span style=\"color: #970000\"><strong>AS<\/strong><\/span><\/code><br \/>\n<code><span style=\"color: #970000\"><strong>SELECT<\/strong><\/span> pealkiri, <span style=\"color: #000080\"><strong>ARRAY_AGG<\/strong><\/span>(isikud.nimi), valjalaske_aasta, kirjeldus<br \/>\n<span style=\"color: #970000\"><strong>FROM<\/strong><\/span> teosed, riigid, naitlemine, isikud<\/code><br \/>\n<code><span style=\"color: #970000\"><strong>WHERE<\/strong><\/span> teosed.riigi_id = riigid.id <span style=\"color: #970000\"><strong>AND<\/strong><\/span> naitlemine.teose_id = teosed.id <span style=\"color: #970000\"><strong>AND<\/strong><\/span> naitlemine.naitleja_id = isikud.id <span style=\"color: #970000\"><strong>AND<\/strong><\/span> riigid.nimi = <span style=\"color: #008000\">'Finland'<\/span><\/code><br \/>\n<code><span style=\"color: #970000\"><strong>GROUP BY<\/strong><\/span> <span style=\"color: #0000ff\">1<\/span>, <span style=\"color: #0000ff\">3<\/span>, <span style=\"color: #0000ff\">4<\/span><\/code><br \/>\n<code><span style=\"color: #970000\"><strong>ORDER BY<\/strong><\/span> <span style=\"color: #0000ff\">3<\/span> <span style=\"color: #970000\"><strong>DESC<\/strong><\/span>, <span style=\"color: #0000ff\">1<\/span> <span style=\"color: #970000\"><strong>ASC<\/strong><\/span><span style=\"color: #ff0000\"><strong>;<\/strong><\/span><\/code><\/li>\n<\/ul>\n<p>Loodud vaates on n\u00e4ha k\u00f5igi Soomes loodud teoste pealkirju, neis n\u00e4idelnud n\u00e4itlejaid, v\u00e4ljalaske aastaid ning kirjeldusi. Selline vaade annab Soome Wikipedia lehe k\u00fclastajatele kiire \u00fclevaate seal loodud Netflixi teostest. Andmetest saab muuhulgas v\u00e4lja lugeda seda, kes on Soomes populaarsed n\u00e4itlejad, millised on ajaperioodid, mil loodi enim teoseid ning ka seda, milliseid teemasid enim k\u00e4sitletakse.<\/p>\n<p>Vaate loomise k\u00e4igus \u00f5ppisime \u00e4ra ka uue agregeeriva funktsiooni <code><span style=\"color: #000080\"><strong>ARRAY_AGG<\/strong><\/span><\/code>. Nagu n\u00e4ha \u00fchendab see k\u00f5ik v\u00e4\u00e4rtused, siinkohal n\u00e4itlejate nimed, \u00fchte massiivi. Kuigi loodud vaade pole veel Wikipedia jaoks ehk ideaalsel kujul, on see n\u00e4idatud kujul juba inimeste jaoks p\u00e4ris h\u00e4sti loetav.<\/p>\n<div id=\"h5p-53\">\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-53\" class=\"h5p-iframe\" data-content-id=\"53\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"AP_19_kontrollk\u00fcsimus_4\"><\/iframe><\/div>\n<\/div>\n<p>N\u00fc\u00fcd oleme \u00f5ppinud seda, mis on vaated, kus neid kasutatakse ning kuidas neid ka ise luua.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"author":32,"menu_order":11,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-626","chapter","type-chapter","status-publish","hentry"],"part":31,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/626","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/users\/32"}],"version-history":[{"count":86,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/626\/revisions"}],"predecessor-version":[{"id":1404,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/626\/revisions\/1404"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/parts\/31"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/626\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/media?parent=626"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapter-type?post=626"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/contributor?post=626"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/license?post=626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}