Kas PostgreSQLi DATE ja TIMESTAMP tüüpi veergude kitsenduste puhul tuleb arvestada spetsiaalväärtusega 'infinity'? Jah, mõnikord tuleb. Toon näite.PostgreSQLi DATE ja TIMESTAMP tüüpidesse kuuluvad spetsiaalväärtused 'infinity' (suurem kui kõik ülejäänud DATE/TIMESTAMP väärtused) ja '-infinity' (väiksem kui kõik ülejää... PosgtreSQLandmetüüpandmetüübidspetsiaalväärtusspetsiaalväärtusedCHECK kitsendusPostgreSQLDATETIMESTAMPinfinitykitsendusedajavöönderiväärtused 27.10.2022 10:30:05 | Erki Eessaar
Miks on PostgreSQLis kasulik kasutada DATE ja TIMESTAMP tüüpidesse kuuluvat spetsiaalväärtust 'infinity'? PostgreSQLi DATE ja TIMESTAMP tüüpidesse kuuluvad spetsiaalväärtused 'infinity' (suurem kui kõik ülejäänud DATE/TIMESTAMP väärtused) ja '-infinity' (väiksem kui kõik ülejäänud DATE/TIMESTAMP väärtused).Ne... PosgtreSQLandmetüüpandmetüübidspetsiaalväärtusspetsiaalväärtusedvaikimisi väärtusPostgreSQLDATETIMESTAMPinfinityajavöönderiväärtusedpäringud 14.10.2022 10:43:10 | Erki Eessaar
Mis erinevus on primaarvõtme ja kandidaatvõtme vahel? See on nagu organisatsioonile juhi valimised. Oletame, et on kolm kandidaati. Üks valitakse peadirektoriks. Tema saab ametiauto ja eraldi kabineti. Ülejäänud kaks ei saa peadirektoriks, kuid saavad asedirektori tiitli ning samuti ametiauto ja eraldi ... primaarvõtikandidaatvõtiesmasvõtivõtmekandidaatalternatiivvõtiNOT NULLunikaalsustabeli disain 01.06.2022 00:00:00 | Erki Eessaar
Mille põhjal otsustada, kas kitsendus tuleks defineerida `DEFERRABLE` omadusega? Miks mitte määrata kõikide kitsenduste puhul `DEFERRABLE INITIALLY DEFERRED`? DEFERRABLE INITIALLY DEFERRED kitsenduse definitsioonis tähendaks seda, et kitsenduse kontroll lükkub transaktsiooni lõppu - transaktsioon võib sisaldada mitut andmemuudatust, transaktsiooni käigus võivad muudatused olla kitsendusega vastuolus, kuid ... DEFERRABLEkitsendusedtransaktsioonidandmete laadiminejõudlusPostgreSQLOracle 01.06.2022 00:00:00 | Erki Eessaar
Tooge palun mõni andmebaasisüsteemi poolt tehtava semantilise teisenduse näide?! Andmebaasisüsteemi poolne päringu lihtsustamine tähendab, et andmebaasisüsteem asendab kasutaja poolt ette antud päringu lihtsama, kuid alati samasuguse tulemuse andva päringuga (loogiliselt samaväärse päringuga) ja täidab selle uue päringu. Lih... semantiline teisendusoptimeeriminetabeli elimineerimineOraclePostgreSQLkitsendusedpäringu lihtsustamine 01.06.2022 00:00:00 | Erki Eessaar
Mis vahe on välisvõtme spetsifikatsioonis ON UPDATE/ON DELETE RESTRICT ja ON UPDATE/ON DELETE NO ACTION vahel? ON DELETE/ON UPDATE RESTRICT tähendab, et viidete terviklikkust... viidete terviklikkuskompenseeriv tegevusvälisvõtivõõrvõtiPostgreSQLOraclevälisvõtiviitamisterviklikkusON DELETEON UPDATERESTRICTNO ACTIONPostgreSQLOracle 01.06.2022 00:00:00 | Erki Eessaar
Kas oleks mõistlik hoida andmebaasis asukoha andmeid aadressi ja riigi kombinatsiooni asemel koordinaatidena? Kui jah, siis mis oleks sobivaim andmetüüp selleks(nii Oracles kui Postgresis)? Kõik sõltub sellest, millisel otstarbel on plaanis neid andmeid kasutada. Kui tegemist on taustainfoga, mille alusel ei tehta täpseid otsinguid ja mida võibolla trükitakse kirjadele/arvetele, siis piisab veerust aadress. Tõstaksin... osaline unikaalne indeksexclude kitsenduspoint andmetüüpdecimalnumericarvutatav veergtüübiteisendusasukoha andmedkoordinaadidandmetüübidPostgreSQLOracleGIS 01.06.2022 00:00:00 | Erki Eessaar
Kas andmete andmebaasi tasemel valideerimine (eelnevalt defineeritud reeglitele vastavuse kontrollimine) on hea mõte või mitte? Minu arvates on hea mõte. Järgnev tekst üritab seda põhjendada.Väide: Kui rakenduse tasemel andmeid valideeritakse, siis andmebaasi tasemel pole seda enam vaja teha, sest see on liiga keeruline. Vastus: Kõik sõltub selle... trigerkitsendusconstrainttriggerprimaarvõtivälisvõtiuniqueprimary keyforeig keychecknot nullMongoDBPostgreSQL 01.06.2022 00:00:00 | Erki Eessaar
Kas isiku rollide omamise registreerimise võiks realiseerida nii, et luua loendustüüp rollide nimedega ning kasutajate tabelis luua veerg, mille väärtuseks on seda loendustüüpi väärtuste massiiv? See on võimalik, aga ma ei soovita. Soovitan rollide jaoks luua eraldi klassifikaatori tabeli ja luua eraldi tabeli rollide omamiste kohta.CREATE TYPE t_roll AS ENUM('juhataja','administraator','tavakasutaja'); enumenumeration typePostgreSQLmassiividloendustüüpdisainandmemudelnormaliseerimine 01.06.2022 00:00:00 | Erki Eessaar
Kas PostgreSQLi loendustüüpi võiks kasutada väga harva muutuvate klassifikaatorite (näiteks seisundite liigid) realiseerimiseks? See on võimalik, aga ma ei soovita. Soovitan nende asemel luua ja kasutada klassifikaatorite tabeleid.CREATE TYPE t_tellimuse_seisundi_liik AS ENUM('loodud','kinnitatud','tühistatud','täidetud');CREATE TABLE... PostgreSQLENUM tüüpklassifikaatoridandmebaasi disainloendustüüpmitmekeelsuslaiendatavus 01.06.2022 00:00:00 | Erki Eessaar