Uvod v odnose med bazami podatkov

Izraz podatkovne baze "relacijski" ali "povezava" opisuje način povezovanja podatkov v tabelah.

Novinci v svetu podatkovnih baz pogosto težko vidijo razliko med bazo podatkov in preglednico. Prikazujejo tabele podatkov in prepoznajo, da lahko zbirke podatkov organizirajo in poizvedujejo podatke na nove načine, vendar ne poznajo pomembnosti odnosov med podatki, ki dajejo tehnologiji relacijskih baz podatkov njegovo ime.

Odnosi vam omogočajo, da na močne načine opisujete povezave med različnimi tabelami baz podatkov. Ta razmerja se nato lahko vzamejo za izvajanje močnih navzkrižnih pregledov, znanih kot povezovalni elementi.

Vrste podatkovnih odnosov

Obstajajo tri različne vrste odnosov z bazami podatkov, od katerih je vsaka imenovana glede na število vrstic v tabeli, ki so lahko vključeni v razmerje. Vsaka od teh treh vrst povezav obstaja med dvema tabelama.

Odnosi z lastnimi referencami: poseben primer

Samoreferenčni odnosi se pojavijo, ko je vključena samo ena tabela. Eden pogostih primerov je tabela zaposlenih, ki vsebuje informacije o nadzorniku vsakega zaposlenega. Vsak nadzornik je tudi zaposlen in ima svojega nadzornika. V tem primeru obstaja enostopenjsko samoreferenčno razmerje, saj ima vsak zaposleni en supervizor, vendar ima vsak nadzornik več kot enega zaposlenega.

Ustvarjanje odnosov s tujimi ključi

Ustvarjate odnose med tabelami tako, da določite tuji ključ. Ta ključ pove relacijsko bazo podatkov, kako so tabel povezane. V mnogih primerih stolpec v tabeli A vsebuje primarne ključe, na katere se sklicuje tabela B.

Ponovno razmislite o primeru tabele učiteljev in študentov. Tabela učiteljev vsebuje le ID, ime in stolpec tečaja:

Učitelji
InstructorID Teacher_Name Seveda
001 John Doe angleščina
002 Jane Schmoe Matematika

Tabela Študent vsebuje stolpec ID, ime in tuji ključ:

Študenti
StudentID Študentsko ime Učitelj_FK
0200 Lowell Smith 001
0201 Brian Short 001
0202 Corky Mendez 002
0203 Monica Jones 001

Stolpec Teacher_FK v tabeli Študenti se nanaša na primarno vrednost ključa inštruktorja v tabeli Učitelji.

Pogosto oblikovalci baze podatkov v imenu stolpca uporabijo "PK" ali "FK", s čimer lahko zlahka prepoznajo primarni ključ ali stolpec v tujem ključu.

Upoštevajte, da ti dve tabeli ponazarjata odnos med učitelji in učenci.

Odnosi in referenčna integriteta

Ko v tabelo dodate tuji ključ, lahko ustvarite omejitev baze podatkov, ki uveljavlja referenčno integriteto med dvema tabelama. To zagotavlja, da so odnosi med tabelami dosledni. Ko ima ena tabela tuji ključ v drugo tabelo, koncept referenčne integritete navaja, da se mora vsaka vrednost zunanjega ključa v tabeli B nanašati na obstoječ zapis v tabeli A.

Izvajanje odnosov

Odvisno od vaše baze podatkov izvajate odnose med tabelami na različne načine. Microsoft Access ponuja čarovnika, ki vam preprosto omogoča povezovanje tabel in tudi uveljavljanje referenčne integritete.

Če pišete SQL neposredno, najprej ustvarite tabelo Učitelji, pri čemer navedete stolpec ID kot primarni ključ:

Ustvarite tabelo Učitelji (

InstructorID INT AUTO_INCREMENT PRIMARNI KLJUČ,
Teacher_Name VARCHAR (100),
Tečaj VARCHAR (100)
);

Ko ustvarite tabelo študentov, prijavite stolpec Teacher_FK kot tuj ključ, ki se nanaša na stolpec TeachctorID v učilnici:

CREATE TABLE Študenti (
StudentID INT AUTO_INCREMENT PRIMARNI KLJUČ,
Student_Name VARCHAR (100), Teacher_FK INT,
TUJI KLJUČ (Teacher_FK) REFERENCE Učitelji (InstructorID))
);

Uporaba odnosov v pridruženih tabelah

Ko ustvarite eno ali več povezav v svoji bazi podatkov, lahko z uporabo SQL JOIN poizvedb povežete svojo moč z združevanjem informacij iz več tabel. Najpogostejša vrsta pridružitve je SQL INNER JOIN ali preprosta povezava. Ta vrsta pridružitve vrne vse zapise, ki izpolnjujejo pogoj združitve iz več tabel. Na primer ta pogoj JOIN bo vrnil Student_Name, Teacher_Name in tečaj, če se tuji ključ tabele študentov ujema z primarnim ključem v tabeli Učitelji:

SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.Course
Od študentov
INNER JOIN Učitelji
ON Students.Teacher_FK = Teachers.InstructorID;

Ta izjava daje tabelo nekaj takega:

Vrnjena tabela iz izjave SQL pridružitve

Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish