Hoe om buitelandse sleutels in Microsoft SQL Server te skep

Een van die belangrikste konsepte in databasisse is om verhoudings tussen databasis tabelle te skep. Hierdie verhoudings bied 'n meganisme vir die koppeling van data wat in verskeie tabelle gestoor word, en dit op 'n doeltreffende wyse te herwin. Om 'n skakel tussen twee tabelle te skep, moet u 'n vreemde sleutel spesifiseer in een tabel wat 'n kolom in 'n ander tabel aandui.

Databasis Tabelle en Verwantskappe

U weet dalk reeds dat databasisse bloot 'n reeks tabelle is , soortgelyk aan wat u dalk reeds in 'n sigbladprogram gebruik , soos Microsoft Excel. Trouens, jy kan selfs 'n Excel-sigblad omskep in 'n databasis. Waar databasisse egter verskil van sigblaaie, is dit egter wanneer dit kom by die bou van kragtige verhoudings tussen tabelle.

Dink byvoorbeeld aan 'n databasis wat deur 'n maatskappy gebruik word om menslike hulpbroninligting op te spoor. Daardie databasis kan 'n tabel hê met die naam Werknemers wat die volgende inligting bevat vir elke lid van die maatskappy se personeel:

In hierdie voorbeeld is die werknemer ID 'n unieke gegenereerde heelgetal wat aan elke werknemer toegewys word wanneer hulle by die databasis gevoeg word. Die pos ID is 'n poskode wat gebruik word om die werknemer se posisie in die maatskappy te verwys. In hierdie skema kan 'n werknemer slegs een posisie hê, maar verskeie (of geen) werknemers mag elke pos vul. Byvoorbeeld, jy het dalk honderde werknemers met 'n "Kassier" -posisie.

Die databasis bevat ook 'n tabel genaamd Posisies met die volgende bykomende inligting oor elke pos:

Die Posisie ID-veld in hierdie tabel is soortgelyk aan die Werknemer ID-veld in die Werknemers-tabel. Dit is 'n unieke gegenereerde heelgetal wat geskep word wanneer 'n posisie by die databasis gevoeg word.

As ons 'n lys van werknemers uit die databasis gaan trek, sal dit natuurlik wees om elke persoon se naam en titel te versoek. Hierdie inligting word egter in verskeie databasis tabelle gestoor, sodat dit slegs verkry kan word met 'n JOIN-navraag wat 'n bestaande verhouding tussen die tabelle vereis.

As jy na die struktuur van die tabelle kyk, is die veld wat die verhouding definieer, waarskynlik voor die hand liggend - die Posisie ID-veld. Elke werknemer kan slegs een posisie hê en daardie posisie word geïdentifiseer deur die Posisie ID in die Posisie tabel se ooreenstemmende inskrywing in te sluit. Benewens die primêre sleutel vir die posisies tabel, in hierdie voorbeeld is die Posisie ID veld ook 'n vreemde sleutel van die Werknemers tabel na die Posisies tabel. Die databasis kan dan hierdie veld gebruik om inligting uit verskeie tabelle te korreleer en te verseker dat enige veranderinge of toevoegings tot die databasis voortgaan om referensiële integriteit af te dwing.

Sodra u die vreemde sleutel geïdentifiseer het, kan u voortgaan om die verlangde inligting uit die databasis te gebruik deur die volgende navraag te gebruik:

SELECT Voornaam, LastName, Titel FROM Werknemers BINNE JOIN Posisies ON Werknemers.PositoID = Posisies.PositoID

Skep buitelandse sleutels in SQL Server

Tegnies, jy hoef nie die verhouding uitdruklik te definieer om navrae soos die een hierbo te kan uitvoer nie. As u egter die verhouding definieer met behulp van 'n vreemde sleutelbeperking, kan die databasis vir u huishoudingswerk doen:

Gaan soos volg te werk om die vreemde sleutel in SQL Server te skep:

ALTER TABLE Werknemers ADD BUITELANDSE SLEUTEL (PosisieID) VERWYSINGS Posisies (PosisieID)

U kan ook 'n vreemde sleutel skep wanneer u 'n tafel skep deur die klousule by te voeg:

BUITELANDSE SLEUTELVERWYSINGS Posisies (PosisieID)

tot die einde van die kolom definisie vir die buitelandse sleutel kolom.