Diferența dintre cheia primară și cheia externă
Diferențele cheie între cheia principală și cheia externă
- O constrângere de cheie primară este o coloană care identifică în mod unic fiecare rând din tabelul sistemului de management al bazei de date relaționale, în timp ce o cheie externă este o coloană care creează o relație între două tabele.
- Cheia primară nu acceptă niciodată valori nule, în timp ce cheia externă poate accepta mai multe valori nule.
- Puteți avea doar o singură cheie primară într-un tabel, în timp ce puteți avea mai multe chei străine într-un tabel.
- Valoarea cheii primare nu poate fi eliminată din tabelul părinte, în timp ce valoarea cheii străine poate fi eliminată din tabelul copil.
- Nu există două rânduri care pot avea valori identice pentru o cheie primară; pe de altă parte, o cheie străină poate conține valori duplicate.
- Nu există nicio limitare la inserarea valorilor în coloana tabelului în timp ce inserați orice valoare în tabelul cheii externe; asigurați-vă că valoarea este prezentă într-o coloană a unei chei primare.

Aici, am analizat diferența dintre cheia primară și cheia externă și le voi evalua cuprinzător avantajele și dezavantajele.
Ce este cheia primară?
O constrângere a cheii primare este o coloană sau un grup de coloane care identifică în mod unic fiecare rând din tabelul sistemului de management al bazei de date relaționale. Nu poate fi un duplicat, adică aceeași valoare nu trebuie să apară de mai multe ori în tabel.
Un tabel nu poate avea mai mult de o cheie primară. The cheia principala poate fi definit la nivel de coloană sau tabel. Dacă creați o cheie primară compusă, aceasta ar trebui definită la nivel de tabel.
Exemplu de cheie primară
Sintaxă:
Mai jos este sintaxa cheii primare:
CREATE TABLE <Table-Name> ( Column1 datatype, Column2 datatype, PRIMARY KEY (Column-Name) . );
Aici,
- Table_Name este numele tabelului pe care trebuie să-l creați.
- Column_Name este numele coloanei care are cheia primară.
Exemplu:
StudID | Rola numărul | Prenume | Nume | |
---|---|---|---|---|
1 | 11 | Tom | Preț | abc@gmail.com |
2 | 12 | Nick | Wright | xyz@gmail.com |
3 | 13 | Dana | Nathan | mno@yahoo.com |
În exemplul de mai sus, am creat un tabel student cu coloane precum StudID, Roll No., Prenume, Nume și E-mail. StudID este ales ca cheie primară deoarece poate identifica în mod unic alte rânduri din tabel.
De ce să folosiți cheia primară?
De-a lungul anilor de manipulare a sistemelor de baze de date, am observat aceste dezavantaje și beneficii atunci când folosesc o cheie primară:
- Scopul principal al cheii primare este de a identifica fiecare înregistrare din tabelul bazei de date.
- Puteți folosi o cheie primară atunci când nu permiteți cuiva să introducă valori nule.
- Dacă ștergeți sau actualizați înregistrările, acțiunea specificată va fi întreprinsă pentru a asigura integritatea datelor.
- Efectuați operația de restricționare pentru a respinge operația de ștergere sau actualizare pentru tabelul părinte.
- Datele sunt organizate într-o secvență de indici grupați ori de câte ori organizați fizic un tabel DBMS.
Ce este cheia externă?
Cheia externă este o coloană care creează o relație între două tabele. Scopul cheii externe este de a menține integritatea datelor și de a permite navigarea între două instanțe diferite ale unei entități. Acționează ca o referință încrucișată între două tabele, deoarece face referire la cheia primară a altui tabel. Fiecare relație din baza de date ar trebui să fie susținută de o cheie străină.
Exemplu de cheie străină
Sintaxă:
Mai jos este sintaxa cheii externe:
CREATE TABLE <Table Name>( column1 datatype, column2 datatype, constraint (name of constraint) FOREIGN KEY [column1, column2...] REFERENCES [primary key table name] (List of primary key table column) ...);
Aici,
- Parametrul Table Name indică numele tabelului pe care urmează să-l creați.
- Parametrii coloana1, coloana2... prezintă coloanele care trebuie adăugate la tabel.
- O constrângere denotă numele constrângerii pe care o creați.
- Referințele indică un tabel cu cheia primară.
Exemplu:
DeptCode | DeptName |
---|---|
001 | Ştiinţă |
002 | Engleză |
005 | Calculator |
ID profesor | Fname | Lname |
---|---|---|
B002 | David | Warner |
B017 | Sara | Hisham |
B009 | Mike | Brunton |
În exemplul de mai sus, avem două tabele: un profesor și un departament într-o școală. Cu toate acestea, nu există nicio modalitate de a vedea ce căutare funcționează în ce departament.
În acest tabel, adăugând cheia străină în Deptcode la numele profesorului, putem crea o relație între cele două tabele.
ID profesor | DeptCode | Fname | Lname |
---|---|---|---|
B002 | 002 | David | Warner |
B017 | 002 | Sara | Hisham |
B009 | 001 | Mike | Brunton |
Acest concept este cunoscut și sub numele de integritate referențială.
De ce să folosiți cheia străină?
Din ceea ce am văzut, iată motivele importante pentru a implementa chei străine:
- Cheile externe vă ajută să migrați entități folosind o cheie primară din tabelul părinte.
- A cheie externă vă permite să legați două sau mai multe tabele împreună.
- Acesta face datele bazei de date consistente.
- O cheie externă poate fi utilizată pentru a potrivi o coloană sau o combinație de coloane cu cheia primară dintr-un tabel părinte.
- Constrângerea cheii străine SQL este utilizată pentru a vă asigura că integritatea referențială a datelor părinte se potrivește cu valorile din tabelul copil.
Diferența dintre cheia primară și cheia externă
Permiteți-mi să vă împărtășesc diferența importantă dintre o cheie primară și o cheie străină, așa cum am experimentat personal:
Baza de comparație | Cheia principala | Cheie externă |
---|---|---|
Definiție | O constrângere a cheii primare este o coloană sau un grup de coloane care identifică în mod unic fiecare rând din tabelul sistem de management al bazelor de date relaționale. | O cheie externă este o coloană care creează o relație între două tabele. |
pachet de bază | Vă ajută să identificați în mod unic o înregistrare în tabel. | Este un câmp din tabel care este cheia primară a altui tabel. |
NULL | Cheia primară nu acceptă niciodată valori nule. | O cheie externă poate accepta mai multe valori nule. |
Indexarea | Cheia primară este un index grupat, iar datele din tabelul DBMS sunt organizate fizic în secvența indexului grupat. | O cheie străină nu poate crea automat un index, grupat sau non-cluster. |
Conta | Puteți avea o singură cheie primară într-un tabel. | Puteți avea mai multe chei străine într-un tabel. |
ștergere | Valoarea cheii primare nu poate fi eliminată din tabelul părinte. | Valoarea cheii externe poate fi eliminată din tabelul copil. |
Tabel provizoriu | Puteți defini implicit cheia primară în tabelele temporare. | Nu puteți defini chei străine pe tabelele temporare locale sau globale. |
Relaţie | Cheia primară este un index grupat. | În mod implicit, nu este un index grupat. |
dublare | Nu există două rânduri care pot avea valori identice pentru o cheie primară. | O cheie externă poate conține valori duplicate. |
inserare | Nu există nicio limitare la inserarea valorilor în coloana tabelului. | În timp ce inserați orice valoare în tabelul cheii străine, asigurați-vă că valoarea este prezentă într-o coloană a unei chei primare. |
Cum să alegeți între o cheie primară și o cheie externă
Din ceea ce am văzut, cheile primare identifică în mod unic intrările în tabel, iar cheile străine leagă aceste intrări peste tabele, ambele esențiale pentru menținerea integrității datelor și pentru facilitarea regăsirii eficiente a datelor.