Adatbázis rendszerek I Relációs kalkulus Általános Informatikai Tsz. Dr. Kovács László
Relációs kalkulus KL Információ lekérdezés újabb módjai: - a lekérdezéseknél a relációs algebra ‘hogyan törénjen’ megadása helyett, az eredmény jellemzését adjuk meg - relációs algebra: prescriptive - relációs kalkulus: descriptive - logikai formalizmusra épít - deduktív rendszerek - NLI
Relációs kalkulus KL Nyelvi elemek Az eredmény jellemzését kell leírni Háttér: predikátum kalkulusok elmélete AUTO(rsz, tipus, tulaj, ar) EMBER(kod, nev) Azon ember rekordok kellenek, melyhez létezik olyan autórekord, melyben a tipus mező Fiat és a tulajmező megegyezik az ember kód mezőjével x,y,z: auto(x,”Fiat”,y,z)
Relációs kalkulus KL Nyelvi elemek 1. változók (x,y,t,…) 2. konstansok (‘Peter’, 23,…) 3. predikátumok (szeret, rendel,…) 4. logikai operátorok : , , 5. aritmetikai operátorok :, =, <>, … 6. kvantorok : , x,y,z,t: auto(x,”Fiat”,y,z) ember(z,t) t > 23
Relációs kalkulus KL Helyes formátumú kifejezések (wff) - atomi wff: 1. P (a, b,..) ahol P predikátum és a,b változó vagy konstans 2. a b, ahol a,b változó vagy konstans, és relációs operátor - öszetett wff: 1. F1 F2 2. F1 F2 3. F1 4. (F1) 5. x (F1) 6. x (F1)
Relációs kalkulus KL Változók típusa Egy wff -en belül lehet: kötött és szabad változó egy x változó kötött, ha egy kvantor kapcsolódik hozzá 1. egy atomi wff-ben szereplő változó szabad 2. az 5. és 6. pontban adott wff-ben szereplő x változó kötött A kötött változók jelentése a mögötte álló részre lokalizált, s más szimbólummal helyettesíthető. y,z: auto(x,”Fiat”,y,z) t,z: auto(x,”Fiat”,t,z)
Relációs kalkulus KL Kifejezések értéke Minden wff-hez egyértelmű logikai érték (t,f) tartozik. Minden predikátum egy relációnak felel meg Az előfordulás az igaz értékű helyettesítéseket adja meg aruvevodarab almapeter23 almazoli12 korteferi32 kortepeter21 Eladás Eladás(‘alma’,’peter’,23) x,z : Eladás(x,’Péter’,z) x,z : Eladás(x,’Péter’,z)
Relációs kalkulus KL Változók tartalma A változók helyettesíthetnek - domaint, mezőt - tuple-t, rekordot ennek megfelelően beszélhetünk - DRC : domain relational calculus - TRC : tuple relational calculus AUTO(rsz, tipus, tulaj, ar) x,z : Auto(x,’Fiat’,2,z) z > 23 x : Auto(x) x.ar > 23
Relációs kalkulus KL AUTO(rsz, tipus, tulaj, ar) {x | z : Auto(x,’Fiat’,2,z) z > 23} {x | Auto(x) x.ar > 23} Lekérdezés { x 1,x 2,… | F(x 1,x 2,…) } ahol x 1,x 2 az F wff összes szabad változója eredménye: az x 1,x 2,… azon helyettesítési értékei, melyre az F(x 1,x 2,…) igaz értéket ad
Relációs kalkulus KL Minta lekérdezések dolgozo (azon, nev, beosztas, kor, osztaly) osztaly (azon, cim, fonok) - { t.azon | dolgozo(t) t.kor > 30 } - { t.nev | dolgozo(t) o ( osztaly(o) o.azon = t.osztaly o.cim = ‘berugy’)} - { t.beosztas | dolgozo(t) o ( osztaly(o) k ( dolgozo(k) k.osztaly = o.azon k.beosztas = t.beosztas)) }
Relációs kalkulus KL Minta lekérdezések dolgozo (azon, nev, beosztas, kor, osztaly) osztaly (azon, cim, fonok) - { a | n,b,k,o (dolgozo(a,n,b,k,o) k > 30) } - { n | a,b,k,o,f (dolgozo(a,n,b,k,o) osztaly(o, ‘berugy’,f))} - { b | o ( f,c (osztaly(o,c,f) : a,n,k (dolgozo(a,n,b,k,o))) }
Relációs kalkulus KL Számosság problémája Safe kifejezés: olyan wff, melynek eredménye garantáltan véges halmazt állit elő. A safe DRC és DRC rendszerek ugyanolyan kifejező erővel rendelkeznek, mint a relációs algebra { t | dolgozo(t) }
KL Relációs kalkulus Relációs kalkulus konverzója 1. Tuple változók domainjai relációk 2. Elemi szelekció relációra vonatkozó szelekció 3. Relációk Descartes szorzata 4. Összetett szelekció Joinra vonatkozó szelekció 5. kvantor projekció 6. kvantor osztás 7. Projekció
KL Relációs kalkulus Relációs kalkulus konverzója {t.x | A(t) t.x>5 y(B(y) y.z = t.v)} 1. A,B 2. x>5 (A) 3. x>5 (A) B 4. z=v ( x>5 (A) B) 5. A ( z=v ( x>5 (A) B)) x A ( z=v ( x>5 (A) B)) SELECT x FROM A,B WHERE x>5 AND z=v
KL Relációs algebra korlátai Hierarchikus SELECT DOLGOZO(kod, nev, osztaly, fonok) Egy X kódú dolgozó közvetlen beosztottjai: SELECT * FROM dolgozo WHERE fonok = x; Egy X kódú dolgozó összes beosztottja: SELECT * FROM dolgozo WHERE fonok = x UNION SELECT * FROM dolgozo WHERE fonok IN (SELECT kod FROM dolgozo WHERE fonok = x) UNION …..
Relációs algebra korlátai KL Hierarchikus SELECT Tetszőleges mélységbe nem tudunk lemenni egyedi megoldások SELECT … FROM tabla START WITH feltetel CONNECT BY PRIOR m1 = m2 szülő és gyerek irány megkülönböztetése nem része a relációs algebrának
Relációs algebra korlátai KL Hierarchikus SELECT DOLGOZO(kod, nev, osztaly, fonok) Egy X kódú dolgozó összes beosztottja: SELECT nev, osztaly FROM dolgozo START WITH kod = x CONNECT BY PRIOR kod = fonok LEVEL pszeudó mező, mint pl. ROWID USER
Relációs algebra korlátai KL NULL érték kezelése IS NULL nem érték, állapot SELECT * FROM DOLGOZO WHERE kor > 25 SELECT * FROM DOLGOZO WHERE NOT(kor > 25) NEVKOR PETER ANNA ZOLTAN 37 23
Relációs algebra korlátai KL NULL érték kezelése 3 értékű logika ANDT FU T T FU F F F F U U F U OR T FU T T TT F T F U U T U U NOTT FU N TU Nem teljesül a kizárt harmadik elve