Kako stvoriti vanjske ključeve u Microsoft SQL Server

Jedan od najvažnijih pojmova u bazama podataka je stvaranje odnosa između tablica baze podataka. Ovi odnosi pružaju mehanizam za povezivanje podataka pohranjenih u više tablica i njihovo preuzimanje na učinkovit način. Da biste stvorili vezu između dvije tablice, morate navesti strani ključ u jednoj tablici koja se odnosi na stupac u drugoj tablici.

Tablice baze podataka i odnosi

Možda već znate da su baze podataka samo niz tablica , slično onome što već koristite u programu proračunske tablice , kao što je Microsoft Excel. Zapravo, čak možete pretvoriti Excel spreadsheet u bazu podataka. Međutim, gdje se baza podataka razlikuje od proračunskih tablica, onda je riječ o izgradnji snažnih odnosa između tablica.

Razmislite, primjerice, o bazi podataka koju tvrtka koristi za praćenje informacija o ljudskim resursima. Ta baza podataka može imati tablicu pod nazivom Zaposlenici koji sadrže sljedeće informacije za svakog člana osoblja tvrtke:

U ovom primjeru, ID zaposlenika jedinstveno je generiran cijeli broj koji se dodjeljuje svakom zaposleniku kada se dodaju u bazu podataka. ID pozicije je kod za posao koji se koristi za upućivanje pozicije zaposlenika u tvrtku. U ovoj shemi, zaposlenik može imati samo jedan položaj, ali više (ili ne) zaposlenika može ispuniti svaku poziciju. Na primjer, možda imate stotine zaposlenika s pozicijom "Blagajnica".

Baze podataka također mogu sadržavati tablicu Pozicije sa sljedećim dodatnim informacijama o svakoj poziciji:

Polje ID položaja u ovoj tablici slično je polju ID zaposlenika u tablici Zaposlenici - to je jedinstveno generirani cijeli broj koji se stvara kada se pozicija doda u bazu podataka.

Kad idemo povući popis zaposlenika iz baze podataka, bilo bi prirodno zatražiti ime i naziv svake osobe. Međutim, te se informacije pohranjuju u više tablica baza podataka, stoga ih se može dohvatiti samo pomoću upit JOIN koji zahtijeva postojeći odnos između tablica.

Kada pogledate strukturu tablica, polje koje definira vezu vjerojatno je očito - polje ID pozicije. Svaki zaposlenik može imati samo jedan položaj i taj položaj se identificira tako što uključuje ID pozicije iz odgovarajućeg unosa tablice Pozicija. Osim što je primarni ključ za tablicu Pozicija, u ovom primjeru polje ID položaja također je strani ključ iz tablice Zaposlenici do tablice Pozicija. Baza podataka tada može koristiti ovo polje za povezivanje podataka iz više tablica i osigurati da bilo kakve izmjene ili dopune u bazi podataka i dalje provode referencijalni integritet .

Kada identificirate strani ključ, možete ići naprijed i povući željene podatke iz baze podataka pomoću sljedećeg upita:

ODABERITE ime, prezime, naslov od zaposlenika INNER JOIN Positions ON Employees.PositionID = Positions.PositionID

Stvaranje stranih ključeva u sustavu SQL Server

Tehnički, ne morate jasno definirati odnos kako biste mogli izvršiti upite poput gore navedenog. Međutim, ako izričito definirate odnos pomoću ograničenja stranog ključa, baza podataka će moći izvršiti neke poslove održavanja:

Evo kako ćete stvoriti strani ključ u sustavu SQL Server:

ALTER TABLE Zaposlenici ADD FOREIGN KEY (Position ID) REFERENCE Položaji (ID položaja)

Možete izraditi i stranog ključa prilikom izrade tablice dodavanjem klauzule:

VANJSKI KLJUČNI REFERENCE Položaji (ID pozicije)

do kraja definicije stupca za stupac stranog ključa.