Databázový pojem "relačný" alebo "vzťah" opisuje spôsob pripojenia údajov v tabuľkách.
Noví prichádzať do sveta databáz majú často ťažké vidieť rozdiel medzi databázou a tabuľkou. Zobrazujú tabuľky údajov a rozpoznávajú, že databázy umožňujú usporiadať a dotazovať dáta novými spôsobmi, ale nedokážu pochopiť význam vzťahov medzi údajmi, ktoré dávajú svojmu názvu relačnej databázovej technológii.
Vzťahy vám umožňujú výrazne opísať prepojenia medzi rôznymi databázovými tabuľkami. Tieto vzťahy potom môžu byť využité pre výkonné krížové tabuľkové otázky, známe ako spájanie.
Typy databázových vzťahov
Existujú tri rôzne typy databázových vzťahov, z ktorých každý je pomenovaný podľa počtu riadkov tabuľky, ktoré môžu byť zahrnuté do vzťahu. Každý z týchto troch typov vzťahov existuje medzi dvoma tabuľkami.
- Vzťahy medzi jednotlivými používateľmi sa vyskytujú, keď každá položka v prvej tabuľke obsahuje druhú a druhú tabuľku. Jednotlivé vzťahy sa zriedka používajú, pretože je často efektívnejšie jednoducho dať všetky informácie do jednej tabuľky. Niektorí návrhári databáz využívajú tento vzťah vytvorením tabuliek, ktoré obsahujú podmnožinu údajov z inej tabuľky.
- Vzťahy typu one-to-many sú najbežnejší typ databázového vzťahu. Vyskytujú sa, keď každý záznam v tabuľke A zodpovedá jednej alebo viacerým záznamom v tabuľke B, ale každý záznam v tabuľke B zodpovedá iba jedinému záznamu v tabuľke A. Napríklad vzťah medzi tabuľkou učiteľov a tabuľkou študentov v základnej škole databáza by bola pravdepodobne vzťahom jedného k mnohým, pretože každý študent má iba jedného učiteľa, ale každý učiteľ má viacerých študentov. Tento dizajn typu one-to-many pomáha eliminovať duplicitné údaje.
- Vzťahy typu "mnoho k mnohým" sa vyskytujú, keď každý záznam v tabuľke A zodpovedá jednej alebo viacerým záznamom v tabuľke B a každý záznam v tabuľke B zodpovedá jednej alebo viacerým záznamom v tabuľke A. Napríklad vzťah medzi učiteľom a kurzom Tabuľka by bola pravdepodobne veľa, pretože každý učiteľ môže poučiť viac ako jeden kurz a každý kurz môže mať viac ako jedného inštruktora.
Samoreferenčné vzťahy: špeciálny prípad
Vzťahy s vlastným odkazom sa vyskytujú, keď je zapojená 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 tiež zamestnancom a má svojho vedúceho. V tomto prípade existuje jeden-to-mnoho self-referencing vzťah, ako každý zamestnanec má jeden dozorca, ale každý vedúci môže mať viac ako jeden zamestnanec.
Vytváranie vzťahov s cudzími kľúčmi
Vytvárajte vzťahy medzi tabuľkami špecifikovaním cudzieho kľúča . Toto tlačidlo informuje o relačnej databáze, ako súvisia tabuľky. V mnohých prípadoch obsahuje stĺpec v tabuľke A primárne kľúče, ktoré sú uvedené v tabuľke B.
Opäť zvážte príklad tabuliek učiteľov a študentov. Tabuľka Učitelia obsahuje iba ID, názov a stĺpec kurzu:
InstructorID | TEACHER_NAME | kurz |
---|---|---|
001 | John Doe | Angličtina |
002 | Jane Schmoe | matematika |
Tabuľka Študenti obsahuje stĺpec ID, názov a cudzí kľúč:
Študentská karta | Meno študenta | 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.
Často návrhári databáz používajú v názve stĺpcov "PK" alebo "FK" na jednoduché identifikovanie primárneho kľúča alebo stĺpca cudzieho kľúča.
Upozorňujeme, že tieto dve tabuľky ilustrujú vzťah medzi učiteľmi a študentmi.
Vzťahy a referenčná integrita
Po pridaní cudzieho kľúča do tabuľky môžete vytvoriť obmedzenie databázy, ktoré vynucuje referenčnú integritu medzi týmito dvoma tabuľkami. To zabezpečí, že vzťahy medzi tabuľkami zostanú konzistentné. Ak má jedna tabuľka cudzí kľúč v inej tabuľke, koncept referenčnej integrity stanovuje, že akékoľvek cudzie kľúčové hodnoty v tabuľke B sa musia vzťahovať 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. Program Microsoft Access poskytuje sprievodcu, ktorý vám jednoducho umožňuje prepojiť tabuľky a tiež vynucovať referenčnú integritu.
Ak píšete SQL priamo, najprv by ste mali vytvoriť tabuľku Učitelia a vyhlásiť stĺpec ID za primárny kľúč:
CREATE TABLE Učitelia (
Identifikátor inštruktora INT AUTO_INCREMENT PRIMARY KEY,
Teacher_Name VARCHAR (100),
Kurz VARCHAR (100)
);
Pri vytváraní tabuľky študentov deklarujete stĺpec Teacher_FK cudzí kľúč, ktorý odkazuje na stĺpec InstructorID v tabuľke učiteľov:
CREATE TABLE Študenti (
Študent ID INT AUTO_INCREMENT PRIMARY KEY,
Názov študenta VARCHAR (100), Teacher_FK INT,
ZAHRANIČNÉ KEY (Teacher_FK) REFERENCIE Učitelia (InstructorID))
);
Použitie vzťahov na pripojenie tabuliek
Po vytvorení jedného alebo viacerých vzťahov vo vašej databáze môžete využiť svoju silu pomocou dotazov SQL JOIN, ktoré kombinujú informácie z viacerých tabuliek. Najčastejším typom spojenia je SQL INNER JOIN alebo jednoduchý spoj. Tento typ spojenia vracia všetky záznamy, ktoré spĺňajú podmienku spojenia z viacerých tabuliek. Napríklad táto podmienka JOIN vráti názvy študentov, učiteľov a kurzov, kde sa cudzí kľúč v tabuľke študentov zhoduje s primárnym kľúčom v tabuľke učiteľov:
SELECT Students.Student_Name, Teachers.Teacher_Name, Teachers.Course
FROM študenti
INNER JOIN Učitelia
ON Students.Teacher_FK = Teachers.InstructorID;
Toto vyhlásenie vytvára tabuľku takto:
Vrátená tabuľka z príkazu SQL Join Statement
Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish