Moć stranih ključeva u relacijskim bazama podataka

Strani ključ otvara vrata celom svetu podataka

Dizajneri baza podataka široko koriste ključeve kada razvijaju relacijske baze podataka. Među najčešćim od ovih ključeva su primarni ključevi i inostrani ključevi. Strani ključ baze podataka je polje u relacijskoj tabeli koja odgovara stubu primarnog ključa druge tabele. Da bismo razumeli način funkcionisanja inostranog ključa, bacimo pogled na ideju relacijske baze podataka.

Neke osnove relacionih baza podataka

U relacijskoj bazi podataka, podaci se čuvaju u tabelama koje sadrže redove i stupce, što olakšava pretraživanje i manipulaciju. Postoji neka ozbiljna matematika iza koncepta relacijske baze podataka (relacijska algebra, predložena od strane EF

Codd na IBM-u 1970. godine), ali to nije tema ovog članka.

Za praktične svrhe (i ne-matematičare), relacijska baza podataka čuva "povezane" podatke u redovima i stupcima. Dalje - i tu je zanimljivo - većina baza podataka je dizajnirana tako da podaci u jednoj tabeli mogu pristupiti podacima u drugoj tabeli. Ova sposobnost stvaranja odnosa između tabela je prava snaga relacijske baze podataka.

Korišćenje stranih ključeva

Većina tabela, posebno one u velikim, složenim bazama podataka, imaju primarne ključeve. Tabele koje su dizajnirane da pristupe drugim tablicama moraju takođe imati inostrani ključ.

Da biste koristili najčešće citiranu Northwinds bazu podataka, ovdje je izvod iz tabele proizvoda:

Izvod iz tablice proizvoda Northwind Database
ProductID Ime proizvoda KategorijaID QuantityPerU Cijena po jedinici
1 Chai 1 10 kutija x 20 kesa 18.00
2 Chang 1 24 - 12 oz boca 19.00
3 Aniseed Syrup 2 12 - 550 ml boca 10.00
4 Chef Anton's Cajun sezoniranje 2 48 - 6 oz tegle 22.00
5 Chef Anton's Gumbo Mix 2 36 kutija 21.35
6 Bajina božićna bundeva 2 12 - 8 oz tegle 25.00
7 Ujače Bobove organske suve kruške 7 12 - 1 lb pkgs. 30.00

Column ProductID je primarni ključ ove tabele. Za svaki proizvod dodeljuje jedinstvenu identifikaciju.

Ova tabela sadrži i stupac stranog ključa, CategoryID . Svaki proizvod u tabeli proizvoda odnosi se na unos u tabeli Kategorije koje definiše kategoriju proizvoda.

Obratite pažnju na ovaj odlomak iz tabele Kategorije baze podataka:

Kategorije iz baze podataka Northwind Database Table Excerpt
KategorijaID KategorijaName Opis
1 Piće Bezalkoholna pića, kafa, čajevi, piva i ales
2 Condiments Slatke i slane soseve, slastice, širi i začini
3 Konfekcije Deserti, slatkiši i slatkiši
5 mliječni proizvodi Sirevi

Kolona kategorije ID je primarni ključ ove kolone. (Ona nema inostrani ključ jer nema potrebe za pristupom drugoj tablici.) Svaki strani ključ u tabeli proizvoda se odnosi na primarni ključ u tabeli Kategorije. Na primer, proizvodu Chai dodeljena je kategorija "Pića", dok je Aniseed Syrup u kategoriji Condiments.

Ova vrsta povezivanja stvara mnoštvo načina za korištenje i ponovno korištenje podataka u relacionoj bazi podataka.