Com crear claus externes en Microsoft SQL Server

Un dels conceptes més importants en bases de dades és crear relacions entre taules de base de dades. Aquestes relacions proporcionen un mecanisme per enllaçar les dades emmagatzemades en diverses taules i recuperar-les de forma eficient. Per crear un enllaç entre dues taules, heu d'especificar una clau externa en una taula que faci referència a una columna d'una altra taula.

Taules de bases de dades i relacions

És possible que ja sàpigues que les bases de dades són simplement una sèrie de taules , semblants a les que ja podeu utilitzar en un programa de full de càlcul , com Microsoft Excel. De fet, fins i tot podeu convertir un full de càlcul Excel a una base de dades. On les bases de dades difereixen dels fulls de càlcul, però, és quan es tracta de construir relacions poderoses entre taules.

Tingueu en compte, per exemple, una base de dades que utilitza una empresa per fer un seguiment de la informació sobre recursos humans. Aquesta base de dades pot tenir una taula anomenada Empleats que conté la següent informació per a cada membre del personal de la companyia:

En aquest exemple, l'ID de l'empleat és un enter únic generat que s'assigna a cada empleat quan s'afegeixen a la base de dades. L'identificador de posició és un codi de treball utilitzat per fer referència a la posició de l'empleat a l'empresa. En aquest esquema, un empleat només pot tenir una posició, però diversos empleats (o no) poden omplir cada posició. Per exemple, podeu tenir centenars d'empleats amb una posició "Caixer".

La base de dades també pot contenir una taula anomenada Posicions amb la següent informació addicional sobre cada posició:

El camp Identificació de posició d'aquesta taula és similar al camp d'identificació d'empleat de la taula Empleats: es tracta d'un enter únic generat de forma única que es crea quan s'afegeix una posició a la base de dades.

Quan anem a treure una llista de treballadors de la base de dades, seria natural demanar el nom de cada persona i el seu títol. Tanmateix, aquesta informació s'emmagatzema a diverses taules de base de dades, de manera que només es pot recuperar mitjançant una consulta JOIN que requereix una relació existent entre les taules.

Quan mireu l'estructura de les taules, el camp que defineix la relació és probablement obvi: el camp Identificació de posició. Cada empleat pot tenir només una posició i aquesta posició s'identifica incloent la ID de posició de l'entrada corresponent a la taula de Posicions. A més de ser la clau principal de la taula Posicions, en aquest exemple, el camp Identificació de posició també és una clau externa de la taula Empleats a la taula Posicions. La base de dades pot utilitzar aquest camp per correlacionar la informació de diverses taules i garantir que els canvis o addicions a la base de dades continuïn fent complir la integritat referencial .

Una vegada que hàgiu identificat la clau externa, podeu continuar i treure la informació desitjada de la base de dades mitjançant la següent consulta:

SELECCIONAR primer nom, últim cognom, títol FROM EMPRENEDORS INNER JOIN Positions ON Employees.PositionID = Positions.PositionID

Creació de claus externes en SQL Server

Tècnicament, no és necessari definir la relació explícitament per poder realitzar consultes com la de dalt. Tanmateix, si defineix explícitament la relació amb una restricció de la clau externa, la base de dades us permetrà realitzar algunes tasques de manteniment:

A continuació s'explica com es crearà la clau externa en SQL Server:

ALTER TABLE Employees ADD KEY FOREIGN (PositionID) REFERÈNCIES Posicions (PositionID)

També podeu crear una clau externa quan creeu una taula afegint la clàusula:

REFERÈNCIES EXTERIORS DE CLAUS Posicions (PositionID)

al final de la columna definició de la columna de la clau externa.