Diferența cheie dintre cheia externă și cheia principală este că cheia externă este o coloană sau un set de coloane care se referă la o cheie primară sau la o cheie candidată a altui tabel, în timp ce cheia primară este o coloană sau un set de coloane care poate fi folosit pentru a identifica unic un rând dintr-un tabel.
O coloană sau un set de coloane care poate fi folosit pentru a identifica sau accesa un rând sau un set de rânduri dintr-o bază de date se numește cheie. O cheie primară într-o bază de date relațională este o combinație de coloane dintr-un tabel care identifică în mod unic un rând al tabelului. Cheia externă dintr-o bază de date relațională este un câmp dintr-un tabel care se potrivește cu cheia primară a altui tabel. Cheia externă este folosită pentru a încrucișa tabelele de referință.
Ce este cheia externă?
Cheia externă este o constrângere de referință între două tabele. Identifică o coloană sau un set de coloane dintr-un tabel, numit tabel de referință, care se referă la un set de coloane dintr-un alt tabel, numit tabel de referință. Cheia externă sau coloanele din tabelul de referință trebuie să fie cheia primară sau o cheie candidată (o cheie care poate fi folosită ca cheie primară) în tabelul referit. În plus, cheile externe permit conectarea datelor în mai multe tabele. Prin urmare, cheia externă nu poate conține valori care nu apar în tabelul la care se referă. Apoi referința furnizată de cheia externă ajută la legarea informațiilor din mai multe tabele și acest lucru ar deveni esențial cu bazele de date normalizate. Mai multe rânduri din tabelul de referință se pot referi la un singur rând din tabelul de referință.
Figura 01: Maparea cheii externe
În standardul ANSI SQL, constrângerea FOREIGN KEY definește cheile străine. În plus, este posibil să se definească cheile externe atunci când se creează tabelul în sine. Un tabel poate avea mai multe chei străine și pot face referire la tabele diferite.
Ce este cheia primară?
Cheia primară este o coloană sau o combinație de coloane care definește în mod unic un rând într-un tabel al unei baze de date relaționale. Un tabel poate avea cel mult o cheie primară. Cheia primară impune constrângerea implicită NOT NULL. Prin urmare, o coloană cu cheie primară nu poate avea valori NULL în ea. Cheia primară poate fi un atribut normal din tabel care este garantat a fi unic, cum ar fi un număr de securitate socială, sau poate fi o valoare unică generată de sistemul de gestionare a bazei de date, cum ar fi un identificator unic global (GUID) în Microsoft SQL Server.
Figura 02: Cheie primară
În plus, constrângerea PRIMARY KEY din standardul ANSI SQL definește cheile primare. De asemenea, este posibilă definirea unei chei primare la crearea tabelului. În plus, SQL permite ca cheia primară să fie alcătuită din una sau mai multe coloane, iar fiecare coloană care este inclusă în cheia primară este implicit definită ca fiind NOT NULL. Dar unele sisteme de gestionare a bazelor de date necesită ca coloanele cheii primare să fie în mod explicit NOT NULL.
Care este diferența dintre cheia externă și cheia principală?
Cheie străină vs cheie primară |
|
Cheia externă este o coloană sau un grup de coloane dintr-un tabel al bazei de date relaționale care oferă o asociere între datele din două tabele. | Cheia primară este o coloană specială de tabel al bazei de date relaționale sau o combinație de mai multe coloane care permite identificarea unică a tuturor înregistrărilor din tabel. |
NULL | |
Cheia străină acceptă valoarea NULL. | Valoarea cheii primare nu poate fi NULL. |
Număr de chei | |
Tabelul poate avea mai multe chei străine. | Tabelul poate avea o singură cheie primară. |
Duplicare | |
Tupurile pot avea o valoare duplicat pentru un atribut cheie străină. | Doi tupluri dintr-o relație nu pot avea valori duplicate pentru un atribut al cheii primare. |
Rezumat – Cheie externă vs Cheie primară
Diferența dintre cheia externă și cheia principală este că cheia externă este o coloană sau un set de coloane care se referă la o cheie primară sau la o cheie candidată a altui tabel, în timp ce cheia primară este o coloană sau un set de coloane care poate fi folosit pentru a identifica unic un rând dintr-un tabel.