# Andmebaasid II (ITI0207) ## Eesmärk Anda teadmisi andmebaasisüsteemide arhitektuurist ja tööpõhimõtetest ning süvendada SQL-andmebaaside projekteerimise ning programmeerimise oskust. ## Õpiväljundid Aine läbinud tudeng: * teab, kuidas toimub andmebaaside projekteerimine ja realiseerimine koskstiilis ja iteratiivsel viisil süsteemiarenduse korral; * teab SQL-andmebaasisüsteemide arhitektuure ja tööpõhimõtteid; * teab SQL-andmebaaside turvalisuse tagamiseks kasutatavaid meetmeid; * teab meetmeid, mida SQL-andmebaasisüsteemid rakendavad, et võimaldada andmebaasi kasutamist korraga paljude kasutajate poolt; * teab SQL-andmebaasides andmebaasioperatsioonide töökiiruse parandamiseks kasutatavaid meetmeid; * tunneb algtasemel objektorienteeritud, NoSQL ja objekt-relatsioonilisi andmebaasisüsteemide põhimõtteid; * tunneb algtasemel hajusaid andmebaase, andmeaitu ja andmevakku ning on tuttav nende projekteerimise iseärasustega; * oskab disainida tehingutöötluseks mõeldud paksu jagatud SQL-andmebaasi ja programmeerida andmebaasi kasutades serveri andmebaasisüsteemi (andmebaasisüsteemide valik esitatakse semestri alguses). Lisaks oskab luua andmebaasi kasutava rakenduse ühes enda valitud vahendis. ## Hindamiskriteeriumid Arvud näitavad, milliste kriteeriumite abil hinnatakse milliseid õpitulemusi. * **Õpiväljundite 1, 3-5, 8 kontrollimine - Iseseisev töö (projekt)**, mille eesmärgiks on andmebaasi projekteerimine ning realiseerimine. Üliõpilased peavad täiendama õppeaines "Andmebaasid I" koostatud iseseisvat tööd. Kellel seda ei ole või kes ei taha tehtud "Andmebaasid I" iseseisva tööga jätkata, saab selle valida õppejõu poolt välja pandud "Andmebaasid I" iseseisvate tööde hulgast. Tegemist on eksamieeldusega. Annab kõikidele nõuetele vastates kuni 60 punkti. Soovijad võivad teha projekti nõutust mahukamaks ning suurendada sellega projekti eest saadavate punktide arvu. Täpsem info on hindamismudelis. * **Õpiväljundite 1, 3-5, 8 kontrollimine - Iseseisva töö kohta praktikumides ülesannete lahendamine.** Annab aktiivsuspunkte. * **Õpiväljundite 6 ja 8 kontrollimine - SQL ülesannete lahendamine.** Võimalik on lahendada vähemalt 75 ülesannet ja saada kokku vähemalt 75 punkti (iga ülesande õigesti lahendamine annab ühe punkti). * **Õpiväljundite 1 ja 8 kontrollimine - UML ülesannete lahendamine.** Võimalik on lahendada vähemalt 20 ülesannet ja saada kokku vähemalt 20 punkti (iga ülesande õigesti lahendamine annab ühe punkti). * **Kõikide õpiväljundite kontrollimine - Eksam.** Valikvastustega test, kus on 30 küsimust, kus iga õige vastus annab ühe punkti. Küsimused valitakse juhuslikult suurema hulga küsimuste seast. Annab kuni 30 punkti. Järgnevalt nimetatavad vahetestid võimaldavad teenida eksamile juurde kuni 18 punkti. Seega kokku võib eksami punktisumma olla kuni 30+18=48 punkti. * 8ndal õppenädalal vabatahtlik vahetest õpiväljundi 1 hindamiseks, kus on 12 valikvastustega küsimust, millest iga iga õige vastus annab 0.5 punkti. * 13ndal õppenädalal vabatahtlik vahetest õpiväljundi 2 hindamiseks, kus on 12 valikvastustega küsimust, millest iga iga õige vastus annab 0.5 punkti. * 16ndal õppenädalal vabatahtlik vahetest õpiväljundite 3-5 hindamiseks, kus on 12 valikvastustega küsimust, millest iga iga õige vastus annab 0.5 punkti. ### Täiendavad võimalused punktide saamiseks * Arvepidamine õppeainega seotud tegevustele kulutatud aja üle ning tulemuse määratud viisil, ajal ja kohas esitamine, annab 10 punkti. * Lisaks praktikumides projektiga tegelemisele on võimalik saada ka muid aktiivsuspunkte (vigade leidmine ja paranduste pakkumine, probleemidele lahenduste pakkumine, huvitavad lahendused ülesannetele jms). ### Olulised märkused * Vahetestide punktid, SQL punktid, UML punktid, töömahu logimise punktid ja aktiivsuspunktid lähevad arvesse ainult saamise semestril. * Kui iseseisev töö esitada esmakordelt ühe nädala jooksul peale töö esitamise tähtaega, siis vähendab see töö punktisummat viie punkti võrra. * Kui iseseisev töö esitada esmakordselt rohkem kui üks nädal peale esitamise tähtaega VÕI peale parandamist teistkordselt, siis väheneb töö punktisumma kümne punkti võrra (sellisel juhul eelmises punktis nimetatud viiepunktilist vähendamist ei rakendata). * Kui iseseisev töö esitada esmakordselt rohkem kui kaks nädalat peale esitamise tähtaega või tuleb esitada iseseisva töö parandatud versioon uuesti hindamiseks, siis iseseisva töö autorite praktikumide aktiivsuspunkte lõpphinde panemisel ei arvestata. * Haiguse või haiguskahtluse korral saab kokkuleppel õppejõuga teha tegevusi füüsiliselt ülikooli kohale tulemata (aktiivsuspunktide kogumine, eksam) või saab neid järgi teha (vahetestid). ## Hinde kujunemine **Lävendi ületamiseks on vajalik saada iseseisva töö eest vähemalt 30 punkti ja eksami eest vähemalt 20 punkti.** **Lõpphinde arvutamise aluseks olevad punktid = iseseisva töö punktid + aktiivsuspunktid + SQL punktid + UML punktid + töömahu logimise punktid + ümardatud eksami punktid** Ümardamise näide: 24.5 => 25 Saadud punktid taandatakse hindamisskaalale: * 170 punkti või rohkem – hinne 5 (suurepärane) * 140–169 punkti – hinne 4 (väga hea) * 110–139 punkti – hinne 3 (hea) * 80–109 punkti – hinne 2 (rahuldav) * 50–79 punkti – hinne 1 (kasin) * 49 punkti või vähem – hinne 0 (puudulik) Võimalikku lõpphinnet sõltuvalt vahetulemusest saab arvutada [hindekalkulaatoriga](https://maurus.ttu.ee/hindekalkulaator/ITI0207_2025/). ## Teemad Andmebaaside disain erinevate arendusmetoodikate korral. Serveri SQL-andmebaasisüsteemide võimalused. Andmebaasisüsteemide arhitektuurid. Andmebaasi turvalisuse tagamine. Transaktsioonide haldus. SQL andmekäitluskeele lausete töötlemine ja optimeerimine. Objektorienteeritud andmebaasid. NoSQL süsteemid. Objekt-relatsioonilised andmebaasisüsteemid. Hajusad andmebaasid. Andmeaidad ja andmevakad. Praktikumides kasutatakse serveri andmebaasisüsteeme Oracle ja PostgreSQL. [Siit võite vaadata teemade mõistekaarte](http://staff.ttu.ee/~erki.eessaar/andmebaasid_2/) ## Soovituslik kirjandus **Ligipääs ja märkused:** * Paljud viidatud raamatud on loetavad O'Reilly platvormil. * Väljastpoolt ülikooli on vajalik [FortiClient VPN](https://taltech.atlassian.net/wiki/spaces/ITI/pages/38994267/Kaug+hendus+FortiClient+VPN+Remote+connection+with+FortiClient+VPN). * Juhend: [Kuidas kasutada O'Reilly digitaalset platvormi?](https://maurus.ttu.ee/vaata_kysimust.php?kysimus=684) * Raamatukogu lingid (ESTER) viitavad füüsilistele koopiatele. * Nende allikate lugemine on **vabatahtlik** ja mõeldud vaid sügavama huvi rahuldamiseks. Aine edukaks sooritamiseks piisab täielikult aine kodulehel olevatest materjalidest. ### 1. Üldine andmebaaside teooria ja disain * [Database Systems: A Practical Approach...](https://www.ester.ee/record=b1679294*est) (Connolly & Begg).**Katab **kõik kursuse teemad** (v.a NoSQL). Klassikaline õpik. * [An Introduction to Database Systems](https://www.ester.ee/record=b1463904*est) (Date).**Katab **kõik kursuse teemad** (v.a NoSQL). Teoreetilise kallakuga. * [Designing Data-intensive Applications](https://www.ester.ee/record=b4688715*est) (Kleppmann).**Toetab teemasid 3, 4, 6, 7, 9, 12. Kaasaegne käsitlus skaleeruvusest. ([E-raamat](https://learning.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/?ar)) * Physical Database Design (Lightstone et al.).**Katab teema 4 (füüsiline disain). ([E-raamat O'Reilly](https://learning.oreilly.com/library/view/physical-database-design/9780123693891/?ar) | [E-raamat EBL](https://ebookcentral.proquest.com/lib/tuee/home.action)) ### 2. SQL ja praktiline arendus * [SQL Antipatterns](https://www.ester.ee/record=b2888667*est) (Karwin).**Väga kasulik **iseseisva töö** tegemisel. ([E-raamat](https://learning.oreilly.com/library/view/sql-antipatterns-volume/9798888650011/?ar) | [Slaidid](https://www.slideshare.net/billkarwin/sql-antipatterns-strike-back)) * [Defensive Database Programming with SQL Server](https://www.red-gate.com/library/defensive-database-programming) (Kuznetsov).**Toetab teemasid 4, 5, 6 ja iseseisvat tööd. ### 3. Agiilne arendus ja NoSQL * [Building the Agile Database](https://www.ester.ee/record=b4425682*est) (Burns).**Toetab teemasid 1 ja 4. Kuidas ühendada andmebaasid ja agiilne metoodika. * [Agile! : The Good, the Hype and the Ugly](https://www.ester.ee/record=b4604870*est) (Meyer).**Toetab teemat 1. Kriitiline vaade agiilsusele. * [NoSQL Distilled](https://www.ester.ee/record=b3046556*est) (Sadalage & Fowler).**Katab teema 9 (NoSQL osa). Lühike ja selge sissejuhatus. ([E-raamat](https://learning.oreilly.com/library/view/nosql-distilled-a/9780133036138/?ar)) Veel suurema valiku lisamaterjale leiate [SIIT](https://maurus.ttu.ee/download.php?aine=346&document=32345&tyyp=do) (kasutajanimi: SIS2, parool: SIS2). **Õppejõud:** Erki Eessaar** **E-mail:** Erki.Eessaar{ät}taltech.ee