Kodulehed Valitud koduleht:IDU0230_2017 - Andmebaasid II (IDU0230) (sügis 2017) Logi sisse
Üldist
Pealehe teated
Aine tutvustus
Registreerumine
Kõik teated
Vastuvõtuajad

Teadmiste kontroll
Otsing
Materjalid
Aine korraldus
Iseseisva töö projekti tegemine
Teooria testideks (vahetestid, eksam) valmistumine
Tarkvara saamine ja kasutamine
Tulemused
Tudeng
Oma andmed
Ülesanded
Personaalsed teated
Abi
Korduvad küsimused
Helpdesk
Mitmesugust
Olulised viidad
Teated:
Erki Eessaar: Võimalikud lõputöö teemad
26.01.2018 Teemad sobiksid programmeerimisega hästi kodus olijale ja pigem IAPB õppekaval õppijale.
  • Jätkata avatud lähtekoodiga veebipõhise metaandmetega juhitavate veebirakenduste kiirprogrammeerimise vahendi pgApex arendamist. Selle süsteemi esimese versiooni loomisega lõppenud magistritöös on arendusvaates kirjas suur hulk täiendusvajadusi. pgApexit tuleb ise katsetada, võrrelda Oracle APEXiga ja teha kindlaks, kas leidub veel täiendusvõimalusi. Järgmiseks ülesandeks on väljalaske planeerimine (release planning) – milline funktsionaalsus lõputöö tulemusena realiseerida. Tuleb valida meetod selle otsustamiseks ja seda rakendada. Kõik täiendused tuleb mudelite abil projekteerida ja ka tarkvaras realiseerida ning testida. Töö peab ka kirjeldama täienduste tegemise protsessi. Siin on pgApexi serverisse üles laetud arenduskeskkond ning siin on selle vahendi MIT litsentsiga kaitstud lähtekood. Töö tulemus peab olema samuti avatud lähtekoodiga, mida kaitseb MIT litsents. Projekt peab olema GitHubis. Töö kõrvaltegevusena tuleb teha statistikat andmebaasi skeemimuudatuste ja nendest tingitud rakenduse lähtekoodi muudatuste kohta.
  • phpPgAdmin vahendi teisendamine PostgreSQL 10.0-ga koostöötavaks. PostgreSQL viimastes versioonides lisandunud andmebaasiobjektidele/võimalustele toetuse lisamine (hetktõmmised, identiteedi veerud, laiendused, välised tabelid, …). Kindlasti on veelgi võimalikke funktsionaalsuse täiendusi, aga ka kasutajaliidese parandamise võimalusi. Täienduste hulk peab kaitsmiskomisjonile muljet avaldama ja täpne hulk selgub töö käigus. Lisaks vahendi täiendamisele on vaja ka täiendused mudelite keeles ära kirjeldada. Tulemuseks olev tarkvara versioon peab olema samuti avatud lähtekoodiga ning GitHubis kättesaadav.
  • Enterprise Architecti täiendamine. Kõik selles jaotises olevad teemad tähendavad muuhulgas vajadust töö tulemusena hinnata, kui lihtne või keeruline on Enterprise Architect CASE vahendi funktsionaalsust laiendada. Kõigi nendel teemadel töö tegijatele on oluline see bakalaureusetöö, kus projekteeritakse ja realiseeritakse Enterprise Architecti jaoks mudeliteisendus. Siit, aga näite nimekirja kõigist kolmandate osapoolte poolt loodud Enterprise Architecti laiendustest. Üks sellisel teemal tehtud töö peaks lisaväärtusena sisaldama Enterprise Architecti mallide parandusi, mis likvideerivad "Andmebaasid II" iseseisva töö ülesandes 4 väljatoodud puudujäägid.
    1. Luua Enterprise Achitect (EA) CASE vahendis skriptid või muu lahendus, mis ühtlustab andmebaasi füüsilise disaini mudelis kitsenduste ja indeksite nimesid võttes aluseks tabelite ja veergude nimed (nt primaarvõtme kitsenduse nimi pk_). Kasutajal peab olema võimalus nimede formaate ise määrata/muuta.
    2. Enterprise Achitect (EA) CASE vahendis saab muuhulgas genereerida andmebaasi füüsilise disaini mudelist SQL koodi. See on mudelist koodi genereerimise näide. EA võimaldab luua uusi koodigeneraatoreid. Lõputöö ülesandeks on projekteerida ja realiseerida koodigeneraator, mis loeb sisendinda andmebaasi füüsilise disaini mudelit ja põhiobjekti olekumasina mudelit ning produtseerib PostgreSQL jaoks trigerite koodi, mis kontrollib seisundimuudatuse vastavust olekumasina mudelile (vt andmebaaside mustripõhise juhendi ("Andmebaasid I" kodulehel) Oracle koodinäidet, kus on selliste trigerite näide).
    3. "Puhast koodi" (clean code) on lust lugeda ja lihtne edasi arendada. Kood on spetsifikatsioon arvutitele, mudel on spetsifikatsioon inimestele. Nii nagu puhas kood on soovitavad ka puhtad mudelid. Clean Code raamatus esitatud koodi puhastamise juhiste alusel on ühes bakalaureusetöös kirja pandud samasugused juhised süsteemianalüüsi mudelitele. Töö ülesandeks on hinnata kõigi nende juhiste alusel mudelite automatiseerimise võimalust ning realiseerida EA laiendus, mis võimalikult suure hulga juhiste alusel mudelite kontrollimist automatiseerib.


Erki Eessaar: Mõtteid andmebaaside arengusuundadest
26.01.2018 Kellel ei ole veel andmebaasidest mürgistust tekkinud, siis siin on viide ühele lugemist väärivale raamatule.

Üle kümne aasta uus väljaanne: Readings in Database Systems, 5th Edition. Selles esitavad andmebaasidega seotud teadus- ja arendustöö suurkujud viiteid mõnedele andmebaaside valdkonda palju ja püsivalt mõjutanud teadusartiklitele. Mis peamine, iga peatüki ees on toimetajate kommentaar, milles tutvustatakse artikleid ning kommenteeritakse andmebaasisüsteemide minevikku, olevikku ja tulevikku. Kellel on andmebaaside ja maailma selle valdkonna trendide vastu sügavam huvi, soovitan lugeda.



Erki Eessaar: Teadanne hetkel PostgreSQLi kasutajatele
02.01.2018 Kellelgi teist on andmebaasis riknenud väline tabel ja/või sellega opereerimiseks vajalik laiendus. Selle tabeli põhjal päringut tehes luuakse ühe ühenduse asemel nii palju ühendusi, et aktiivsete ühenduste limiit saab täis. Ei Teie ise ega teised serveri kasutajad ei saa peale seda edasi töötada.

Kui käivitate päringu välise tabeli põhjal ja saate teate, et on liiga palju kliente, siis palun

  • Käivitage lause: DROP EXTENSION IF EXISTS postgres_fdw CASCADE;
  • Käivitage uuesti üleseande 5 väliste tabelite kood


Erki Eessaar: Lõpphinde moodustumisest
28.12.2017 Kordan üle kuidas moodustub hinne. Punktid liidetakse kokku ja taandatakse TTÜ hindamisskaalale (0-50 punkti hinne 0; 51-60 punkti hinne 1, ..., rohkem kui 91 punkti hinne 5). Lisaks tuleb positiivse lõpphinde saamiseks ületada kaks lävendit.
  • Projekti punktid (saate teada minupoolt saadetud hindamismudeli failist). Lävendi ületamiseks on vaja vähemalt 31 punkti.
  • Eksami punktid. Lävendi ületamiseks on vaja vähemalt 20 punkti. Eksami punktide saamiseks liidetakse:
    1. vahetestide punktid (võimalik saada kuni 18 punkti),
    2. lõpptesti punktid (võimalik saada kuni 30 punkti).
  • Harjutustundides kogutud aktiivsuspunktid.

Vahetestide punktid aitavad ületada eksami lävendit ja suurendavad ka lõplikku punktisummat. Aktiivsuspunktid ühtegi lävendit ületada ei aita, kuid suurendavad lõplikku punktisummat.



Erki Eessaar: Kasutaja tuvastamisest
27.12.2017 Midagi neile, kes pole veel projekti esitanud ja mis hakkas silma esitatud projekte vaadates.

Töövihiku projektis registreeritakse eraldi isiku seisund (elus, surnud, ...) ja töötaja seisund (tööl, puhkusel, vallandatud, lahkunud poolte kokkuleppel, ...). Mõistlik oleks sisselogimisel kontrollida nii töötaja kui ka isiku seisundit, et näiteks sellest maailmast lahkunud isik ei saaks süsteemi siseneda (ilmselgelt kasutab siis keegi tema kontot kurjasti ära). Need seisundid on omavahel seotud (kui isik sureb, siis tuleb tema kui töötajaga tööleping lõpetada), kuid kunagi ei tea kas kõik muudatused on andmebaasi jõudnud – parem karta kui kahetseda.



Erki Eessaar: Eksamiks valmistumine
25.12.2017 Nüüd on kataloogis Teooria testideks (vahetestid, eksam) valmistumine/Loengud väljas slaidid kõikide eksamil küsitavate teemade kohta. Loengute lindistuste failis (samas kataloogis) on viide loengule eelmisest aastast, kus räägiti viimastest teemadest (10, 12, 14).

Soovin kõigile kaunist pühade jätku!



Erki Eessaar: Vastuvõtuajad
22.12.2017 Kui keegi soovib eksamisessiooni ajal projekti kohta konsultatsiooni või kontrollprogrammiga ülevaatamist, siis selleks on võimalus vastuvõtuaegadel.


Erki Eessaar: Minimaalsuse põhimõttest õiguste jagamisel
22.12.2017 Minimaalsuse põhimõte õiguste jagamisel tähendab, et annate kasutajale kõik õigused, mis on tööks vajalikud, kuid mitte midagi rohkem. Oma rakendusele vastavale kasutajale on vaja anda vaid need õigused, mida see rakendus tööks vajab. Seega näiteks, kui realiseerite töökoha A jaoks andmebaasis kaks funktsiooni ja töökoha B jaoks samuti kaks funktsiooni, kuid rakendus realiseerib vaid töökoha B, siis tuleb rakendusele vastavale kasutajale anda vaid nende kahe funktsiooni käivitamise õigus, mida B kasutab.


Erki Eessaar: pgApex ja X detailandmete vaatamine
20.12.2017 Küsimusi võib tekitada pgApexis kasutusjuhu Vaata kõiki X realiseerimine. Hetkel ei võimalda pgApex realiseerida nimekirjavormi, kust X eksemplari valimine viib lehele, kus kuvatakse selle eksemplari kõiki andmeid.

Seda ülesannet saab pgApexi korral lahendada nii, et loote andmebaasis vaate, kus kasutate kokkuvõttefunktsiooni string_agg. Vaate alampäring paneb iga registreeritud X eksemplari kohta kokku täpselt ühe rea. Selles reas on andmed kõigist tabelitest, mis sisaldavad X eksemplari andmeid – näiteks Kaup, Kauba_kategooria_omamine, Kauba_omaduse_väärtus, Kauba_variant. string_agg funktsiooni kasutamise abil saate teha näiteks seda, et iga kauba kohta pannakse kokku nimekiri kategooriatest ja nende tüüpidest, millesse see kaup kuulub. Võite nimekirjas kategooriate eraldajaks panna ';< br >' (eemaldage tühikud), et veebilehe kaudu vaadates oleks iga kategooria andmed väljas eraldi real (aruandes tuleb selle veeru korral märkida Is text escaped=False). Vaate alampäringus tuleb kasutada välisühendamist tagamaks, et juhul kui näiteks X eksemplar ei kuulu ühtegi kategooriasse, oleks selle andmed ikkagi päringu tulemuses. Selle vaate peale saate teha pgApexis aruande. Ei näe küll väga ilus välja, kuid ajab asja ära. Selle eest, et ei saa klõpsata lingil, misjärel avanevad konkreetse X eksemplari andmed, miinust ei saa – eeldusel, et suures nimekirjas on kõik andmed olemas. Kui selline lahendus ei rahulda, siis võib rakenduse teha ka muus vahendis. string_agg kasutava vaate loomise lisandväärtus on, et see annaks korrektse realisatsiooni korral lisapunkte (vt hindamismudel, lisapunktide tööleht).

string_agg kasutamise näite leiate andmebaasi kapseldamise slaidikomplektist kataloogis Teooria testideks (vahetestid, eksam) valmistumine/Harjutustunni slaidid (enamasti iseseisvaks uurimiseks). Otsige sealt sõna string_agg.



Erki Eessaar: SET search_path "SECURITY DEFINER" funktsioonides
19.12.2017 Funktsioonid tuleb luua SECURITY DEFINER omadusega ning PostgreSQL korral tuleb jälgida, et seda tehtaks turvalisel viisil.

Nägin andmebaase ülevaadates paaril juhul, et funktsioonides oli otsingutee pandud jutumärkidesse.

SET search_path = "public, pg_temp"; Väidetavalt tekkisid jutumärgid, kui funktsiooni PgAdmini akende kaudu lisada. SEE ON VIGA!

Õige moodus, nii nagu on ka näidatud teate alguses viidatud lehel, on otsingutee ümber jutumärke mitte panna. Samuti ei saa kasutada apostroofe. Kui neid kasutate, siis kood ei tööta nagu vaja.

Minupoolne näide on mängitud läbi http://maurus.ttu.ee/346 kataloogis Andmebaasid 2/Andmebaasisüsteemide juhendid ja koodinäited/Slaidid andmebaasiobjektide kohta failis Operaatorid ja funktsioonid andmebaasisüsteemis PostgreSQL. SQL keeles kirjutatud kasutaja-defineeritud funktsioonid. slaidi 69 märkmelehel.

Mina ei saa PgAdmin vigade eest vastutust võtta, vaid saan ainult neile osutada. Lahenduseks on kirjutada ise CREATE FUNCTION lause ja see käima tõmmata.

Vaadake ka seda.



Erki Eessaar: Ühekordne vastuvõtuaja muudatus
18.12.2017 Neljapäeval 21. detsembril 2017 toimub minu vastuvõtt erandkorras kell 15:00-16:00 ruumis ICT-627. Kell 16:00-17:00 toimuv vastuvõtuaeg jääb ära.


Erki Eessaar: Rutiinidest ja trigeritest
17.12.2017 Palun pöörata rutiinide kirjutamisel (ülesanne 8) tähelepanu järgnevale.

Kui kontrollite seisundimuudatuste lubatavust trigeritega (trigerite loomist käsitleb ülesanne 11), siis selle asemel, et kirjutada rutiinis:

UPDATE Kaup
SET kauba_seisundi_liik_kood=2
WHERE kaup_kood=p_kaup_kood AND kauba_seisundi_liik_kood=1;
/*Seisundisse 2 saab viia vaid seisundis 1 olevaid kaupu.*/

kirjutage:

UPDATE Kaup
SET kauba_seisundi_liik_kood=2
WHERE kaup_kood=p_kaup_kood;

Niimoodi väldite koodi halba lõhna Dubleerimine.

Teistpidi – kui trigerite abil pole sellist kontrolli tehtud, siis oleks parem selline lisatingimus rutiini lisada.



Erki Eessaar: Liiga palju kliente
15.12.2017 Võibolla puutusite sellel nädalal kokku probleemiga, et ühel hetkel ei saanud enam apex.ttu.ee serveris oleva PostgreSQL andmebaasisüsteemiga ühendust, sest lubatud samaaegsete ühenduste arv sai täis.

Selgus, et probleemi allikaks oli ühes andmebaasis olev riknenud väline tabel ja/või selle loomiseks vajalik laiendus. Selle tabeli põhjal päringut tehes loodi ühe ühenduse asemel nii palju ühendusi, et aktiivsete ühenduste limiit sai täis. Käivitades nimetatud andmebaasis lause:

DROP EXTENSION IF EXISTS postgres_fdw CASCADE;

ning seejärel uuesti ülesandes 5 oleva väliste tabelite loomise koodi, sai väliseid tabeleid probleemideta kasutada. Kui puutute sama probleemiga kokku oma andmebaasis, siis peaksite toimima sarnaselt - kustutage laiendus ja sellest sõltuvad objektid enda andmebaasist ning käivitage ülesande 5 kood uuesti.

Palun vabandust, et põhjusele varem jälile ei jõudnud.



Erki Eessaar: Vahetest 16ndal õppenädalal
08.12.2017 16ndal õppenädalal (19.12.2017-22.12.2017) on harjutustundide alguses võimalik teha vabatahtlikku vahetesti loengute teemade 5-7 kohta. Ettevalmistamiseks on teemade slaidid, loengute lindistused ja kordamisküsimused eksamiks. Need materjalid on väljas kodulehel kataloogis Teooria testideks (vahetestid, eksam) valmistumine.

Testil osalemiseks on kohustuslik registreerida. Registreerimine toimub Mauruse kaudu: Üldist => Teadmiste kontroll (nagu kevadel SQL kontrolltööle). Kuna klassi peab jääma hingamisruumi, siis on ühele ajale registreerijate arvu ülapiir range. Testil osalemiseks peab olema kaasas isikut tõendav dokument (nagu kevadel SQL kontrolltööl ja eksamil; raamatukogu- krediit- jms kaardid ei sobi ja nendega testi teha ei saa; autojuhiluba sobib).

Test toimub elektrooniliselt, Mauruse testikeskkonnas. Kasutada võib arvutiklassi arvutit või oma arvutit (erinevalt eksamist, mis toimub ainult arvutiklassi arvutites). Küsimustele vastamiseks materjale kasutada ei või. Testis on kuus juhuslikult valitud küsimust, vastamiseks on aega 10 minutit. Küsimused on valikvastustega ning ainult üks vastuse variant on õige. Nädala jooksul saab testi teha maksimaalselt ühe korra. Kui Te ei soovi testi teha, siis peate tundi tulema 15 minutit peale algust.

Seda testi järgi teha ei saa, kuid kokkuleppel õppejõuga võib selle teha varem.



Erki Eessaar: Ülesanne 8
06.12.2017 Täiustasin ülesande 8 algust ja kirjutasin seal alguses paremini lahti kaks näidet PostgreSQL põhjal, millest üks käsitleb pessimistlikku ja teine optimistlikku lähenemist ridade lukustamisele.

Mis puudutab juhtaja töökohta, siis juhataja saab lõpetada X eksemplare. Kui realiseerite lõpetamise funktsiooni, mis lihtsalt muudab tabelis X seisundit, siis selleks, et samaaegsed seisundimuudatused üksteist üle ei kirjutaks ning ei tekitaks vastuolu projekti seisundidiagrammiga on vaja ka realiseerida ülesandes 11 viidatud seisundimuudatuste trigeripõhine kontroll.



Erki Eessaar: pgAdminis andmebaaside filtreerimine
06.12.2017 Minult on korduvalt küsitud, kas pgAdmin vahendis on olemas samasugune filtreerimise võimalus nagu Oracle SQL Developeris. Päris samasugust ei ole. Kuid pgAdmini kasutajatel on võimalik ühenduses ära määrata, millised andmebaasid peaksid olema ühenduse kaudu nähtavad. Kui panete sinna kirja oma andmebaasi, siis ei pea seda hiljem serveris 800+ ülejäänu hulgast otsima. Tegin selle kohta video, mis on kataloogis Tarkvara saamine ja kasutamine/PostgreSQL videod (PostgreSQL 9.3 baasil) - andmebaaside filtreerimine


Erki Eessaar: Eksamiaegade muudatus
05.12.2017 Osalen sügissemestril IAPB õppekava lõputööde kaitsmiskomisjonis. Viimasel hetkel muudeti kaitsmise aegu ja seega pean muutma ka eksamiaegu eksamisessiooni viimasel nädalal. Eksamiajad 24. jaanuaril ja 25. jaanuaril ning vastuvõtuaeg 24. jaanuaril on asendatud järgnevate aegadega.

Eksam
23. jaanuar 2018 kell 14:00, 15:30 ICT-402
24. jaanuar 2018 kell 10:00, 11:15 ICT-402

Vastuvõtuaeg
23. jaanuar 2018 kell 12:30–13:30 ICT-627

Vabandan segaduse eest!



Erki Eessaar: PostgreSQL lisaharjutamine
03.12.2017 Huvitav keskkond neile, kes tahaksid veebipõhises interaktiivses keskkonnas rohkem PostgreSQLi harjutada.


Erki Eessaar: Töö 14nda nädala harjutustunnis
01.12.2017 Selleks, et töö 14nda õppenädala harjutustunnis kulgeks võimalikult ladusalt palun Teil enne harjutustundi tulekut läbi lugeda ülesande 10 viis esimest lehekülge.


Erki Eessaar: Iseseisva töö esitamine
01.12.2017 Iseseisva töö esitamise tähtaeg on 22. detsember 2017 kell 23:59:59. Esitamine toimub Mauruse kaudu. Enne failide saatmist lugege palun ülesandest, mis kujul tuleb vastused saata.

Iseseisva töö personaalset ettenäitamist (nagu on aines "Andmebaasid I") ei toimu. Ülesande 9 lk 1 on kirjas, millisel juhul on vaja tulla oma projekti andmebaasirakendust eksamisessiooni ajal toimuval vastuvõtuajal ette näitama. Vastuvõtuajad on kirjas eksamit tutvustava dokumendi lõpus (kataloog Aine korraldus). Mingil ajal peale töö esitamist saate minult e-meilile minu poolt täidetud hindamismudeli faili.

Meenutan, et hindamismudelis (kataloog Aine korraldus) on lehekülg Lisapunktid, kus on kirjas võimalused saada projekti eest rohkem punkte, tehes selleks projekti nõutust mahukamaks.

Olen tänaseks pannud kataloogi Iseseisva töö projekti tegemine/Töö harjutustunnis (samm-sammuline juhend) kõik ülesanded, mis kokku moodustavad projekti tegemise juhendi.

Kataloogi Teooria testideks (vahetestid, eksam) valmistumine/Harjutustunni slaidid (enamasti iseseisvaks uurimiseks) on pandud viimane slaidikomplekt, millest võiks olla abi nii projektis nõutud täitmisplaani kirjelduse koostamisel, kui ka viimaseks lisapunktide testiks ja eksamiks (teema 7 kohta) ettevalmistamisel.



Erki Eessaar: ODBC Database valiku lisamine lindile
30.11.2017 Märkasin harjutustunnis, et mõnede üliõpilaste arvutites ei olnud MS Access 2016-s menüü "External Data" all valikut "ODBC Database". Siis tuleb see valik ise menüüsse lisada. Tegin selle kohta lühikese video ja panin kataloogi "Tarkvara saamine ja kasutamine/PostgreSQL + MS Access videod (MS Access 2013 baasil)" lõppu.


Erki Eessaar: Eksam
28.11.2017 Kataloogis Aine korraldus on dokumendis Eksam_IDU0230_2017.pdf väljas informatsioon eksami kohta.


Erki Eessaar: Kiirtest
25.11.2017 Kui teete projekti PostgreSQLis, siis saate oma andmebaasi testimiseks tarvitada kiirtesti, kuhu on koondatud kontrollid, mille tulemused osutavad suure tõenäosusega probleemile/veale. Tähelepanu! Kui kiirtest midagi ei leia, siis see ei garanteeri probleemide/vigade puudumist. Samuti võib kiirtesti tulemuses olla nii väärpositiivseid kui väärnegatiivseid tulemusi.

Kiirtesti käivitamiseks minge andmebaaside disaini kontrollimise rakendusse (vanem kasutajaliides; uuem kasutajaliides). Valige huvipakkuv andmebaas. Testiks valige Quick test. Andke korraldus test käivitada. Vanemas kasutajaliideses vajutage selleks nupule "Execute and show only queries that return rows".

Stiilinäiteks on päring, mis loendab kokku andmebaasis kasutaja poolt loodud trigereid ja reegleid. Tulemuses on rida vaid siis, kui nende arv on alla kolme.

WITH activedb AS (SELECT trigger_schema, trigger_name, 'TRIGGER' AS type
FROM INFORMATION_SCHEMA.triggers
WHERE trigger_schema NOT IN (SELECT schema_name
FROM INFORMATION_SCHEMA.schemata
WHERE schema_name<>'public' AND
schema_owner='postgres' AND schema_name IS NOT NULL)
UNION SELECT r.schemaname, r.rulename, 'RULE' AS type
FROM pg_catalog.pg_rules r, pg_catalog.pg_namespace n, pg_catalog.pg_user u
WHERE r.schemaname = n.nspname AND n.nspowner = u.usesysid AND
(n.nspname = 'public' OR u.usename <> 'postgres'))
SELECT 'Too few triggers and/or rules, must be at least 3' As comment, (SELECT Count(*) AS cnt FROM activedb) AS cnt
WHERE (SELECT Count(*) AS cnt FROM activedb)<3;

Mõned kommentaarid.

  • Skeemis pg_catalog on PostgreSQL süsteemikataloogi baastabelid.
  • Skeemis INFORMATION_SCHEMA on süsteemikataloogi baastabelite põhjal defineeritud standardse struktuuriga vaated.
  • Trigerite ja reeglite otsimisel on vaja jätta välja süstemikataloogis loodud trigerid ja reeglid.
  • WITH klausel võimaldab defineerida käesoleva lause piires kasutatavaid virtuaalsed tabelid, millele lauses saab peale defineerimist nime kasutades viidata. See võimaldab SQL koodi paremini struktureerida. WITH klauslis võib olla järjest mitu alampäringut. Igas sellises alampäringus saab viidata kõikidele selles lauses eespool defineeritud alampäringutele.
  • PostgreSQLis võib kirjutada SELECT lause, kus puudub FROM klausel, aga on WHERE klausel. WHERE klausli eesmärgiks on antud juhul tagada, et päringu tulemuses on rida vaid siis, kui trigerite ja reeglite koguarv on alla kolme.
  • SELECT klauslisse saab kirjutada konstante ja ka mittekorreleeruvaid skalaarseid alampäringuid. Nende väärtuseid korratakse kõikides päringu tulemuseks olevates ridades.
  • Väikeste andmehulkade korral ei ole PostgreSQLis NOT IN konstruktsiooni kasutamine probleem, kuid suurte andmehulkade korral tuleks sellest töökiiruse huvides hoiduda.


Erki Eessaar: Harjutustund 13ndal õppenädalal
24.11.2017 13nda õppenädala (28.11.2017-01.12.2017) harjutustunnid erinevad eelmiste ja järgnevate nädalate harjutustundidest. Peale vahetesti räägin tahvli ees ja näitan asju ette (ülesande 9 põhjal) ning loodan, et teete kaasa. Jutt puudutab muidugi otseselt projekti. Sellel nädalal harjutustunnis aktiivsuspunkti ei saa.

Selleks, et saaksite harjutustunnis kaasa töötada ning hiljem saadud infot oma projekti juures rakendada, palun Teil oma arvutisse panna PostgreSQL ODBC draiver ja luua andmeühenduse spetsifikatsioon vastavalt siin toodud juhendile. Selleks, et kõik töötaks nagu vaja valige palun versioon psqlodbc_09_05_0400. Kui olete installeerinud mõne hilisema versiooni, siis võtke see palun maha ja pange peale nimetatud versioon.

Hilisemate versioonide häda on selles, et kui loote andmeühenduse spetsifikatsiooni PostgreSQL_yhendus, kus jätate enamiku väljadest tühjaks, siis tabelite MS Accessi linkimisel ei avata mitte akent, kus saab täita lüngad, vaid saate veateate.



Erki Eessaar: Vahetest 13ndal õppenädalal
17.11.2017 13ndal õppenädalal (28.11.2017-01.12.2017) on harjutustundide alguses võimalik teha vabatahtlikku vahetesti loengute teemade 3-4 kohta. Ettevalmistamiseks on teemade slaidid, loengute lindistused ja kordamisküsimused eksamiks. Need materjalid on väljas kodulehel kataloogis Teooria testideks (vahetestid, eksam) valmistumine.

Testil osalemiseks on kohustuslik registreerida. Registreerimine toimub Mauruse kaudu: Üldist => Teadmiste kontroll (nagu kevadel SQL kontrolltööle). Kuna klassi peab jääma hingamisruumi, siis on ühele ajale registreerijate arvu ülapiir range. Testil osalemiseks peab olema kaasas isikut tõendav dokument (nagu kevadel SQL kontrolltööl ja eksamil; raamatukogu- krediit- jms kaardid ei sobi ja nendega testi teha ei saa; autojuhiluba sobib).

Test toimub elektrooniliselt, Mauruse testikeskkonnas. Kasutada võib arvutiklassi arvutit või oma arvutit (erinevalt eksamist, mis toimub ainult arvutiklassi arvutites). Küsimustele vastamiseks materjale kasutada ei või. Testis on kuus juhuslikult valitud küsimust, vastamiseks on aega 10 minutit. Küsimused on valikvastustega ning ainult üks vastuse variant on õige. Tulemuse saate teada kohe, kuid vastuste õigsust saab vaadata üheksanda nädala harjutustundides. Nädala jooksul saab testi teha maksimaalselt ühe korra. Kui Te ei soovi testi teha, siis peate tundi tulema 15 minutit peale algust.

Seda testi järgi teha ei saa, kuid kokkuleppel õppejõuga võib selle teha varem.



Erki Eessaar: Kitsenduste jõustamise vajadusest
17.11.2017 Hea näite kahe silma vahele jäänud kitsendusest toob Amazoni asutaja ja boss Jeff Bezos. Amazoni algusaastatel avastas ta sellest vea, mis lasi kliendil tellida negatiivse arvu raamatuid, mille järel kanti raha kliendi krediitkaardile. Hr Bezos viskab nalja, et ilmselt tuli siis jääda ootama, kuni klient neile raamatud saadab. Video, kus hr Bezos sellest ise räägib.


Erki Eessaar: PostgreSQL 10.1
12.11.2017 PostgreSQList tuli välja veaparandutega versioon 10.1. Uut funktsionaalsust ei lisandunud, kuid parandati turvalisusega seotud ja muid vigu. Nüüdsest on ka apex.ttu.ee serveris PostgreSQL 10.1. Kui täheldate serveris mingeid tõrkeid (nt midagi on katki läinud), siis andke palun teada. Ühtlasi on see hea näide PostgreSQLi arendamise aktiivsusest.


Erki Eessaar: Infoks ID-kaartide kasutamise kohta arvutiklassides
30.10.2017 Anname teada, et ID-kaartidega mis on saanud viimased sertifikaadiuuendused ei ole enam võimalik õpperuumides arvutitesse logida. Töötame koos teiste osapooltega, et selle funktsionaalsuse töö taastada, aga kuna põhjus tuleneb ID-kaardi tehnilise loogika muutmisest, siis hetkel võimalikke lahendusi teada ei ole.

Võimalike ebamugavuste vältimiseks palume kõigil kes seni ID-kaardiga arvutisse loginud omale https://pass.ttu.ee iseteeninduskeskkonnas TTÜ Uni-ID kasutajakonto ja parool aktiveerida.



Erki Eessaar: Tagasiside küsitlus
29.10.2017 Kataloogis Aine korraldus on 26. oktoobril 2017 loengus toimunud tagasiside küsitluse tulemuste kokkuvõte.


Erki Eessaar: SQLi olulisusest
26.10.2017 Arvamusartikkel, miks SQL pole koos NoSQL süsteemide pealetungiga oma tähtsust minetanud ning on vahepeal võibolla veidi kõikuma löönud positsioone taastamas. Väide on, et SQL on andmetega töötamiseks sobilik ühiskeel (lingua franca).


Erki Eessaar: Tagasiside küsitlus 26.10.2017 loengus
25.10.2017 26. oktoobri loengus toimub "Mudaste kaartide" anonüümne tagasiside küsitlus aine kohta. Tagasiside on oodatud ja õppejõule kasulik. Olen sealt saanud mitmeid õppetöö parema korraldamise ideid, mida juba jooksval semestril või vähemalt järgmistel semestritel rakendada.


Erki Eessaar: Tehniline võlg
13.10.2017 Huvitav magistritöö tehnilise võla kohta. See oleks huvilistele vabatahtlikuks lisamaterjaliks teema 1 kohta.


Erki Eessaar: Vahetest kaheksandal õppenädalal
13.10.2017 Kaheksandal õppenädalal (24.10.2017-27.10.2017) on harjutustundide alguses võimalik teha vabatahtlikku vahetesti loengute teemade 1-2 kohta. Ettevalmistamiseks on teemade slaidid, loengute lindistused ja kordamisküsimused eksamiks. Need materjalid on väljas kodulehel kataloogis Teooria testideks (vahetestid, eksam) valmistumine.

Testil osalemiseks on kohustuslik registreerida. Registreerimine toimub Mauruse kaudu: Üldist => Teadmiste kontroll (nagu kevadel SQL kontrolltööle). Kuna klassi peab jääma hingamisruumi, siis on ühele ajale registreerijate arvu ülapiir range. Testil osalemiseks peab olema kaasas isikut tõendav dokument (nagu kevadel SQL kontrolltööl ja eksamil; raamatukogu- krediit- jms kaardid ei sobi ja nendega testi teha ei saa; autojuhiluba sobib).

Test toimub elektrooniliselt, Mauruse testikeskkonnas. Kasutada võib arvutiklassi arvutit või oma arvutit (erinevalt eksamist, mis toimub ainult arvutiklassi arvutites). Küsimustele vastamiseks materjale kasutada ei või. Testis on kuus juhuslikult valitud küsimust, vastamiseks on aega 10 minutit. Küsimused on valikvastustega ning ainult üks vastuse variant on õige. Tulemuse saate teada kohe, kuid vastuste õigsust saab vaadata üheksanda nädala harjutustundides. Nädala jooksul saab testi teha maksimaalselt ühe korra. Kui Te ei soovi testi teha, siis peate tundi tulema 15 minutit peale algust.

Seda testi järgi teha ei saa, kuid kokkuleppel õppejõuga võib selle teha varem.



Erki Eessaar: pgAdmin 4 v2.0
09.10.2017 Seoses sellega, et apex.ttu.ee serveris on nüüd PostgreSQL 10.0 oleks vaja enda tööarvutisse installeerida pgAdmin 4 uus versioon - v2.0. Enne seda tuleks pgAdmin 4 eelmine versioon arvutist maha võtta (kui see on installeeritud).


Erki Eessaar: Intelligentne võti
09.10.2017 Intelligentne võti on sisulise tähendusega võtme eriliik ja sisaldab kodeeritud informatsiooni. Intelligentse võtme näiteks riigi piires on isikukood. Näiteks nii Eestis kui Soomes sisaldab see infot sünniaja ja soo kohta. Intelligentse võtme kasutamise väljakutseks on, et kui kodeering muutub, tuleb kõik sellest kodeeringust sõltuvad programmid ümber teha. Viimaste uudiste kohaselt on Soomes arutusele tulnud kodeeringu muutmine. Põhjus on nii koodide otsalõppemine (vana skeem ei võimalda kõigile isikukoodi vajajatele unikaalset koodi genereerida) kui ka soov sooneutraalsuse järele.

Moraal - koode, mis on "kõrgemalt poolt" (riik, standardiseerimisega tegelev organisatsioon, ettevõtte peakontor jne) ette kirjutatud tuleb kasutada, kuid ise ei peaks selliseid koode leiutama hakata.



Erki Eessaar: PostgreSQL 10
07.10.2017 apex.ttu.ee serveris on nüüd PostgreSQL 10.0 (tuli ametlikult välja 5. oktoobril 2017).

Tuleb välja, et phpPgAdmin (viimane versioon pärit aastast 2013) versiooni 10 ei toeta ja seega phpPgAdmini kasutada ei saa. Andmebaasiga töötamiseks tuleb kasutada kas psqli või PgAdmin 4. Kui serveris on PostgreSQL 10, siis PgAdmin 3 abil sisenemisel saab veateateid ja hoiatusi, kuid lõpuks võimaldab tarkvara siiski serveris olevate andmebaasidega töötada.

Kui midagi ei tööta nagu vaja, siis andke palun teada.



Erki Eessaar: Lisapunktidest ja korraldusest
06.10.2017 Kataloogis Tulemused on lisapunktide aruanne . Uuendan seda iga nädala lõpus. Kui olen seal teinud vigu, siis andke palun teada.

Kui käite harjutustunnis, kus on palju rahvast ning Teile tundub, et ei saa piisavalt õppejõu tähelepanu, siis võite tulla mõnda harjutustundi kus on vähe rahvast:

  • teisipäeviti kell 16:00 ICT-404,
  • kolmapäeviti kell 16:00 ICT-122,
  • reedeti kell 14:00 ICT-404.

Kui mõni loeng peaks minema üle aja, siis vabandan selle eest. Võite alati tunni lõppedes lahkuda ja ei pea jääma ootama minu jutu lõppu.



Erki Eessaar: Andmemudelite kataloog
06.10.2017 Viienda nädala loengus mainisin mustreid ja universaalseid andmemudeleid.

Huvitava ressursina on Internetis ajaveeb, milles tuuakse välja mitmete erinevate eluvaldkondade (liising, kogumine, spordikool, tenniseturniirid, e-oksjon jne) andmebaaside andmemudelid. Tegemist on SQL-andmebaaside loogilise disaini mudelitega (seal kirjeldatakse võtmed ja välisvõtmed, kuid ei arvestata konkreetse andmebaasisüsteemi võimaluste ning piirangutega). Esitatud mudelites on nii diagrammid kui tabelite kirjeldused. Nendest mudelitest saab kerge vaevaga tuletada kontseptuaalsed andmemudelid.

Igal mudelil on tabelid jaotatud erinevate ainevaldkondade vahel (erineva taustavärviga kastid). Need kastid vastavad üldjoontes registritele. Sageli märkade kastide nimedes AND märki, mis tähendab, et ühte valdkonda on kokku võetud mitmele erinevale põhimõistele vastavad tabelid. See on otstarbe lahususe põhimõtte eiramine. Parem oleks, kui igale põhimõistele vastaks eraldi register.

Miks on ikkagi oluline jõuda analüüsi tulemusel hea kontseptuaalse andmemudelini? Jaakkola et al. (2016) teadusartikli kohaselt kasvavad nõuete kogumise (analüüsi) faasis tehtud vigade parandamiseks kuluv pingutus iga järgmise süsteemiarenduse faasiga kolm korda. Disaini faasis on neid 3, realiseerimise faasis 9 ja testimise faasis 27 korda kulukam parandada kui nõuete kogumise faasis. Seega on oluline, et analüüsi tulemus oleks tasemel.



Erki Eessaar: Veel ühikuhinnast
01.10.2017 Kui Teie teemaks on üldine e-pood, kus põhimõtteliselt võib müüa kõike (kommikottidest televiisoriteni ja pabertaskurätikutest autodeni), siis peab tarkvara toetama vajadusel ühikuhinna ja selle aluseks oleva mõõtühiku registreerimist. Kui tegemist on mingile kindlale kauba tüübile/väikesele hulgale tüüpidele keskendunud e-poega, siis sõltub ühikuhinna vajadus nendest tüüpidest. Määruse paragrahv 5 näeb ette ühikuhinna avaldamise erisused.

Olen vastavalt täiendanud ka eeldusaine lehel olevat kaupade registri näidet.



Erki Eessaar: Projekti täiendus
26.09.2017 Kui Teie projekti teemaks on kaupade arvestus, siis on sõltuvalt müüdavast kaubast võibolla lisaks müügihinnale vaja registreerida ning tarbijatele teatavaks teha ühikuhind. Seda nõuab tarbijakaitseseadus (paragrahv 7) ja nõudeid täpsustab majandus- ja taristuministri määrus "Kauba ja teenuse hinna avaldamise nõuded". Vajadusel peaksite täiendama "Andmebaasid I" projekti.


Erki Eessaar: Tarkvara
15.09.2017 Kolmanda nädala harjutustunnis läheb vaja SQL Developeri ning neljanda nädala harjutustunnis pgAdmini. Samuti on täpsustunud info ODBC draiverite kohta. Siit leiate tarkvara allalaadimiseks vajalikud lingid ja tarkvaraga seotud muu info.


Erki Eessaar: SQL:2016
09.09.2017 2016. aasta lõpus tuli välja SQL standardi uus versioon - SQL:2016. Siin on hea ülevaade selle poolt SQLi tehtud lisandustest. Ütleksin kommentaariks, et PostgreSQL võimaldab paljusid neid asju, lihtsalt mitte täpselt sellise süntaksiga nagu SQL standard ette näeb.


Erki Eessaar: EA litsentsi laenutamine
08.09.2017 Failist TUTKeyStorage.bat on uus versioon, mille saate alla laadida kas http://viktor.ld.ttu.ee/software või http://maurus.ttu.ee/359.


Erki Eessaar: Uus raamat
03.09.2017 TTÜ raamatukokku jõudis kaks eksemplari Martin Kleppmanni uuest raamatust Designing data-intensive applications : the big ideas behind reliable, scalable, and maintainable systems. See raamat katab paljusid teemasid, mida käsitleb "Andmebaasid II" ja läheb ka sellistesse detailidesse, milleni aines ei jõuta. Soovitan seda raamatut lugeda!

Lisainfot leiab Martin Kleppmanni ajaveebist.