Cheie primară vs cheie străină: Care este diferența?

Cuprins:

Anonim

Înainte de a învăța diferența dintre cheia primară și cheia externă, să învățăm:

Ce sunt cheile?

Cheile sunt un atribut care vă ajută să identificați un rând (tuplu) într-o relație (tabel). Acestea vă permit să găsiți relația dintre două tabele. Tastele vă ajută să identificați în mod unic un rând dintr-un tabel printr-o combinație de una sau mai multe coloane din acel tabel. Cheia bazei de date este, de asemenea, utilă pentru găsirea unei înregistrări sau rânduri unice din tabel.

Ce este relația cu baza de date?

Relația bazei de date este asocierea dintre unul sau mai multe tabele care sunt create folosind instrucțiunile join. Este folosit pentru a prelua în mod eficient date din baza de date. Există în primul rând trei tipuri de relații 1) Unul la unu, 2) Unul la mulți, 3) Mulți la mulți.

Ce este cheia primară?

O constrângere de cheie principală este o coloană sau un grup de coloane care identifică în mod unic fiecare rând din tabelul sistemului de gestionare a bazelor de date relaționale. Nu poate fi un duplicat, ceea ce înseamnă că aceeași valoare nu trebuie să apară de mai multe ori în tabel.

Un tabel poate avea mai multe chei principale. Cheia primară poate fi definită la nivelul coloanei sau al tabelului. Dacă creați o cheie primară compusă, aceasta ar trebui definită la nivel de masă.

Ce este cheia străină?

Cheia străină este o coloană care creează o relație între două tabele. Scopul cheii străine este de a menține integritatea datelor și de a permite navigația între două instanțe diferite ale unei entități. Acționează ca o referință încrucișată între două tabele, deoarece face referință la cheia principală a unui alt tabel. Fiecare relație din baza de date ar trebui să fie susținută de o cheie străină.

DIFERENȚE CHEIE:

  • O constrângere de cheie primară este o coloană care identifică în mod unic fiecare rând din tabelul sistemului de gestionare a bazei de date relaționale, în timp ce cheia 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 tabela copil.
  • Niciun rând nu poate avea valori identice pentru o cheie primară, pe de altă parte, o cheie străină poate conține valori duplicat.
  • Nu există nicio limitare în introducerea valorilor în coloana tabelului în timp ce introduceți orice valoare în tabelul cu chei străine, asigurați-vă că valoarea este prezentă într-o coloană a unei chei primare.

De ce să folosiți cheia primară?

Iată dezavantajele / beneficiile utilizării cheii primare:

  • Scopul principal al cheii primare este de a identifica fiecare înregistrare din tabelul bazei de date.
  • Puteți utiliza o cheie principală atunci când nu permiteți cuiva să introducă valori nule.
  • Dacă ștergeți sau actualizați înregistrări, acțiunea specificată va fi întreprinsă pentru a vă 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 succesiune de indexuri grupate ori de câte ori organizați fizic tabelul SGBD.

De ce să folosiți cheia străină?

Iată motivele importante ale utilizării cheii străine:

  • Cheile străine vă ajută să migrați entități utilizând o cheie primară din tabelul părinte.
  • O cheie străină vă permite să legați două sau mai multe tabele împreună.
  • Aceasta face ca datele bazei de date să fie consistente.
  • O cheie străină 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 părintelui de date se potrivește cu valorile din tabelul copil.

Exemplu de cheie primară

Sintaxă:

Mai jos este sintaxa cheii principale:

CREATE TABLE (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 principală.

Exemplu:

StudID Rola numărul Nume Numele de familie E-mail
1 11 Tom Preț Această adresă de e-mail este protejată de spamboți. Aveți nevoie de JavaScript activat pentru ao vizualiza.
2 12 Nick Wright Această adresă de e-mail este protejată de spamboți. Aveți nevoie de JavaScript activat pentru ao vizualiza.
3 13 Dana Natan Această adresă de e-mail este protejată de spamboți. Aveți nevoie de JavaScript activat pentru ao vizualiza.

În exemplul de mai sus, am creat un tabel pentru studenți cu coloane precum StudID, Roll No, Prenume, Nume și Email. StudID este ales ca cheie primară, deoarece poate identifica în mod unic alte rânduri din tabel.

Exemplu de cheie străină

Sintaxă:

Mai jos este sintaxa cheii străine:

CREATE TABLE 
(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 Nume tabel indică numele tabelului pe care urmează să îl creați.
  • Parametrii coloană1, coloană2 ... descriu coloanele care trebuie adăugate la tabel.
  • Constrângerea denotă numele de constrângere pe care o creați.
  • Referințele indică un tabel cu cheia principală.

Exemplu:

DeptCode DeptName
001 Ştiinţă
002 Engleză
005 Calculator
ID-ul profesorului Fname Lname
B002 David Warner
B017 Sara Joseph
B009 Mike Brunton

În exemplul de mai sus, avem două mese, 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 externă în Deptcode la numele profesorului, putem crea o relație între cele două tabele.

ID-ul profesorului DeptCode Fname Lname
B002 002 David Warner
B017 002 Sara Joseph
B009 001 Mike Brunton

Acest concept este, de asemenea, cunoscut sub numele de Integritate referențială.

Diferența dintre cheia primară și cheia externă

Iată diferența importantă dintre cheia primară și cheia externă:

Cheia principala Cheie externă
O constrângere de cheie principală este o coloană sau un grup de coloane care identifică în mod unic fiecare rând din tabelul sistemului de gestionare a bazelor de date relaționale. Cheia străină este o coloană care creează o relație între două tabele.
Vă ajută să identificați în mod unic o înregistrare în tabel. Este un câmp din tabel care este o cheie primară a altui tabel.
Cheia primară nu acceptă niciodată valori nule. O cheie străină poate accepta mai multe valori nule.
Cheia principală este un index grupat, iar datele din tabelul SGBD sunt organizate fizic în secvența indexului grupat. O cheie străină nu poate crea automat un index, grupat sau non-grupat.
Puteți avea singura cheie primară într-un tabel. Puteți avea mai multe chei străine într-un tabel.
Valoarea cheii primare nu poate fi eliminată din tabelul părinte. Valoarea valorii cheii străine poate fi eliminată din tabelul copil.
Puteți defini cheia primară implicit pe tabelele temporare. Nu puteți defini chei străine pe tabelele temporare locale sau globale.
Cheia primară este un index grupat. În mod implicit, nu este un index grupat.
Niciun rând nu poate avea valori identice pentru o cheie primară. O cheie străină poate conține valori duplicat.
Nu există nicio limitare în inserarea valorilor în coloana tabelului. În timp ce introduceți orice valoare în tabelul cu chei străine, asigurați-vă că valoarea este prezentă într-o coloană a unei chei primare.