Kui tabelis Riik on (nimetus) alternatiivvõti, siis miks ei piisa selle jõustamiseks UNIQUE kitsendusest? Miks on vaja veerule nimetus ka NOT NULL kitsendust?

Postitas Erki Eessaar 23.02.2023 01:01
Hästi kavandatud tabelis peaks olema üks või rohkem kandidaatvõtit. Kandidaatvõtme väärtus + kandidaatvõtme veergude nimed + tabeli nimi on loogiline aadress, mille järgi andmebaasist tabeli rida üles leida. Kui aadressi pole või see on väärtuste puudumise tõttu mittetäielik, siis rida leida ei saa.

Tüüpiliselt valitakse üks kandidaatvõti primaarvõtmeks e esmasvõtmeks, ülejäänud on alternatiivsed võtmed e alternatiivvõtmed.

Primaarvõtme väärtus peab SQL reeglite järgi olema alati registreeritud. Isegi kui primaarvõtme veerule ei deklareerita NOT NULL, siis kontrollib andmebaasisüsteem, et igas reas oleks primaarvõtme väärtus olemas. Alternatiivvõti pole millegi poolest halvem. See oli võrdväärne kandidaat primaarvõtmeks, aga jäi valimata. Unikaalsuse tagamiseks on veerule vaja UNIQUE. Kuna vaikimisi on SQLis kõik mitte-primaarvõtme veerud valikulised (lubavad NULLe), siis on vaja veerule ka NOT NULL.

Teiste sõnadega, kui süsteemianalüüs oleks näidanud, et mõnel riigil võib nimetus puududa, siis poleks (nimetus) selles tabelis kandidaatvõti ega ka alternatiivvõti.

Hinda postitust:

Keskmine hinne : Pole veel hinnanguid!