Kaip sukurti užsienio raktai "Microsoft SQL Server"

Viena svarbiausių duomenų bazių sąvokų yra ryšių tarp duomenų bazių lentelių kūrimas. Šie santykiai yra mechanizmas, leidžiantis susieti duomenis, saugomus keliose lentelėse, ir efektyviai juos išrinkti. Norėdami sukurti nuorodą tarp dviejų lentelių, turite nurodyti užsienio kodą vienoje lentelėje, kuri nurodo stulpelį kitoje lentelėje.

Duomenų bazių lentelės ir santykiai

Galbūt jau žinote, kad duomenų bazės yra tiesiog lentelių serija , panaši į tuos, kuriuos galbūt jau galite naudoti skaičiuoklės programoje , pvz., "Microsoft Excel". Tiesą sakant, netgi galite konvertuoti "Excel" skaičiuoklę į duomenų bazę. Tačiau kai duomenų bazės skiriasi nuo skaičiuoklių, tai yra tada, kai kalbama apie galingų lentelių santykių kūrimą .

Apsvarstykite, pavyzdžiui, duomenų bazę, kurią naudoja bendrovė, kad stebėtų žmogiškųjų išteklių informaciją. Ši duomenų bazė gali turėti lentelę "Darbuotojai", kurioje pateikiama ši informacija apie kiekvieno bendrovės darbuotojo narius:

Šiame pavyzdyje darbuotojo ID yra unikaliai sukurtas sveikasis skaičius, kuris priskiriamas kiekvienam darbuotojui, kai jis įtraukiamas į duomenų bazę. Pozicijos ID yra darbo kodas, naudojamas darbuotojo pozicijai įmonėje. Pagal šią schemą darbuotojas gali turėti tik vieną vietą, tačiau dauguma (ar ne) darbuotojai gali užpildyti kiekvieną poziciją. Pvz., Galite turėti šimtus darbuotojų, turinčių "kasininko" poziciją.

Duomenų bazėje taip pat gali būti lentelė, pavadinta "Pozicijos", nurodant šią papildomą informaciją apie kiekvieną poziciją:

Pozicijos ID šioje lentelėje yra panaši į lauką Darbuotojo ID lentelėje Darbuotojai - tai unikaliai sukurtas sveikasis skaičius, kuris yra sukurtas, kai prie duomenų bazės įtraukiama pozicija.

Kai mes einame ištraukti darbuotojų sąrašą iš duomenų bazės, būtų natūralu paprašyti kiekvieno asmens vardą ir pavardę. Tačiau ši informacija yra saugoma keliuose duomenų bazių lenteliuose, todėl ją galima gauti tik naudojant JOIN užklausą, kuri reikalauja egzistuojančio ryšio tarp lentelių.

Kai pažvelgiate į lentelių struktūrą, laukas, apibrėžiantis santykius, tikriausiai yra akivaizdus - pozicijos ID laukas. Kiekvienas darbuotojas gali turėti tik vieną poziciją ir ši pozicija identifikuojama, nurodant Pozicijos ID iš atitinkamo įrašo Pozicijų lentelės. Be to, kad pagrindinis pozicijų lentelės raktas , šiame pavyzdyje pozicijos ID laukas taip pat yra išorinis raktas iš lentelės "Darbuotojai" į pozicijų lentelę. Tada duomenų bazė gali naudoti šį lauką, norint koreliuoti informaciją iš kelių lentelių ir užtikrinti, kad bet kokie duomenų bazės pakeitimai ar papildymai ir toliau užtikrintų nuorodų vientisumą .

Kai nustatysite išorinį raktą, galėsite eiti į priekį ir ištraukti norimą informaciją iš duomenų bazės naudodami šią užklausą:

SELECT FirstName, LastName, Title Nuo darbuotojų INNER JOIN Pozicijos ON Employees.PositionID = Positions.PositionID

Užsikrečiamų raktų kūrimas SQL Server

Techniškai, jums nereikia aiškiai apibrėžti santykių, kad galėtumėte atlikti tokius uždavinius, kaip antai aukščiau. Tačiau jei jūs aiškiai apibrėšite santykius naudodami užsienio rakto apribojimą, duomenų bazė galės atlikti jums kai kuriuos namų ūkio darbus:

Štai kaip galite sukurti išorinį raktą "SQL Server":

ALTER TABLE Darbuotojai ADD UŽSIENIO KEY (PositionID) NUORODOS Pozicijos (PositionID)

Jūs taip pat galite sukurti išorinį raktą, kai kuriate lentelę pridėdami sąlygą:

UŽSIENIO REIKŠMINĖS NUORODOS Pozicijos (PositionID)

stulpelio užsienio rakto stulpelio apibrėžimo pabaigoje.