Cum se creează chei externe în Microsoft SQL Server

Unul dintre cele mai importante concepte din bazele de date este crearea de relații între tabelele bazei de date. Aceste relații oferă un mecanism de legare a datelor stocate în mai multe tabele și de recuperare a acestora într-un mod eficient. Pentru a crea o legătură între două tabele, trebuie să specificați o cheie străină într-un singur tabel care face trimitere la o coloană dintr-un alt tabel.

Tabele de baze de date și relații

S-ar putea să știți deja că bazele de date sunt pur și simplu o serie de tabele , similare cu cele deja utilizate într-un program de calcul tabelar , cum ar fi Microsoft Excel. De fapt, puteți chiar să convertiți o foaie de calcul Excel într-o bază de date. În cazul în care bazele de date diferă de la foile de calcul, cu toate acestea, este atunci când vine vorba de a construi relații puternice între mese.

Luați în considerare, de exemplu, o bază de date utilizată de o companie pentru a urmări informațiile despre resursele umane. Această bază de date ar putea avea un tabel numit Angajați care conține următoarele informații pentru fiecare membru al personalului companiei:

În acest exemplu, ID-ul angajatului este un întreg întreg generat atribuit fiecărui angajat atunci când acesta este adăugat la baza de date. ID-ul poziției este un cod de job folosit pentru a face referire la poziția angajatului în companie. În acest sistem, un angajat poate avea doar o funcție, dar mai mulți angajați (sau nu) pot umple fiecare poziție. De exemplu, ați putea avea sute de angajați cu o poziție "Casier".

Baza de date ar putea conține, de asemenea, un tabel numit Poziții, cu următoarele informații suplimentare despre fiecare poziție:

Câmpul ID al poziției din acest tabel este similar cu câmpul ID angajat din tabelul Angajați - este un întreg întreg generat care este creat atunci când o poziție este adăugată la baza de date.

Când mergem să tragem o listă de angajați din baza de date, ar fi firesc să cerem numele și titlul fiecărei persoane. Cu toate acestea, aceste informații sunt stocate în mai multe tabele de baze de date, astfel încât acestea pot fi preluate numai utilizând o interogare JOIN care necesită o relație existentă între tabele.

Când vă uitați la structura meselor, domeniul care definește relația este probabil evident - câmpul ID al poziției. Fiecare angajat poate avea o singură poziție și această poziție este identificată prin includerea ID-ului Poziției din intrarea corespunzătoare a tabelului Poziții. Pe lângă faptul că este cheia primară pentru tabelul Poziții, în acest exemplu, câmpul ID al poziției este, de asemenea, o cheie străină din tabelul Angajați în tabelul Poziții. Baza de date poate apoi să utilizeze acest câmp pentru a corela informațiile din mai multe tabele și pentru a se asigura că orice modificări sau adăugiri la baza de date continuă să impună integritatea referențială .

Odată ce ați identificat cheia externă, puteți continua și trageți informațiile dorite din baza de date folosind următoarea interogare:

SELECT Nume, Nume, Titlu FROM angajați INNER JOIN Poziții ON Employees.PositionID = Pozitions.PositionID

Crearea cheilor externe în SQL Server

Din punct de vedere tehnic, nu este nevoie să definiți în mod explicit relația pentru a putea efectua interogări ca cea de mai sus. Cu toate acestea, dacă definiți în mod explicit relația utilizând o constrângere de chei străine, baza de date va putea să efectueze unele activități de menaj pentru dvs.:

Iată cum ați crea cheia externă în SQL Server:

ALTER TABLE Angajați ADAȚI CHEIE EXTERNĂ (PositionID) REFERINȚE Poziții (PositionID)

De asemenea, puteți crea o cheie străină atunci când creați un tabel adăugând clauza:

VALORIFICAREA REFERINȚELOR CHEIE EXTERNE Poziții (PositionID)

până la sfârșitul definiției coloanei pentru coloana de chei străine.