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 / Vahendid - MS Access

Avalikud küsimused ja vastused:

Küsimuste teemade nimekiri

Anonüümne (16.05.2022 23:51):
Kuidas jõustada MS Accessis kitsendus, et meiliaadress on isiku tõstutundetu unikaalne identifikaator?
Vastus (18.01.2024 00:42): Tõstutundetu unikaalsus tähendab näiteks, et kui süsteemis on registreeritud isiku meiliaadress Mati@mets.ee, siis mõnele teisele isikule meiliaadressi mati@mets.ee registreerida ei saa.

Tõstutundetu unikaalsuse jaoks MS Accessis piisab kui defineerite unikaalsuse kitsenduse. MS Access, erinevalt paljudest teistest andmebaasisüteemidest, kasutab tõstutundetut stringide võrdlemist.

Seega näiteks

SELECT *
FROM Isik
WHERE perenimi='METS';

leiab nii isikud perenimega mets, Mets kui ka METS. Unikaalsuse e kordumatuse kontrollimisel kasutatakse väärtuste võrdlemist. MS Accessi jaoks on järgnev tõene väide: Mati@mets.ee=mati@mets.ee
Seega veerus e_meil ei saa need väärtused samaaegselt olla.

Võrdluseks - PostgreSQLis ja Oracles on unikaalsuse kontroll vaikimisi tõstutundlik, st Mati@mets.ee<>mati@mets.ee ja erinevatel isikutel võivad sellised meiliaadressid olla registreeritud.

PostgreSQLis tuleks sellise reegli jõustamiseks luua kas funktsioonil (upper või lower) põhinev unikaalne indeks või EXCLUDE kitsendus. EXCLUDE kitsendus on unikaalsuse kitsenduse edasiarendus, mille puhul saab väärtuste unikaalsuse e kordumatuse kontrollimiseks kasutada ka mõnda muud operaatorit kui võrdsuse kontrolli operaator (=), mida kasutab UNIQUE kitsendus. Oracles tuleks luua funktsioonil (upper või lower) põhinev unikaalne indeks.

Ei indekseid ega ka EXCLUDE kitsendust SQL standard ette ei näe, st tegemist on võimalustega, mis on spetsiifilised konkreetsele andmebaasisüteemidele.

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!