Kodulehed
[386] - Andmebaasid I (ITI0206) (kevad 2024)
Esiletöstetud Kiirvalik
Lisainfo Kõige olulisemate tegevuste kiirvalik. Failide saatmiseks valige Vastamine alt sobiv ülesanne.
Üldist
Materjalid
LisainfoMaterjalide kataloogid
Isiklik
Lisainfo Info ainult Sulle - teised kasutajad seda ei näe
Abi
Lisainfo Võimalus küsida õppejõult abi (nagu foorum, kus saab küsida küsimusi ja kommenteerida vastuseid)
Mitmesugust
Abi / Kasutajatugi / Andmebaasi kavandamise sisulised küsimused

Avalikud küsimused ja vastused:

Küsimuste teemade nimekiri

Anonüümne (11.02.2024 11:02):
Kuidas jõustada PostgreSQL andmebaasis kitsendus, et tabeli veerus hoitakse rahasummat eurodes?
Vastus (11.02.2024 11:20): Kitsendust eurode kohta ei saa ega pea andmebaasi lisama! Oletame, et andmebaasis on tabel:

Amet (amet_kood, nimetus, min_palk)
Primaarvõti (amet_kood)
Alternatiivvõti(nimetus)

Veerus min_palk on ametikohal makstav minimaalne palk eurodes. Eeldame, et selles veerus olevad arvud esitavad palka eurodes - see on see, kuidas veerus olevaid andmeid interpreteeritakse ja andmebaasi kasutajale peab selle selgeks tegema.

Veerg min_palk peaks olema tüüpi DECIMAL(täpsus,skaala) e NUMERIC(täpsus, skaala) ning ära tuleks määrata täpsus (precision) - kui mitu numbrikohta on väärtuses lubatud ja skaala (scale) - kui mitu numbrikohta on peale koma. Näiteks kui veerg min_palk oleks tüüpi DECIMAL(5,2), siis suurim võimalik minimaalne palk, mida saaks registreerida oleks 999.99 (viis numbrikohta, kaks kohta peale koma).

Kui soovime mõne päringu tulemuses näha palka nii, et seal on ka juures euro sümbol, siis tuleb päringu (SELECT lause) tulemuses palga väärtust formaatida. Selleks saab kasutada näiteks to_char funktsiooni.

SELECT amet_kood, nimetus, TO_CHAR(min_palk, '99999D99l') AS min_palk_formaaditud
FROM Amet
ORDER BY amet_kood;
 
"l" to_char mustris tähendab, et tuleks kasutada serveri lokaliseeringuga määratud valuutat. Kui päringu tulemuses on näiteks dollari sümbolid, siis saaks teha hoopis sellise päringu. || on stringide ühendamise e konkateneerimise operaator.
 
SELECT amet_kood, nimetus, TO_CHAR(min_palk, '99999D99') || ' EUR' AS min_palk_formaaditud
FROM Amet
ORDER BY amet_kood;

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!