Andmebaasid sõltuvad võtmetest kirjete salvestamiseks, sortimiseks ja võrdlemiseks või suhete loomiseks. Kui olete juba mõnda aega andmebaasidega tegelenud, olete ilmselt kuulnud erinevat tüüpi võtmetest: esmased võtmed, kandidaatvõtmed ja võõrvõtmed.
Uue andmebaasitabeli loomisel palutakse teil valida üks primaarvõti, mis tuvastab unikaalselt iga sellesse tabelisse salvestatud kirje.
Miks on esmane võti oluline
Primaarvõtme valimine on üks kriitilisemaid otsuseid, mille teete uue andmebaasi kujundamisel. Kõige olulisem piirang on see, et peate tagama, et valitud võti on kordumatu. Kui on võimalik, et kaks kirjet (minevik, olevik või tulevik) jagavad atribuudi jaoks sama väärtust, on see esmase võtme jaoks halb valik.
Primaarvõtme teine oluline aspekt on selle kasutamine teistes tabelites, mis sellele relatsiooniandmebaasis linkivad. Selles aspektis toimib primaarvõti osuti sihtmärgina. Nende vastastikuste sõltuvuste tõttu peab kirje loomisel olemas olema primaarvõti ja see ei saa kunagi muutuda.
Kevad valikud esmaste võtmete jaoks
See, mida mõned inimesed võivad pidada primaarvõtme ilmseks valikuks, võib olla hoopis kehv valik. Siin on mõned näited:
- Sihtnumbrid ei ole linnade tabeli jaoks head esmased võtmed. Kui teete lihtsat linnade otsingutabelit, näib sihtnumber olevat loogiline esmane võti. Edasisel uurimisel võite aga mõista, et rohkem kui ühel linnal on sihtnumber. Näiteks New Jersey linnad Neptune, Neptune City, Tinton Falls ja Wall Township jagavad kõik sihtnumbrit 07753.
- Sotsiaalkindlustusnumbrid ei ole mitmel põhjusel head primaarvõtmed. Enamik inimesi peab oma SSN-i privaatseks ega soovi seda andmebaasi kasutajatele selgelt näha. Lisaks pole mõnel inimesel SSN-i.
- E-posti aadressid on samuti halb valik primaarvõtme jaoks. Kuigi need on ainulaadsed, võivad need aja jooksul muutuda. Lisaks pole kõigil meiliaadressi.
Milline on hea esmane võti
Niisiis, kuidas valida tõhus primaarvõti? Enamikul juhtudel pöörduge toe saamiseks oma andmebaasisüsteemi poole.
Andmebaasi kujundamise parim tava on kasutada sisemiselt loodud primaarvõtit. Teie andmebaasihaldussüsteem suudab tavaliselt genereerida kordumatu identifikaatori, millel pole väljaspool andmebaasisüsteemi mingit tähendust.
Näiteks võite kasutada andmetüüpi Microsoft Access AutoNumber, et luua välja nimega RecordID. Andmetüüp AutoNumber suurendab automaatselt välja iga kord, kui loote kirje. Kuigi number ise on mõttetu, pakub see usaldusväärset viisi päringutes üksikule kirjele viitamiseks.
Hea esmane võti on tavaliselt lühike, kasutab numbreid ja väldib erimärke või suur- ja väiketähtede kombinatsiooni, et hõlbustada kiiret andmebaasiotsingut ja võrdlust.