logo

Cheie străină în DBMS

O cheie externă este diferită de o cheie super, cheie candidată sau cheie primară, deoarece o cheie externă este cea care este folosită pentru a lega două tabele împreună sau pentru a crea conectivitate între cele două.

Aici, în această secțiune, vom discuta cheia străină, utilizarea acesteia și vom analiza câteva exemple care ne vor ajuta să înțelegem funcționarea și utilizarea cheii străine. Vom vedea, de asemenea, implementarea sa practică pe o bază de date, adică crearea și ștergerea unei chei externe pe un tabel.

Ce este o cheie străină

O cheie externă este cea care este folosită pentru a lega două tabele împreună prin cheia primară. Înseamnă că coloanele unui tabel indică atributul cheie primară al celuilalt tabel. În plus, înseamnă că, dacă orice atribut este setat ca atribut cheie primară, va funcționa într-un alt tabel ca atribut cheie străină. Dar trebuie să știți că o cheie străină nu are nimic de-a face cu cheia primară.

Utilizarea cheii străine

Utilizarea unei chei externe este pur și simplu de a lega atributele a două tabele împreună cu ajutorul unui atribut de cheie primară. Astfel, este folosit pentru crearea și menținerea relației dintre cele două relații.

Exemplu de cheie străină

Să discutăm un exemplu pentru a înțelege funcționarea unei chei străine.

cate orase este in Statele Unite

Luați în considerare două tabele Student și Departament având atributele lor respective, așa cum se arată în structura tabelului de mai jos:

Cheie străină în DBMS
Cheie străină în DBMS

În tabele, un atribut, puteți vedea, este comun, adică Stud_Id , dar are constrângeri cheie diferite pentru ambele tabele. În tabelul Student, câmpul Stud_Id este a cheia principala deoarece identifică în mod unic toate celelalte câmpuri ale tabelului Student. Pe de altă parte, Stud_Id este a cheie externă atribut pentru tabelul Departament, deoarece acţionează ca un atribut cheie primară pentru tabelul Student. Înseamnă că atât tabelul Student, cât și tabelul Departamentului sunt legate între ele din cauza atributului Stud_Id.

string la ea

În figura de mai jos, puteți vizualiza următoarea structură a relației dintre cele două tabele.

Cheie străină în DBMS

Notă: Integritatea referențială în DBMS este dezvoltată din conceptul de cheie externă. Este clar că o cheie primară este o cheie existentă singură și o cheie străină face întotdeauna referire la o cheie primară dintr-un alt tabel, în care tabelul care conține cheia primară este cunoscut ca tabelul referit sau tabelul părinte pentru celălalt tabel care are cheia externă.

Crearea constrângerii cheie străină

Pe CREATE TABLE

Mai jos este sintaxa care ne va face să învățăm crearea unei chei străine într-un tabel:

 CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int, FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id) ); 

Deci, în acest fel, putem seta o cheie străină pentru un tabel din baza de date MYSQL.

În cazul creării unei chei externe pentru un tabel în serverul SQL sau Oracle, următoarea sintaxă va funcționa:

execută shell script
 CREATE TABLE Department ( Dept_name varchar (120) NOT NULL, Stud_Id int FOREIGN KEY REFERENCES Student (Stud_Id) ); 

Pe ALTER TABLE

Mai jos este sintaxa pentru crearea unei constrângeri de cheie străină pe ALTER TABLE:

 ALTER TABLE Department ADD FOREIGN KEY (Stud_Id) REFERENCES Student (Stud_Id); 

Aruncarea cheii externe

Pentru a șterge o cheie străină, există o sintaxă descrisă mai jos care poate fi utilizată:

 ALTER TABLE Department DROP FOREIGN KEY FK_StudentDepartment; 

Deci, în acest fel, putem arunca o cheie străină folosind ALTER TABLE din baza de date MYSQL.

Punct de reținut

Când aruncați cheia externă, trebuie să aveți grijă de integritatea tabelelor care sunt conectate printr-o cheie externă. În cazul în care faceți modificări într-un singur tabel și perturbați integritatea ambelor tabele, este posibil să afișați anumite erori din cauza conectivității necorespunzătoare între cele două tabele.

Acțiuni de referință

Există câteva acțiuni care sunt legate de acțiunile întreprinse de deținătorul tabelului de chei străine:

1) Cascada

Când ștergem rânduri din tabelul părinte (adică cel care deține cheia primară), aceleași coloane din celălalt tabel (adică cel care deține o cheie străină) sunt de asemenea șterse. Astfel, acțiunea este cunoscută ca Cascadă .

2) Setați NULL

O astfel de acțiune referențială menține integritatea referențială a ambelor tabele. Când manipulăm/ștergem un rând referit în tabelul părinte/referințat, în tabelul copil (tabel cu cheie străină), valoarea unui astfel de rând de referință este setată ca NULL. O astfel de acțiune referențială efectuată este cunoscută ca Setați NULL .

butonul central css

3) Setați DEFAULT

O astfel de acțiune are loc atunci când valorile din rândul referit al tabelului părinte sunt actualizate sau rândul este șters, valorile din tabelul copil sunt setate la valorile implicite ale coloanei.

aliniați imaginea css

4) Restricționați

Este restricția în care valoarea rândului la care se face referire din tabelul părinte nu poate fi modificată sau ștearsă decât dacă nu este menționată de cheia externă din tabelul copil. Astfel, este o acțiune referențială normală a unei chei străine.

5) Nicio acțiune

Este, de asemenea, o constrângere de restricție a cheii străine, dar este implementată numai după încercarea de a modifica sau șterge rândul referit al tabelului părinte.

6) Declanșatoare

Toate acestea și alte acțiuni referențiale sunt implementate practic ca declanșatori, în care acțiunile unei chei externe sunt mult similare sau aproape similare cu declanșatoarele definite de utilizator. Cu toate acestea, în unele cazuri, acțiunile referențiale ordonate sunt înlocuite cu declanșatoarele lor echivalente definite de utilizator pentru a asigura execuția corectă a declanșatorului.