Primaarvõti vs kordumatu võti
Veergu või veergude komplekti, mida saab kasutada andmebaasi rea või ridade tuvastamiseks või neile juurde pääsemiseks, nimetatakse võtmeks. Ainulaadne võti on võti, mis suudab relatsiooniandmebaaside kontekstis unikaalselt tuvastada tabeli rea. Ainulaadne võti koosneb ühest veerust või veergude komplektist. Esmane võti on ka tabeli veergude kombinatsioon, mis tuvastab rea üheselt. Kuid seda peetakse unikaalse võtme erijuhuks.
Mis on kordumatu võti?
Nagu varem mainitud, on ainulaadne võti üks veerg või veerukomplekt, mis suudab üheselt tuvastada tabeli rea. Seega on unikaalne võti piiratud nii, et selle kaks väärtust pole võrdsed. Üks oluline omadus on see, et ainulaadsed võtmed ei rakenda piirangut NOT NULL. Kuna NULL tähistab väärtuse puudumist, kui kahes reas on veerus NULL, ei tähenda see, et väärtused oleksid võrdsed. Ainulaadse võtmena määratletud veerg lubab selles veerus ainult ühe NULL-i väärtuse. Siis saab seda konkreetset rida unikaalselt tuvastada. Näiteks saab õpilaste andmeid tabelis, mis sisaldab õpilaste teavet, määratleda õpilase ID kordumatu võtmena. Kuna kahel õpilasel ei saa olla sama isikutunnust, identifitseerib see ainuüksi ühe õpilase. Nii et õpilase ID veerg vastab unikaalse võtme kõigile omadustele. Sõltuvalt andmebaasi kujundusest võib tabelis olla rohkem kui üks kordumatu võti.
Mis on esmane võti?
Primaarvõti on ka veerg või veergude kombinatsioon, mis määratleb ainulaadselt rea relatsioonilise andmebaasi tabelis. Tabelis võib olla maksimaalselt üks primaarvõti. Primaarvõti rakendab kaudset MITTE Null-piirangut. Seega ei saa primaarse võtmena määratletud veerul olla NULL-i väärtusi. Esmane võti võib olla tabelis tavaline atribuut, mille puhul on tagatud, et see on kordumatu (nt sotsiaalkindlustuse number), või see võib olla unikaalne väärtus, mille genereerib andmebaasihaldussüsteem, näiteks globaalselt unikaalne identifikaator (GUID) Microsoft SQL Serveris. Primaarvõtmed määratletakse ANSI SQL standardis oleva PRIMARY KEY piirangu kaudu. Primaarvõtme saab määratleda ka tabeli loomisel. SQL võimaldab põhivõtme koosneda ühest või enamast veerust ja iga primaarvõtmesse kuuluv veerg on kaudselt määratletud kui MITTE Null. Kuid mõned andmebaasihaldussüsteemid nõuavad primaarvõtme veergude muutmist selgesõnaliselt MITTE Nulliks.
Erinevus primaarvõtme ja kordumatu võtme vahel
Ehkki nii primaarvõti kui ka kordumatu võti on üks või mitu veergu, mis suudavad tabeli rea üheselt tuvastada, on neil siiski mõned olulised erinevused. Kõige tähtsam on see, et tabelil võib olla ainult üks primaarvõti, samas kui sellel võib olla rohkem kui üks kordumatu võti. Primaarvõtit võib pidada ainulaadse võtme erijuhuks. Teine erinevus on see, et primaarvõtmetel on kaudne MITTE Null-piirang, samas kui ainulaadsel võtmel see piirang puudub. Seetõttu võivad unikaalsed võtmeveerud sisaldada või mitte sisaldada NULL-i väärtusi, kuid primaarvõtmeveerud ei tohi sisaldada NULL-i väärtusi.