Kas erinevates andmebaasisüsteemides on tekstiotsing vaikimisi tõstutundlik või tõstutundetu? SELECT * FROM Isik WHERE perenimi='Mets';Tõstutundetu (case insensitive) otsingu korral leitakse nii isik perenimega Mets kui ka isik perenimega mets.Tõstutundliku (case sensitive) ot... tõstutundlikkustekstiotsingSQL päringudPostgreSQLMS AccessMySQLOracle 25.06.2024 18:40:32 | Erki Eessaar
Mis vahe on identifitseerival ja mitteidentifitseerival seosel tabelite vahel? Identifitseeriv seos tähendab, et lapsolemi identiteet sõltub täielikult vanemast. Kui vanemat pole, ei saa laps üldse eksisteerida, sest see on oma olemuselt vanema "osa". Näiteks tellimuse rida pole mõeldav ilma konkreetse tellimuseta, ... identifitseeriv seosmitteidentifitseeriv seosvälisvõtieksistentsiaalne sõltuvusnõrk olemitüüpON DELETE CASCADEandmebaasi disain 15.04.2024 17:12:59 | Erki Eessaar
Kuidas konkateneerida MS Accessis, PostgreSQLis ja LibreOffice Baseis tekstilisi väärtuseid, kui üks väärtus puudub (on NULL)? Oletame, et andmebaasis on tabel, kuhu on lisatud kaks rida andmeid. Ühel isikul perenimi puudub (on NULL).CREATE TABLE Isik(isik_id INTEGER,eesnimi VARCHAR(50) NOT NULL,perenimi VARCHAR(50), stringide liitminekonkatenatsioonNULL väärtusCoalesceMS AccessPostgreSQLConcat 23.03.2024 16:53:47 | Erki Eessaar
Kuidas oleks PostgreSQLis töökiiruse mõttes kõige efektiivsem leida andmed ühest tabelist ja väljastada tulemuses ka tõeväärtus, mis leitakse teises tabelis olevate andmete põhjal? Järgnev katsetus on tehtud PostgreSQL (16) põhjal.Andmebaasis on tabelid järgmise kontseptuaalse struktuuriga:[Person]-1----------0..*-[Health_care_visit]Tabelis Person on 70_000 rida.Tabelis Hea... PostgreSQLjõudlusoptimeerimineEXISTSalampäringpäringu plaantäitmiskiirus 22.03.2024 09:11:42 | Erki Eessaar
Kas Count(1) ridade arvu loendamiseks on kiirem kui Count(*)? Oletame, et SQL-andmebaasis on tabel:Isik(isikukood, perenimi)Primaarvõti (isikukood)LauseSELECT Count(*) AS arvFROM Isik;leiab tabelis Isik olevate ridade... kokkuvõttefunktsioonjõudlustöökiirusPostgreSQLCountoptimeeriminepäringu plaanEXPLAIN ANALYZE 17.03.2024 17:26:19 | Erki Eessaar
Kas tühja stringi esinemise keelamine ja NOT NULL kitsendus on üks ja sama asi? Ei ole! Tühi string on väärtus (kuigi väga lühike).NULL on tähis, et väärtust ei ole.NOT NULL veergu saab seega tühja stringi panna, sest see täidab tingimuse, et väljas peab väärtus olema.Kui näiteks s... tühi stringNULLNOT NULLCHECK kitsendusOracle erinevusedandmekvaliteetpuuduvad väärtused 03.03.2024 12:21:36 | Erki Eessaar
Kuidas kiirendada PostgreSQLis päringuid, kus päringu tingimuses kontrollitakse stringi vastavust mustrile (nt leia isikud, kelle perenimi algab M tähega)? Looge tekstilisele veerule indeks ja kasutage selle puhul operaatori klassi, mis pole vaikimisi klass. TEXT tüüpi veeru korral kas... generate_seriestestandmete genereerimineindeksPostgreSQLindeksidmustripõhine otsingjõudlusoperaatoriklassid 27.10.2023 16:28:47 | Erki Eessaar
Kas ühes ja samas SQL päringus võib segamini kasutada vanemat ja uuemat ühendamise süntaksi? Jah, see on tehniliselt võimalik. Kuid see ei ole soovitav, sest halvendab koodi loetavust.Halvem.SELECT Tudeng.tudkood, Tudeng.perenimi, Oppimine.oppim_algus, Oppimine.oppim_lopp, Aine.aine_kood, Aine.nimetus... puhas koodclean codeSQLjoinühendamineloetavussüntakshea tava 19.03.2023 12:58:12 | Erki Eessaar
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... andmebaasi disainM:N seos1:N seosnõrk olemitüüpliitvõtiandmete modelleeriminevälisvõti 23.02.2023 15:50:41 | Erki Eessaar
Miks ei ole hea mõte kasutada kõikides tabelites surrogaatvõtit? Surrogaatvõti on lihtvõti, mille väärtused on süsteemi genereeritud unikaalsed täisarvud. Need väärtused on kasutusel tarkvara siseselt ridade identifitseerimiseks, kuid andmebaasi kasutavatele inimestele ei tähenda need väärtused mi... surrogaatvõtisisuline võtiprimaarvõtivälisvõtiandmebaasi disainpäringute kiirusindeksid 20.02.2023 17:41:01 | Erki Eessaar