Što je strani ključ?

Baze podataka se sastoje od tablica u kojima se pohranjuju podaci ili informacije. Strani ključ je mehanizam u relacijskoj bazi podataka koji omogućuje povezivanje tih tablica ili da tablice imaju odnos jedna s drugom. Strani ključ mora imati jedinstvene karakteristike. To mora biti stupac ili grupa stupaca u tablici čije vrijednosti uspostavljaju odnos s vrijednostima u drugoj tablici unutar iste baze podataka.

Strani ključ jamči da redovi u jednoj tablici odgovaraju recima u nekoj drugoj tablici, čime se uspostavljaju odnosi ili reference na razini cijele baze podataka. Tablica koja sadrži strani ključ je “dijete”, a druga tablica je “roditelj”. Moguće je da vrijednost stranog ključa bude null ili prazna i da se zapravo odnosi ili se odnosi na ono što je poznato kao primarni ključ tablice u kojoj se nalazi. To je poznato kao samoreferenciranje.

Mora se dobro razumjeti što je primarni ključ prije nego što pokušamo u potpunosti shvatiti koncept stranih ključeva. Na primjer, ako postoje dvije tablice u bazi podataka koje pohranjuju informacije o objavljenim knjigama za web-mjesto koje prodaje knjige, jedna tablica može biti tablica izdavača, a druga tablica knjiga. Tablica izdavača mogla bi se sastojati od dva stupca, primarnog ključa koji je uvijek jedinstven za svaki zapis i stupca naziva izdavača. Najmanje tri stupca činila bi tablicu knjiga, sa primarnim ključem ili jedinstvenim identifikatorom za svaku knjigu, naslovima knjiga i stupcem preko kojeg bi se uspostavio odnos s tablicom izdavača. Taj bi stupac bio strani ključ.

Primarni ključ za tablicu izdavača mogao bi biti nešto poput “pub_id” s vrijednostima: P01, P02, P03, itd. Odnos bi se uspostavio s tablicom books ako bi sadržavala stupac pub_id s istim vrijednostima. Ovo bi bio strani ključ koji bi povezao ovu podređenu tablicu s njezinom nadređenom — tablicom izdavača.

Međutim, strani ključ može imati drugačije ime stupca od roditeljskog ključa na koji upućuje. Dobro razumijevanje rada primarnih i stranih ključeva ključno je za održavanje referentnog integriteta. Vrlo velike baze podataka koje se sastoje od mnogo tablica ili koje uključuju spojnu tablicu predstavljaju više od jedne vrste odnosa, što može zakomplicirati zadatak rada sa stranim ključevima.