Šta je veza baze podataka?

Sadržaj:

Šta je veza baze podataka?
Šta je veza baze podataka?
Anonim

Odnos se uspostavlja između dvije tabele baze podataka kada jedna tabela koristi strani ključ koji upućuje na primarni ključ druge tabele. Ovo je osnovni koncept iza termina relacijske baze podataka.

Kako strani ključ funkcionira za uspostavljanje veze

Primarni ključ jedinstveno identifikuje svaki zapis u tabeli. To je tip ključa kandidata koji je obično prva kolona u tabeli i može ga automatski generisati baza podataka kako bi se osiguralo da je jedinstven. Strani ključ je još jedan kandidat (ne primarni ključ) koji se koristi za povezivanje zapisa sa podacima u drugoj tabeli.

Na primjer, razmotrite ove dvije tabele koje identifikuju koji nastavnik predaje koji predmet. Ovdje je primarni ključ tabele Courses Course_ID. Njegov vanjski ključ je Teacher_ID:

Course_ID Naziv_kursa Teacher_ID
Course_001 Biologija Teacher_001
Course_002 Matematika Teacher_002
Course_003 engleski Teacher_003

Možete vidjeti da se strani ključ u Kursevima poklapa s primarnim ključem u Nastavnicima:

Teacher_ID Ime_učitelja
Teacher_001 Carmen
Teacher_002 Veronika
Teacher_003 Jorge

Možemo reći da je strani ključ Teacher_ID pomogao uspostaviti odnos između kurseva i tabela nastavnika.

Image
Image

Vrste odnosa baze podataka

Upotrebom stranih ključeva ili drugih ključeva kandidata, možete implementirati tri vrste odnosa između tabela:

Jedan na jedan

Ova vrsta odnosa dozvoljava samo jedan zapis na svakoj strani odnosa. Primarni ključ se odnosi samo na jedan zapis (ili nijedan) u drugoj tabeli. Na primjer, u braku svaki supružnik ima samo još jednog supružnika. Ova vrsta odnosa se može implementirati u jednu tabelu i stoga ne koristi strani ključ.

Jedan-prema-više

Odnos jedan-prema-više omogućava da se jedan zapis u jednoj tabeli poveže sa više zapisa u drugoj tabeli. Zamislite posao sa bazom podataka koja ima tabele kupaca i narudžbi.

Jedan kupac može kupiti više narudžbi, ali jedna narudžba ne može biti povezana s više kupaca. Prema tome, tabela Nalozi bi sadržavala strani ključ koji odgovara primarnom ključu tabele Kupci, dok tabela Kupci ne bi imala strani ključ koji ukazuje na tabelu Nalozi.

Mnogo-na-mnogo

Ovo je složen odnos u kojem se mnogi zapisi u tabeli mogu povezati sa mnogim zapisima u drugoj tabeli. Na primjer, našem poslovanju su vjerovatno potrebne tablice Kupci i Narudžbe, a vjerovatno je potrebna i tabela proizvoda.

Opet, odnos između tabele Kupci i Porudžbine je jedan prema više, ali uzmite u obzir odnos između tabele Narudžbe i Proizvodi. Narudžba može sadržavati više proizvoda, a proizvod može biti povezan s više narudžbi jer nekoliko kupaca može poslati narudžbu koja sadrži neke od istih proizvoda. Ova vrsta odnosa zahtijeva najmanje tri stola.

Zašto su odnosi baze podataka važni?

Uspostavljanje konzistentnih odnosa između tabela baze podataka pomaže u osiguravanju integriteta podataka, doprinoseći normalizaciji baze podataka. Na primjer, šta ako ne povežemo nijednu tabelu preko stranog ključa i umjesto toga kombinujemo podatke u tabelama Kursevi i Nastavnici, ovako:

Teacher_ID Ime_učitelja Kurs
Teacher_001 Carmen biologija, matematika
Teacher_002 Veronika Matematika
Teacher_003 Jorge engleski

Ovaj dizajn je nefleksibilan i krši prvi princip normalizacije baze podataka, First Normal Form, koji kaže da svaka ćelija tabele treba da sadrži jedan, diskretni deo podataka.

Ili smo možda odlučili dodati drugi zapis za Carmen, kako bismo nametnuli 1NF:

Teacher_ID Ime_učitelja Kurs
Teacher_001 Carmen Biologija
Teacher_001 Carmen Matematika
Teacher_002 Veronika Matematika
Teacher_003 Jorge engleski

Ovo je još uvijek slab dizajn, koji uvodi nepotrebno dupliciranje i ono što se zove anomalije umetanja podataka, što znači da može doprinijeti nedosljednim podacima. Na primjer, ako nastavnik ima više zapisa, šta ako neke podatke treba urediti, ali osoba koja vrši uređivanje podataka ne shvaća da postoji više zapisa? Tabela bi tada sadržavala različite podatke za istu osobu, bez ikakvog jasnog načina da se to identificira ili izbjegne.

Razbijanje ove tabele u dvije tabele, Nastavnici i Kursevi, stvara ispravan odnos između podataka i stoga pomaže u osiguravanju konzistentnosti i tačnosti podataka.

Preporučuje se: