Kako kreirati strane ključeve u Microsoft SQL Serveru

Jedan od najvažnijih koncepata u bazi podataka je stvaranje odnosa između tabela baze podataka. Ovi odnosi obezbeđuju mehanizam za povezivanje podataka sačuvanih u više tabela i njihovo preuzimanje na efikasan način. Da biste kreirali vezu između dve tabele, morate navesti inostrani ključ u jednoj tabeli koja se odnosi na kolonu u drugoj tabeli.

Tabele i veze baze podataka

Već možete da znate da su baze podataka jednostavno nizi tabela , slično onome što možda već koristite u programu za rad sa tabelama , kao što je Microsoft Excel. Zapravo, čak možete pretvoriti Excelovu tabelu u bazu podataka. Gde se baze podataka razlikuju od tabela, međutim, kada je u pitanju izgradnja moćnih odnosa između tabela.

Razmotrimo, na primjer, bazu podataka koju koristi kompanija za praćenje informacija o ljudskim resursima. Ta baza podataka može imati tablicu pod nazivom Zaposleni koja sadrži sledeće podatke za svakog člana osoblja kompanije:

U ovom primjeru, ID radnika je jedinstveno generisan cijeli broj koji je dodeljen svakom zaposleniku kada se dodaju u bazu podataka. ID pozicija je šifra posla koji se koristi za upućivanje na položaj zaposlenog u kompaniji. U ovoj šemi, zaposlenik može imati samo jednu poziciju, ali više (ili bez) zaposlenih može popuniti svaku poziciju. Na primjer, možda ćete imati stotine zaposlenih sa pozicijom "Cashier".

Baza može takođe sadržati tablicu pozvanu Pozicije sa sljedećim dodatnim informacijama o svakoj poziciji:

Polje ID polja u ovoj tabeli je slično polju ID zaposlenika u tabeli Zaposleni - to je jedinstveno generisan integer koji se kreira kada se pozicija doda u bazu podataka.

Kada idemo da izvučemo popis zaposlenih iz baze podataka, bilo bi prirodno tražiti ime i naziv svake osobe. Međutim, ove informacije se čuvaju u više tabela baze podataka, tako da se može preuzeti samo pomoću JOIN upita koji zahtijeva postojeći odnos između tabela.

Kada pogledate strukturu tabela, polje koje definiše odnos je verovatno očigledno - Polje ID polja. Svaki zaposleni može imati samo jednu poziciju i ta pozicija se identifikuje uključivanjem ID-a položaja sa odgovarajućeg unosa tablice Pozicije. Pored toga što je primarni ključ tabele Pozicije, u ovom primeru polje Polje ID-a je takođe inostrani ključ iz tabele Zaposleni u tabelu Pozicije. Baza može tada koristiti ovo polje za korelaciju informacija iz više tabela i osigurati da sve promjene ili dodaci u bazu podataka nastavljaju da sprovode referentni integritet .

Kada ste identifikovali inostrani ključ, možete nastaviti i izvlačiti željene informacije iz baze podataka pomoću sljedećeg upita:

SELECT FirstName, LastName, Naziv FROM Zaposleni INNER JOIN Positions ON Employees.PositionID = Positions.PositionID

Kreiranje stranih ključeva na SQL Serveru

Tehnički, ne morate eksplicitno da definišete odnos kako biste mogli obaviti upite kao što je gore navedeno. Međutim, ako eksplicitno definišete vezu pomoću ograničenja za inostrani ključ, baza podataka će moći da izvrši neke radove na domaćinstvu:

Evo kako ćete kreirati inostrani ključ u SQL Serveru:

ALTER TABELA Zaposleni ADD STRANI KEY (PositionID) REFERENCE Pozicije (PositionID)

Takođe možete kreirati inostrani ključ kada kreirate tabelu dodavanjem klauzule:

STRANI KLJUČNI REFERENCE Pozicije (PositionID)

do kraja definicije stupca za stupac stranog ključa.