Odnos se uspostavlja između dvije tablice baze podataka kada jedna tablica koristi strani ključ koji upućuje na primarni ključ druge tablice. Ovo je osnovni koncept iza izraza relacijska baza podataka.
Kako strani ključ radi za uspostavljanje odnosa
Primarni ključ jedinstveno identificira svaki zapis u tablici. To je tip ključa kandidata koji je obično prvi stupac u tablici i može ga baza podataka automatski generirati kako bi se osigurala njegova jedinstvenost. Strani ključ je drugi kandidatski ključ (ne primarni ključ) koji se koristi za povezivanje zapisa s podacima u drugoj tablici.
Na primjer, razmotrite ove dvije tablice koje identificiraju koji učitelj predaje koji predmet. Ovdje je primarni ključ tablice Tečajevi Course_ID. Njegov strani ključ je Teacher_ID:
ID_tečaja | Course_Name | ID_učitelja |
---|---|---|
Tečaj_001 | Biologija | Učitelj_001 |
Tečaj_002 | Matematika | Učitelj_002 |
Tečaj_003 | engleski | Učitelj_003 |
Možete vidjeti da strani ključ u tečajevima odgovara primarnom ključu u učiteljima:
ID_učitelja | Ime_učitelja |
---|---|
Učitelj_001 | Carmen |
Učitelj_002 | Veronika |
Učitelj_003 | Jorge |
Možemo reći da je vanjski ključ Teacher_ID pomogao uspostaviti odnos između tablica Tečajevi i Učitelji.
Vrste odnosa baze podataka
Upotrebom stranih ključeva ili drugih ključeva kandidata možete implementirati tri vrste odnosa između tablica:
Jedan-na-jedan
Ova vrsta odnosa dopušta samo jedan zapis na svakoj strani odnosa. Primarni ključ odnosi se samo na jedan zapis (ili nijedan) u drugoj tablici. Na primjer, u braku svaki supružnik ima samo još jednog supružnika. Ova vrsta odnosa može se implementirati u jednu tablicu i stoga ne koristi strani ključ.
Jedan prema više
Odnos jedan prema više dopušta da jedan zapis u jednoj tablici bude povezan s više zapisa u drugoj tablici. Razmislite o tvrtki s bazom podataka koja ima tablice kupaca i narudžbi.
Jedan kupac može kupiti više narudžbi, ali se jedna narudžba ne može povezati s više kupaca. Stoga bi tablica Narudžbe sadržavala strani ključ koji odgovara primarnom ključu tablice Kupci, dok tablica Kupci ne bi imala strani ključ koji bi upućivao na tablicu Narudžbe.
Mnogo-više
Ovo je složen odnos u kojem se mnogi zapisi u tablici mogu povezati s mnogim zapisima u drugoj tablici. Na primjer, naša tvrtka vjerojatno treba tablice kupaca i narudžbi, a vjerojatno također treba i tablicu proizvoda.
Opet, odnos između tablice Kupci i Narudžbe je jedan prema više, ali razmotrite odnos između tablice Narudžbe i Proizvodi. Narudžba može sadržavati više proizvoda, a proizvod može biti povezan s više narudžbi budući da nekoliko kupaca može poslati narudžbu koja sadrži neke od istih proizvoda. Ova vrsta odnosa zahtijeva najmanje tri tablice.
Zašto su odnosi baze podataka važni?
Uspostavljanje dosljednih odnosa između tablica baze podataka pomaže u osiguravanju integriteta podataka, doprinoseći normalizaciji baze podataka. Na primjer, što ako nismo povezali nijednu tablicu putem stranog ključa i umjesto toga kombinirali podatke u tablicama Tečajevi i Nastavnici, ovako:
ID_učitelja | Ime_učitelja | Tečaj |
---|---|---|
Učitelj_001 | Carmen | Biologija, matematika |
Učitelj_002 | Veronika | Matematika |
Učitelj_003 | Jorge | engleski |
Ovaj dizajn je nefleksibilan i krši prvo načelo normalizacije baze podataka, First Normal Form, koji navodi da svaka ćelija tablice treba sadržavati jedan, diskretni dio podataka.
Ili smo možda odlučili dodati drugi zapis za Carmen, kako bismo nametnuli 1NF:
ID_učitelja | Ime_učitelja | Tečaj |
---|---|---|
Učitelj_001 | Carmen | Biologija |
Učitelj_001 | Carmen | Matematika |
Učitelj_002 | Veronika | Matematika |
Učitelj_003 | Jorge | engleski |
Ovo je još uvijek slab dizajn, uvodi nepotrebno dupliciranje i ono što se naziva anomalijama umetanja podataka, što znači da bi mogao pridonijeti nekonzistentnim podacima. Na primjer, ako učitelj ima više zapisa, što ako neke podatke treba urediti, ali osoba koja vrši uređivanje podataka ne shvaća da postoji više zapisa? Tablica bi tada sadržavala različite podatke za istu osobu, bez ikakvog jasnog načina da se to identificira ili izbjegne.
Razdvajanje ove tablice u dvije tablice, Nastavnici i Tečajevi, stvara pravilan odnos između podataka i stoga pomaže u osiguravanju dosljednosti i točnosti podataka.