Pojmovi baze podataka relacija i odnos opisuju način na koji su podaci u tablicama povezani. Relacijska baza podataka sastoji se od niza od dvije ili više tablica povezanih određenim ključem. Relacijska baza podataka razlikuje se od nestrukturiranih baza podataka, koje su uobičajene u inicijativama velikih podataka. Relacijske baze podataka obično zahtijevaju stroga pravila o tome kako se tablice definiraju i što čini valjani odnos među tablicama.
Vrste odnosa baze podataka
Odnosi vam omogućuju da opišete veze između tablica baze podataka na snažne načine. Ti se odnosi zatim mogu iskoristiti za izvođenje snažnih upita između tablica, poznatih kao JOIN-ovi.
Postoje tri vrste odnosa baze podataka, svaki je nazvan prema broju redaka tablice uključenih u odnos. Svaka od ove tri vrste odnosa postoji između dvije tablice.
- Odnosi jedan-na-jedan pojavljuju se kada svaki unos u prvoj tablici ima samo jedan pandan u drugoj tablici. Relacije jedan-na-jedan se rijetko koriste jer je često učinkovitije staviti sve informacije u jednu tablicu. Neki dizajneri baza podataka iskorištavaju ovaj odnos stvaranjem tablica koje sadrže podskup podataka iz druge tablice.
- Odnosi jedan prema više najčešći su tip odnosa baze podataka. Do njih dolazi kada svaki zapis u tablici A odgovara jednom ili više zapisa u tablici B, ali svaki zapis u tablici B odgovara samo jednom zapisu u tablici A. Na primjer, odnos između tablice Učitelji i tablice Učenici u osnovnoj školi baza podataka vjerojatno bi bila odnos jedan prema više jer svaki učenik ima samo jednog učitelja, ali svaki učitelj ima nekoliko učenika. Ovaj dizajn jedan prema više pomaže u uklanjanju dupliciranih podataka.
- Odnosi više-prema-više pojavljuju se kada svaki zapis u tablici A odgovara jednom ili više zapisa u tablici B, a svaki zapis u tablici B odgovara jednom ili više zapisa u tablici A. Na primjer, odnos između tablice Nastavnici i tablice Tečajevi vjerojatno bi bio više-prema-više jer svaki nastavnik može predavati više od jednog tečaja, a svaki tečaj može imati više od jednog instruktora.
Donja crta
Samoreferentni odnosi se javljaju kada je uključena samo jedna tablica. Jedan uobičajeni primjer je tablica Zaposlenici koja sadrži informacije o nadređenom za svakog zaposlenika. Svaki nadređeni je ujedno i zaposlenik i ima nadređenog. U ovom slučaju postoji samoreferencirajući odnos jedan prema više, jer svaki zaposlenik ima jednog nadređenog, ali svaki nadređeni može imati više od jednog zaposlenika.
Stvaranje odnosa sa stranim ključevima
Odnose između tablica stvarate navođenjem stranog ključa. Ovaj ključ govori relacijskoj bazi podataka kako su tablice povezane. U mnogim slučajevima, stupac u tablici A sadrži primarne ključeve koji su navedeni u tablici B.
Razmotrite primjer tablica Nastavnici i Učenici. Tablica Učitelji sadrži ID, ime i stupac tečaja:
ID instruktora | Ime_učitelja | Tečaj |
001 | John Doe | engleski |
002 | Jane Schmoe | Matematika |
Tablica Studenti uključuje ID, ime i stupac stranog ključa:
ID studenta | Student_Name | Učitelj_FK |
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
Stupac Teacher_FK u tablici Studenti upućuje na vrijednost primarnog ključa instruktora u tablici Učitelji. Dizajneri baze podataka često koriste PK ili FK u nazivu stupca za identifikaciju primarnog ključa ili stupca stranog ključa.
Ove dvije tablice ilustriraju odnos jedan prema više između nastavnika i učenika.
Odnosi i referentni integritet
Nakon dodavanja stranog ključa u tablicu, stvorite ograničenje baze podataka koje nameće referentni integritet između dvije tablice. Ovaj korak osigurava da odnosi između tablica ostanu dosljedni. Kada jedna tablica ima strani ključ za drugu tablicu, referentni integritet zahtijeva da bilo koja vrijednost stranog ključa u tablici B mora upućivati na postojeći zapis u tablici A.
Implementacija odnosa
Ovisno o vašoj bazi podataka, implementirat ćete odnose između tablica na različite načine. Microsoft Access pruža čarobnjaka koji vam omogućuje povezivanje tablica i također nametanje referentnog integriteta.
Ako pišete SQL izravno, prvo kreirajte tablicu Učitelji, deklarirajući ID stupac kao primarni ključ:
CREATE TABLE Nastavnici (InstructorID INT AUTO_INCREMENT PRIMARY KEY, Teacher_Name VARCHAR(100), Course VARCHAR(100));
Kada kreirate tablicu Students, deklarirate stupac Teacher_FK kao strani ključ koji se odnosi na stupac InstructorID u tablici Teachers':
STVARANJE TABLICE Studenti (StudentID INT AUTO_INCREMENT PRIMARY KEY, Student_Name VARCHAR(100), Teacher_FK INT, FOREIGN KEY (Teacher_FK) REFERENCE Učitelji (InstructorID)));
Korištenje odnosa za spajanje tablica
Nakon što stvorite jedan ili više odnosa u svojoj bazi podataka, iskoristite njihovu moć korištenjem SQL JOIN upita za kombiniranje informacija iz više tablica. Najčešća vrsta spajanja je SQL INNER JOIN, što je jednostavno spajanje. Ova vrsta spajanja vraća sve zapise koji ispunjavaju uvjet spajanja iz jedne ili više tablica.
Na primjer, ovaj uvjet JOIN vraća Student_Name, Teacher_Name i Course, gdje strani ključ u tablici Studenti odgovara primarnom ključu u tablici Učitelji:
SELECT Students. Student_Name, Teachers. Teacher_Name, Teachers. Course
FROM Students
INNER JOIN TeachersON Students. Teacher_FK=Teachers. InstructorID;
Ova izjava proizvodi tablicu otprilike ovu:
Student_Name | Ime_učitelja | Tečaj |
Lowell Smith | John Doe | engleski |
Brian Short | John Doe | engleski |
Corky Mendez | Jane Schmoe | Matematika |
Monica Jones | John Doe | engleski |