Strani ključevi omogućavaju administratorima baza podataka da lako prepoznaju različite veze koje postoje unutar SQL sustava za upravljanje bazom podataka.
SQL izvodi matematičke operacije nad podacima unutar sustava za upravljanje bazom podataka. Te baze podataka sadrže različite tablice u kojima svaka pohranjuje podatke o određenom entitetu. Ako imate bazu podataka o najmu automobila, entitet (ili tablica) u toj bazi podataka bit će kupci (koji će pohraniti sve osobne podatke o svakom kupcu).
Te tablice baze podataka sadrže retke i stupce, gdje svaki redak sadrži zapis, a svaki stupac sadrži podatke specifične za atribut.
U sustavu za upravljanje bazom podataka, svaki zapis (ili redak) trebao bi biti jedinstven.
Primarni ključevi
Iako je predviđeno da svaki zapis u tablici mora biti različit, to nije uvijek slučaj. Nastavljajući s primjerom baze podataka o iznajmljivanju automobila, ako baza podataka sadrži dva kupca imaju ime "John Brown", moglo bi se očekivati da John Brown vrati Mercedes-Benz koji nije najam.
Stvaranje primarnog ključa umanjit će ovaj rizik. U sustavu upravljanja bazom podataka SQL, primarni ključ je jedinstveni identifikator koji razlikuje jedan zapis od drugog.
Stoga bi svaki zapis u sustavu upravljanja bazom podataka SQL trebao imati primarni ključ.
Korištenje primarnih ključeva u bazi podataka
Da biste uključili primarne ključeve u sustav za upravljanje bazom podataka pomoću SQL-a, možete ga jednostavno dodati kao uobičajeni atribut prilikom izrade nove tablice. Tako će tablica kupaca sadržavati četiri atributa (ili stupca):
- CarOwnerID (koji će pohraniti primarni ključ)
- Ime
- Prezime
- Broj telefona
Povezano: Kako stvoriti tablicu u SQL-u
Sada će svaki korisnički zapis koji uđe u bazu podataka imati jedinstveni identifikacijski broj, kao i ime, prezime i telefonski broj. Telefonski broj nije dovoljno jedinstven da bi bio primarni ključ, jer premda je jedinstven za jednu osobu odjednom, osoba lako može promijeniti svoj broj, što znači da bi sada pripadao nekom drugom.
Zapis s primjerom primarnog ključa
/ * stvara novi zapis u tablici kupaca * /
UMETNI U VRIJEDNOSTI kupaca
('0004',
'Ivan',
'Smeđa',
'111-999-5555');
Gornji SQL kod dodati će novi zapis već postojećem Kupci stol. Tablica u nastavku prikazuje novu tablicu kupaca s dva zapisa John Browna.
Strani ključ
Sada imate primarne ključeve koji jedinstveno razlikuju jednog iznajmljivača automobila od drugog. Jedini je problem što u bazi podataka nema stvarne veze između svakog Johna Browna i automobila koji iznajmljuje.
Stoga i dalje postoji mogućnost pogreške. Tu nastupaju strani ključevi. Korištenje primarnog ključa za rješavanje problema dvosmislenosti vlasništva moguće je postići samo ako se primarni ključ udvostručuje kao strani ključ.
Što je strani ključ?
U SQL sustavu upravljanja bazom podataka, strani ključ je jedinstveni identifikator ili kombinacija jedinstvenih identifikatora koji povezuju dvije ili više tablica u bazi podataka.
Od četiri postojeća sustava upravljanja bazom podataka SQL, najpopularniji je relacijski sustav upravljanja bazama podataka. Kada odlučujete koja tablica u relacijskoj bazi podataka treba imati strani ključ, prvo biste trebali identificirati koja je tablica subjekt, a koji objekt u njihovom odnosu.
Vraćajući se u bazu podataka o najmu automobila, da biste svakog kupca povezali s ispravnim automobilom, morat ćete shvatiti da kupac (subjekt) unajmljuje automobil (objekt). Stoga bi strani ključ trebao biti u tablici automobila.
SQL kod koji generira tablicu s inozemnim ključem malo se razlikuje od norme.
Izrada tablice s primjerom stranog ključa
/ * stvara novu tablicu automobila u bazi podataka o iznajmljivanju automobila * /
STVORI STOL Automobili
(
Broj licence varchar (30) NULL PRIMARNI KLJUČ,
CarType varchar (30) NIJE NULL,
CustomerID varchar (30) STRANE KLJUČNE REFERENCE Kupci (CustomerID)
);
Kao što možete vidjeti u gornjem kodu, strani ključ mora biti izričito identificiran kao takav, zajedno s referencom na primarni ključ koji je povezan s novom tablicom.
Povezano: Tablica osnovnih SQL naredbi za početnike
Da biste dodali zapis u novu tablicu, morat ćete osigurati da vrijednost u polju stranog ključa odgovara vrijednosti u polju primarnog ključa izvorne tablice.
Dodavanje zapisa s primjerom stranog ključa
/ * stvara novi zapis u tablici automobila * /
Umetnite u vrijednosti automobila
('100012',
'Mercedes-Benz',
'0004');
Gornji kod stvara novi zapis u novom Automobili tablica, dajući sljedeći rezultat.
Stol za automobile
Iz gornje tablice možete identificirati ispravnog Johna Browna koji unajmljuje Mercedes-Benz po stranom ključu u evidenciji.
Unaprijed strani ključevi
Postoje dva druga načina upotrebe stranog ključa u bazi podataka.
Ako se osvrnete na gornju definiciju stranog ključa, ustanovit ćete da tamo kaže da strani ključ može biti jedinstveni identifikator ili kombinacija jedinstvenih identifikatora.
Vraćajući se na primjer baze podataka o iznajmljivanju automobila, vidjet ćete da stvaranje novog zapisa (istog automobila) svaki put kada kupac taj automobil unajmi, poništava svrhu Automobili stol. Ako su automobili na prodaju i jednom se prodaju jednom kupcu, postojeća baza podataka je savršena; ali s obzirom da se automobili iznajmljuju, postoji bolji način za predstavljanje ovih podataka.
Sastavljeni ključevi
Sastavljeni ključ ima dva ili više jedinstvenih identifikatora. U relacijskoj bazi podataka bit će slučajeva kada upotreba jednog stranog ključa neće u dovoljnoj mjeri predstavljati odnose koji postoje u toj bazi podataka.
U primjeru najma automobila, najpraktičniji je pristup stvoriti novu tablicu koja pohranjuje detalje o najmu. Da bi informacije u tablici najma automobila bile korisne, mora se povezati i s tablicama automobila i kupaca.
Stvaranje tablice s kompozitnim stranim ključevima
/ * stvara tablicu CarRental u bazi podataka o najmu automobila * /
IZRADI STOL CarRental
(
Datum IZNAJMLJENO DATUM NIJE NULL,
Broj licence varchar (30) NISU NULTA STRANE KLJUČNE REFERENCE Automobili (broj licence),
CustomerID varchar (30) NIJE NULTA STRANE KLJUČNE REFERENCE Kupci (CustomerID),
PRIMARNI KLJUČ (Datum izdavanja, broj licence, ID kupca)
);
Gornji kod prikazuje važnu točku; iako tablica u SQL bazi podataka može imati više od jednog stranog ključa, ona može imati samo jedan primarni ključ. To je zato što bi trebao postojati samo jedan jedinstveni način identificiranja zapisa.
Potrebno je kombinirati sva tri atributa u tablici kako biste imali jedinstveni ključ. Kupac može unajmiti više automobila istog dana (dakle CustomerID i DatumIznajmljeno nije dobra kombinacija) više kupaca može istog dana unajmiti isti automobil (dakle Broj dozvole i DatumIznajmljeno nije dobra kombinacija).
Međutim, stvaranje kompozitnog ključa koji govori koji kupac, koji automobil i koji dan čini izvrsnim jedinstvenim ključem. Ovaj jedinstveni ključ predstavlja i složeni strani ključ i složeni primarni ključ.
Strani primarni ključevi
O da, strani primarni ključevi izlaze. Iako za njega ne postoji službeni naziv, strani ključ također može biti primarni ključ u istoj tablici. To se događa kada kreirate novu tablicu koja sadrži specijalizirane podatke o postojećem entitetu (ili zapis u drugoj tablici).
Recimo da je Fred (koji radi u tvrtki za iznajmljivanje automobila) u bazi podataka tvrtke ispod tablice zaposlenika. Nakon nekoliko godina postaje nadzornik i dodaje se u tablicu nadzornika.
Fred je još uvijek zaposlenik i i dalje će imati isti identifikacijski broj. Dakle, Fredov ID zaposlenika sada je u nadzorničkoj tablici kao strani ključ koji će također postati primarni ključ u toj tablici (jer nema smisla stvarati novi ID broj za Freda sada kada je nadzornik).
Sada možete prepoznati strane ključeve u SQL bazama podataka
Strani ključevi povezuju različite tablice unutar SQL baze podataka. Iz ovog članka možete vidjeti što je strani ključ, kako funkcionira i zašto je važno da ih imate u bazi podataka. Razumijete i osnovne, pa čak i složenije oblike stranih ključeva.
Ako mislite da su strani ključevi zanimljivi, imat ćete dan na terenu kada počnete koristiti projekt i operacije odabira za ispitivanje vaših SQL baza podataka.
Upoznajte se s SQL relacijskim bazama podataka razumijevanjem projekata i postupka odabira s ovim primjerima.
Pročitajte Dalje
- Programiranje
- Programiranje
- SQL
- baza podataka

Kadeisha Kean je programerica softvera u cijeloj tehnologiji i pisac tehničkih / tehnoloških tehnologija. Ona ima izrazitu sposobnost pojednostavljivanja nekih od najsloženijih tehnoloških koncepata; proizvodeći materijal koji lako može razumjeti bilo koji tehnološki novak. Zaljubljena je u pisanje, razvoj zanimljivog softvera i putovanje svijetom (kroz dokumentarne filmove).
Pretplatite se na naše obavijesti
Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!
Još jedan korak…!
Potvrdite svoju e-adresu u e-pošti koju smo vam upravo poslali.