Kiel Krei Eksterlandajn Ŝlosilojn en Microsoft SQLa Servilo

Unu el la plej gravaj konceptoj en datumbazoj kreas interrilatojn inter datumbazoj. Ĉi tiuj interrilatoj provizas mekanismon por ligi datumojn stokitajn en multnombraj tabloj kaj akiri ĝin en efika maniero. Por krei ligon inter du tabloj, vi devas specifi fremdan ŝlosilon en unu tablo, kiu referencas kolumnon en alia tablo.

Datumaraj Tabeloj kaj Rilatoj

Vi eble jam scias, ke datumbazoj estas nur serio da tabeloj , similaj al tio, kion vi jam povus uzi en kalkulta programo , kiel ekzemple Microsoft Excel. Fakte, vi eĉ povas konverti Excel-kalkulilon al datumbazo. Kie datumbazoj disvastiĝas de folioj de folioj, tamen, ĝi klopodas konstrui potencajn rilatojn inter tabloj.

Konsideru, ekzemple, datumbazo uzita de kompanio por spuri informojn pri homaj rimedoj. Tiu datumbazo eble havas tablon nomitan Oficistoj, kiuj enhavas la jenajn informojn por ĉiu membro de la firmao de la kompanio:

En ĉi tiu ekzemplo, la dungista ID estas unike generita entjero kiu estas atribuita al ĉiu dungito kiam ili estas aldonitaj al la datumbazo. La pozicia ID estas laborpodo uzita por referenci la pozicion de la oficisto en la kompanio. En ĉi tiu skemo, dungito povas nur havi unu pozicion, sed multnombraj (aŭ ne) dungitoj povas plenigi ĉiun pozicion. Ekzemple, vi eble havas centojn da dungitoj kun "Cashier" pozicio.

La datumbazo eble ankaŭ enhavas tablon nomitan Pozicioj kun la sekvaj pliaj informoj pri ĉiu pozicio:

La kampo de Pozicio de ID en ĉi tiu tablo estas simila al la kampo de Dungitoj en la tablo de Oficistoj - ĝi estas unike generita entjero kreita kiam pozicio estas aldonita al la datumbazo.

Kiam ni foriras liston de dungitoj de la datumbazo, estus natura peti la nomon de ĉiu persono kaj ties titolo. Tamen, ĉi tiu informo estas stokita en multnombraj datumbazoj, do ĝi nur povas esti rekuperita per JOIN-konsulto, kiu postulas ekzistantan rilaton inter la tabloj.

Kiam vi rigardas la strukturon de la tabloj, la kampo difinanta la rilaton verŝajne estas evidenta - la Pozicia ID-kampo. Ĉiu dungito povas havi nur unu pozicion kaj tiu pozicio estas identigita per inkluzivanta la Pozician IDon de la responda eniro de la tablo Pozicioj. Krom esti la ĉefa ŝlosilo por la Pozicioj-tablo, en ĉi tiu ekzemplo, la Pozicia ID-kampo ankaŭ estas eksterlanda ŝlosilo de la Oficistoj de la tablo al la Pozicio-tablo. La datumbazo tiam povas uzi ĉi tiun kampon por korekti informon de multnombraj tabloj kaj certigi, ke iuj ŝanĝoj aŭ aldonoj al la datumbazo daŭriĝos plenumi referencajn integrecon .

Unufoje vi identigis la fremdan ŝlosilon, vi povas antaŭeniri kaj tiri la deziratan informon de la datumbazo per la sekva konsulto:

SELECTu FirstName, LastName, Titolo FROM Oficistoj INNER JOIN Pozicioj al Oficistoj.PositionID = Pozicioj.PositionID

Krei Eksterlandajn Ŝlosilojn en SQL-Servilo

Teknike, vi ne bezonas difini la rilaton eksplicite por povi fari demandojn kiel la unu supre. Tamen, se vi klare difinas la rilaton per fremda ŝlosila limigo, la datumbazo povos realigi iujn dommastrumajn laborojn por vi:

Jen kiel vi kreus la fremdan ŝlosilon en SQL-servilo:

ALTER TABLE Oficistoj ADD FOREIGN KEY (PozicioIDO) Referencoj Pozicioj (PositionID)

Vi ankaŭ povas krei fremdan ŝlosilon kiam vi kreas tablon aldonante la klaŭzon:

FOREIGN KEY REFERENCES Pozicioj (PositionID)

al la fino de la kolumna difino por la fremda ŝlosila kolumno.