Andmebaaside ajaveeb

Mõtteid andmebaasidest, andmebaasisüsteemidest ja nende kavandamisest

Mul on sellised ja sellised tabelid ning ma pean nende põhjal lahendama sellise ja sellise andmete otsimise ülesande. Milline oleks selle ülesande kõige parema jõudlusega lahendus?

Tuleb korraldada eksperiment ja erinevaid lahendusi katsetada. Kui Teil pole käepärast serverit, kus saate "liivakastis" mängida, siis isegi keskkonnas nagu DB Fiddle


Kuidas teha kindlaks, kas PostgreSQL andmebaasisüsteem viib läbi automaatset prügikoristust?

Prügikoristus on vajalik, sest PostgreSQL kasutab multiversioon konkurentsjuhtimist (multiversion concurrency control), mis tähendab, et rea lugemine ei takista samal ajal selle sama rea muutmist ning rea muutmine ei takista samal ajal selle...


Kuidas oleks termin "paks andmebaas" inglise keeles ja kust selle lähenemise kohta veel infot saaks?

Sellise andmebaasi kohta võib ka öelda "jäme andmebaas". Otsetõlge oleks "thick database" või thickDB (sõna "fat" võib tänapäeval äkki kedagi solvata), kuid kasutatakse ka termineid "smart database" või "smartDB". Eesti keeles oleks see "nutikas andm...


Milliseid täiendusi SQL standardisse tegi SQL:2023 ja millised nendest võimalustest on ka PostgreSQL'is (kuni versioonini 16) olemas?

2023. aastal tuli peale pikka ootamist välja SQL standardi uus versioon - SQL:2023. Eelmine versioon oli SQL:2016 - nimes on viide aastale.


Miks mitte kasutada klassifikaatori tabeli, välisvõtme veeru ja sellel oleva välisvõtme kitsenduse asemel loendustüüpi veergu?

Sest see: vähendab lahenduse porditavust e ülekantavust, vähendab lahenduse paindlikkust,  suurendab keerukust, suurendab PostgreSQL näitel salvestusruumi kasutamist. Kirjutan järgnevalt se...


Kas oskate soovitada kirjandust, kust saaks näiteid ja infot kuidas PostgreSQLis objekt-relatsioonilisest tulenevaid võimalusi ära kasutada ning sellega kaasnevaid plusse ja miinuseid (lisaks kasvavale keerukusele)?

PostgreSQL on objekt-relatsiooniline andmebaasisüsteem. Kirjutan objekt-relatsioonilisusest SIIN. Muuhulgas on seal ...


Igal isikul on null või rohkem meiliaadressi. Võib juhtuda, et mitu isikut jagavad ühte ja sama meiliaadressi. Kas selliste andmete hoidmiseks peaks tegema kokku kolm tabelit: meiliaadresside tabeli, isikute tabeli ja meiliaadresside ja isikute vahelist M:N seost esitava vahetabeli?

Ma arvan, et ei peaks.Kui andmebaasis oleksid tabelid:Isik (isik_id, ...)Primaarvõti (isik_id)E_meil (e_meil_id, e_meil)Primaarvõti (e_meil_id)Alternatiivvõti (e_meil)Isiku_meiliaadres...


Miks on halb mõte kasutada erinevates tabelites ühesuguse nimega (id, kood või code) primaarvõtme veergu?

See muudab keerulisemaks tabelites olevatest andmetest arusaamise ja tabelite põhjal päringute tegemise.Sellise nimega primaarvõtme veerud on üks sümptom, mis viitab sellele, et andmebaasi disainis esineb


Kas PostgreSQLis peaks vaate alampäringus kasutama SELECT ... FOR UPDATE?

Ei! Tõsi on see, et PostgreSQLis saab erinevalt Oraclest (12.1) vaate alampäringus kasutada SELECT ... FOR UPDATE.


Kas Oracles saab defineerida vaadetele kitsendusi?

Jah saab. Esiteks saab vaadetele lisada WITH CHECK OPTION (andmemuudatus vaate kaudu peab rahuldama vaate alampäringu tingimusi) ja WITH READ ONLY (vaade on ainult lugemiseks, st kirjutuskaitsega) kitsendused. Neid kitsendusi jõustatakse ...