6.8. Összefoglalás

Ebben a fejezetben a relációs adatmodell két formális nyelvét mutattuk be. Ezeket arra használjuk, hogy relációkat kezeljünk, és a lekérdezésekre adott válaszként új relációkat állítsunk elő. Ismertettük a relációalgebrát és a műveleteit, amelyek egy műveletsorozat megadásával adnak választ a lekérdezésre. Ezután a relációkalkulus két típusát mutattuk be: a rekord alapú kalkulust és a tartomány alapú kalkulust, amelyek deklaratívak abban az értelemben, hogy a lekérdezés eredményét anélkül határozzák meg, hogy meg kellene adnunk, hogy az hogyan álljon elő.

A 6.1. alfejezettől a 6.3. alfejezetig bemutattuk az alapvető relációalgebrai műveleteket, valamint azokat a lekérdezéstípusokat, amelyekben ezek használhatók. Először a szelekció és projekció unáris relációs műveleteket, valamint az átnevezés műveletét tárgyaltuk. Ezután a bináris halmazelméleti műveleteket ismertettük, amelyek megkövetelik, hogy azok a relációk, amelyekre alkalmazzuk őket, uniókompatibilisek legyenek; ezek az unió, a metszet és a (halmaz)különbség. A Descartes-szorzat művelet olyan halmazművelet, amelynek segítségével két reláció rekordjait tudjuk párosítani az összes lehetséges kombináció előállításával. A gyakorlatban ritkán használjuk; megmutattuk azonban, hogy a Descartes-szorzat egy azt követő szelekcióval hogyan használható két reláció összeillő rekordjainak előállítására, amely az összekapcsolás műveletéhez vezet. Különböző összekapcsolás műveleteket (theta join, equijoin és természetes összekapcsolás) mutattunk be. A relációalgebrai lekérdezések belső reprezentálására bevezettük a lekérdezési fákat.

Bemutattunk néhány fontos lekérdezéstípust, amelyek nem fejezhetők ki az alapvető relációalgebrai műveletekkel, de a gyakorlatban fontosak. Ismertettük az általánosított projekció műveletét, ahol a projekciós listában az attribútumok függvényeit is használhatjuk, valamint a csoportosító függvényeket, amelyekkel csoportokra vonatkozó lekérdezéseket tudunk kezelni. Szót ejtettünk a rekurzív lekérdezésekről, amelyeket nem támogat közvetlenül az algebra, de amelyek lépésenkénti megközelítéssel kezelhetők, ahogy azt láttuk. Ismertettük a külső összekapcsolás és a külső unió műveleteket, amelyek kiterjesztik az összekapcsolás és az unió műveleteket, és lehetővé teszik, hogy az eredmény megőrizze a forrás relációkban tárolt összes információt.

Az utolsó két alfejezet a relációkalkulus mögött meghúzódó alapfogalmakat tárgyalta. A relációkalkulus a matematikai logika egyik ágán, a predikátumkalkuluson alapul. Két típusát különböztetjük meg: (1) a rekord alapú relációkalkulust, amely rekordváltozókat használ, ami a relációk rekordjain (sorain) fut végig, és (2) a tartomány alapú relációkalkulust, amely tartományváltozókat használ, amik a tartományokat (a reláció oszlopait) járják be. A relációkalkulusban a lekérdezéseket egyetlen deklaratív utasítással adjuk meg anélkül, hogy a lekérdezés eredményének meghatározására bármilyen módszert vagy műveletsorozatot megadnánk. Emiatt a relációkalkulust gyakran magasabb szintű nyelvnek tekintjük, mint a relációalgebrát, hiszen a relációkalkulusbeli kifejezés azt mondja meg, hogy mit akarunk lekérdezni, tekintet nélkül arra, hogy hogyan hajtódik végre a lekérdezés.

Megadtuk a relációkalkulusbeli lekérdezések szintaxisát mind rekord-, mind tartományváltozók használatával. Bemutattuk a lekérdezési gráfokat mint a relációkalkulusban felírt lekérdezések belső reprezentációját. Szintén tárgyaltunk az egzisztenciális kvantorról (∃) és az univerzális kvantorról (∀). Láttuk, hogy a relációkalkulusbeli változók kötötté válnak ezen kvantorok használatával. Részletesen ismertettük, hogyan kell univerzális kvantort tartalmazó lekérdezéseket írni, és felvetettük a véges eredményt szolgáltató biztonságos lekérdezések definiálásának problémáját. Bemutattuk az univerzális kvantorok egzisztenciális kvantorrokká történő átalakításának, valamint az ellentétes irányú átalakításnak a szabályait. A kvantorok nagyban megnövelik a relációkalkulus kifejezőerejét, és általuk a relációkalkulus ekvivalenssé válik a relációalgebrával. Az alap relációkalkulusban nincs megfelelője a csoportosításnak és az összesítő függvényeknek, bár már születtek javaslatok ilyen irányú kiterjesztésekre.