5.3. Logika a relációkhoz

Hasonló dokumentumok
Relációs algebra 1.rész alapok

ABR ( Adatbázisrendszerek) 1. Előadás : Műveletek a relációs medellben

ABR ( Adatbázisrendszerek) 2. Előadás : Műveletek a relációs modellben

Databases 1. Relációs algebra és nemrekurzív Datalog

ADATBÁZISOK ELMÉLETE 5. ELŐADÁS 3/22. Az F formula: ahol A, B attribútumok, c érték (konstans), θ {<, >, =,,, } Példa:

. Vegyük az R U 8 uniót, használjunk a leíráshoz két szabályt és n különbözo

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Lekérdezések az SQL-ben 1.rész

Lekérdezések az SQL-ben 1.rész

2.4. Egy algebrai lekérdező nyelv

Mveletek a relációs modellben. A felhasználónak szinte állandó jelleggel szüksége van az adatbázisban eltárolt adatok egy részére.

Adatbázis rendszerek 2. előadás. Relációs algebra

Adatbázis rendszerek 7. Matematikai rendszer amely foglal magában:

Adatbázisok 1. Kósa Balázs gyakorlata alapján Készítette: Nagy Krisztián. 1. gyakorlat

Datalog: logikai alapú lekérdezı nyelv

Relációs adatmodell. Adatbázisok használata

Adatbázis rendszerek 2. előadás. Relációs algebra

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

KOVÁCS BÉLA, MATEMATIKA I.

Relációs algebra 1.rész

SQL bevezetés. Select-From-Where záradékok Több relációt tartalmazó lekérdezések Alkérdések

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Adatbázis Rendszerek

Datalog: logikai alapú lekérdezı nyelv

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Diszkrét matematika II., 8. előadás. Vektorterek

Sor és oszlopkalkulus

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar

Algebrai és logikai lekérdezo nyelvek

3.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Magas szintű adatmodellek Egyed/kapcsolat modell I.

KOVÁCS BÉLA, MATEMATIKA I.

Komputeralgebra rendszerek

Adatbázisok elmélete 9. előadás

Elsőrendű logika szintaktikája és szemantikája. Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1

A relációs algebra egy speciális algebra, amely néhány egyszerű, de hathatós. operandusok. Egy reláció megadható a nevével vagy közvetlenül, sorainak

2019/02/11 10:01 1/10 Logika

Komputeralgebra rendszerek

2.4. Egy algebrai lekérdezo nyelv

1. Logikailag ekvivalens

Matematika szigorlat június 17. Neptun kód:

Elsőrendű logika. Mesterséges intelligencia március 28.

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

Adatbázisok tavaszi félév Vizsgatételsor

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

2.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Logika es sz am ıt aselm elet I. r esz Logika Negyedik el oad as 1/26

Adatbázisok elmélete 4. előadás

Diszkrét matematika 2. estis képzés

Csima Judit október 24.

Az informatika logikai alapjai

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

3. Lineáris differenciálegyenletek

7. Előadás tartalma A relációs adatmodell

Adatbázisrendszerek 7. előadás: Az ER modell március 20.

Matematikai logika és halmazelmélet

7. Gyakorlat A relációs adatmodell műveleti része

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Lekérdezések az SQL-ben 2.rész

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Alap fatranszformátorok II

modell, amiben csak bináris sok-egy kapcsolatok (link, memberowner,

Programok értelmezése

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Adatbázisok elmélete 9. előadás

KOVÁCS BÉLA, MATEMATIKA I.

Válogatott fejezetek a logikai programozásból ASP. Answer Set Programming Kelemen Attila

BOOLE ALGEBRA Logika: A konjunkció és diszjunkció tulajdonságai

Országos Középiskolai Tanulmányi Verseny 2009/2010 Matematika I. kategória (SZAKKÖZÉPISKOLA) 2. forduló feladatainak megoldása

Tankönyv példák kidolgozása

Predikátumkalkulus. 1. Bevezet. 2. Predikátumkalkulus, formalizálás. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák.

Excel 2010 függvények

A matematika nyelvér l bevezetés

WHERE záradék (további lehetıségek) SQL specialitások, nem írhatók át relációs algebrába: LIKE. NULL értékek. Az ismeretlen (unknown) igazságérték

2. Logika gyakorlat Függvények és a teljes indukció

Adatbázisok elmélete

Adatbázisok-I. előadás dr. Hajas Csilla (ELTE IK)

Adatbázismodellek. 1. ábra Hierarchikus modell

Predikátumkalkulus. Predikátumkalkulus alapfogalmai, formalizálás, tagadás, logikailag igaz formulák. Vizsgáljuk meg a következ két kijelentést.

Adatbázisok elmélete 9. előadás

Kvadratikus alakok és euklideszi terek (előadásvázlat, október 5.) Maróti Miklós, Kátai-Urbán Kamilla

Komputeralgebra Rendszerek

Automaták és formális nyelvek

Matematika alapjai; Feladatok

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Adatbázisok elmélete 12. előadás

Relációs algebra 2.rész példák

1. tétel Halmazok és halmazok számossága. Halmazműveletek és logikai műveletek kapcsolata.

Struktúra nélküli adatszerkezetek

Egyenletek, egyenlőtlenségek VII.

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

Diszkrét matematika I.

17. előadás: Vektorok a térben

Nagy Gábor compalg.inf.elte.hu/ nagy

Ítéletkalkulus. 1. Bevezet. 2. Ítéletkalkulus

Mohó algoritmusok. Példa:

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

Átírás:

236 5. Algebrai és logikai lekérdező nyelvek! 5.2.3. feladat. Az egyik dolog, amit az eredeti 2.4.5. alfejezetben definiált vetítési művelettel szemben elérhetünk a kiterjesztett vetítési művelet segítségével, hogy megduplázhassunk oszlopokat. Például, ha R(A, B) egy reláció, akkor π A,A (R) létrehoz egy (a,a) sort minden R-beli (a,b) sorra. Elvégezhető-e ez a művelet a klasszikus relációs algebra 2.4. alfejezetben leírt műveleteinek segítségével? Indokolja válaszát. 5.3. Logika a relációkhoz Az algebrán alapuló absztrakt lekérdező nyelvek alternatívájaként logikai forma is használható a lekérdezések leírására. A logikai lekérdezések nyelve a Datalog ( database logic ), amely if-then szabályokat tartalmaz. Minden szabály azt az elvet fejezi ki, hogy az egyes relációkban a sorok bizonyos kombinációjából következtethetünk arra, hogy valamilyen másik sornak szerepelnie kell valamilyen másik relációban vagy egy lekérdezés eredményében. 5.3.1. Predikátumok és atomok Datalogban a relációkat predikátumokkal reprezentáljuk. Minden predikátum rögzített számú argumentummal rendelkezik és egy predikátumot, amelyet az argumentumai követnek, atomnak nevezünk. Az atomok szintaxisa ugyanolyan, mint egy függvényhívásé a hagyományos programozási nyelvekben; például P(x 1,x 2,...,x n ) egy atom, amely tartalmazza a P predikátumot az x 1,x 2,...,x n argumentumokkal. Egy predikátum tulajdonképpen egy függvénynek a neve, ami logikai értékkel tér vissza. Ha R egy reláció valamilyen rögzített sorrendben lévő n argumentummal, akkor R-et használhatjuk, mint erre a relációra hivatkozó predikátumnevet. Az R(a 1,a 2,...,a n ) atom értéke IGAZ (TRUE), ha (a 1,a 2,...,a n ) az R egy sora. Egyébként az értéke HAMIS (FALSE). Notice that a relation defined by a predicate can be assumed to be a set. In Section 5.3.6, we shall discuss how it is possible to extend Datalog to bags. However, outside that section, you should assume in connection with Datalog that relations are sets. 5.16. példa. Legyen R egy reláció A B 1 2 3 4 Ekkor R(1,2) és R(3,4) is igaz. Viszont x és y bármilyen más értékére R(x,y) hamis. Egy predikátumnak lehetnek változói, valamint konstansai argumentumként. Ha egy atomnak egy vagy több argumentuma változó, akkor az egy logikai

5.3. Logika a relációkhoz 237 visszatérési értékű függvény, amely ezen változókra vett értékekre IGAZ vagy HAMIS értékkel tér vissza. 5.17. példa. Ha R a 5.16. példában használt predikátum, akkor R(x, y) egy függvény, amely azt fejezi ki bármely x-re és y-ra, hogy (x,y) az R reláció egy sora-e vagy sem. Az R jelen előfordulására a 5.16. példában R(x,y) IGAZ értékkel tér vissza, ha 1. x = 1 és y = 2, illetve 2. x = 3 és y = 4; és HAMIS-sal egyébként. Egy másik példa az R(1, z) atom, amely IGAZ-zal tér vissza, ha z = 2, és HAMIS-sal egyébként. 5.3.2. Aritmetikai atomok A Datalogban létezik egy másik fajta fontos atom, az aritmetikai atom. Ez a fajta atom tulajdonképpen két aritmetikai kifejezés összehasonlítása, mint például x < y vagy x + 1 y + 4 z. A kiemelés kedvéért az 5.3.1. alfejezetben bevezetett atomokat relációs atomok nak nevezzük (mindkettőt atomok -nak nevezzük). Figyeljük meg, hogy mind az aritmetikai és mind a relációs atomok argumentumaikban kaphatnak értéket, ezek az atomban előforduló változók értékei, és az atomok logikai visszatérési értékkel rendelkeznek. Valójában az aritmetikai összehasonlítások, mint a < vagy tulajdonképpen olyan relációk, amelyek tartalmazzák az összes igaz párt. Azaz a < relációt úgy képzelhetjük el, mint amely tartalmaz minden olyan sort mint például az (1,2) vagy a ( 1,5, 65,4), amelynek az első komponense kisebb a másodiknál. Ne feledjük, hogy az adatbázis-relációk mindig végesek és általában időről időre változnak. Ezzel ellentétben az olyan aritmetikai összehasonlításból származó relációk, mint például a <, végtelenek és tartalmuk is változatlan. 5.3.3. Datalog-szabályok és lekérdezések A Datalogban az 5.2. alfejezetben bemutatott klasszikus relációs algebrához hasonló műveletek leírása szabályok kal történik, amelyek a következőkből épülnek fel: 1. Egy fejnek nevezett relációs atom. 2. Ezt követi a szimbólum, amelyet gyakran if -nek ( ha ) olvasunk ki. 3. Ez után következik a törzs, amely egy vagy több részcélnak nevezett atomból áll. A részcélok lehetnek relációs vagy aritmetikai atomok. A részcélokat AND ( és ) szócskával kapcsoljuk össze, és a részcélok elé, ha szükséges, kitehetjük a tagadást jelentő NOT logikai műveletet is.

238 5. Algebrai és logikai lekérdező nyelvek 5.18. példa. A következő Datalog-szabály: HosszúFilm(c,é) Filmek(c,é,h,sz???,s,p) AND h 100 a hosszú filmek halmazát határozza meg (a legalább 100 percnél hosszabbakat). A fenti szabályban a standard Film relációnkra hivatkozunk, amelynek sémája a következő: Filmek(cím, év, hossz, színes (nem műfaj???), stúdiónév, producerazon) A szabály feje a HosszúFilm(c, é) atom. A szabály törzse két részcélból áll: 1. Az első részcél a Filmek nevű predikátumból, mégpedig a Filmek reláció hat attribútumának megfelelő hat argumentumból áll. Az argumentumok különböző nevű változók: c a cím komponens, é az év komponens, h a hossz komponens stb. Ezt a részcélt tekinthetjük úgy is, mint a Filmek reláció aktuális előfordulásának (c, é, h, sz, s, p) sorát. Pontosabban fogalmazva, a Filmek(c, é, h, sz, s, p) akkor igaz, ha a hat darab változó értéke megegyezik a Filmek reláció egy sorának hat komponensével. 2. A második részcél, l 100, akkor IGAZ, ha a Filmek reláció megfelelő sorában a hossz komponens értéke legalább 100. Az egész szabályt pedig a következőképpen tekinthetjük: a HosszúFilm(c, é) akkor IGAZ, ha létezik a Filmek relációnak egy olyan sora, amelyre teljesülnek a következők: a) A cím és év attribútumoknak megfelelő két első komponensértéke c és é. b) A hossz attribútumnak megfelelő harmadik komponens a h, értéke legalább 100. c) A negyedik, ötödik és hatodik komponensek értéke tetszőleges. Figyeljük meg, hogy ez a szabály ekvivalens a következő relációs algebrai megfeleltetésnek: HosszúFilm := π cím,év ( σhossz 100 (Filmek) ) a fenti megfeleltetés jobb oldala egy relációs algebrai kifejezés. Datalogban egy lekérdezés egy vagy több szabály együttese. Ha a szabály fej részében csak egy reláció van, akkor ezen reláció kiértékelése lesz a lekérdezés eredménye. Ekképpen az 5.18. példában megfogalmazott lekérdezés eredménye a HosszúFilm reláció. Ha egynél több relációt tartalmaznak a szabályfejek, akkor ezen relációk egyike lesz a lekérdezés eredménye, míg a maradék az eredmény megfogalmazásában segít. Meg kell jelölnünk, hogy melyik reláció adja meg a lekérdezésre a választ. Ezt megtehetjük például úgy, hogy ennek a relációnak speciális nevet adunk, például azt, hogy Válasz.

5.3. Logika a relációkhoz 239 Név nélküli (anonymus) változók A Datalog-szabályokban gyakran találhatók olyan változók, amelyek csak egyszer szerepelnek az adott szabályban. Éppen ezért teljesen mindegy, hogy ezeknek a változóknak mi a nevük. A változó neve akkor fontos, ha a változó többször is megjelenik a szabályban, hiszen ekkor a változó második, illetve további előfordulásakor is tudnunk kell, hogy ugyanarról a változóról van-e szó. Ezért megegyezés szerint azokat a változókat, amelyek csak egyszer jelennek meg, jelölhetjük egy aláhúzás jellel. Tehát egy atomban használhatunk _ jelet argumentumként. Az _ többszöri előfordulása különböző változókra utal, soha nem utalhat ugyanarra a változóra. Például, az 5.18. példában használt szabály felírható a következő módon: HosszúFilm(c,é) Filmek(c,é,h,_,_,_) AND h 100 Az sz, s, p változók csak egyszer szerepelnek a szabályban, ezért ezek helyettesíthetők az aláhúzás jellel. A többi változót nem helyettesíthetjük, hiszen mindegyik kétszer szerepel a szabályban. 5.3.4. A Datalog-szabályok jelentése Az 5.18. példa útmutatásul szolgált a Datalog-szabályok jelentésére vonatkozóan. Ha pontosabb képet akarunk kapni, képzeljük el, hogy a szabályban szereplő változók felveszik az összes lehetséges értéket. Amikor a változók értékei igazzá teszik az összes részcélt, akkor megkapjuk, hogy mi a fej értéke az aktuális változókra, és hozzáadjuk a kapott sort a fejben szereplő predikátumnak megfelelő relációhoz. Képzeljük el például, hogy az 5.18. példának mind a hat változója felveszi az összes lehetséges értéket. Az összes részcél csak akkor lehet igaz, ha a (c,é,h,sz,s,p) értékek a megadott sorrendben a Filmek reláció egy sorát képezik. Sőt, mivel a h 100 részcélnak is teljesülni kell, ezért a keresett sorban a hossz komponensnek megfelelő h változó értéke legalább 100 kell legyen. Ha ilyen értékkombinációt találunk, akkor a (c, é) sort betesszük a fejnek megfelelő HosszúFilm relációba. Ha biztosítani szeretnénk, hogy egy szabály kiértékelésekor kapott reláció véges legyen, illetve ha értelmezni szeretnénk az aritmetikai és a negált részcélok at is, akkor bizonyos megszorításokat kell tennünk a változókra nézve. (Negált részcélnak nevezzük azt a részcélt, amely előtt NOT szerepel.) Az ilyen megszorítást biztonságossági feltétel nek nevezzük, és a következőképpen fogalmazhatjuk meg: A szabályban szereplő valamennyi változónak szerepelnie kell valamely nem negált, relációs részcélban is.

240 5. Algebrai és logikai lekérdező nyelvek Ez azt jelenti, hogy a fejben, a negált relációs részcélokban és az aritmetikai részcélokban szereplő valamennyi változónak szerepelnie kell valamely nem negált relációs részcélban is. 5.19. példa. Tekintsük az 5.18. példában megfogalmazott szabályt: HosszúFilm(c,é) Filmek(c,é,h,_,_,_) AND h 100 Az első részcél egy nem negált relációs részcél, és ráadásul tartalmazza a szabályban szereplő összes változót. A fejben szereplő két változó (c, é) szerepel az első részcél törzsében is. Ehhez hasonlóan, az aritmetikai részcélban szereplő h változó pedig megjelenik az első részcélban is. 5.20. példa. Az alábbi szabály három dologban is megsérti a biztonságossági feltételt: P(x,y) Q(x,z) AND NOT R(w,x,z) AND x<y 1. Az y változó szerepel a fejben, de nem jelenik meg egyetlen nem negált relációs részcélban sem. Figyeljük meg, hogy az y ugyan megjelenik az x < y aritmetikai részcélban, de ettől a lehetséges y értékek halmaza nem lesz véges. Ha találunk a w, x és z változókhoz olyan a, b és c értékeket, amelyekre az első két részcél teljesül, a fejhez rendelt P relációhoz még mindig végtelen sok olyan (b,d) sor lesz hozzáadható, amelyre igaz, hogy d > b. 2. A w változó megjelenik egy negált relációs részcélban, viszont nem jelenik meg egyetlen nem negált relációs részcélban sem. 3. Az y változó megjelenik egy aritmetikai részcélban, viszont nem jelenik meg egyetlen nem negált relációs részcélban sem. Látható tehát, hogy ez a szabály nem biztonságos, éppen ezért Datalogban nem használható. A szabályok jelentését más módon is meghatározhatjuk. Ahelyett, hogy vennénk a változók összes lehetséges értékét, a nem negált relációs részcélok relációinak soraiból álló halmazt vegyük csak. A sorok olyan megfeleltetését, amely valamennyi nem negált részcélra nézve ugyanazt az értéket felelteti meg az ugyanolyan nevű változóknak, konzisztens megfeleltetésnek nevezzük. Figyeljük meg, hogy a biztonságosság miatt konzisztens megfeleltetéskor minden egyes változóhoz egy érték tartozik. Minden egyes konzisztens megfeleltetéskor kiértékeljük a negált relációs részcélokat és az aritmetikai részcélokat, hogy megbizonyosodhassunk arról, hogy a változókhoz hozzárendelt értékek kielégítik-e ezeket a részcélokat. Ne feledjük, hogy egy negált részcél akkor igaz, ha a részcél atomja hamis. Ha mindegyik részcél igaz, akkor vesszük a fejben szereplő változók értékeiből álló sort, és ezt a sort hozzáadjuk a fej predikátumához rendelt relációhoz.

5.3. Logika a relációkhoz 241 5.21. példa. Tekintsük a következő Datalog-szabályt: P(x,y) Q(x,z) AND R(z,y) AND NOT Q(x,y) Legyen a Q relációnak két sora, az (1,2) és az (1,3). Az R reláció sorai legyenek (2,3) és (3,1). Két nem negált relációs részcélunk van, a Q(x,z) és az R(z,y). Ezekhez a részcélokhoz vennünk kell a Q és R relációk sorainak összes lehetséges megfeleltetési kombinációját. Az 5.8. ábrán látható táblázat tartalmazza mind a négy lehetséges kombinációt. A Q(x,z) Az R(z,y) Konzisztens a Igaz a NOT Q(x,y) A fej sorai sorai megfeleltetés? részcél? eredménye 1) (1, 2) (2, 3) Igen Nem 2) (1, 2) (3, 1) Nem; z = 2, 3 Irreleváns 3) (1, 3) (2, 3) Nem; z = 3, 2 Irreleváns 4) (1, 3) (3, 1) Igen Igen P(1, 1) 5.8. ábra. A sorok összes lehetséges megfeleltetése a Q(x, z) és R(z, y) részcélokhoz Az 5.8. ábrán látható második és harmadik megfeleltetés nem konzisztens, mert mindegyik két különböző értéket feleltet meg a z változónak. Ezért ezzel a két megfeleltetéssel nem kell tovább foglalkoznunk. Az első megfeleltetésben a Q(x, z) részcélhoz az (1, 2) sort feleltettük meg, az R(z, y) részcélhoz pedig a (2, 3) sort. Ez a megfeleltetés konzisztens, hiszen akármelyik változót tekintjük, a megfeleltetés során egyetlen értéket kapott. Az x változó az 1, az y változó a 3 és a z változó a 2 értéket kapta. Ekképpen hozzákezdhetünk a nem negált, relációs részcéloktól különböző részcélok vizsgálatához. Csak egyetlen ilyen részcélunk van, a NOT Q(x,y). A változók értékét behelyettesítve a NOT Q(1,3) kifejezést kapjuk, ami hamis, hiszen az (1,3) sor benne van a Q relációban. Tehát ez a részcél hamis és így nem keletkezett olyan sor, amelyre a fej igaz lenne (1). Az utolsó megfeleltetés (4) szintén konzisztens, az x, y, z változók az 1, 1, 3 értékeket kapták. A NOT Q(x,y) részcél ezúttal NOT Q(1,1) kifejezéssé alakul. Mivel az (1,1) nem sora a Q relációnak, tehát ez a részcél ezúttal igaz. Ezután a fejben szereplő változókba behelyettesítjük a megfelelő értékeket, és a P(1, 1) kifejezést kapjuk. Az (1, 1) sort hozzáadjuk a P predikátumhoz rendelt relációhoz. Ily módon a sorok összes lehetséges megfeleltetését megvizsgáltuk és a P relációba csak ez az egy sor került be. 5.3.5. Extenzionális és intenzionális predikátumok Ajánlatos különbséget tennünk az alábbi kétfajta predikátum között: extenzionális predikátumok, amelyekhez rendelt relációk megtalálhatók az adatbázisban, és

242 5. Algebrai és logikai lekérdező nyelvek intenzionális predikátumok, amelyekhez rendelt relációkat egy vagy több Datalog-szabály kiértékelése alapján kapjuk meg. Ez a különbség ugyanolyan, mint a relációs algebrai kifejezések operandusai és a relációs algebrai kifejezéssel számított relációk közötti eltérés. A relációs algebrai kifejezések operandusai extenzionálisak, mivel a hozzájuk tartozó relációk aktuális előfordulásaival (extenzióival) vannak definiálva. A relációs algebrai kifejezéssel számított relációk pedig legyenek akár néhány részkifejezéshez tartozó végleges vagy köztes eredmények intenzionálisak, hiszen tulajdonképpen a program írója hozta létre őket. Datalog-szabályok esetén az extenzionális, illetve intenzionális predikátumokhoz rendelt relációkat extenzionális, illetve intenzionális relációknak nevezzük. Az intenzionális predikátumokra, illetve relációkra történő hivatkozás esetén használatos az IDB rövidítés. (Ez a rövidítés az intensional database angol kifejezésből ered.) Az EDB rövidítést az extenzionális predikátumok, illetve relációk esetén használjuk. (Az EDB az extensional database angol kifejezésből ered.) Így az 5.18. példában a Filmek reláció egy EDB-reláció és a Filmek predikátum szintén EDB-predikátum. A HosszúFilm reláció és a HosszúFilm predikátum pedig egyaránt intenzionális. Egy EDB-predikátum soha nem jelenhet meg egy szabály fejében sem, csak a törzsében. Az IDB-predikátumok szerepelhetnek a szabály fejében, a törzsében vagy mindkettőben egyaránt. Az is megszokott, hogy több szabály fejében is szerepeljen ugyanaz a predikátum. Az 5.24. példában két reláció egyesítését számoljuk ki ily módon. Több intenzionális predikátum használatával az EDB-relációkból egyre bonyolultabb kifejezéseket építhetünk fel. Ez a folyamat hasonló a relációs algebrai kifejezések operátorokkal történő felépítéséhez. 5.3.6. Multihalmazokra vonatkozó Datalog-szabályok A Datalog magában foglal egy halmazlogikát. Viszont amíg nincs negált relációs részcél, addig a Datalog-szabályok kiértékelésének elve elfogadható multihalmazokra nézve is, ha a relációk halmazok. Fogalmi szinten könnyebben használható a Datalog-szabályok kiértékelésének második megközelítése (amelyet az 5.3.4. résznél mutattunk be), amikor a relációk multihalmazok. Emlékeztetőként, ezen technika magában foglalta az összes nem negált relációs részcél vizsgálatát, illetve a reláció összes sorának a megfelelő részcél predikátumába történő behelyettesítését. Ha a részcélokból kiválasztott sorok minden változóra konzisztens értéket adnak és az aritmetikai részcélok is teljesülnek 1, akkor megnézhetjük, hogy ezen helyettesítési értékekre a fej mit ad. Az eredménysorokat hozzáadjuk a fejhez tartozó relációhoz. 1 Megjegyezve, hogy a szabályban nem szerepelhet negált, relációs részcél. Ugyanis a multihalmazos modellben nincs világosan definiálva a negált, relációs részcélt tartalmazó Datalogszabályok jelentése.

5.3. Logika a relációkhoz 243 Mivel most multihalmazokkal foglalkozunk, most nem kell a fejben szereplő duplikátumokat megszüntetnünk. Sőt, mivel az összes részcélra a sorok minden lehetséges kombinációját figyelembe vesszük, ezért egy sor n-szeres előfordulását egy részcélhoz tartozó relációban n-szer tekintettük a részcél sorának a sorok összes kombinációjával együtt a többi részcélra nézve. 5.22. példa. Tekintsük az alábbi szabályt: ahol R(A,B) reláció sorai: és S(B,C) sorai: H(x,z) R(x,y) AND S(y,z) A B 1 2 1 2 B C 2 3 4 5 4 5 Az egyetlen eset, amikor konzisztens sor helyettesítését kapjuk a részcélokra (egy helyettesítés, amelyben y értéke minden részcélra ugyanaz), amikor az első részcél helyettesítése az R-ből származó (1, 2) sor, a második részcél helyettesítése pedig az S-ből származó (2,3) sor. Mivel (1,2) kétszer fordul elő R-ben és (2, 3) pedig egyszer S-ben, így a soroknak két helyettesítését kapjuk, melyek az x = 1, y = 2, z = 3 változó helyettesítést szolgáltatják. A fejhez tartozó (x,y) sor minden behelyettesítésre (1,3). Az (1,3) sor tehát kétszer fordul elő a fejhez tartozó H relációban, és más sora nem is lesz. Azaz az alábbi reláció lesz a szabályból kapott fejhez tartozó reláció: 1 3 1 3 Általánosan úgy lehet megfogalmazni, hogy ha az (1, 2) sor n-szer fordul elő R-ben és a (2,3) sor pedig m-szer fordul elő S-ben, akkor az (1,3) sor nm-szer fordul elő a H-ban. Ha egy relációt több szabály ír le, akkor az eredmény a szabályok által előállított összes sorból képzett multihalmazok uniója. 5.23. példa. Tekintsük a H relációt, amelyet két szabállyal definiálunk: H(x,y) S(x,y) AND x>1 H(x,y) S(x,y) AND y<5

244 5. Algebrai és logikai lekérdező nyelvek ahol S(B, C) reláció olyan, mint az 5.22. példában; azaz S = {(2,3), (4,5), (4,5)}. Az első szabály S mindhárom sorát H-ba teszi, mivel mindegyik sor első komponense nagyobb 1-nél. A második szabály alapján csak a (2,3) sor kerül be H-ba, mivel (4,5)-re nem teljesül, hogy y < 5. Azaz a H eredményreláció két darab (2,3), illetve két darab (4,5) sort tartalmaz. 5.3.7. Feladatok 5.3.1. feladat. Írjuk fel Datalogban a 2.4.1. feladat valamennyi lekérdezését. Kizárólag biztonságos szabályokat használjunk. A bonyolultabb relációs algebrai részkifejezések megfogalmazásához használjunk IDB-predikátumokat. 5.3.2. feladat. Írjuk fel Datalogban a 2.4.3. feladat valamennyi lekérdezését. Itt is használhatunk IDB-predikátumokat, és most is kizárólag biztonságos szabályokkal dolgozzunk.!! 5.3.3. feladat. Ahhoz, hogy a fejhez rendelt reláció véges legyen abban az esetben, ha mindegyik részcél predikátumához rendelt reláció véges, a biztonságos Datalog-szabályokra adott feltétel elégséges, viszont túl erős. Adjunk példát olyan Datalog-szabályra, amely nem biztonságos és mégis teljesíti, hogy a relációs predikátumokhoz véges relációkat hozzárendelve a fejhez rendelt reláció is véges. 5.4. A relációs algebra és a Datalog A 2.4. alfejezetben szereplő relációs algebrai operátorok mindegyike kifejezhető egy vagy több Datalog-szabály segítségével. Ebben az alfejezetben valamennyi operátort egyenként megvizsgáljuk. Meg kell vizsgálnunk, hogyan kombinálhatjuk a Datalog-szabályokat összetettebb algebrai kifejezések leírására. Az is igaz lesz, hogy bármely biztonságos Datalog-szabály kifejezhető lesz relációs algebrában is, habár mellőzni fogjuk ennek a bizonyítását. Ezek ellenére a Dataloglekérdezések nagyobb kifejezőerővel bírnak, mint a relációs algebra, ha megengedjük néhány szabály kölcsönhatását is. Ebben az esetben kifejezhetjük a rekurziót is, amelyre a relációs algebrában nem volt lehetőségünk. (Lásd az 5.35. példánál.) 5.4.1. Boole-műveletek A relációs algebra Boole-műveletei (az unió, a metszet és a halmazkülönbség) könnyen kifejezhetők Datalogban. Használjuk a következő három módszert a leíráshoz. Az R és az S relációkat ugyanannyi attribútummal rendelkezőnek tekintjük, számuk legyen n. A szükséges szabályok leírását minden esetben a Válasz nevű fejpredikátum használatával oldjuk meg. Tegyük ezt annak ellenére, hogy bármilyen nevet használhatnánk az eredmény leírására, és, hogy különböző műveletek eredményéhez különböző predikátumokat kellene választanunk.