# Andmebaasid I (ITI0206) ## Eesmärk Anda teadmisi erinevate andmemudelite (sh relatsiooniline, SQL, hierarhiline ja võrkmudel) põhimõtetest ning teadmisi ja oskuseid andmebaasikeelest SQL ning UML keele abil tehingutöötluse SQL-andmebaaside ja nende andmebaasirakenduste projekteerimisest. ## Õpiväljundid Aine läbinud üliõpilane: * selgitab relatsioonilist andmemudelit; * tükeldab andmekeskseid tehingutöötlusele orienteeritud infosüsteeme allsüsteemideks; * projekteerib ja prototüübib kõrge tasemeni normaliseeritud tehingutöötlusele orienteeritud SQL-andmebaasi ning selle andmebaasirakendust, kasutades selleks UML keelt, CASE vahendit ja vabalt valitud SQL-andmebaasisüsteemi/rakenduse loomise vahendit; * kasutab SQL andmebaasikeelt päringute ja andmemuudatuste läbiviimiseks andmebaasis ning andmebaasi struktuuri (tabelite) ja käitumise (tabelitega seotud deklaratiivsete kitsenduste) loomiseks, arvestades sealjuures SQLi puudustega. ## Hindamine ja lävend ### Hindamiskriteeriumid * **Õpiväljundi 4 kontrollimine** - SQL ülesanded; eksamieeldus. * **Õpiväljundite 2 ja 3 kontrollimine** - Iseseisev töö (projekt või UML ja SQL ülesanded) - andmebaasi projekteerimine ja prototüüpimine; eksamieeldus. * **Kõikide õpiväljundite kontrollimine** - Teoreetiliste ja praktiliste küsimustega kirjalike (veebipõhine) testide tegemine. **Lävendi ületamiseks on vajalik saada:** * iseseisva töö eest arvestus (ja seega vähemalt 80 punkti), * SQL ülesannete eest vähemalt 50 punkti, * teooria testide eest kokku vähemalt 50 punkti. ### Lõpphinde kujunemine **Kui lõpptesti järel selgub, et teooria eest ei tule kokku vähemalt 50 punkti, siis on lõpphinne 0 ja lõpptest tuleb uuesti teha.** Kui lõpptesti järel selgub, et teooria eest tuleb kokku vähemalt 50 punkti, siis: **Lõpphinne = liidetakse kõik kogutud punktid ja taandatakse hindamisskaalale.** * 420-... punkti – hinne 5 * 360-419 punkti – hinne 4 * 300-359 punkti – hinne 3 * 240-299 punkti – hinne 2 * 180-239 punkti – hinne 1 Võimalikku lõpphinnet sõltuvalt vahetulemusest saab arvutada [hindekalkulaatoriga](https://maurus.ttu.ee/hindekalkulaator/ITI0206_2025/). ## Aine osad ### SQL ülesanded SQL ülesannete lahendamine keskkonnas, mis kontrollib automaatselt vastuseid. Välja on pakutud vähemalt 105 ülesannet, iga ülesande lahendamine nii, et süsteem tunnistab vastuse õigeks, annab 2 punkti - kokku võib saada vähemalt 210 punkti. Lahendamine on avatud kuni 15nda õppenädala lõpuni. ### Iseseisev töö Kolm võimalikku tegemise viisi, millest tuleb valida üks. * Teha projekt vabal teemal nii, et alustada nullist (rühmatöö 1-3 inimesega; sõltuvalt arvestuse ajast 120-180 punkti). * Teha projekt töövihiku põhjal nii, et jätkata etteantud pooleli projekti (rühmatöö 1-3 inimesega; sõltuvalt arvestuse ajast 90-130 punkti). * Lahendada kõik 80 etteantud UML ja SQL ülesannet (individuaaltöö; 80 punkti). **Kui iseseisva töö projekt arvestatakse:** * 1.–13. õppenädal: Vaba teema 180 punkti / Töövihik 130 punkti * 14.–15. õppenädal: Vaba teema 170 punkti / Töövihik 120 punkti * 16. õppenädal: Vaba teema 160 punkti / Töövihik 110 punkti * 17. õppenädal: Vaba teema 140 punkti / Töövihik 90 punkti * 18. õppenädal: Vaba teema 120 punkti **Märkused:** * Töövihiku projekti eest on võimalik arvestus saada kuni eksamisessiooni esimese nädala reedeni. * Vaba teema projekti eest on võimalik arvestus saada kuni eksamisessiooni teise nädala reedeni. * Kui valisite algselt projekti tegemise, kuid see ei saa tähtajaks arvestust, on Teil võimalik aine siiski sooritada, lahendades kõik UML ja SQL ülesanded. * Varasematel semestritel saadud projekti arvestused kehtivad. Hindamisel kasutatavad punktid määratakse kindlaks vastavalt jooksval semestril kehtivatele reeglitele. ### Teooria * Neljanda õppenädala jooksul toimuv vahetest võimaldab saada kuni 10 punkti. Testis on kümme küsimust, iga õige vastus annab ühe punkti. Punktide saamiseks tuleb testi etteantud ajaperioodi jooksul teha (koos vastuste esitamisega) _vähemalt_ kolm korda. * Kaheksanda õppenädala jooksul toimuv vahetest võimaldab saada kuni 10 punkti. Testis on kümme küsimust, iga õige vastus annab ühe punkti. Punktide saamiseks tuleb testi etteantud ajaperioodi jooksul teha (koos vastuste esitamisega) _vähemalt_ kolm korda. * Kaheteistkümnenda õppenädala jooksul toimuv vahetest võimaldab saada kuni 10 punkti. Testis on kümme küsimust, iga õige vastus annab ühe punkti. Punktide saamiseks tuleb testi etteantud ajaperioodi jooksul teha (koos vastuste esitamisega) _vähemalt_ kolm korda. * Lõpptesti küsimustele vastamise eest saadav võimalik maksimaalne punktide arv on 100. Lõpptestis on 25 küsimust, iga õige vastus annab neli punkti. Lõpptest on arvutiklassis. ### Täiendavad võimalused punktide saamiseks * Sissejuhatava ülesande lahendamine teisel õppenädalal annab kuni 10 punkti. * Arvepidamine õppeainega seotud tegevustele kulutatud aja üle ning tulemuse määratud viisil, ajal ja kohas esitamine, annab 10 punkti. * 3.-12. õppenädalal isesisva tööga praktikumis füüsiliselt kohal olles tegelemine või nädala lõpus nädala jooksul iseseisva tööga seoses tehtu individuaalselt raporteerimine annab nädala kohta ühe aktiivsuspunkti - kokku on võimalik saada kuni 10 punkti. * Punkti saamiseks tuleb iseseisva tööga nädala jooksul tegeleda vähemalt 90 minutit. * Muud aktiivsuspunktid (vigade leidmine ja paranduste pakkumine, probleemidele lahenduste pakkumine, huvitavad lahendused ülesannetele jms). ## Teemad Andmebaas. Andmebaasisüsteem. Andmemudelid, sh NoSQL süsteemides kasutatavad andmemudelid. Relatsiooniline andmemudel. Relatsioonialgebra. SQL andmebaasikeel ja selle abil loodavad andmebaasiobjektid. SQLi puudused. Tehingutöötluseks mõeldud SQL-andmebaasi projekteerimise võimalik metoodika, sh selle käigus loodavad UML mudelid. Strateegiline analüüs. Detailanalüüs. Olemi-suhte diagrammid ja nende loomine UMLi abil. Andmete modelleerimise mustrid. Normaliseerimine. Denormaliseerimine. Transaktsioonilise SQL-andmebaasi loogiline ja füüsiline disain. CASE vahendi kasutamine andmebaasi projekteerimiseks. [Siit võite vaadata teemade mõistekaarte](http://staff.ttu.ee/~erki.eessaar/andmebaasid_1/) ## 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. SQL ja praktika * [Head First SQL](https://learning.oreilly.com/library/view/head-first-sql/9780596526849/?ar) (O'Reilly).**_Kommentaar:_ Sobib hästi **esmatutvuseks**. Kirjutatud humoorikas võtmes ja visuaalselt haarav (nt hea NULL-i seletus lk 44). * [SQL Queries for Mere Mortals](https://learning.oreilly.com/library/view/sql-queries-for/9780134858432/?ar) (O'Reilly).**_Kommentaar:_ Konkreetne ja tõhusate selgitustega. * [Siit saab alla laadida](https://www.informit.com/store/sql-queries-for-mere-mortals-a-hands-on-guide-to-data-9780134858333) raamatu näidisandmebaasid ja lahendused (sakk _Downloads_). ### 2. Relatsiooniline teooria * [Database in Depth](https://learning.oreilly.com/library/view/database-in-depth/0596100124/?ar) (O'Reilly). * [An Introduction to Relational Database Theory](https://bookboon.com/en/an-introduction-to-relational-database-theory-ebook). ### 3. Andmebaaside kavandamine ja "antimustrid" * [Andmebaaside projekteerimine](https://www.ester.ee/record=b2431333*est) (ESTER). * [SQL Antipatterns](https://learning.oreilly.com/library/view/sql-antipatterns-volume/9798888650011/?ar) (O'Reilly). * Raamatu teemadel on koostatud ka [slaidikomplekt](https://www.slideshare.net/billkarwin/sql-antipatterns-strike-back). * Vanem versioon on leitav [raamatukogust](https://www.ester.ee/record=b2888667*est). ### 4. UML ja agiilne arendus * **UML:** Hea eestikeelne lühijuhend on [UMLi kontsentraat](https://www.apollo.ee/umli-kontsentraat.html) (tasub otsida raamatukogust). Põhjaliku ingliskeelse ülevaate annab [Applying UML and Patterns](https://learning.oreilly.com/library/view/applying-uml-and/0131489062/?ar) (O'Reilly). * **Agiilsus:** [Building the agile database](https://www.ester.ee/record=b4425682*est).**_Kommentaar:_ See raamat kinnitab, et korrektsed andmebaasi põhimõtted on **mõistlikud, võimalikud ja kasulikud** ka moodsa agiilse arenduse puhul. Veel suurema valiku lisamaterjale leiate [SIIT](https://maurus.ttu.ee/download.php?aine=346&document=33254&tyyp=do) (kasutajanimi: SIS2, parool: SIS2). **Õppejõud:** dotsent Erki Eessaar** **E-mail:** Erki.Eessaar(ät)taltech.ee