Võõrvõtmed võimaldavad andmebaasi administraatoritel hõlpsasti tuvastada erinevad ühendused, mis eksisteerivad SQL-i andmebaaside haldussüsteemis.

SQL teostab andmebaasi haldussüsteemi andmetega matemaatilisi toiminguid. Need andmebaasid sisaldavad erinevaid tabeleid, millest igaüks salvestab andmeid kindla üksuse kohta. Kui teil on autorendi andmebaas, on kliendid selles andmebaasis olev üksus (või tabel) (mis salvestab kõik isikuandmed iga kliendi kohta).

Need andmebaasitabelid sisaldavad ridu ja veerge, kus igas reas on kirje ja igas veerus on atribuudispetsiifilised andmed.

Andmebaasi haldussüsteemis peaks iga kirje (või rida) olema unikaalne.

Esmased võtmed

Kuigi tingimus on, et iga tabeli kirje peaks olema erinev, ei ole see alati nii. Jätkates autorendi andmebaasi näidet, kui andmebaas sisaldab kahte klienti, kellest igaüks nimega "John Brown", võib John Brownilt oodata sellise Mercedes-Benzi tagastamist, mida ta ei teinud rent.

Esmase võtme loomine leevendab seda riski. SQL-i andmebaaside haldussüsteemis on esmane võti unikaalne identifikaator, mis eristab üht kirjet teisest.

instagram viewer

Seetõttu peaks igal SQL-i andmebaasi haldussüsteemi kirjel olema esmane võti.

Primaarvõtmete kasutamine andmebaasis

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

  • CarOwnerID (mis salvestab esmase võtme)
  • Eesnimi
  • Perekonnanimi
  • Telefoninumber

Seotud: Kuidas luua tabelit SQL-is

Nüüd on igal andmebaasi siseneval kliendikirjel unikaalne identifitseerimisnumber, samuti eesnimi, perekonnanimi ja telefoninumber. Telefoninumber pole piisavalt unikaalne, et olla peamine võti, sest kuigi see on unikaalne ainult ühele inimesele korraga, saab inimene oma numbrit hõlpsasti muuta, mis tähendab, et see kuuluks nüüd kellelegi teisele.

Kirje primaarvõtme näitega

/ * loob klienditabelisse uue kirje * /
INSERTTEERI klientide VÄÄRTUSTESSE
('0004',
"John",
"Pruun",
'111-999-5555');

Ülaltoodud SQL-kood lisab olemasolevale uue kirje Kliendid tabel. Allolevas tabelis on toodud uus klienditabel koos kahe John Browni rekordiga.

Võõrvõti

Nüüd on teil olemas peamised võtmed, mis eristavad ühte autorenti unikaalselt teisest. Ainus probleem on see, et andmebaasis pole reaalset seost iga John Browni ja tema renditava auto vahel.

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

Mis on võti?

SQL-i andmebaaside haldussüsteemis on võõrvõti unikaalne identifikaator või unikaalsete identifikaatorite kombinatsioon, mis ühendab kahte või enamat andmebaasi tabelit.

Neljast olemasolevast SQL-i andmebaaside haldussüsteemist on kõige populaarsem suhteline andmebaaside haldussüsteem. Kui otsustate, millises relatsiooniandmebaasi tabelis peaks olema võõras võti, peaksite kõigepealt tuvastama, milline tabel on nende suhetes subjekt ja milline objekt.

Kui pöörduda tagasi autorendi andmebaasi juurde, peate iga kliendi õige autoga ühendamiseks mõistma, et klient (subjekt) rendib autot (objekti). Seetõttu peaks võõras võti olema autode tabelis.

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

Võõrvõti näitega tabeli loomine

/ * loob autorendi andmebaasi uue autode tabeli * /
LOE LAUD Autod
(
LicenseNumber varchar (30) EI NULL PRIMARY KEY,
CarType varchar (30) EI OLE NULL,
Kliendi ID varchar (30) VÕÕRASED PÕHIVIITLUSED Kliendid (CustomerID)
);

Nagu näete ülaltoodud koodist, tuleb selgesõnaliselt tuvastada võõras võti koos viitega uue tabeliga ühendatavale primaarvõtmele.

Seotud: Essential SQL Commands Cheat Sheet algajatele

Uuesse tabelisse kirje lisamiseks peate veenduma, et välivõtme välja väärtus vastab algse tabeli esmase võtme välja väärtusele.

Kirje lisamine välisvõtme näitega

/ * loob autode tabelisse uue rekordi * /
INSERT IN AUTOS VÄÄRTUSED
('100012',
"Mercedes-Benz",
'0004');

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

Autode tabel

Ülaltoodud tabelist saate rekordis oleva võti abil tuvastada õige John Browni, kes rendib Mercedes-Benzi.

Välismaised võtmed

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

Kui vaatate tagasi ülaltoodud võõra võtme definitsioonile, leiate, et seal öeldakse, et võõras võti võib olla kordumatu tunnus või nende kombinatsioon.

Kui pöörduda tagasi autorendi andmebaasi näite juurde, näete, et uue (sama auto) rekordi loomine rikub iga kord, kui klient selle auto rendib, 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

Liitvõtmel on kaks või enam kordumatut identifikaatorit. Relatsiooniandmebaasis on juhtumeid, kui ühe võõra võtme kasutamine ei esinda piisavalt selles andmebaasis olevaid seoseid.

Autorendi näites on kõige praktilisem lähenemine uue laua loomisele, kuhu on salvestatud üüri üksikasjad. Et autorendi tabelis olev teave oleks kasulik, peab see ühenduma nii auto kui ka kliendilaudadega.

Komposiitvõtmetega tabeli loomine

/ * loob autorendi andmebaasi CarRentali tabeli * /
LOE TABEL CarRental
(
Üürikuupäev DATE NOT NULL,
LicenseNumber varchar (30) EI OLE NULL VÄLISMAA PÕHIVIITLUSED Autod (LicenseNumber),
CustomerID varchar (30) EI OLE VÄLISMAA VÕIMALIKUD VÕRDLUSED Kliendid (CustomerID),
PÕHIVÕTI (kuupäev renditud, litsentsi number, kliendi ID)
);

Ülaltoodud kood kujutab olulist punkti; kuigi SQL-i andmebaasi tabelil võib olla rohkem kui üks võõrvõti, võib sellel olla ainult üks primaarvõ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 (seega Kliendi ID ja Kuupäev renditud ei ole hea kombinatsioon) saab sama auto samal päeval rentida ka rohkem kui üks klient (nii et LicenseNumber ja Kuupäev renditud pole hea kombinatsioon).

Kuid liitvõ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 liitvõrgu kui ka liitvõtit.

Välismaised esmased võtmed

Oh jah, välismaised esmased võtmed väljuvad. Kuigi sellele pole ametlikku nime, võib võti olla samas tabelis ka peamine võti. See juhtub siis, kui loote uue tabeli, mis sisaldab spetsiaalseid andmeid olemasoleva üksuse kohta (või kirjet teises tabelis).

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

Fred on endiselt töötaja ja tal on endiselt sama ID-number. Nii et Fredi töötaja ID on nüüd juhendaja tabelis võõrvõti, mis saab ka esmaseks sisestage sellesse tabelisse (kuna pole mõtet luua Fredile uut ID-numbrit nüüd, kui ta on juhendaja).

Nüüd saate identifitseerida võõraid võtmeid SQL-i andmebaasides

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

Kui arvate, et võõrvõtmed on huvitavad, on teil SQL-andmebaaside päringute tegemiseks projekti- ja valikutoimingute kasutamisel välipäev.

E-post
Siit saate teada, kuidas kasutada projekti ja valikutoiminguid SQL-is

Saage aru SQL-relatsiooniliste andmebaasidega, mõistes nende näidete abil toiminguid Projekt ja Valik.

Loe edasi

Seotud teemad
  • Programmeerimine
  • Programmeerimine
  • SQL
  • andmebaasi
Autori kohta
Kadeisha Kean (14 artiklit on avaldatud)

Kadeisha Kean on täisvarustuses tarkvaraarendaja ja tehnikakirjutaja. Tal on selge võime lihtsustada mõnda kõige keerukamat tehnoloogilist kontseptsiooni; materjali tootmine, mis on hõlpsasti mõistetav igale tehnoloogia algajale. Ta on kirglik kirjutamise, huvitava tarkvara väljatöötamise ja maailmas reisimise (dokumentaalfilmide kaudu) vastu.

Veel Kadeisha Keanilt

Telli meie uudiskiri

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

Veel üks samm !!!

Palun kinnitage oma e-posti aadress e-kirjas, mille just teile saatsime.

.