Úvod do databázových vzťahov

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.

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:

učitelia
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ľúč:

študentov
Š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