Uvod u odnose sa bazama podataka

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 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:

Nastavnici
InstructorID Teacher_Name Kurs
001 John Doe Engleski
002 Jane Schmoe Matematika

Tabela Studenti sadrži kolonu ID, ime i strani ključ:

Studenti
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