Kas yra užsienio raktai SQL duomenų bazėse?

Kas yra užsienio raktai SQL duomenų bazėse?

Užsienio raktai leidžia duomenų bazių administratoriams lengvai nustatyti skirtingus SQL duomenų bazės valdymo sistemos ryšius.





SQL atlieka duomenų matematines operacijas duomenų bazių valdymo sistemoje. Šiose duomenų bazėse yra skirtingos lentelės, kuriose kiekviena saugo duomenis apie konkretų objektą. Jei turite automobilių nuomos duomenų bazę, šioje duomenų bazėje esantis subjektas (arba lentelė) bus klientai (kurie išsaugos visus kiekvieno kliento asmens duomenis).





Šiose duomenų bazės lentelėse yra eilučių ir stulpelių, kur kiekvienoje eilutėje yra įrašas, o kiekviename stulpelyje yra su atributu susiję duomenys.





Duomenų bazės valdymo sistemoje kiekvienas įrašas (arba eilutė) turi būti unikalus.

Pirminiai raktai

Nors nuostata yra ta, kad kiekvienas lentelės įrašas turi būti atskiras, tai ne visada. Tęsiant automobilių nuomos duomenų bazės pavyzdį, jei duomenų bazėje yra du klientai, kurių kiekvienas turi vardą John Brown, galima tikėtis, kad John Brownas grąžins jo neišnuomotą „Mercedes-Benz“.



Sukūrę pirminį raktą, sumažinsite šią riziką. SQL duomenų bazės valdymo sistemoje pirminis raktas yra unikalus identifikatorius, skiriantis vieną įrašą nuo kito.

Kur pigiai galiu pataisyti „iPhone“ ekraną?

Todėl kiekvienas SQL duomenų bazės valdymo sistemos įrašas turėtų turėti pirminį raktą.





Pirminių raktų naudojimas duomenų bazėje

Norėdami įtraukti pirminius raktus į duomenų bazės valdymo sistemą, naudojančią SQL, kurdami naują lentelę, galite ją tiesiog pridėti kaip įprastą atributą. 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 yra unikalus vienam asmeniui vienu metu, žmogus gali lengvai pakeisti savo numerį, o tai reiškia, kad dabar jis priklausytų kitam asmeniui.

Įrašas su pirminiu raktu

/* creates a new record in the customers table */
INSERT INTO Customers VALUES
('0004',
'John',
'Brown',
'111-999-5555');

Aukščiau pateiktas SQL kodas pridės naują įrašą prie jau esamo Klientai lentelę. Žemiau esančioje lentelėje parodyta nauja klientų lentelė su dviem Johno Browno įrašais.

Užsienio raktas

Dabar turite pagrindinius raktus, kurie unikaliai atskiria vieną automobilių nuomotoją nuo kito. Vienintelė problema yra ta, kad duomenų bazėje nėra jokio ryšio tarp kiekvieno Johno Browno ir jo nuomojamo automobilio.

Todėl tikimybė suklysti vis dar egzistuoja. Čia atsiranda užsienio raktai. Naudojant pirminį raktą nuosavybės dviprasmybės problemai išspręsti galima tik tuo atveju, jei pirminis raktas yra dvigubas kaip užsienio raktas.

Kas yra užsienio raktas?

SQL duomenų bazės valdymo sistemoje užsienio raktas yra unikalus identifikatorius arba unikalių identifikatorių derinys, jungiantis dvi ar daugiau duomenų bazės lentelių.

Iš keturių egzistuojančių SQL duomenų bazių valdymo sistemų populiariausia yra santykių duomenų bazių valdymo sistema. Nuspręsdami, kurioje lentelėje santykių duomenų bazėje turėtų būti svetimas raktas, pirmiausia turėtumėte nustatyti, kuri lentelė yra subjektas, o kas - jų santykių objektas.

Grįžtant prie automobilių nuomos duomenų bazės, norėdami sujungti kiekvieną klientą su tinkamu automobiliu, turėsite suprasti, kad klientas (subjektas) nuomoja automobilį (objektą). Todėl užsienio raktas turėtų būti automobilių lentelėje.

SQL kodas, generuojantis lentelę su užsienio raktu, šiek tiek skiriasi nuo normos.

Lentelės su užsienio raktu pavyzdys

/* creates a new cars table in the car rental database */
CREATE TABLE Cars
(
LicenseNumber varchar(30) NOT NULL PRIMARY KEY,
CarType varchar(30) NOT NULL,
CustomerID varchar(30) FOREIGN KEY REFERENCES Customers(CustomerID)
);

Kaip matote aukščiau esančiame kode, užsienio raktas turi būti aiškiai identifikuotas kartu su nuoroda į pirminį raktą, kuris yra prijungtas prie naujos lentelės.

kaip pasidaryti midi valdiklį

Susijęs: Esminiai SQL komandų kodų lapai pradedantiesiems

Norėdami pridėti įrašą prie naujos lentelės, turėsite įsitikinti, kad užsienio rakto lauko vertė atitinka pradinės lentelės pirminio rakto lauko reikšmę.

Įrašo su užsienio raktu pridėjimas

/* creates a new record in the cars table */
INSERT INTO Cars VALUES
('100012',
'Mercedes-Benz',
'0004');

Aukščiau pateiktas kodas sukuria naują įrašą naujame Automobiliai lentelėje, gaunamas toks rezultatas.

Automobilių lentelė

Iš aukščiau pateiktos lentelės pagal įraše esantį svetimą raktą galite nustatyti teisingą Johną Browną, kuris nuomoja „Mercedes-Benz“.

Išankstiniai užsienio raktai

Yra dar du būdai, kaip naudoti užsienio raktą duomenų bazėje.

Jei pažvelgsite į aukščiau pateiktą užsienio rakto apibrėžimą, pamatysite, 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 sukūrus naują (to paties automobilio) įrašą kiekvieną kartą, kai klientas išsinuomoja tą automobilį, jis praranda savo tikslą. Automobiliai lentelę. Jei automobiliai parduodami ir vieną kartą parduodami vienam klientui, esama duomenų bazė yra tobula; tačiau atsižvelgiant į tai, kad automobiliai yra nuomojami, yra geresnis būdas pateikti šiuos duomenis.

Sudėtiniai raktai

Sudėtinis raktas turi du ar daugiau unikalių identifikatorių. Santykių duomenų bazėje bus atvejų, kai vieno užsienio rakto naudojimas nepakankamai atspindės toje duomenų bazėje egzistuojančius ryšius.

Automobilių nuomos pavyzdyje praktiškiausias būdas yra sukurti naują lentelę, kurioje būtų saugomi nuomos duomenys. Kad informacija apie automobilių nuomos lentelę būtų naudinga, ji turi prisijungti tiek prie automobilio, tiek prie klientų stalų.

Stalo kūrimas naudojant sudėtinius užsienio raktus

/* creates a CarRental table in the car rental database */
CREATE TABLE CarRental
(
DateRented DATE NOT NULL,
LicenseNumber varchar(30) NOT NULL FOREIGN KEY REFERENCES Cars(LicenseNumber),
CustomerID varchar(30) NOT NULL FOREIGN KEY REFERENCES Customers(CustomerID),
PRIMARY KEY (DateRented, LicenseNumber, CustomerID)
);

Aukščiau pateiktas kodas vaizduoja svarbų dalyką; nors lentelėje SQL duomenų bazėje gali būti daugiau nei vienas užsienio raktas, 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.

Norint turėti unikalų raktą, būtina sujungti visus tris lentelės atributus. Tą pačią dieną klientas gali išsinuomoti daugiau nei vieną automobilį (t Kliento ID ir DataRented nėra geras derinys) daugiau nei vienas klientas tą pačią dieną taip pat gali išsinuomoti tą patį automobilį (taigi LicenseNumber ir DataRented nėra geras derinys).

Tačiau sukuriant sudėtinį raktą, kuris nurodo, kuris klientas, koks automobilis ir kurią dieną sukuria puikų unikalų raktą. Šis unikalus raktas reiškia sudėtinį užsienio raktą ir sudėtinį pirminį raktą.

ar telefonas greičiau įkraunamas mažos galios režimu

Pirminiai užsienio raktai

O taip, pagrindiniai užsienio raktai išeina. Nors nėra oficialaus pavadinimo, užsienio raktas taip pat gali būti pagrindinis raktas toje pačioje lentelėje. Taip atsitinka, kai sukuriate naują lentelę, kurioje yra specializuotų duomenų apie esamą objektą (arba įrašą kitoje lentelėje).

Tarkime, Fredas (dirbantis automobilių nuomos įmonėje) yra įmonės duomenų bazėje po darbuotojų lentele. Po kelerių metų jis tampa vadovu ir įtraukiamas į prižiūrėtojų lentelę.

Fredas vis dar yra darbuotojas ir vis tiek turės tą patį ID numerį. Taigi Fredo darbuotojo ID dabar yra prižiūrėtojų lentelėje kaip užsienio raktas, kuris taip pat taps pagrindiniu tos lentelės raktu (nes nėra prasmės kurti naują Fredo ID numerį dabar, kai jis yra vadovas).

Dabar SQL duomenų bazėse galite nustatyti užsienio raktus

Užsienio raktai jungia skirtingas lenteles SQL duomenų bazėje. Iš šio straipsnio galite pamatyti, kas yra svetimas raktas, kaip jis veikia ir kodėl svarbu juos turėti duomenų bazėje. Jūs taip pat suprantate pagrindines ir dar sudėtingesnes užsienio raktų formas.

Jei manote, kad užsienio raktai yra įdomūs, turėsite laukti dienos, kai pradėsite naudoti projekto ir atrankos operacijas, norėdami užklausti savo SQL duomenų bazes.

Dalintis Dalintis „Tweet“ Paštu Sužinokite, kaip naudoti projekto ir atrankos operacijas SQL

Susipažinkite su SQL santykių duomenų bazėmis, suprasdami projekto ir atrankos operacijas šiais pavyzdžiais.

Skaityti toliau
Susijusios temos
  • Programavimas
  • Programavimas
  • SQL
  • duomenų bazę
Apie autorių Kadeisha Kean(Paskelbti 21 straipsniai)

Kadeisha Kean yra „Full Stack“ programinės įrangos kūrėja ir techninė/technologijų rašytoja. Ji turi aiškų sugebėjimą supaprastinti kai kurias sudėtingiausias technologines sąvokas; gaminti medžiagą, kurią lengvai supranta bet kuris naujokas. Ji aistringai rašo, kuria įdomią programinę įrangą ir keliauja po pasaulį (per dokumentinius filmus).

Daugiau iš Kadeisha Kean

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia