Ključna razlika između stranog ključa i primarnog ključa je u tome što je strani ključ stupac ili skup stupaca koji se odnose na primarni ključ ili kandidatski ključ druge tablice, dok je primarni ključ stupac ili skup stupaca koji se može koristiti za jedinstvenu identifikaciju retka u tablici.
Stupac ili skup stupaca koji se mogu koristiti za identifikaciju ili pristup retku ili skupu redaka u bazi podataka naziva se ključ. Primarni ključ u relacijskoj bazi podataka kombinacija je stupaca u tablici koji jedinstveno identificiraju redak tablice. Strani ključ u relacijskoj bazi podataka je polje u tablici koje odgovara primarnom ključu druge tablice. Strani ključ se koristi za križanje referentnih tablica.
Što je strani ključ?
Strani ključ je referentno ograničenje između dvije tablice. Identificira stupac ili skup stupaca u jednoj tablici, koja se naziva referentna tablica, a koja se odnosi na skup stupaca u drugoj tablici, koja se naziva referentna tablica. Strani ključ ili stupci u referentnoj tablici moraju biti primarni ključ ili kandidatski ključ (ključ koji se može koristiti kao primarni ključ) u referentnoj tablici. Štoviše, strani ključevi omogućuju povezivanje podataka u nekoliko tablica. Stoga strani ključ ne može sadržavati vrijednosti koje se ne pojavljuju u tablici na koju se odnosi. Tada referenca koju pruža strani ključ pomaže u povezivanju informacija u nekoliko tablica, a to bi postalo bitno s normaliziranim bazama podataka. Više redaka u referentnoj tablici može se odnositi na jedan redak u referentnoj tablici.
Slika 01: Mapiranje stranog ključa
U ANSI SQL standardu, ograničenje FOREIGN KEY definira strane ključeve. Nadalje, moguće je definirati strane ključeve prilikom izrade same tablice. Tablica može imati više stranih ključeva i oni mogu referencirati različite tablice.
Što je primarni ključ?
Primarni ključ je stupac ili kombinacija stupaca koji jedinstveno definira red u tablici relacijske baze podataka. Tablica može imati najviše jedan primarni ključ. Primarni ključ nameće implicitno NOT NULL ograničenje. Stoga stupac s primarnim ključem ne može imati NULL vrijednosti u sebi. Primarni ključ može biti uobičajeni atribut u tablici koji je zajamčeno jedinstven kao što je broj socijalnog osiguranja ili može biti jedinstvena vrijednost koju generira sustav upravljanja bazom podataka kao što je Globalno jedinstveni identifikator (GUID) u Microsoft SQL Serveru.
Slika 02: Primarni ključ
Nadalje, ograničenje PRIMARY KEY u ANSI SQL standardu definira primarne ključeve. Također je moguće definirati primarni ključ prilikom izrade tablice. Uz to, SQL dopušta da primarni ključ bude sastavljen od jednog ili više stupaca, a svaki stupac koji je uključen u primarni ključ implicitno je definiran kao NIJE NULL. Ali neki sustavi za upravljanje bazama podataka zahtijevaju da stupci primarnog ključa izričito NE NULL.
Koja je razlika između stranog ključa i primarnog ključa?
Strani ključ naspram primarnog ključa |
|
Strani ključ je stupac ili grupa stupaca u tablici relacijske baze podataka koji osigurava povezanost između podataka u dvije tablice. | Primarni ključ je poseban stupac tablice relacijske baze podataka ili kombinacija višestrukih stupaca koja omogućuje jedinstvenu identifikaciju svih zapisa tablice. |
NULL | |
Strani ključ prihvaća NULL vrijednost. | Vrijednost primarnog ključa ne može biti NULL. |
Broj ključeva | |
Tablica može imati više stranih ključeva. | Tablica može imati samo jedan primarni ključ. |
Dupliciranje | |
Topovi mogu imati dvostruku vrijednost za atribut stranog ključa. | Dvije torke u relaciji ne mogu imati duple vrijednosti za atribut primarnog ključa. |
Sažetak – strani ključ naspram primarnog ključa
Razlika između stranog ključa i primarnog ključa je u tome što je strani ključ stupac ili skup stupaca koji se odnose na primarni ključ ili kandidatski ključ druge tablice, dok je primarni ključ stupac ili skup stupaca koji može se koristiti za jedinstvenu identifikaciju retka u tablici.