Pirminis raktas prieš unikalųjį raktą
Stulpelis arba stulpelių rinkinys, kuris gali būti naudojamas identifikuoti arba pasiekti duomenų bazės eilutę arba eilučių rinkinį, vadinamas raktu. Unikalus raktas yra raktas, kuris gali vienareikšmiškai identifikuoti lentelės eilutę reliacinių duomenų bazių kontekste. Unikalus raktas sudarytas iš vieno stulpelio arba stulpelių rinkinio. Pirminis raktas taip pat yra lentelės stulpelių, vienareikšmiškai identifikuojančių eilutę, derinys. Tačiau manoma, kad tai yra ypatingas unikalaus rakto atvejis.
Kas yra unikalus raktas?
Kaip minėta anksčiau, unikalus raktas yra vienas stulpelis arba stulpelių rinkinys, galintis unikaliai identifikuoti lentelės eilutę. Taigi, unikalus raktas yra apribotas taip, kad nėra dviejų lygių jo reikšmių. Viena svarbi savybė yra ta, kad unikalūs raktai neįgyvendina NOT NULL apribojimo. Kadangi NULL reiškia vertės nebuvimą, jei dviejų eilučių stulpelyje yra NULL, tai nereiškia, kad reikšmės yra lygios. Stulpelis, apibrėžtas kaip unikalus raktas, leidžia tame stulpelyje įrašyti tik vieną NULL reikšmę. Tada tai gali būti naudojama konkrečiai eilutei identifikuoti. Pavyzdžiui, lentelėje, kurioje yra mokinio informacija, studento ID gali būti apibrėžtas kaip unikalus raktas. Kadangi du mokiniai negali turėti to paties ID, jis unikaliai identifikuoja vieną studentą. Taigi studento ID stulpelis atitinka visas unikalaus rakto savybes. Atsižvelgiant į duomenų bazės dizainą, lentelė gali turėti daugiau nei vieną unikalų raktą.
Kas yra pagrindinis raktas?
Pirminis raktas taip pat yra stulpelis arba stulpelių derinys, unikaliai apibrėžiantis eilutę reliacinės duomenų bazės lentelėje. Lentelėje gali būti ne daugiau kaip vienas pirminis raktas. Pirminis raktas įgyvendina numanomą NOT NULL apribojimą. Taigi, stulpelyje, kuris yra apibrėžtas kaip pirminis raktas, negali būti NULL reikšmių. Pirminis raktas gali būti įprastas atributas lentelėje, kuris garantuotai yra unikalus, pvz., socialinio draudimo numeris, arba tai gali būti unikali reikšmė, sugeneruota duomenų bazės valdymo sistemos, pvz., visuotinis unikalus identifikatorius (GUID) Microsoft SQL Server. Pirminiai raktai apibrėžiami naudojant ANSI SQL standarto apribojimą PRIMARY KEY. Kuriant lentelę taip pat galima apibrėžti pirminį raktą. SQL leidžia pirminį raktą sudaryti iš vieno ar daugiau stulpelių, o kiekvienas į pirminį raktą įtrauktas stulpelis netiesiogiai apibrėžiamas kaip NOT NULL. Tačiau kai kurios duomenų bazių valdymo sistemos reikalauja, kad pirminio rakto stulpeliai būtų aiškiai NOT NULL.
Skirtumas tarp pirminio ir unikalaus rakto
Nors ir pirminis raktas, ir unikalus raktas yra vienas ar daugiau stulpelių, kurie gali vienareikšmiškai identifikuoti lentelės eilutę, jie turi keletą svarbių skirtumų. Svarbiausia, kad lentelė gali turėti tik vieną pirminį raktą, o joje gali būti daugiau nei vienas unikalus raktas. Pirminis raktas gali būti laikomas specialiu unikalaus rakto atveju. Kitas skirtumas yra tas, kad pirminiai raktai turi numanomą NOT NULL apribojimą, o unikalus raktas neturi šio apribojimo. Todėl unikalių raktų stulpeliuose gali būti arba negali būti NULL reikšmių, bet pirminio rakto stulpeliuose negali būti NULL reikšmių.