Relációs adatmodell

A relációs adatmodell egy olyan adatmodell, amelynek legfontosabb eleme a matematikai reláció fogalma. Mint minden adatmodell, ez is egyrészt definiálja azokat a jellemző adatszerkezeteket, amelyeken dolgozik, illetve azokat a műveleteket, amelyek rajta értelmezettek. Fontos kiemelni, hogy a relációs adatmodell a logikai adatbázis (vagy fogalmi adatbázis) kereteit határozza meg, nem foglalkozik azzal a problémával, hogy adatokat ténylegesen hogyan kell tárolni a háttértáron, hogyan kell módosítani, illetve a memóriába betölteni a felhasználó által igényelt adatokat.

A matematikai felépítésről 

A hagyományos relációs adatmodell kulcsfogalma a reláció, amely – a matematika legtöbb területével azonos módon -– Descartes-szorzat részhalmazát jelenti. A Descartes-szorzat (vagy régiesen: a kartéziánus szorzat, ritkábban, inkább a matematika más területein: direktszorzatnak is hívják) lényegében elemi egységekként kezelt entitásokat rendel egymás mellé. Hasonlóan például a térbeli koordináta-rendszerhez, ahol történetesen három valós szám egymás mellé helyezésével egy térbeli pontot határozunk meg; formálisan itt is a független koordinátákat jelölő számokat Descartes-szorozzuk. A reláció fogalma csak annyit mond – a koordinátás példával élve –, hogy az a térkoordináták egy véges, szélsőségesen akár üres halmazát jelöli.

A Descartes-szorzat egyes műveleti tényezői egy-egy halmazból, értékkészletből veszik fel értéküket, amelyeket végesnek tételezünk fel. Az azonos típusú és szerepű elemek halmazát jellemzőknek (attribútumoknak) nevezzük. A jellemzők egy névvel ellátott rendezett halmaza pedig a séma.

A séma-attribútum-reláció hármas voltaképpen egyfajta táblázatot írnak le, ahol az attribútumok az oszlopokat jelölik, a reláció a ténylegesen előforduló, kitöltött sorok összességét jelenti, míg a séma nem más, mint a táblázat alapszerkezetének, az oszlopfejlécek sorrendjének elnevezése.

Az oszlopok, illetve a sémák konkrét elnevezése általában lényegtelen, de szem előtt kell tartanunk, hogy egy sémára illeszkedni egy reláció akkor és csak akkor tud, ha a reláció elemei (sorai) a sémában szereplő jellemzők, attribútumok értékkészletéből veszik a megfelelő komponenseiket. Tehát ha például az életkor nevű jellemző kizárólag 0 és 1000 közé eső egész számokból áll, akkor a SZEMÉLY( név, életkor ) sémára nem illeszkedhet a { { 'Gipsz Jakab', -4 } } egyelemű reláció.

A relációs algebra

A relációs algebrai alapműveletek 

A relációs adatmodell műveletei között öt alapműveletet definiálunk, ezekre épülnek majd a származtatott műveletek. Az alapműveletek a következők:

 Descartes-szorzat
 Halmazelméleti unió
 Halmazelméleti különbség
 kiválasztás (szelekció)
 vetítés (projekció)

Minden művelet kizárólag relációkon értelmezett (ezért relációs az adatmodell neve), azaz minden művelet csak relációkon végez műveleteket. A Descartes-szorzatról már volt korábban szó, a műveletet a × jel szimbolizálja.
Az alábbi két sémára illeszkedő reláció Descartes-szorzata a harmadik reláció (r3 = r1 × r2).

Az unió és a különbség pontosan úgy viselkedik, ahogyan azt a halmazelmélet kapcsán már megszokhattuk. Az r1 és r2 reláció uniója például az r4 reláció:

Hangsúlyozni kell azonban, hogy az unió és a különbség csak és kizárólag olyan relációk között értelmezhető, amelyeknek az attribútumszámuk és -típusuk megegyezik. Tehát például az r2 ∪ r3 értelmezhetetlen művelet!

A kiválasztás és a vetítés két teljesen máshogy viselkedő művelet. Mindkettőhöz egy (logikai) segédkifejezést illik megadni. A kiválasztás feladata elsősorban az, hogy a reláció mint halmaz elemei közül emelje ki azokat, amelyek egy megadott logikai feltételt teljesítenek, kielégítenek. Példának okáért, ha valaki egy reláció elemei között csak a János nevűekre kíváncsi, akkor a kiválasztás (jelöljük K-val) feltételei között adjuk meg, hogy például keresztnév = 'János', azaz K{keresztnév = 'János'}(r3), amelynek eredményét az r5 reláció mutatja:

A vetítés ezzel szemben nem a reláció elemeinek számát, hanem a jellemzők, attribútumok számát csökkentik. A vetítés (jelölése legyen V) paramétere tehát a megtartandó attribútumok megnevezése, míg argumentuma egyetlen relációból áll. Így például V{Vezetéknév}(r5) eredményrelációja r6:

A relációs algebrai származtatott műveletek 

Természetesen, a relációs adatmodell egyéb műveleteket is megenged. Ezek tárháza szinte korlátlan, itt csak a legfontosabbakat érdemes megemlíteni, amelyek

 metszet
 természetes illesztés (angolul: natural join)
 általános (vagy Theta) illesztés

A metszet azért tekinthető származtatott műveletnek, mert előáll kizárólag a különbség segítségével is; hiszen az A \ ( A \ B ) az megegyezik A ∩ B-vel.

A természetes illesztés (jelölje JOIN) már nem ennyire egyszerű dolog. A lényege tulajdonképpen az, hogy két relációban, az azonos nevű attribútumokon megegyező értékkel rendelkező sorokat összekapcsolja. Ez olyankor lehet érdekes, amikor két különböző relációban tárolt információt szeretnénk valamilyen oknál fogva összekötni. Amikor például könyvek adataira szerzőjükkel együtt van szükségünk, akkor a szerzők adatai és a könyvek adatai tipikusan más helyen, más relációban találhatók meg. Ha bővebb információt akarunk megtudni egy könyv szerzőiről vagy a szerzők könyveiről, akkor a két relációt érdemes valahogyan összekapcsolni. Mivel az ilyen jellegű művelet nagyon tipikus az adatbázisok világában, ezt külön névvel szoktuk jelölni; ez a természetes illesztés.

Származtatott művelet lévén az alapműveletek segítségével a természetes illesztés kifejezhető, de még a körülírásánál is nehézkesebb a megfogalmazása. Természetes illesztés definíció szerint két reláció Descartes-szorzatából az azonos nevű attribútumokon megegyező értékkel bíró elemek kiválasztásával, illetve az azonos nevű attribútumok közül az ismétlődések elhagyásával nyert relációt eredményezi. Példával élve, az r7 reláció azonos a Szerzők JOIN Könyvek relációval.

A természetes illesztés kiterjesztése az általános illesztés. Az általános illesztésnél nem kötjük meg, hogy milyen logikai feltételnek kell megfelelni az összekötendő relációknak (például akár a Született attribútumot is megpróbálhatjuk összekötni a Könyvvel), és azt sem, hogy ezek közül melyeket kell elhagynunk. Értelemszerűen ezeket paraméterként kell megadni az általános illesztésre vonatkozóan.

Adatbázis-kezelés