Relácie v relačnom dátovom modeli sú tabuľky, atribúty sú stĺpce, riadky sú usporiadané n-tice, hodnoty atribútov sú konkrétne hodnoty položiek v tabuľkách. Tabuľka zvyčajne zhromažďuje údaje o jednom druhu objektov. Majme napríklad tabuľku s osobnými údajmi zamestnancov. Každý riadok predstavuje jedného zamestnanca. Stĺpce obsahujú informácie o pracovníkoch. V našom prípade schéma tejto relácie, obsahuje tieto atribúty :
Situáciu ilustruje obrázok 1.
|
Obr. 1: Tabuľka v relačnom modeli dát |
Aby sa dalo tabuľkami a v nich
uloženými údajmi pracovať, musia byť jednoznačne
identifikované. Každý stĺpec má preto
názov. Tento názov potom používame, keď se
odvolávame na obsah určitého atribútu a nie na
celý záznam. Mená atribútov sú v
našej tabuľke napr. Meno
a Plat
.
Často vykonávanou operáciou v
tabuľkách je zmena obsahu jedného atribútu
v určitom zázname. Pre vykonanie tejto operáce však
musíme mať k dispozícii spôsob, ako jednoznačne
určiť požadovaný záznam. Pre tieto účely by
každá tabuľka mala obsahovať tzv. primárny kľúč.
Primárny kľúč je atribút a jeho hodnota je pre
každý záznam jedinečná. V našom prípade
nám ako primárny kľúč môže poslúžiť
atribút Osobné číslo
, pretože
každý zamestnanec má svoje vlastné osobné
číslo. Našim požadavkám na primárny kľúč
vyhovie aj atribút Rodné číslo
(to
má každý občan Slovenskej republiky jedinečné - až
na výnimky ). Chybou by však bolo zvoliť za primárny
kľúč napr. atribút Meno
. Na prvý
pohľad sa mená zamestnancov líšia. Nie je však
problém, aby sa vo väčšej firme vyskytli dvaja Janovia
Čierni. Potom by sme ich podľa mena rozlíšili veľmi ťažko.
Pre každý atribút tabuľky musíme
určiť aký typ dát môže obsahovať. Medzi
nejbežnejšie používané typy patria celé
čísla (numeric), znakové reťazce (charakter),
logické hodnoty (logical)
(áno/nie). Ďalšie veľmi často používané typy
sú reálné čísla, menové
údaje, dátum a čas (date). Mnoho SRBD podporuje i
zložitějšie
typy akými sú: obrázok, video či audio klip.
Báza dát môže samozrejme obsahovať
väčšie množstvo tabuliek (záleží na tom, čo všetko
chceme do bázy dát zaznamenať). Každá tabuľka
má
preto svoje meno, ktoré ju v rámci databázy
jednoznačne identifikuje. V našom prípade by tabuľka mohla mať
názov Zamestnanci
. Niekedy sa používa
iba jednotné číslo, potom by sa naša tabuľka volala Zamestnanec
.
Meno tabuľky by malo vždy korenšpondovať s jej obsahom, uľahčíme
si tak orientáciu vo väčšom množstve tabuliek.
Vidíme, že tabuľka obvykle obsahuje ucelené
informácie. To však neznamená, že nijako
nesúvisí s ostatnými tabuľkami. Predstavme si, že
v našej fiktívnej firme chceme evidovať informácie o
odberateľoch. U každého odberateľa budeme chcieť evidovať jeho
IČO, názov, sídlo a nášho zamestnanca,
ktorý má styk s odberateľom na starosti. Je jasné,
že tabuľka Odberatelia
musí obsahovať
atribúty IČO
, názov
a sídlo
.
Má však u každého odberateľa obsahovať kompletné
informácie o zamestnancovi (tj. jeho meno, rodné
číslo, adresu a výšku platu. To by iste nebolo
najefektívnějšie (pokiaľ by niekto mal na starosti viac
odbrateľov, informácie by se v tabuľke zbytočne opakovali.
Vyššie uvedené prípady sa riešia
pomocou vzťahov (to sú relácie relačnej algebry) medzi
tabuľkami. V našom prípade môže mať
jeden zamestnanec na starosti niekoľko odberateľov, hovoríme
teda o vzťahu 1:N. V praxi sa tento vzťah rieši tak, že tabuľka Odberatelia
má atribút, ktorý obsahuje primárny
kľúč, ktorý určuje zamestnanca povereného stykom s
firmou. Primárny kľúč v tabuľke zamestnanci
je osobné číslo, u každého odberateľa teda
uvedieme osobné číslo zamestnanca, ktorý je
poverený jednať v mene firmy (viď obr. 2). Vidíme, že
použité usporiadanie údajov do tabuliek nám
dáva k dispozíci všetky informácie. Pokiaľ chceme
zistiť, kto má na starosti firmu Omicron, pozrieme sa do tabuľky
Odbratelia
. V nej zistíme, že sa jedná o
zamestnanca s osobným číslom 1205. Pozrieme sa do tabuľky
zamestnanci
a zistíme, že osobné
číslo 1205 má Jano Čierny. Môžeme postupovať i
opačne. Pokiaľ nás zaujíma, ktorých odberateľov
má
na starosti Lucia Veľká, zistíme jej osobné
číslo (to je 1458). Príslušní odberatelia v
tabuľke Odberatelia
majú toto číslo
uložené v atribúte Zástupca
. Atribút,
ktorý slúži ako odkaz na inú tabuľku a obsahuje
teda primárne kľúče inej tabuľky, nazývame
cudzí kľúč. Ak tabuľka obsahuje viacej odkazov
(vzťahov) na iné tabuľky môže obsahovať viac
cudzích kľúčov. Primárny kľúč je však v
každej tabuľke vždy len jeden.
Obr. 2: Ukážka vzťahu 1:N |
Medzi tabuľkami
môžu existovať aj iné vzťahy ako 1:N, i keď nie
sú také časté. Vzťah 1:1 vyjadruje
prípady, keď záznam jednej tabuľky zodpovedá
jednému záznamu inej tabuľky. Tieto vzťahy sa obvykle
riešia ako špeciálny prípad vzťahu 1:N s
využitím cudzieho kľúča. Isté komplikácie
prinášajú vzťahy typu M:N. Ako taký vzťah
vyzerá? Predstavme si, že naša fiktívna firma
spracováva naraz niekoľko projektov. Na každom projekte
môže pracovať niekoľko zamestnancov, ale zároveň jeden
zamestnanec môže pracovať na viacerých projektoch. Vzťah
medzi tabuľkami Projekty
a Zamestnanci
je
typu M:N. Na prvý pohľad sa vzťah M:N
nedá do relačného modelu dát napísať.
Našťastie je možné každý vzťah typu M:N rozložiť
na dva vzťahy 1:N s využitím pomocnej tabuľky.
Ukážme si všetko na našom príklade. Informácie o
projektoch budeme ukladať do tabuľky Projekty
.
Predpokladajme, že každý projekt je identifikovaný
svojím ID-číslom
, ktoré
zvolíme ako primárny kľúč tabuľky. Vzťahy medzi
projektami a zamestnancami zachytíme v tabuľke Proj-Zam
.
Každý záznam tejto tabuľky obsahuje ID projektu a
číslo zamestnanca, ktorý na ňom pracuje. V
prípade, že na nejakom projekte pracuje viac zamestnancov, bude
v tabuľke niekoľko záznamov s rovnakým ID projektu a
rozdielnym číslom zamestnanca. Obdobne to bude platiť pre
zamestnancov. Ak jeden zamestnanec pracuje na viacerých
projektoch, bude v tabuľke niekoľko riadkov s rovnakým
osobným číslom zamestnanca a rôzným ID
projektu . Pomocou tabuľky Proj-Zam
ľahko zistíme
zistíme, že Eva Malá pracuje na projektoch X1254 a
X89740. Podobne, na projekte X98007 pracujú Malý a
Veľká. Medzi tabuľkami Projekty
a Proj-Zam
je vzťah 1:N. Rovnaký vzťah je i medzi tabuľkami Zamestnanci
a Proj-Zam
. Ako vidno, pôvodného vzťahu M:N
sme sa celkom jednoducho zbavili. Novo vzniknutá tabuľka Proj-Zam
obsahuje iba cudzie kľúče z tabuliek Projekty
a Zamestnanci
.
Primárny kľúč tabuľky je tvorený oboma
cudzími kľúčmi.
Z tejto ukážky vidno, že primárny
kľúč nemusí byť tvorený iba jediným
atribútom, ale aj niekoľkými dohromady. Pre každý
záznam však stále platí, že jeho primárny kľúč je
jedinečný. Každý záznam teda musí
obsahovať jedinečnú kombináciu hodnôt
atribútov, ktoré sú súčásťou
primárneho kľúča.