Hogyan hozzunk létre idegen kulcsokat a Microsoft SQL Serverben?

Az adatbázisok egyik legfontosabb fogalma az adatbázis táblák közötti kapcsolatok létrehozása. Ezek a kapcsolatok olyan mechanizmust biztosítanak, amely összekapcsolja a több táblában tárolt és hatékony módon visszakereshető adatokat. Két táblázat közötti kapcsolat létrehozásához meg kell adnia egy idegen kulcsot egy táblázatban, amely egy oszlopra utal egy másik táblázatban.

Adatbázis táblázatok és kapcsolatok

Lehet, hogy már tudják, hogy az adatbázisok egyszerűen egy sor táblázat , hasonlóan ahhoz, amit már használhat egy táblázatkezelő programban , például a Microsoft Excel programban. Valójában még egy Excel táblázatot konvertálhat egy adatbázisba. Ahol azonban az adatbázisok eltérnek a táblázatoktól, az az asztalok közötti erőteljes kapcsolatok építése.

Vegyünk például egy olyan cég által használt adatbázisot, amely nyomon követi az emberi erőforrásokat. Ez az adatbázis tartalmazhat egy olyan táblázatot, amelynek neve Employees, amely a vállalat személyzetének minden tagjára vonatkozóan az alábbi információkat tartalmazza:

Ebben a példában a munkavállalói azonosító egy egyedileg generált egész szám, amelyet az egyes alkalmazottakhoz rendelnek hozzá, amikor az adatbázisba kerülnek. A pozíció azonosító egy munkaköri kód, amely a munkavállaló pozíciójának a vállalatnál való hivatkozására szolgál. Ebben a rendszerben a munkavállalónak csak egy pozíciója lehet, de több (vagy nem) alkalmazott teljesítheti az egyes pozíciókat. Például lehet, hogy több száz olyan alkalmazott van, akinek "Pénztár" van.

Az adatbázis tartalmazhat egy úgynevezett pozíciót tartalmazó táblázatot, amely az egyes pozíciókkal kapcsolatos további információkat tartalmazza:

Ebben a táblázatban a Pozícióazonosító mező hasonló a Munkavállalók táblázat Munkavállaló azonosító mezőjéhez - ez egy egyedileg generált egész szám, amely akkor jön létre, amikor a pozíciót hozzáadják az adatbázishoz.

Amikor az alkalmazottak listáját vesszük fel az adatbázisból, természetes lenne, hogy kérjük az egyes személyek nevét és címét. Azonban ez az információ több adatbázis táblában tárolódik, ezért csak a JOIN lekérdezés használatával lehet lekérni, ami meglévő kapcsolatot igényel a táblák között.

Ha megnézzük a táblák szerkezetét, valószínűleg nyilvánvaló a kapcsolatot meghatározó mező - a pozícióazonosító mező. Minden alkalmazottnak csak egy pozíciója lehet, és ez a pozíció azonosítva van a Pozícióazonosító pozíciótáblázat megfelelő bejegyzésének bevitelével. Amellett, hogy ez a pozíciótáblázat elsődleges kulcsa , ebben a példában a Pozíció azonosító mező külsõ kulcs is az Alkalmazottak táblázatból a Pozíció táblába. Az adatbázis ezt követően felhasználhatja a több táblázatból származó információk korrelációját, és biztosítja, hogy az adatbázisban bekövetkező változások vagy kiegészítések továbbra is érvényesítsék a referenciális integritást .

Az idegen kulcs azonosítása után a következő lekérdezéssel folytathatja le a kívánt adatokat az adatbázisból:

SELECT Első név, Utónév, Cím FROM Alkalmazottak BELSŐ JOIN Positions ON Employees.PositionID = Positions.PositionID

Külföldi kulcsok létrehozása az SQL Serverben

Technikailag nem kell kifejezetten definiálnia a kapcsolatot ahhoz, hogy képes legyen a fenti lekérdezések végrehajtására. Azonban, ha kifejezetten definiálja a kapcsolatot egy külföldi kulcskorlát alkalmazásával, akkor az adatbázis képes lesz elvégezni néhány karbantartási munkát az Ön számára:

Így teremtheti meg az idegen kulcsot az SQL Server alkalmazásban:

ALTER TABLE Alkalmazottak ADD FOREIGN KEY (pozícióazonosító) REFERENCIÁK Pozíciók (Position ID)

Külső kulcs létrehozásával is létrehozhat egy táblát a záradék hozzáadásával:

KÜLSŐ BILLENTYŰ REFERENCIÁK Pozíciók (pozícióazonosító)

az idegen kulcs oszlop oszlopmeghatározásának végére.