Põhiline erinevus võõrvõtme ja primaarvõtme vahel on see, et võõrvõti on veerg või veergude komplekt, mis viitab teise tabeli primaarvõtmele või kandidaatvõtmele, samas kui primaarvõti on veerg või veergude komplekt mida saab kasutada tabeli rea unikaalseks tuvastamiseks.
Vergu või veergude komplekti, mida saab kasutada andmebaasi rea või ridade tuvastamiseks või sellele juurde pääsemiseks, nimetatakse võtmeks. Relatsiooniandmebaasi primaarvõti on tabeli veergude kombinatsioon, mis tuvastab üheselt tabeli rea. Võõrvõti relatsiooniandmebaasis on väli tabelis, mis ühtib teise tabeli primaarvõtmega. Võõrvõtit kasutatakse tabelite ristimiseks.
Mis on võõrvõti?
Võõrvõti on kahe tabeli vaheline viitepiirang. See identifitseerib veeru või veergude komplekti ühes tabelis, mida nimetatakse viitamistabeliks, mis viitab veergude komplektile teises tabelis, mida nimetatakse viidatud tabeliks. Viitatava tabeli võõrvõti või veerud peavad olema viidatud tabeli primaarvõti või kandidaatvõti (võti, mida saab kasutada esmase võtmena). Lisaks võimaldavad võõrvõtmed andmete linkimist mitme tabeli vahel. Seetõttu ei saa välisvõti sisaldada väärtusi, mis ei esine tabelis, millele see viitab. Siis aitab võõrvõtme viide infot mitmes tabelis siduda ja see muutuks normaliseeritud andmebaaside puhul hädavajalikuks. Viitetabeli mitu rida võivad viidatud tabelis viidata ühele reale.
Joonis 01: Võõrvõtme vastendus
ANSI SQL-i standardis defineerib võõrvõtmed VÄLISVÕTI piirang. Lisaks on tabeli enda loomisel võimalik määratleda võõrvõtmed. Tabelil võib olla mitu võõrvõtit ja need võivad viidata erinevatele tabelitele.
Mis on esmane võti?
Esmane võti on veerg või veergude kombinatsioon, mis määratleb üheselt rea relatsiooniandmebaasi tabelis. Tabelis võib olla kuni üks primaarvõti. Esmane võti jõustab kaudse NOT NULL piirangu. Seetõttu ei saa primaarvõtmega veerus olla NULL-väärtusi. Esmane võti võib olla tabelis olev tavaline atribuut, mis on garanteeritud unikaalne (nt sotsiaalkindlustuse number), või andmebaasihaldussüsteemi genereeritud kordumatu väärtus, näiteks Microsoft SQL Serveri globaalselt kordumatu identifikaator (GUID).
Joonis 02: Esmane võti
Lisaks määratleb ANSI SQL-standardi PRIMARY KEY piirang primaarvõtmed. Tabeli loomisel on võimalik määratleda ka primaarvõti. Lisaks sellele võimaldab SQL primaarvõtme koosneda ühest või mitmest veerust ja iga primaarvõtmes sisalduv veerg on kaudselt määratletud kui NOT NULL. Kuid mõned andmebaasihaldussüsteemid nõuavad primaarvõtme veergude muutmist selgesõnaliselt NOT NULL.
Mis vahe on välisvõtmel ja esmasel võtmel?
Võõrvõti vs esmane võti |
|
Võõrvõti on relatsioonilise andmebaasi tabeli veerg või veergude rühm, mis annab seose kahe tabeli andmete vahel. | Esmane võti on spetsiaalne relatsioonilise andmebaasi tabeli veerg või mitme veeru kombinatsioon, mis võimaldab unikaalselt tuvastada kõik tabelikirjed. |
NULL | |
Võõrvõti aktsepteerib NULL-väärtust. | Esmane võtme väärtus ei saa olla NULL. |
Võtmete arv | |
Tabelil võib olla mitu võõrvõtit. | Tabelil võib olla ainult üks primaarvõti. |
Dubleerimine | |
Korteritel võib võõrvõtme atribuudi jaoks olla duplikaatväärtus. | Kahel relatsioonis oleval korteežil ei tohi olla primaarvõtme atribuudi jaoks dubleeritud väärtusi. |
Kokkuvõte – võõrvõti vs esmane võti
Võõrvõtme ja primaarvõtme erinevus seisneb selles, et võõrvõti on veerg või veergude komplekt, mis viitab teise tabeli primaarvõtmele või kandidaatvõtmele, samas kui primaarvõti on veerg või veergude komplekt, mis saab kasutada tabeli rea unikaalseks tuvastamiseks.