Termin baze podataka "relacijski" ili "odnos" opisuje način povezivanja podataka u tabelama.
Novinari u svijetu baza podataka često imaju teško vrijeme da vide razliku između baze podataka i tabelarne tablice. Oni vide tabele podataka i prepoznaju da vam baze podataka omogućavaju da organizujete i upišete podatke na nove načine, ali ne shvatate značaj odnosa između podataka koji tehnologiji relacijske baze podataka nose svoje ime.
Odnosi vam omogućavaju da na snažnim načinima opišete veze između različitih tabela baze podataka. Ovi odnosi se onda mogu iskoristiti za obavljanje moćnih unakrsnih tabela, poznatih kao pridruživanje.
Vrste odnosa sa bazama podataka
Postoje tri različita tipa odnosa u bazi podataka, svaka imenom prema broju redova tablica koje mogu biti uključene u odnos. Svaka od ovih tri tipa veza postoji između dve tabele.
- Odnosi "jedan na jedan" se javljaju kada svaki unos u prvoj tabeli ima jednu, a samo jednu, drugu u drugoj tabeli. Odnosi sa pojedincima retko se koriste jer je često efikasnije jednostavno staviti sve informacije u jednu tabelu. Neki dizajneri baze podataka iskoriste ovaj odnos stvaranjem tabela koje sadrže podgrupe podataka iz druge tablice.
- Odnosi od jednog do drugog su najčešći tip odnosa sa bazama podataka. Oni se javljaju kada svaki zapis u Tabeli A odgovara jednom ili više zapisa u Tabeli B, ali svaki zapis u Tabeli B odgovara samo jednom zapisu u Tabeli A. Na primer, odnos između Tabele Nastavnika i Studentske tabele u osnovnoj školi baza podataka bi verovatno bila jedna-do-mnogobrojna veza, jer svaki učenik ima samo jednog nastavnika, ali svaki nastavnik ima više učenika. Ovaj dizajn od jednog do drugog pomaže u uklanjanju dupliranih podataka.
- Mnoge-do-mnoge veze se javljaju kada svaki zapis u Tabeli A odgovara jednom ili više zapisa u Tabeli B, a svaki zapis u Tabeli B odgovara jednom ili više zapisa u Tabeli A. Na primjer, odnos između nastavnika i kursa tabela bi verovatno bila mnogobrojna, jer svaki nastavnik može podučiti više od jednog kursa, a svaki kurs može imati više od jednog instruktora.
Odnosi sa samoreferencijom: poseban slučaj
Veza sa samoreferencijom se javlja kada postoji samo jedan sto. Jedan uobičajeni primer je tabela Zaposleni koja sadrži informacije o supervizoru svakog zaposlenog. Svaki supervizor je takođe zaposlen i ima svoj nadzornik. U ovom slučaju postoji jedan-do-jedan samoreferencijski odnos, pošto svaki zaposlenik ima jednog supervizora, ali svaki supervizor može imati više od jednog zaposlenog.
Stvaranje veza sa stranim ključevima
Kreirate odnose između tabela određivanjem inostranog ključa. Ovaj ključ govori relativnu bazu podataka o tome kako su tabele povezane. U mnogim slučajevima kolona u Tabeli A sadrži primarne ključeve na koje se referiše iz Tabele B.
Ponovo razmislite o primeru tabela Učitelja i studenata. Tabela Teachers sadrži samo ID, ime i kolonu kursa:
InstructorID | Teacher_Name | Kurs |
---|---|---|
001 | John Doe | Engleski |
002 | Jane Schmoe | Matematika |
Tabela Studenti sadrži kolonu ID, ime i strani ključ:
StudentID | Ime studenta | Teacher_FK |
---|---|---|
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monika Jones | 001 |
Kolona Teacher_FK u tabeli Studenti upućuje na primarnu vrijednost instruktora u tabeli Teachers.
Često, dizajneri baze podataka će koristiti ime "PK" ili "FK" u ime kolone kako bi se lako identifikovali primarni ključ ili stubni ključ.
Imajte na umu da ova dva tabela ilustruju jedan-prema-mnogi odnos između nastavnika i studenata.
Odnosi i referentni integritet
Kada dodate inostrani ključ u tabelu, onda možete stvoriti ograničenje baze podataka koje uspostavlja referentni integritet između dvije tabele. Ovo obezbeđuje da odnosi između tabela ostaju konzistentni. Kada jedna tabela ima inostrani ključ u drugoj tabeli, koncept referentnog integriteta navodi da svaka vrijednost inostranog ključa u Tabeli B mora da se odnosi na postojeći zapis u tabeli A.
Implementacija odnosa
U zavisnosti od vaše baze podataka, implementirate odnose između tabela na različite načine. Microsoft Access obezbeđuje čarobnjaka koji vam lako omogućava povezivanje tabela i takođe primjenjuje referentni integritet.
Ako pišete SQL direktno, prvo biste kreirali tabelu Teachers, deklarišući kolonu ID-a kao primarni ključ:
CREATE TABLE Nastavnici (
InstructorID INT AUTO_INCREMENT PRIMARY KEY,
Teacher_Name VARCHAR (100),
Kurs VARCHAR (100)
);
Kada kreirate tabelu Studenti, deklarišete kolonu Teacher_FK kao stranog ključa koji se odnosi na kolonu InstructorID u Teachers 'stolu:
CREATE TABLE Studenti (
StudentID INT AUTO_INCREMENT PRIMARNI KLJUČ,
Student_Name VARCHAR (100), Teacher_FK INT,
STRANI KLJUČ (Teacher_FK) REFERENCE Učitelji (InstructorID))
);
Korišćenje veza za pridruživanje tabela
Jednom kada ste kreirali jedan ili više veza u svojoj bazi podataka, možete koristiti svoju moć koristeći SQL JOIN upite za kombinovanje informacija iz više tabela. Najčešći tip pridruživanja je SQL INNER JOIN, ili jednostavan spoj. Ova vrsta pridruživanja vraća sve zapise koji ispunjavaju uslove pridruživanja iz više tabela. Na primjer, ovo stanje JOIN-a vraćaće ime Student_Name, Teacher_Name i Course gdje se inostrani ključ u Studentskoj tabeli podudara sa primarnim ključem u Tabeli Teachers:
SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.Course
Od studenata
INNER JOIN Nastavnici
ON Students.Teacher_FK = Teachers.InstructorID;
Ova izjava daje tabelu nešto ovako:
Vraćena tabela iz SQL pridružene izjave
Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish