Kodulehed
[382] - Andmebaasid I (ITI0206) (kevad 2022)
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 (05.06.2022 12:58):
Kuidas jõustada MS Accessis kitsendus, et mittelõpetatud tubade nimetused peavad olema unikaalsed?
Vastus: Kui andmebaasis defineerida tabelis Tuba unikaalsuse kitsendus UNIQUE (nimetus), siis on nimetus globaalselt unikaalne. Seega, kui tuba on lõpetatud, siis uuesti sama nimetusega tuba registreerida ei saa. Järelikult selline UNIQUE kitsendus ei sobi. Kustutan kõigepealt sellise unikaalsuse kitsenduse:

ALTER TABLE Tuba
DROP CONSTRAINT AK_Tuba_nimetus;

MS Accessis saab kasutada CHECK kitsendustes alampäringuid. Ülesande lahendamiseks tuleb tabelile Tuba lisada järgnev kitsendus. Eeldame, et seisund "Lõpetatud" on koodiga 4.

ALTER TABLE Tuba
ADD CONSTRAINT chk_toa_nimetuse_unikaalsus
CHECK (NOT EXISTS
(SELECT nimetus
FROM Tuba
WHERE toa_seisundi_liik_kood<>4
GROUP BY nimetus
HAVING Count(*)>1));

Ei tohi eksisteerida olukorda, et mittelõpetatud tubasid, mis on ühesuguse nimega, on rohkem kui üks.

Võrdluseks - PostgreSQLis tuleks sellise reegli jõustamiseks luua kas osaline unikaalne indeks (see on indeks, mis on loodud ainult teatud tingimustele vastavatele ridadele - partial unique index) 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 osaline 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!