Mis on võõrad võtmed SQL -andmebaasides?

Mis on võõrad võtmed SQL -andmebaasides?

Välisvõtmed võimaldavad andmebaasi administraatoritel hõlpsasti tuvastada SQL -andmebaasihaldussüsteemis esinevaid erinevaid ühendusi.





SQL teeb andmetega matemaatilisi toiminguid andmebaasihaldussüsteemis. Need andmebaasid sisaldavad erinevaid tabeleid, kus igaüks salvestab andmed konkreetse olemi kohta. Kui teil on autorendi andmebaas, on selle andmebaasi üksus (või tabel) kliendid (mis salvestab iga kliendi kohta kõik isikuandmed).





Need andmebaasi tabelid sisaldavad ridu ja veerge, kus igal real on kirje ja igas veerus on atribuudipõhised andmed.





Andmebaasihaldussüsteemis peaks iga kirje (või rida) olema ainulaadne.

Esmased võtmed

Kuigi tingimus on, et tabeli iga kirje peaks olema erinev, pole see alati nii. Jätkates autorendi andmebaasi näidet, kui andmebaasis on kaks klienti, kelle igaühel on nimi John Brown, võib John Brownilt oodata Mercedes-Benzi tagastamist, mida ta ei rentinud.



Esmase võtme loomine vähendab seda riski. SQL -andmebaasihaldussüsteemis on esmane võti unikaalne identifikaator, mis eristab üht kirjet teisest.

vaata, kes on sind Facebookis blokeerinud

Seetõttu peaks igal SQL -andmebaasihaldussüsteemi kirjel olema primaarvõti.





Primaarvõtmete kasutamine andmebaasis

Primaarvõtmete kaasamiseks andmebaasihaldussüsteemi SQL -i kasutades saate selle lihtsalt uue tabeli loomisel tavalise atribuudina lisada. Seega sisaldab klientide tabel nelja atribuuti (või veergu):

  • CarOwnerID (mis salvestab primaarvõtme)
  • Eesnimi
  • Perekonnanimi
  • Telefoninumber

Seotud: Kuidas luua tabelit SQL -is





Nüüd on igal andmebaasi sisenenud kliendikirjal kordumatu identifitseerimisnumber, samuti eesnimi, perekonnanimi ja telefoninumber. Telefoninumber pole piisavalt unikaalne, et olla esmane võti, sest kuigi see on ainulaadne ühele inimesele korraga, saab inimene oma numbrit hõlpsalt muuta, mis tähendab, et see kuulub nüüd kellelegi teisele.

Kirje primaarvõtme näitega

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

Ülaltoodud SQL-kood lisab olemasolevale uue kirje Kliendid tabel. Allolev tabel näitab uut klienditabelit koos kahe John Browni kirjega.

Välisvõti

Nüüd on teil esmased võtmed, mis eristavad ainulaadselt ühte autorendajat teisest. Ainus probleem on see, et andmebaasis puudub tegelik seos iga John Browni ja tema renditud auto vahel.

Seetõttu on eksimisvõimalus endiselt olemas. Siin tulevad mängu võõrad võtmed. Primaarvõtme kasutamine omaniku ebaselguse probleemi lahendamiseks on saavutatav ainult siis, kui esmane võti toimib ka võõrvõtmena.

Mis on välisvõti?

SQL -andmebaasihaldussüsteemis on võõrvõti unikaalne identifikaator või unikaalsete identifikaatorite kombinatsioon, mis ühendavad kaks või enam andmebaasi tabelit.

Neljast olemasolevast SQL andmebaasihaldussüsteemist on relatsioonandmebaasi haldussüsteem kõige populaarsem. Kui otsustate, millisel tabelil relatsiooniandmebaasis peaks olema võõrvõti, peaksite esmalt tuvastama, milline tabel on nende suhe ja milline objekt.

Tagasi autorendi andmebaasi juurde, et ühendada iga klient õige autoga, peate mõistma, et klient (subjekt) rendib autot (objekti). Seetõttu peaks võõrvõti olema autode tabelis.

Võõrvõtmega tabeli genereeriv SQL -kood erineb pisut normist.

Tabeli loomine välisvõti näitega

/* 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)
);

Nagu ülaltoodud koodist näha, tuleb välisvõti selgesõnaliselt identifitseerida koos viitega esmasele võtmele, mis on ühendatud uue tabeliga.

kas wifi saamiseks peab teil olema Interneti -teenuse pakkuja?

Seotud: Olulised SQL -käskude petuleht algajatele

Kirje lisamiseks uude tabelisse peate tagama, et välisvõti välja väärtus vastab algse tabeli esmase võtme välja väärtusele.

Kirje lisamine võõrvõtmega

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

Ülaltoodud kood loob uues uue kirje Autod tabel, andes järgmise tulemuse.

Autode tabel

Ülaltoodud tabelist saate kirje välisvõti järgi tuvastada õige John Browni, kes rendib Mercedes-Benzi.

Ettenähtud võti

Võõrvõtme kasutamiseks andmebaasis on veel kaks võimalust.

Kui vaatate tagasi ülaltoodud võõrvõtme määratlusele, leiate, et see ütleb, et välisvõti võib olla kordumatu identifikaator või kordumatute identifikaatorite kombinatsioon.

Kui pöörduda tagasi autorendi andmebaasi näite juurde, näete, et uue (sama auto) rekordi loomine iga kord, kui klient selle auto rendib, kaotab selle eesmärgi Autod tabel. Kui autosid müüakse ja müüakse ühele kliendile üks kord, on olemasolev andmebaas täiuslik; kuid arvestades, et autod on renditud, on nende andmete esitamiseks parem viis.

Komposiitvõtmed

Komposiitvõtmel on kaks või enam unikaalset identifikaatorit. Relatsioonandmebaasis on juhtumeid, kui ühe välisvõti kasutamine ei esinda piisavalt andmebaasis olemasolevaid seoseid.

Autorendi näites on kõige praktilisem lähenemisviis uue laua loomine, mis salvestab rendiandmed. Selleks, et autorenditabelis olev teave oleks kasulik, peab see ühenduma nii auto kui ka kliendilaudadega.

Laua loomine komposiitvõõrvõtmetega

/* 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)
);

Ülaltoodud kood kujutab olulist punkti; kuigi SQL -andmebaasi tabelis võib olla rohkem kui üks võõrvõti, võib sellel olla ainult üks esmane võti. Seda seetõttu, et kirje tuvastamiseks peaks olema ainult üks ainulaadne viis.

Unikaalse võtme saamiseks on vaja tabelis ühendada kõik kolm atribuuti. Klient saab samal päeval rentida rohkem kui ühe auto (nii Kliendi ID ja Laenutuskuupäev ei ole hea kombinatsioon) sama auto võib samal päeval rentida ka rohkem kui üks klient (nii LicenseNumber ja Laenutuskuupäev pole hea kombinatsioon).

Komposiitvõtme loomine, mis ütleb, milline klient, milline auto ja mis päeval teeb suurepärase unikaalse võtme. See ainulaadne võti tähistab nii kombineeritud välisvõtit kui ka kombineeritud primaarvõtit.

kuidas Mac töölauda sisse lülitada

Välismaa esmased võtmed

Oh jah, välismaised esmased võtmed väljuvad. Ehkki sellel pole ametlikku nime, võib välisvõti olla samas tabelis esmane võti. See juhtub siis, kui loote uue tabeli, mis sisaldab olemasoleva olemi (või teise tabeli kirje) kohta spetsiifilisi andmeid.

Oletame, et Fred (kes töötab autorendiettevõttes) on ettevõtte andmebaasis töötajate tabeli all. Mõne aasta pärast saab temast juhendaja ja ta lisatakse juhendaja tabelisse.

Fred on endiselt töötaja ja tal on endiselt sama id -number. Seega on Fredi töötaja ID nüüd juhendaja tabelis välisvõti, millest saab ka selle tabeli esmane võti (kuna nüüd, kui ta on juhendaja, pole mõtet Fredile uut ID -numbrit luua).

Nüüd saate SQL -andmebaasides tuvastada võõraid võtmeid

Välisvõtmed ühendavad SQL -andmebaasis erinevaid tabeleid. Sellest artiklist näete, mis on võõrvõti, kuidas see töötab ja miks on oluline, et need oleksid andmebaasis. Mõistate ka välisvõtmete põhilisi ja veelgi keerukamaid vorme.

Kui arvate, et välisvõtmed on huvitavad, siis on teil välipäev, kui hakkate projekti- ja valikutoiminguid kasutama SQL -andmebaaside päringute tegemiseks.

Jaga Jaga Piiksuma E -post Õppige projekti ja valiku toiminguid SQL -is kasutama

Mõelge SQL -i relatsiooniandmebaasidele, mõistes nende näidete abil projekti ja valiku toiminguid.

Loe edasi
Seotud teemad
  • Programmeerimine
  • Programmeerimine
  • SQL
  • andmebaas
Autori kohta Kadeisha Kean(Avaldatud 21 artiklit)

Kadeisha Kean on täispinu tarkvaraarendaja ja tehniline/tehnoloogiline kirjutaja. Tal on selge võime lihtsustada mõnda kõige keerukamat tehnoloogilist kontseptsiooni; materjali tootmine, millest igale tehnoloogia algajale on lihtne aru saada. Ta on kirglik kirjutamise, huvitava tarkvara arendamise ja maailmas reisimise vastu (läbi dokumentaalfilmide).

Veel Kadeisha Keanilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin