Eksam õppeainetes "Andmebaasid I" (IDU0220) ja "Andmebaaside projekteerimine" (IDU3381) 1.Eksamiajad ja registreerumine Eksamiajad "Andmebaasid I" (IDU0220) Kuupäev Kellaaeg Ruum Maksimaalne osalejate arv 22.mai 2012 10:00 IT-213C 18 24.mai 2012 10:00 IT-213C 18 28.mai 2012 14:00 IT-213C 18 30.mai 2012 14:00 IT-213C 18 05.juuni 2012 10:00 IT-213C 18 05.juuni 2012 11:00 IT-213C 18 06.juuni 2012 14:00 IT-213C 18 08.juuni 2012 12:00 IT-213B 16 08.juuni 2012 13:00 IT-213B 16 Eksamiajad "Andmebaaside projekteerimine" (IDU3381) Kuupäev Kellaaeg Ruum Maksimaalne osalejate arv 22.mai 2012 11:00 IT-213C 18 24.mai 2012 11:00 IT-213C 18 28.mai 2012 15:00 IT-213C 18 30.mai 2012 15:00 IT-213C 18 05.juuni 2012 12:00 IT-213C 18 06.juuni 2012 15:00 IT-213C 18 08.juuni 2012 11:00 IT-213B 18 Vastuvõtuaeg enne esimest eksamit: 21. mai 2012 kell 10:00-11:00 IT-409. NB! Pange tähele, et õppeinfosüsteemis on ka kaugõppe eksamiajad. Ärge palun registreeruge nendele aegadele, sest nendel aegadel ei saa päevase õppe üliõpilased eksamit teha!! Lisaks on eksamisessiooni ajal veel üks võimalus teha SQL kontrolltööd 25. mail 2012 (sinna saab registreeruda peale esimese järeltöö lõppu). 1
Eksamil osalemiseks peab üliõpilasel olema kehtiv deklaratsioon. Iga eksamil osaleda sooviv üliõpilane peab ennast eksamile registreerima. Registreerunutele tellitakse eksamileht ja vaid eksamilehe saanud üliõpilased tohivad teha eksamit. Vastavalt TTÜ õppekorralduse eeskirjale toimub registreerimine läbi õppeinfosüsteemi (Sooritused => Teadmiste kontrollidele registreerumine). Registreerumine lõpeb kaks tundi enne eksami algust. Palun Teil eksamile registreeruda alles siis, kui kõik eksamieeldused on täidetud. Üliõpilased, kes on õppeaine deklareerinud sellel semestril, saavad üldjuhul sessiooni jooksul teha eksamit üks kord. Kui eksami tulemusena saadakse positiivne hinne, siis seda saab järgmine kord parandada sügissemestri eelnädalal või sügissemestri algul toimuval lisaeksamil (TTÜ reeglite järgi võib eksami sooritamisõiguse aja jooksul positiivset hinnet ühe korra parandada, v.a juhul, kui see on saadud eksami kolmandal sooritamisel). Erand: Kui üliõpilane saab testi esmakordsel tegemisel hindeks "0" (ja seega ka kokkuvõttes "0"), siis võib ta soovi korral teha eksamisessiooni jooksul veelkord testi (kui on veel vabu aegu). Hinne "0" läheb igal juhul õppesüsteemi kirja ja testi uuesti tegemisel saadud tulemus vormistatakse lisaeksamina. Üldjuhul võib (aga ei pea) lisaeksami tegemisel teha uuesti ka SQL töö. Antud juhul SQL tööd uuesti teha ei saa. Huvi korral peab üliõpilane registreerima ennast eksamile läbi õppeinfosüsteemi. Üliõpilased, kellel on kehtiv deklaratsioon, aga kes ei deklareerinud õppeainet käesoleval semestril, võivad eksamit teha rohkem kui üks kord, kui neile on jäänud alles sooritusõigusi ja kui on veel vabu aegu. Selleks peavad nad iga kord uuesti õppeinfosüsteemi kaudu eksamile registreeruma. Neile tellitakse igaks eksamiks uus eksamileht. Peale eksamisessiooni lõppu on augusti lõpus toimuval sügissemestri eelnädalal järgmine võimalus teha SQL tööd, esitada iseseisvat tööd ja teha eksamit. 2.Üldine korraldus Eksamile pääsevad vaid need, kes on täitnud eksamieeldused (SQL töö vähemalt "1" ja iseseisev töö eest saadud "Arvestatud"). Eksam koosneb valikvastustega küsimustest. Igal küsimusel on täpselt üks õige vastusevariant. Küsitakse 15 küsimust, mis valitakse juhuslikult suurema hulga küsimuste seast. Küsimustele vastamiseks on aega 35 minutit. Abimaterjale kasutada ei saa. Kui küsimus jääb vastamata, või antakse mitu vastust, siis see läheb arvesse kui valesti vastatud küsimus. 2
Tulemuse leidmiseks arvutatakse välja kui mitu protsenti moodustab õieti vastatud küsimuste arv kogu küsimuste arvust (15). Tulemus paigutatakse TTÜ ametlikule hindamisskaalale. Õigete vastuste arv Õigete vastuste protsent Hinne 0 0,0 0 1 6,7 0 2 13,3 0 3 20,0 0 4 26,7 0 5 33,3 0 6 40,0 0 7 46,7 0 8 53,3 1 9 60,0 1 10 66,7 2 11 73,3 3 12 80,0 3 13 86,7 4 14 93,3 5 15 100,0 5 Eksam on kirjalik ja selle tegemiseks kasutatakse veebipõhist keskkonda, kus iga vastaja jaoks genereeritakse unikaalne küsimustik (tehniliste probleemide korral kasutatakse paberile trükitud küsimustikke). Küsimuste-vastuste oma arvutisse kopeerimine, üleskirjutamine või muul viisil kopeerimine on keelatud! Küsimustele vastamise järel pannakse välja lõpphinne. Siis saab iga soovija õppejõu arvutist samuti vaadata oma küsimuste vastustes tehtud vigu. Õppejõud jätab endale õiguse paigutada enne eksami algust arvutiklassis üliõpilasi teise kohta istuma. Lõpphinne arvutatakse välja järgmise valemi alusel. hinne=(a*0,6)+(b*0,4), kus a on SQL kontrolltöö hinne ja b on teooria eksami hinne. Lõpptulemuse saamiseks kasutatakse ümardamist (nt. 3,4=>3; 3,6=>4). Kui SQL töö on tegemata või on viimane selle eest saadud hinne 0, siis eksamile ei saa. Kui iseseisva töö eest ei ole saadud arvestust, siis eksamile ei saa. Kui teooria eksami tulemus on "0" on lõpptulemus "0". Kui põhieksamit tegev üliõpilane ei ilmu eksamile on lõpptulemuseks "mitteilmunud". Kui lisaeksamit tegev üliõpilane ei ilmu eksamile on lõpptulemus 0. Lõpphinde väljaarvutamise tabel: 3
SQL töö hinne Eksami-hinne Ümardamata hinne Lõpphinne 4
1 0 0 0 1 1 1 1 1 2 1,4 1 1 3 1,8 2 1 4 2,2 2 1 5 2,6 3 2 0 0 0 2 1 1,6 2 2 2 2 2 2 3 2,4 2 2 4 2,8 3 2 5 3,2 3 3 0 0 0 3 1 2,2 2 3 2 2,6 3 3 3 3 3 3 4 3,4 3 3 5 3,8 4 4 0 0 0 4 1 2,8 3 4 2 3,2 3 4 3 3,6 4 4 4 4 4 4 5 4,4 4 5 0 0 0 5 1 3,4 3 5 2 3,8 4 5 3 4,2 4 5 4 4,6 5 5 5 5 5 5
3.Küsimused Küsimused puudutavad kogu loengutes ja harjutustundides käsitletud materjali. Mõned küsimuste tüübid. o Leidke definitsiooni põhjal, millist mõistet see defineerib? o Leidke probleemi lahendamiseks õige SQL lause? o Näiteprobleemile lahenduse valimine, lähtuvalt loengus antud soovitustest ja kasutatavatest standarditest. o Milline järgnevatest väidetest on ÕIGE? o Milline järgmistest väidetest on VALE? Vaadake ka nt. http://www.w3schools.com/sql/sql_quiz.asp Samuti vaadake eksamiks valmistumisel animatsioone, mis on tehtud TTÜ üliõpilaste poolt. Animatsioonid UML klassidiagrammide kohta: http://viktor.ld.ttu.ee/animation_uml/ Animatsioonid relatsioonilise mudeli põhimõistete kohta: http://viktor.ld.ttu.ee/db_animatsioonid/ Animatsioonid vaadete ja hetktõmmiste kohta: http://viktor.ld.ttu.ee/oracle_views/ Animatsioonid B-puu indeksite kohta: http://viktor.ld.ttu.ee/animation_b_tree/ Animatsioonid trigerite kohta: http://viktor.ld.ttu.ee/trigerite_animatsioonid/ Näited Relatsiooni iseloomustab suurus "relatsiooni aste". Oletame, et relatsioonis on 4 korteeži ja 5 atribuuti. Milline on selle relatsiooni puhul relatsiooni astme väärtus? 1. 1 2. 4 3. 5 4. 9 5. 20 6. 1024 Milline relatsioonialgebra operatsioon ei kuulu binaarsete hulgateoreetiliste operatsioonide hulka? 1. Lõige 2. Otsekorrutis 3. Projektsioon 4. Hulgateoreetiline summa 6
Milline standardse andmebaasikeele SQL kohta käiv väide on VALE? 1. SQLi alamkeeleks olev andmekäitluskeel (Data Manipulation Language) on osaliselt deklaratiivne keel. 2. SQL ei ole relatsiooniliselt täielik keel. 3. SQL sisaldab lauseid andmete muutmiseks andmebaasis. 4. SQL sisaldab lauseid andmetabelite loomiseks, muutmiseks ja kustutamiseks. 5. Paljud andmebaasisüsteemid realiseerivad SQL standardit osaliselt ja omapoolsete (standardiseerimata) täiendustega. 6. SQL sisaldab lauseid andmetele juurdepääsuõiguste määramiseks. Oletame, et meil on tabel Arve ja me soovime leida andmed kõigist tabeli Arve veergudest. Milline SQL lause on ÕIGE? 1. SELECT Arve; 2. SELECT [all] FROM Arve; 3. SELECT * FROM Arve; 4. SELECT #.# FROM Arve; 5. SELECT *.Arve; Millist grupifunktsiooni tuleb SQLis kasutada, et lugeda kokku grupi liikmete arv? 1. Amt 2. Count 3. Number 4. Min 5. Avg 6. Amount Millise SQL:1992 standardi poolt kirjeldatud grupifunktsiooni väljakutses võib argumendiks olla tärn (*)? 1. Min 2. Max 3. Count 4. Sum 5. Avg Millise sõnaga algab SQL lause, millega kustutatakse väärtused mingist tabeli veerust? Veerg ise peab alles jääma. 1. MODIFY 2. DELETE 3. UPDATE 4. DROP 5. REMOVE 6. REVOKE 7. CHANGE 8. ALTER 7
Olgu andmebaasis tabel: Amet(a_id, nimi) Primary Key (a_id); Millise relatsioonialgebra operatsiooni realiseerib päring SELECT a_id FROM Amet? 1. Otsekorrutis 2. Projektsioon 3. Piirang 4. Lõige 5. Hulgateoreetiline vahe Oletame, et meil on andmebaasis kaks tabelit: Amet(a_id, nimi) Primary Key (a_id); Tootaja(t_id, perenimi, amet) Primary Key(t_id) Foreign Key amet REFERENCES Amet (a_id) ON UPDATE SET NULL ON DELETE CASCADE; Tabeliga pole seotud trigereid. Kõik veerud peale primaarvõtme veergude on mittekohustuslikud. Mida teeb andmebaasisüsteem, kui tabelis Amet muudetakse mõnes reas a_id väärtust? Eeldame, et selle ametiga on seotud vähemalt üks töötaja. 1. Kustutatakse kõik selles ametis töötavate töötajate andmed (read tabelist Tootaja). 2. Peale muudatuse tegemist kustutatakse tabelist Amet muudetud a_id väärtus. 3. Peale muudatuse tegemist kustutatakse a_id muutmise-eelne väärtus tabeli Tootaja veerust amet. 4. Peale muudatuse tegemist asendatakse tabeli Tootaja veerus amet a_id muutmise-eelne väärtus väärtusega "0". 5. Peale muudatuse tegemist asendatakse tabeli Tootaja veerus amet kõik väärtused väärtusega "0". 6. Kustutatakse vastava ameti andmed tabelist Amet. 7. Ei lubata a_id väärtust muuta, kui selles ametis töötab mõni töötaja. Milline on praegu (2012. aasta kevadel) kehtiv SQL standardi versioon? 1. SQL:1992 2. SQL:1999 3. SQL:2003 4. SQL:2006 5. SQL:2008 Milline väide on ÕIGE? 1. Nõrga olemitüübi alusel loodud tabelis sisaldab primaarvõti mõne teise tabeli primaarvõtmetele vastavaid veerge. 2. Tugeva olemitüübi alusel loodud tabelis sisaldab primaarvõti mõne teise tabeli primaarvõtmetele vastavaid veerge. 3. Primaarvõti ja välisvõti ei tohi ei osaliselt ega täielikult kattuda. 8
Olgu esitatud väited hetkel kehtiva SQL standardi versiooni kohta. 1. SQL standard lubab alampäringu kirjutada teatud tingimustel SELECT klauslisse. 2. SQL standard lubab alampäringu kirjutada teatud tingimustel FROM klauslisse. 3. SQL standard lubab alampäringu kirjutada teatud tingimustel WHERE klauslisse. 4. SQL standard lubab alampäringu kirjutada teatud tingimustel HAVING klauslisse. Milline väide väidete 1-4 kohta on ÕIGE? 1. Väide 1 on vale, ülejäänud on õiged. 2. Väide 2 on vale, ülejäänud on õiged. 3. Väide 3 on vale, ülejäänud on õiged. 4. Väide 4 on vale, ülejäänud on õiged. 5. Väited 1 ja 4 on valed, ülejäänud on õiged. 6. Väited 1 ja 2 on vale, ülejäänud on õiged. 7. Kõik väited on õiged. 8. Kõik väited on valed. Millised kaks lausendit kirjeldavad kõige täpsemalt küsimusega seotud pilti? 1. Iga toote klass võib olla seotud ühe tootega. Iga toode võib olla seotud ühe toote klassiga. 2. Iga toote klass võib olla seotud ühe tootega. Iga toode peab olema seotud ühe toote klassiga. 3. Iga toote klass võib olla seotud ühe või mitme tootega. Iga toode võib olla seotud ühe või mitme toote klassiga. 4. Iga toote klass peab olema seotud ühe või mitme tootega. Iga toode peab olema seotud ühe või mitme toote klassiga. 5. Iga toote klass peab olema seotud ühe või mitme tootega. Iga toode võib olla seotud ühe või mitme toote klassiga. 6. Iga toote klass võib olla seotud ühe või mitme tootega. Iga toode peab olema seotud ühe või mitme toote klassiga. 9
Kuidas soovitati loengus loogilise disaini käigus toimida (Connolly & Begg poolt välja pakutud metoodika põhjal) analüüsi andmemudelis esitatud ülatüüp/alamtüüp konstruktsiooniga, kui: üldistussuhtel määratud osaluskohutus on "kohustuslik" (Iga ülatüüpi olem peab kuuluma ka mõnda alamtüüpi). kuuluvus on "Iga ülatüüpi olem võib kuuluda vaid ühte alamtüüpi"? 1. Luua üks ühine tabel, mis sisaldab nii ülatüübi kui ka alamtüübi atribuutidele vastavaid veerge. Lisada tabelisse veerud, milles olevad väärtused klassifitseerivad iga tabelis oleva rea mingitesse alamtüüpidesse kuuluma. 2. Luua kaks tabelit. Üks neist sisaldab ülatüübi atribuutidele vastavaid veerge. Teine tabel sisaldab alamtüüpide atribuutidele vastavaid veerge ja veerge, milles olevad väärtused klassifitseerivad iga tabelis oleva rea mingitesse alamtüüpi kuuluma. Lisaks sisaldab see tabel välisvõtit, mis seob teda ülatüübi põhjal loodud tabeliga. 3. Luua iga alamtüübi kohta tabel, mis sisaldab nii ülatüübi atribuutidele vastavaid veerge, kui ka vastava alamtüübi atribuutidele vastavaid veerge. Ülatüübi kohta eraldi tabelit ei looda. 4. Luua tabel nii ülatüübi kohta kui ka iga alamtüübi kohta. Alamtüübi alusel loodud tabelisse lisada selle alamtüübi jaoks unikaalsetele atribuutidele vastavad veerud ja välisvõti, mis seoks seda ülatüübi põhjal loodud tabeliga. Kuidas soovitati loengus loogilise disaini käigus toimida (Connolly & Begg poolt välja pakutud metoodika põhjal) analüüsi andmemudelis esitatud 1:1 binaarse seosetüübiga, mille osaluskohustus on ühes otsas kohustuslik ja teises otsas mittekohustuslik.? 1. Luua seotud olemitüüpide põhjal üks tabel. Ühe olemitüübi kandidaatvõti valida loodud tabeli primaarvõtmeks. 2. Luua seotud olemitüüpide põhjal kaks tabelit. Välisvõti läheb selle olemitüübi alusel loodud tabelisse, mille osaluskohustus seosetüübis on kohustuslik. Lisaks tuleb loodud välisvõtme veerule lisada unikaalsuse kitsendus ja määrata see veerg kohustuslikuks. 3. Tuleb luua vahetabel, kuhu paigutatakse välisvõtmetena kummagi seosetüübis osaleva olemitüübi alusel loodava tabeli primaarvõtmed. 4. Luua seotud olemitüüpide põhjal kaks tabelit. Kui pole lisainformatsiooni, siis on vaba valik, kummasse tabelisse välisvõti luua. 10
Olgu tegemist hulgimüügifirmaga, mille andmebaasis vaja säilitada informatsiooni arvete kohta. Arve esitatakse kliendile, kes kaupa ostab. Tarnija, kes kauplusesse kaupa saadab esitab omakorda arveid kauplusele. Olgu loodud järgnevad tabelid Tarnija (tarnija_id, ärinimi) Primary key (tarnija_id); Klient (kliendikood, ärinimi) Primary key (kliendikood); Arve (arve_number, tarnija, klient, summa, tasumistähtaeg) Primary key (arve_number) Foreign Key (klient) References Klient (kliendikood) Foreign Key (tarnija) References Tarnija (tarnija_id); Arve juures võib olla määratud kas klient või tarnija, aga mitte mõlemad korraga. Millega on tegemist? 1. Täieliku/tõelise kaare lahendus 2. Ühise/üldise kaare lahendus 3. Sõltumatu/seosetu kaare lahendus 4. Lõhutud kaare lahendus 5. See olukord on fiktsioon, sest selline disain ei ole relatsioonilises andmebaasis lubatud ega võimalik Olgu tegemist Oracle andmebaasisüsteemis loodud andmebaasiga. Selles on tabel Kaup. Olgu meil triger: CREATE TRIGGER trigerkaup BEFORE UPDATE OF nimi ON Kaup FOR EACH ROW BEGIN mingid tegevused END; Käivitame trigeriga seotud tabeli suhtes SQL lause: UPDATE Kaup SET hind=1000 WHERE nimi='tallinna kilud'; Mitu korda täidetakse eelnevalt esitatud trigeri kehandis olevad tegevused selle UPDATE lause tulemusel? 1. Mitte kordagi. 2. Täpselt üks kord. 3. Nii mitu korda, kui mitut rida muutis eelnimetatud UPDATE lause. 11
Milline etapp eelneb klassikalises (kaskaadses) infosüsteemi arendusprotsessis vahetult hooldamise etapile? 1. Detailanalüüs 2. Rakendamine (üleviimine) 3. Strateegiline analüüs 4. Disain 5. Realiseerimine (ehitus) Milline väide on ÕIGE avatud klient server andmebaasi puhul? 1. Süsteemi funktsionaalsus on jagatud kliendi ja serveri vahel kuid andmed paiknevad ainult serveril. 2. Süsteemi andmed on jagatud kliendi ja serveri vahel kuid funktsionaalsus paikneb ainult serveril. 3. Süsteemi andmed paiknevad ainult serveril ja funktsionaalsus paikneb ainult kliendi juures. 4. Nii süsteemi funktsionaalsus kui ka andmed paiknevad ainult serveril. 5. Nii süsteemi funktsionaalsus kui ka andmed on jagatud kliendi ja serveri vahel. 12