Pojmy databázy relačný a vzťah popisujú spôsob, akým sú údaje v tabuľkách prepojené. Relačná databáza pozostáva zo série dvoch alebo viacerých tabuliek spojených špecifickým kľúčom. Relačná databáza sa líši od neštruktúrovaných databáz, ktoré sú bežné v iniciatívach veľkých dát. Relačné databázy zvyčajne vyžadujú prísne pravidlá o tom, ako sú tabuľky definované a čo predstavuje platný vzťah medzi tabuľkami.
Typy databázových vzťahov
Vzťahy vám umožňujú opísať spojenia medzi databázovými tabuľkami účinnými spôsobmi. Tieto vzťahy sa potom dajú využiť na vykonávanie výkonných dopytov medzi tabuľkami, známych ako JOINs.
Existujú tri typy databázových vzťahov, z ktorých každý je pomenovaný podľa počtu riadkov tabuľky zahrnutých vo vzťahu. Každý z týchto troch typov vzťahov existuje medzi dvoma tabuľkami.
- Vzťahy jedna ku jednej sa vyskytujú, keď každý záznam v prvej tabuľke má iba jeden náprotivok v druhej tabuľke. Vzťahy typu one-to-one sa zriedka používajú, pretože často je efektívnejšie umiestniť všetky informácie do jednej tabuľky. Niektorí návrhári databáz využívajú tento vzťah tak, že vytvárajú tabuľky, ktoré obsahujú podmnožinu údajov z inej tabuľky.
- Vzťahy jedna k mnohým sú najbežnejším typom databázových vzťahov. Vyskytujú sa vtedy, keď každý záznam v tabuľke A zodpovedá jednému alebo viacerým záznamom v tabuľke B, ale každý záznam v tabuľke B zodpovedá iba jednému záznamu v tabuľke A. Napríklad vzťah medzi tabuľkou Učitelia a tabuľkou Študenti na základnej škole databáza by pravdepodobne bola vzťahom jedna k mnohým, pretože každý študent má iba jedného učiteľa, ale každý učiteľ má niekoľko študentov. Tento dizajn „one-to-many“pomáha eliminovať duplicitné údaje.
- Vzťahy veľa k mnohým sa vyskytujú, keď každý záznam v tabuľke A zodpovedá jednému alebo viacerým záznamom v tabuľke B a každý záznam v tabuľke B zodpovedá jednému alebo viacerým záznamom v tabuľke A. Napríklad vzťah medzi tabuľkou učiteľov a tabuľkou kurzov by bol pravdepodobne mnoho k mnohým, pretože každý učiteľ môže viesť viac ako jeden kurz a každý kurz môže mať viac ako jedného inštruktora.
Zrátané podčiarknutie
Vzťahy s vlastným odkazom sa vyskytujú, keď je zahrnutá iba jedna tabuľka. Jedným z bežných príkladov je tabuľka Zamestnanci, ktorá obsahuje informácie o nadriadenom každého zamestnanca. Každý nadriadený je zároveň zamestnancom a má nadriadeného. V tomto prípade ide o vzťah jeden k mnohým, pretože každý zamestnanec má jedného nadriadeného, ale každý nadriadený môže mať viac ako jedného zamestnanca.
Vytváranie vzťahov s cudzími kľúčmi
Vzťahy medzi tabuľkami vytvárate zadaním cudzieho kľúča. Tento kľúč hovorí relačnej databáze, ako spolu tabuľky súvisia. V mnohých prípadoch stĺpec v tabuľke A obsahuje primárne kľúče, na ktoré sa odkazuje v tabuľke B.
Zvážte príklad tabuliek Učitelia a Študenti. Tabuľka Učitelia obsahuje ID, názov a stĺpec kurzu:
ID inštruktora | Teacher_Name | Kurz |
001 | John Doe | angličtina |
002 | Jane Schmoe | Math |
Tabuľka Študenti obsahuje stĺpec ID, meno a cudzí kľúč:
StudentID | Student_Name | Teacher_FK |
0200 | Lowell Smith | 001 |
0201 | Brian Short | 001 |
0202 | Corky Mendez | 002 |
0203 | Monica Jones | 001 |
Stĺpec Teacher_FK v tabuľke Študenti odkazuje na hodnotu primárneho kľúča inštruktora v tabuľke Učitelia. Návrhári databáz často používajú PK alebo FK v názve stĺpca na identifikáciu stĺpca primárneho kľúča alebo cudzieho kľúča.
Tieto dve tabuľky ilustrujú vzťah jedna k mnohým medzi učiteľmi a študentmi.
Vzťahy a referenčná integrita
Po pridaní cudzieho kľúča do tabuľky vytvorte databázové obmedzenie, ktoré vynucuje referenčnú integritu medzi týmito dvoma tabuľkami. Tento krok zaisťuje, že vzťahy medzi tabuľkami zostanú konzistentné. Ak má jedna tabuľka cudzí kľúč k inej tabuľke, referenčná integrita vyžaduje, aby každá hodnota cudzieho kľúča v tabuľke B odkazovala na existujúci záznam v tabuľke A.
Implementácia vzťahov
V závislosti od vašej databázy implementujete vzťahy medzi tabuľkami rôznymi spôsobmi. Microsoft Access poskytuje sprievodcu, ktorý vám umožní prepojiť tabuľky a tiež vynútiť referenčnú integritu.
Ak píšete SQL priamo, najprv vytvorte tabuľku Učitelia, pričom stĺpec ID deklarujte ako primárny kľúč:
CREATE TABLE Učitelia (ID inštruktora INT AUTO_INCREMENT PRIMARY KEY, Učiteľ_Meno VARCHAR(100), Kurz VARCHAR(100));
Pri vytváraní tabuľky Študenti deklarujete stĺpec Teacher_FK ako cudzí kľúč odkazujúci na stĺpec InstructorID v tabuľke Učitelia:
CREATE TABLE Študenti (StudentID INT AUTO_INCREMENT PRIMARY KEY, Student_Name VARCHAR(100), Teacher_FK INT, CUDZÍ KĽÚČ (Učiteľ_FK) REFERENCIE);
Používanie vzťahov na pripojenie k stolom
Po vytvorení jedného alebo viacerých vzťahov v databáze využite ich silu pomocou SQL JOIN dotazov na kombinovanie informácií z viacerých tabuliek. Najbežnejším typom spojenia je SQL INNER JOIN, čo je jednoduché spojenie. Tento typ spojenia vráti všetky záznamy, ktoré spĺňajú podmienku spojenia z jednej alebo viacerých tabuliek.
Napríklad táto podmienka JOIN vráti Študent_Meno, Meno_Učiteľa a Kurz, pričom cudzí kľúč v tabuľke Študenti sa zhoduje s primárnym kľúčom v tabuľke Učitelia:
SELECT Students. Student_Name, Teachers. Teacher_Meno, Teachers. Course
FROM Students
INNER JOIN TeachersON Students. Teacher_FK=Učitelia. ID inštruktora;
Tento príkaz vytvorí tabuľku približne takúto:
Meno študenta | Teacher_Name | Kurz |
Lowell Smith | John Doe | angličtina |
Brian Short | John Doe | angličtina |
Corky Mendez | Jane Schmoe | Math |
Monica Jones | John Doe | angličtina |