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:
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:
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.