Užsienio raktai leidžia duomenų bazių administratoriams lengvai identifikuoti įvairius ryšius, egzistuojančius SQL duomenų bazių valdymo sistemoje.
SQL duomenų bazės valdymo sistemoje atlieka matematines operacijas. Šiose duomenų bazėse yra skirtingos lentelės, kuriose kiekviena kaupia duomenis apie konkretų objektą. Jei turite automobilių nuomos duomenų bazę, toje duomenų bazėje esantis subjektas (arba lentelė) bus klientai (kurie išsaugos visus asmens duomenis kiekviename kliente).
Šiose duomenų bazės lentelėse yra eilučių ir stulpelių, kur kiekvienoje eilutėje yra įrašas, o kiekviename stulpelyje yra specifinių atributų duomenys.
Duomenų bazės valdymo sistemoje kiekvienas įrašas (arba eilutė) turėtų būti unikalus.
Pagrindiniai raktai
Nors nuostata yra ta, kad kiekvienas lentelės įrašas turėtų būti skirtingas, tai ne visada būna. Tęsiant automobilių nuomos duomenų bazės pavyzdį, jei duomenų bazėje yra po du klientus turi pavadinimą „John Brown“, galima tikėtis, kad Johnas Brownas grąžins „Mercedes-Benz“, kurio jis neturėjo nuoma.
Sukūrus pagrindinį raktą ši rizika bus sumažinta. SQL duomenų bazės valdymo sistemoje pagrindinis raktas yra unikalus identifikatorius, skiriantis vieną įrašą nuo kito.
Todėl kiekvienas SQL duomenų bazės valdymo sistemos įrašas turėtų turėti pagrindinį raktą.
Pirminių raktų naudojimas duomenų bazėje
Norėdami įtraukti pagrindinius raktus į duomenų bazės valdymo sistemą, naudodami SQL, galite tiesiog pridėti ją kaip įprastą atributą, kai kuriate naują lentelę. Taigi klientų lentelėje bus keturi atributai (arba stulpeliai):
- „CarOwnerID“ (kuriame bus saugomas pagrindinis raktas)
- Pirmas vardas
- Pavardė
- Telefono numeris
Susijęs: Kaip sukurti lentelę SQL
Dabar kiekvienas kliento įrašas, patekęs į duomenų bazę, turės unikalų identifikavimo numerį, taip pat vardą, pavardę ir telefono numerį. Telefono numeris nėra pakankamai unikalus, kad būtų pagrindinis raktas, nes nors jis vienu metu būdingas tik vienam asmeniui, žmogus gali lengvai pakeisti savo numerį, vadinasi, dabar jis priklausytų kitam.
Įrašas su pirminio rakto pavyzdžiu
/ * sukuria naują įrašą klientų lentelėje * /
ĮSKIRTI Į KLIENTŲ VERTYBES
('0004',
„Jonas“,
„Ruda“,
'111-999-5555');
Aukščiau pateiktas SQL kodas pridės naują įrašą prie jau egzistuojančio Klientai stalo. Žemiau esančioje lentelėje pateikiama nauja klientų lentelė su dviem John Brown įrašais.
Užsienio raktas
Dabar jūs turite pagrindinius raktus, kurie išskirtinai išskiria vieną automobilio nuomininką nuo kito. Vienintelė problema yra ta, kad duomenų bazėje nėra realaus ryšio tarp kiekvieno Johno Browno ir jo nuomojamo automobilio.
Todėl vis dar egzistuoja galimybė suklysti. Čia atsiranda svetimi raktai. Naudojant pirminį raktą nuosavybės dviprasmybės problemai išspręsti galima tik tuo atveju, jei pagrindinis raktas yra dvigubas kaip užsienio raktas.
Kas yra užsienio raktas?
SQL duomenų bazės valdymo sistemoje svetimas raktas yra unikalus identifikatorius arba unikalių identifikatorių derinys, jungiantis dvi ar daugiau lentelių duomenų bazėje.
Iš keturių egzistuojančių SQL duomenų bazių valdymo sistemų yra populiariausia reliacinių duomenų bazių valdymo sistema. Sprendžiant, kuri reliacinės duomenų bazės lentelė turėtų turėti svetimą raktą, pirmiausia turėtumėte nustatyti, kuri lentelė yra jų santykių objektas ir kuris yra objektas.
Grįžtant prie automobilių nuomos duomenų bazės, norėdami susieti kiekvieną klientą su tinkamu automobiliu, turėsite suprasti, kad klientas (subjektas) nuomojasi automobilį (objektą). Todėl svetimas raktas turėtų būti automobilių lentelėje.
SQL kodas, kuris generuoja lentelę su svetimu raktu, šiek tiek skiriasi nuo normos.
Lentelės sukūrimas su užsienio rakto pavyzdžiu
/ * sukuria naują automobilių lentelę automobilių nuomos duomenų bazėje * /
SUKURTI LENTELĖS automobilius
(
LicenseNumber varchar (30) NE VISI PAGRINDINIAI RAKTAI,
„CarType“ varchar (30) NE NULL,
„CustomerID“ varchar (30) UŽSIENIO PAGRINDINĖS NUORODOS Klientai („CustomerID“)
);
Kaip matote aukščiau pateiktame kode, užsienio raktas turi būti aiškiai nustatytas kaip toks kartu su nuoroda į pagrindinį raktą, kuris yra prijungtas prie naujos lentelės.
Susijęs: „Essential SQL Commands Cheat Sheet“ pradedantiesiems
Norėdami pridėti įrašą prie naujos lentelės, turėsite įsitikinti, kad lauko rakto vertė sutampa su pradinės lentelės pirminio rakto lauko verte.
Įrašo pridėjimas su užsienio rakto pavyzdžiu
/ * sukuria naują įrašą automobilių lentelėje * /
ĮTERPTI Į AUTOMOBILIŲ VERTYBES
('100012',
„Mercedes-Benz“,
'0004');
Aukščiau pateiktas kodas sukuria naują įrašą naujame Automobiliai lentelėje pateikiamas toks rezultatas.
Lengvųjų automobilių stalas
Iš aukščiau pateiktos lentelės galite nustatyti teisingą Johną Browną, kuris nuomoja „Mercedes-Benz“ pagal įraše esantį svetimą raktą.
Išankstiniai užsienio raktai
Yra dar du būdai, kaip naudoti užsienio raktą duomenų bazėje.
Jei pažvelgsite į anksčiau pateiktą svetimo rakto apibrėžimą, pamatysite, kad jame sakoma, kad užsienio raktas gali būti unikalus identifikatorius arba unikalių identifikatorių derinys.
Grįžtant prie automobilių nuomos duomenų bazės pavyzdžio, pamatysite, kad sukuriant naują įrašą (apie tą patį automobilį) kiekvieną kartą, kai klientas išsinuomoja tą automobilį, pažeidžiamas automobilio tikslas. Automobiliai stalo. Jei automobiliai parduodami ir parduodami vienam klientui vieną kartą, esama duomenų bazė yra tobula; tačiau atsižvelgiant į tai, kad automobiliai yra nuomojami, yra geresnis būdas pateikti šiuos duomenis.
Kompozitiniai raktai
Sudėtinis raktas turi du ar daugiau unikalių identifikatorių. Reliacinėje duomenų bazėje bus atvejų, kai vieno užsienio rakto naudojimas nepakankamai atspindi toje duomenų bazėje egzistuojančius ryšius.
Automobilių nuomos pavyzdyje praktiškiausias būdas yra sukurti naują lentelę, kurioje būtų išsami informacija apie nuomą. Kad informacija apie automobilio nuomos lentelę būtų naudinga, ji turi prisijungti ir prie automobilio, ir prie klientų lentelių.
Lentelės su sudėtiniais užsienio raktais sukūrimas
/ * sukuria „CarRental“ lentelę automobilių nuomos duomenų bazėje * /
SUKURTI STALĄ „CarRental“
(
Nuomos data DATA NOT NULL,
„LicenseNumber“ varchar (30) NE VISOS UŽSIENIO PAGRINDINĖS NUORODOS automobiliai („LicenseNumber“),
„CustomerID varchar“ (30) NE VISOS UŽSIENIO PAGRINDINĖS NUORODOS
PAGRINDINIS RAKTAS (DataRented, LicenseNumber, CustomerID)
);
Aukščiau pateiktas kodas nurodo svarbų dalyką; nors lentelė SQL duomenų bazėje gali turėti daugiau nei vieną užsienio raktą, ji gali turėti tik vieną pirminį raktą. Taip yra todėl, kad įrašui identifikuoti turėtų būti tik vienas unikalus būdas.
Būtina sujungti visus tris lentelės atributus, kad būtų unikalus raktas. Klientas tą pačią dieną gali išsinuomoti daugiau nei vieną automobilį (taigi Kliento ID ir DataRented nėra geras derinys) tą patį automobilį tą pačią dieną taip pat gali išsinuomoti daugiau nei vienas klientas (taigi LicenseNumber ir DataRented nėra geras derinys).
Tačiau sukūrus sudėtinį raktą, kuris pasako, kuris klientas, koks automobilis ir kurią dieną yra puikus unikalus raktas. Šis unikalus raktas reiškia ir sudėtinį užsienio raktą, ir sudėtinį pirminį raktą.
Užsienio pirminiai raktai
O taip, užsienio pirminiai raktai išvažiuoja. Nors oficialus jo pavadinimas nėra, svetimas raktas taip pat gali būti pagrindinis raktas toje pačioje lentelėje. Taip nutinka, kai sukuriate naują lentelę, kurioje yra specializuotų duomenų apie esamą objektą (arba įrašote kitoje lentelėje).
Pasakykite, kad Fredas (dirbantis automobilių nuomos įmonėje) yra įmonės duomenų bazėje po darbuotojų stalu. Po kelerių metų jis tampa vadovu ir įtraukiamas į vadovų lentelę.
Fredas vis dar yra darbuotojas ir vis tiek turės tą patį asmens kodą. Taigi Fredo darbuotojo ID dabar yra vadovo lentelėje kaip užsienio raktas, kuris taip pat taps pirminiu įveskite tą lentelę (nes nėra prasmės sukurti naują Fredo ID numerį dabar, kai jis yra vadovas).
Dabar galite nustatyti užsienio raktus SQL duomenų bazėse
Užsienio raktai sujungia skirtingas lenteles SQL duomenų bazėje. Šiame straipsnyje galite sužinoti, kas yra užsienio raktas, kaip jis veikia ir kodėl svarbu juos turėti duomenų bazėje. Jūs taip pat suprantate pagrindines ir dar sudėtingesnes svetimų raktų formas.
Jei manote, kad užsienio raktai yra įdomūs, laukite dienos, kai pradėsite naudoti projektą ir pasirinkimo operacijas, norėdami pateikti užklausą savo SQL duomenų bazėms.
Susipažinkite su SQL reliacinėmis duomenų bazėmis, suprasdami šių pavyzdžių projekto ir pasirinkimo operacijas.
Skaitykite toliau
- Programavimas
- Programavimas
- SQL
- duomenų bazė
Kadeisha Kean yra „Full Stack“ programinės įrangos kūrėja ir technikos / technologijų rašytoja. Ji turi aiškų sugebėjimą supaprastinti kai kurias sudėtingiausias technologines sąvokas; gamina medžiagą, kurią lengvai supranta bet kuris naujokas technologija. Ji aistringai rašo, kuria įdomią programinę įrangą ir keliauja po pasaulį (per dokumentinius filmus).
Prenumeruokite mūsų naujienlaiškį
Prisijunkite prie mūsų naujienlaiškio, kuriame rasite techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!
Dar vienas žingsnis…!
Prašome patvirtinti savo el. Pašto adresą el. Laiške, kurį jums ką tik išsiuntėme.