Esmane võti vs kandidaatvõti
Kuigi esmane võti on valitud kandidaatvõtmete hulgast, on primaarvõtme ja teiste kandidaatvõtmete vahel teatud erinevus, mida käsitletakse üksikasjalikult selles artiklis. Andmebaaside kujundamine on üks olulisemaid tegevusi, mida tuleks andmete säilitamisel ja salvestamisel teha. Selle projekteerimisprotsessi käigus tuleb luua erinevad paljude suhetega tabelid. Nendele tabelitele andmebaasis juurde pääsemiseks kasutatakse tänapäevastes andmebaaside kujundamise keeltes, näiteks MYSQL, MSAccess, SQLite jne, erinevat tüüpi võtmeid. Neist võtmetest on andmebaaside kujundamise praktikas esmatähtsad kandidaatvõtmed ja primaarvõtmed.
Mis on kandidaatide võti?
Kandidaatvõti on üks veerg või veergude komplekt andmebaasi tabelis, mida saab kasutada mis tahes andmebaasi kirjete kordumatuks tuvastamiseks, viitamata muudele andmetele. Igal andmebaasi tabelil võib olla üks või mitu kandidaatvõtit. Funktsionaalsete sõltuvuste abil saab luua kandidaatvõtmete komplekti. Kandidaatvõtmes on mõned olulised tunnused. Nemad on;
• kandidaatvõtmed peaksid olema domeenis unikaalsed ja need ei tohiks sisaldada NULL-väärtusi.
• kandidaatvõti ei tohiks kunagi muutuda ja sellel peab olema sama väärtus üksuse konkreetse esinemise korral.
Kandidaatvõtme peamine eesmärk on aidata tuvastada suures tabelis miljonite ridade hulgast üks rida. Igal kandidaadivõtmel on esmane võti. Kõigist kandidaatvõtmetest saab aga kõige olulisem ja erilisem kandidaatvõti tabeli esmaseks võtmeks ja see on kandidaatvõtmete seas parim.
Mis on esmane võti?
Esmane võti on tabeli parim kandidaatvõti, mida kasutatakse tabelisse salvestatud kirjete kordumatuks tuvastamiseks. Uue tabeli loomisel andmebaasis palutakse meil valida esmane võti. Seetõttu on tabeli primaarvõtme valimine kõige kriitilisem otsus, mille andmebaasi kujundaja peaks vastu võtma. Kõige olulisem piirang, mida tuleks primaarvõtme otsustamisel arvesse võtta, on see, et tabeli valitud veerg peaks sisaldama ainult kordumatuid väärtusi ja see ei tohiks sisaldada ühtegi NULL-väärtust. Mõned peamised võtmed, mida tabelite kujundamisel tavaliselt kasutatakse, on sotsiaalkindlustuse number (SSN), ID ja riiklik isikutunnistuse number (NIC).
Programmeerija peaks meeles pidama põhivõtme hoolikalt valimist, sest seda on raske muuta. Seetõttu on programmeerijate sõnul primaarvõtme loomise parim tava kasutada sisemiselt genereeritud primaarvõtit, näiteks MS Accessi andmetüübiga AutoNumber loodud Record ID. Kui proovime tabelit sisestada primaarvõtmega kirje, mis dubleerib olemasolevat kirjet, nurjub sisestamine. Primaarvõtme väärtus ei tohiks pidevalt muutuda, seega on olulisem hoida staatilist primaarvõtit.
Esmane võti on parim kandidaatvõti.
Mis vahe on primaarvõtmel ja kandidaatvõtmel?
• Kandidaatvõti on veerg, mis kvalifitseerub unikaalseks, samas kui peamine võti on veerg, mis identifitseerib kirje kordumatult.
• Kandidaatvõtmeteta tabel ei tähenda mingit seost.
• Andmebaasis võib olla palju tabeli kandidaatvõtmeid, kuid tabeli jaoks peaks olema ainult üks esmane võti.
• Kuigi esmane võti on üks kandidaatvõtmetest, on see mõnikord ainus kandidaatvõti.
• Kui esmane võti on valitud, muutuvad teised kandidaatvõtmed unikaalseteks võtmeteks.
• Praktiliselt võib kandidaatvõti sisaldada NULL väärtusi, kuigi see praegu ei sisalda väärtusi. Seetõttu ei ole kandidaatvõti primaarvõtme jaoks sobiv, kuna primaarvõti ei tohiks sisaldada ühtegi NULL-väärtust.
• Võib olla ka see, et hetkel ainulaadsed kandidaatvõtmed võivad sisaldada duplikaatväärtusi, mis diskvalifitseerivad kandidaatvõtme primaarvõtmeks saamise.
Kokkuvõte:
Esmane võti versus kandidaatvõti
Kandidaatvõti ja esmane võti on hädavajalikud võtmed, mida kasutatakse andmebaaside kujundamisel, et identifitseerida kirjes olevad andmed unikaalselt ja luua seoseid andmebaasi tabelite vahel. Tabel peaks sisaldama ainult ühte peamist võtit ja see võib sisaldada rohkem kui ühte kandidaatvõtit. Tänapäeval on enamus andmebaase võimelised oma esmast võtit automaatselt genereerima. Seetõttu pakuvad primaarvõti ja kandidaatvõtmed andmebaaside haldussüsteemidele palju tuge.
Pildid viisakalt: