Odnosi s bazama podataka

Baza podataka su okosnica svih relacijskih baza podataka

Određuje se odnos između dvije tablice baze podataka kada jedna tablica ima strani ključ koji se odnosi na primarni ključ druge tablice. Ovo je osnovni koncept iza relacijske baze podataka.

Kako vanjski ključ radi na uspostavljanju odnosa

Pogledajmo osnove primarnih i stranih ključeva. 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 se automatski generirati pomoću baze podataka kako bi se osiguralo da je jedinstvena.

Strani ključ je drugi ključ kandidata (a ne primarni ključ) koji je povezao rekord s podacima u drugoj tablici.

Na primjer, razmotrite ova dva tablica koja identificiraju koji učitelj uči koji tečaj.

Ovdje primarni ključ tablice Tečajevi je Course_ID. Njegov je strani ključ Teacher_ID:

Tečajevi
Course_ID COURSE_NAME Teacher_ID
Course_001 Biologija Teacher_001
Course_002 matematika Teacher_001
Course_003 Engleski Teacher_003

Možete vidjeti da je strani ključ u Tečajevima odgovarao primarnom ključu u Učiteljima:

nastavnici
Teacher_ID Nastavnik TEACHER_NAME
Teacher_001 Carmen
Teacher_002 veronika
Teacher_003 Jorge

Možemo reći da je strani ključ Teacher_ID pomogao uspostaviti odnos između tablica tečajeva i učitelja.

Vrste odnosa s bazama podataka

Pomoću stranih ključeva ili drugih ključeva kandidata možete provesti tri vrste odnosa između tablica:

One-to-one : Ova vrsta odnosa omogućuje samo jedan zapis na svakoj strani odnosa.

Primarni ključ odnosi se na samo jedan zapis - ili ne - u drugoj tablici. Na primjer, u braku, svaki supružnik ima samo jednog drugog supružnika. Ova vrsta odnosa može se implementirati u jednu tablicu i stoga ne koristi strani ključ.

One-to-many : Omjer jednog od mnogih omogućuje da se jedan jedini rekord u jednoj tablici mora povezati s više zapisa u drugoj tablici.

Razmotrite tvrtku s bazom podataka koja ima tablice Kupci i Narudžbe.

Jedan klijent može kupiti više narudžbi, ali jedna narudžba nije mogla biti povezana 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 upućuje na tablicu Narudžbe.

Mnogi od mnogih : ovo je složeni odnos u kojem mnogi zapisi u tablici mogu povezati s mnogim zapisima u drugoj tablici. Na primjer, naše poslovanje vjerojatno ne treba samo tablice Kupci i Narudžbe, već vjerojatno i tablicu proizvoda.

Opet, odnos između tablice Kupci i Narudžbe je jedan-na-mnogo, 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: nekoliko kupaca može poslati narudžbu koja sadrži neke od istih proizvoda. Ova vrsta odnosa zahtijeva najmanje tri tablice.

Što su važni baze podataka?

Uspostavljanje dosljednih odnosa između tablica baze podataka osigurava cjelovitost podataka, pridonoseći normalizaciji baze podataka. Na primjer, što ako nismo povezali nijednu tablicu putem stranog ključa, a umjesto toga samo smo kombinirali podatke u tablicama Tečajevi i učitelji, na primjer:

Nastavnici i tečajevi
Teacher_ID Nastavnik TEACHER_NAME Tečaj
Teacher_001 Carmen Biologija, matematika
Teacher_002 veronika matematika
Teacher_003 Jorge Engleski

Ovaj dizajn je nefleksibilan i krši prvo načelo normalizacije baze podataka, Prvi normalni obrazac (1NF), koji navodi da svaka ćelija tablice treba sadržavati jedan pojedinačni diskretni podatak.

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

Nastavnici i tečajevi
Teacher_ID Nastavnik TEACHER_NAME Tečaj
Teacher_001 Carmen Biologija
Teacher_001 Carmen matematika
Teacher_002 veronika matematika
Teacher_003 Jorge Engleski

To je još uvijek slab dizajn, uvođenjem nepotrebnih dupliciranja i onoga što se naziva anomalijama umetanja podataka , što samo znači da bi moglo pridonijeti nedosljednim podacima.

Na primjer, ako učitelj ima više zapisa, što ako neki podaci trebaju biti uređeni, ali osoba koja obavlja uređivanje podataka ne shvaća da postoji više zapisa? Tablica tada sadrži različite podatke za istu osobu, bez jasnog načina da se identificira ili izbjegne.

Razbijanje ove tablice u dvije tablice, nastavnici i tečajevi (kao što je prikazano gore), stvara pravi odnos između podataka i time pomaže u osiguravanju dosljednosti i točnosti podataka.