Pagrindinis raktas prieš užsienio raktą: koks skirtumas?

Prieš sužinodami skirtumą tarp pirminio rakto ir užsienio rakto, sužinokime:

Kas yra raktai?

Raktai yra atributas, kuris padeda jums nustatyti eilutę (porą) santykyje (lentelėje). Jie leidžia jums rasti ryšį tarp dviejų lentelių. Raktai padeda unikaliai identifikuoti eilutę lentelėje, derinant vieną ar daugiau tos lentelės stulpelių. Duomenų bazės raktas taip pat naudingas norint rasti unikalų įrašą ar eilutę iš lentelės.

Kas yra ryšys su duomenų bazėmis?

Duomenų bazės ryšys yra susiejimas tarp vienos ar daugiau lentelių, sukurtų naudojant sujungimo sakinius. Jis naudojamas efektyviai gauti duomenis iš duomenų bazės. Pirmiausia yra trijų tipų santykiai: 1) vienas su vienu, 2) vienas prie daugelio, 3) daug iš daugelio.

Kas yra pagrindinis raktas?

Pagrindinis rakto apribojimas yra stulpelis arba stulpelių grupė, unikaliai identifikuojanti kiekvieną reliacinės duomenų bazės valdymo sistemos lentelės eilutę. Tai negali būti pasikartojimas, vadinasi, ta pati reikšmė lentelėje neturėtų būti rodoma daugiau nei vieną kartą.

Lentelėje gali būti daugiau nei vienas pagrindinis raktas. Pirminį raktą galima apibrėžti stulpelio arba lentelės lygiu. Jei kuriate sudėtinį pirminį raktą, jis turėtų būti apibrėžtas lentelės lygiu.

Kas yra „Foreign Key“?

Užsienio raktas yra stulpelis, sukuriantis ryšį tarp dviejų lentelių. Užsienio rakto tikslas yra išlaikyti duomenų vientisumą ir leisti naršyti tarp dviejų skirtingų subjekto egzempliorių. Jis veikia kaip kryžminė nuoroda tarp dviejų lentelių, nes ji nurodo pagrindinį kitos lentelės raktą. Kiekvieną duomenų bazės ryšį turėtų palaikyti svetimas raktas.

PAGRINDINIAI SKIRTUMAI:

  • Pagrindinis rakto apribojimas yra stulpelis, kuris unikaliai identifikuoja kiekvieną reliacinės duomenų bazės valdymo sistemos lentelės eilutę, o užsienio raktas yra stulpelis, sukuriantis ryšį tarp dviejų lentelių.
  • Pirminis raktas niekada nepriima nulinių verčių, o užsienio raktas gali priimti kelias nulines reikšmes.
  • Lentelėje galite turėti tik vieną pagrindinį raktą, o lentelėje - kelis užsienio raktus.
  • Pirminio rakto vertės negalima pašalinti iš pirminės lentelės, o užsienio rakto vertės - iš antrinės lentelės.
  • Nei vienoje eilutėje negali būti identiškų pirminio rakto reikšmių, kita vertus, svetimame rakte gali būti pasikartojančios vertės.
  • Nėra jokių apribojimų įterpiant vertes į lentelės stulpelį, o įterpiant bet kokią vertę į svetimo rakto lentelę, įsitikinkite, kad vertė yra pirminio rakto stulpelyje.

Kodėl naudoti pirminį raktą?

Štai pagrindinio rakto naudojimo trūkumai / privalumai:

  • Pagrindinis pirminio rakto tikslas yra identifikuoti kiekvieną įrašą duomenų bazės lentelėje.
  • Pirminį raktą galite naudoti, kai neleidžiate kam nors įvesti nulinių verčių.
  • Jei ištrinsite arba atnaujinsite įrašus, bus atliktas nurodytas veiksmas, užtikrinantis duomenų vientisumą.
  • Atlikite apribojimo operaciją, norėdami atmesti pirminės lentelės ištrynimo arba atnaujinimo operaciją.
  • Duomenys yra tvarkomi sugrupuoto indekso seka, kai fiziškai tvarkote DBVS lentelę.

Kodėl verta naudoti Foreign Key?

Čia pateikiamos svarbios užsienio rakto naudojimo priežastys:

  • Užsienio raktai padeda jums perkelti objektus naudojant pirminį raktą iš tėvų lentelės.
  • Užsienio raktas leidžia susieti dvi ar daugiau lentelių.
  • Tai daro jūsų duomenų bazės duomenis nuoseklius.
  • Užsienio raktas gali būti naudojamas norint suderinti stulpelį ar stulpelių derinį su pagrindiniu raktu pagrindinėje lentelėje.
  • SQL užsienio rakto suvaržymas naudojamas siekiant užtikrinti, kad duomenų pirminis duomenų referencinis vientisumas atitiktų antrinės lentelės reikšmes.

Pirminio rakto pavyzdys

Sintaksė:

Žemiau yra pirminio rakto sintaksė:

CREATE TABLE (Column1 datatype,Column2 datatype, PRIMARY KEY (Column-Name).);

Čia

  • „Table_Name“ yra lentelės, kurią turite sukurti, pavadinimas.
  • Column_Name yra stulpelio, kuriame yra pagrindinis raktas, pavadinimas.

Pavyzdys:

„StudID“ Ritinys Nr Pirmas vardas Pavardė El
1 11 Tomas Kaina Šis el. Pašto adresas yra apsaugotas nuo šiukšlų. Norėdami jį peržiūrėti, turite įgalinti „JavaScript“.
2 12 Nikas Meistras Šis el. Pašto adresas yra apsaugotas nuo šiukšlų. Norėdami jį peržiūrėti, turite įgalinti „JavaScript“.
3 13 Dana Natanas Šis el. Pašto adresas yra apsaugotas nuo šiukšlų. Norėdami jį peržiūrėti, turite įgalinti „JavaScript“.

Ankstesniame pavyzdyje mes sukūrėme studentų lentelę su tokiais stulpeliais kaip „StudID“, „Roll No“, First Name, Last Name ir Email. „StudID“ yra pasirinktas kaip pagrindinis raktas, nes jis gali unikaliai identifikuoti kitas lentelės eilutes.

Užsienio rakto pavyzdys

Sintaksė:

Žemiau yra užsienio rakto sintaksė:

CREATE TABLE 
(column1 datatype,column2 datatype,constraint (name of constraint)FOREIGN KEY [column1, column2… ]REFERENCES [primary key table name] (List of primary key table column)… );

Čia

  • Parametras Lentelės pavadinimas nurodo kuriamos lentelės pavadinimą.
  • Parametrų stulpelyje1, stulpelyje2 ... pavaizduoti stulpeliai, kuriuos reikia pridėti prie lentelės.
  • Apribojimas žymi jūsų kuriamo apribojimo pavadinimą.
  • Nuorodose nurodoma lentelė su pagrindiniu raktu.

Pavyzdys:

„DeptCode“ DeptName
001 Mokslas
002 Anglų
005 Kompiuteris
Mokytojo pažymėjimas Vardas Vardas
B002 Deividas Warner
B017 Sara Juozapas
B009 Maikas Bruntonas

Ankstesniame pavyzdyje mes turime dvi lenteles, mokytoją ir skyrių mokykloje. Tačiau jokiu būdu negalima pamatyti, kuri paieška veikia kuriame skyriuje.

Šioje lentelėje, pridėdami užsienio raktą Deptcode prie Mokytojo vardo, galime sukurti ryšį tarp dviejų lentelių.

Mokytojo pažymėjimas „DeptCode“ Vardas Vardas
B002 002 Deividas Warner
B017 002 Sara Juozapas
B009 001 Maikas Bruntonas

Ši sąvoka taip pat žinoma kaip „Referential Integrity“.

Skirtumas tarp pirminio rakto ir užsienio rakto

Čia yra svarbus skirtumas tarp pirminio rakto ir užsienio rakto:

Pirminis raktas Svetimas raktas
Pagrindinis rakto apribojimas yra stulpelis arba stulpelių grupė, unikaliai identifikuojanti kiekvieną reliacinės duomenų bazės valdymo sistemos lentelės eilutę. Užsienio raktas yra stulpelis, sukuriantis ryšį tarp dviejų lentelių.
Tai padeda jums unikaliai identifikuoti įrašą lentelėje. Tai yra lentelės laukas, kuris yra pagrindinis kitos lentelės raktas.
Pirminis raktas niekada nepriima nulinių verčių. Svetimas raktas gali priimti kelias nulines reikšmes.
Pagrindinis raktas yra grupuotas indeksas, o DBVS lentelės duomenys yra fiziškai sutvarkyti grupuoto indekso seka. Užsienio raktas negali automatiškai sukurti indekso, grupuoto ar nesugrupuoto.
Lentelėje galite turėti vieną pagrindinį raktą. Lentelėje galite turėti kelis užsienio raktus.
Pirminio rakto vertės negalima pašalinti iš tėvų lentelės. Užsienio rakto vertės vertę galima pašalinti iš antrinės lentelės.
Pirminį raktą galite netiesiogiai apibrėžti laikinose lentelėse. Negalite apibrėžti užsienio raktų vietinėse ar visuotinėse laikinose lentelėse.
Pagrindinis raktas yra grupuotas indeksas. Pagal numatytuosius nustatymus tai nėra grupuotas indeksas.
Dviejose eilutėse negali būti identiškų pirminio rakto reikšmių. Svetimame rakte gali būti pasikartojančios vertės.
Nėra jokių apribojimų įterpiant vertes į lentelės stulpelį. Įterpdami bet kokią vertę į svetimo rakto lentelę įsitikinkite, kad vertė yra pirminio rakto stulpelyje.

Įdomios straipsniai...