Rekurzió a Datalogban és az SQL3-ban

Hasonló dokumentumok
Adatbázisok 1. Rekurzió a Datalogban és SQL-99

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

Logikai lekérdezı nyelv: Datalog Rekurzió a Datalogban és az SQL-ben

Datalog: logikai alapú lekérdezı nyelv

SQL/PSM kurzorok rész

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

7.előadáshoz kieg.: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Datalog: logikai alapú lekérdezı nyelv

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

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

SQL DDL-2 (aktív elemek) triggerek

Tankönyv: SQL/PSM + Gyak:PL/SQL

Bevezetés: az SQL-be

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

Adatbázis tartalmának módosítása

Tankönyv példák kidolgozása

Feladatok A mai előadáson: Tankönyv -- Termékek feladatai:

Bevezetés: Relációs adatmodell

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

SQL DDL-1: táblák és megszorítások

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

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

Bevezetés: Relációs adatmodell

Az adatbázisrendszerek világa

Adatbázisok-1 előadás

Az SQL adatbázisnyelv: DML

SQL DDL: Táblák, megszorítások (constraints), triggerek, nézettáblák

Lopocsi Istvánné MINTA DOLGOZATOK FELTÉTELES MONDATOK. (1 st, 2 nd, 3 rd CONDITIONAL) + ANSWER KEY PRESENT PERFECT + ANSWER KEY

ANGOL NYELVI SZINTFELMÉRŐ 2013 A CSOPORT. on of for from in by with up to at

Construction of a cube given with its centre and a sideline

Dependency preservation

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Using the CW-Net in a user defined IP network

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

ANGOL NYELVI SZINTFELMÉRŐ 2014 A CSOPORT

Széchenyi István Egyetem

Nézetek és indexek. AB1_06C_Nézetek_Indexek - Adatbázisok-1 EA (Hajas Csilla, ELTE IK) - J.D. Ullman elıadásai alapján

Relációs algebrai lekérdezések átírása SQL SELECT-re (példák)

On The Number Of Slim Semimodular Lattices

Tudományos Ismeretterjesztő Társulat

Csomag. Adatbázis-objektum Programozási eszközök gyűjteménye Két részből áll. specifikáció törzs (opcionális)

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

Adatbázis tartalmának módosítása (DML), az adatbázis-kezelı rendszerek felépítése,

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

TÉRGAZDÁLKODÁS - A TÉR MINT VÉGES KÖZÖSSÉGI ERŐFORRÁS INGATLAN NYILVÁNTARTÁS - KÜLFÖLDI PÉLDÁK H.NAGY RÓBERT, HUNAGI

SAJTÓKÖZLEMÉNY Budapest július 13.

Előszó.2. Starter exercises. 3. Exercises for kids.. 9. Our comic...17

Adatbázis használat I. 2. gyakorlat

Példák átírásokra: Relációs algebrai kifejezések, a kiértékelı fák átírása SQL lekérdezésekre

ADATBÁZISOK: TAN7.EA témaköre SQL DDL, DML, DCL, Tranz.kez.

FÖLDRAJZ ANGOL NYELVEN GEOGRAPHY

Adatbázis tartalmának módosítása. SQL DML utasítások

Angol Középfokú Nyelvvizsgázók Bibliája: Nyelvtani összefoglalás, 30 kidolgozott szóbeli tétel, esszé és minta levelek + rendhagyó igék jelentéssel

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

ACTA ACADEMIAE PAEDAGOGICAE AGRIENSIS

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

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

Információs rendszerek Adatbázis-kezelés

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

ANGOL NYELV KÖZÉPSZINT SZÓBELI VIZSGA I. VIZSGÁZTATÓI PÉLDÁNY

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

Statistical Dependence

Készítette: Szabóné Nacsa Rozália

Miskolci Egyetem Gazdaságtudományi Kar Üzleti Információgazdálkodási és Módszertani Intézet Factor Analysis

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

FAMILY STRUCTURES THROUGH THE LIFE CYCLE

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

Véges szavak általánosított részszó-bonyolultsága

Mapping Sequencing Reads to a Reference Genome

KN-CP50. MANUAL (p. 2) Digital compass. ANLEITUNG (s. 4) Digitaler Kompass. GEBRUIKSAANWIJZING (p. 10) Digitaal kompas

KERÜLETI DIÁKHETEK VERSENYKIÍRÁS 2017.

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

Word and Polygon List for Obtuse Triangular Billiards II

Eladni könnyedén? Oracle Sales Cloud. Horváth Tünde Principal Sales Consultant március 23.

Statistical Inference

Analitikai megoldások IBM Power és FlashSystem alapokon. Mosolygó Ferenc - Avnet

Relációs adatbázisok tervezése ---1

There is/are/were/was/will be

KELER KSZF Zrt. bankgarancia-befogadási kondíciói. Hatályos: július 8.

Tankönyvben: SQL/PSM Gyakorlaton: Oracle PL/SQL

Relációs adatbázisok tervezése ---2

Relációs algebra 1.rész

Relative Clauses Alárendelő mellékmondat

SQL/PSM tárolt modulok rész

Adatbázis kezelés Delphiben. SQL lekérdezések

INDEXSTRUKTÚRÁK III.

Elemi alkalmazások fejlesztése IV.

Számítógépes Hálózatok GY 8.hét

A modern e-learning lehetőségei a tűzoltók oktatásának fejlesztésében. Dicse Jenő üzletfejlesztési igazgató

SQL OLAP 2. óra. Multi-dimenzionális adatmodell. A normalizált relációs modell bonyolult a felhasználók számára

TestLine - Angol teszt Minta feladatsor

Csima Judit április 9.

Adatbázisrendszerek Tervezése Közgazdászoknak Munkapéldány

First experiences with Gd fuel assemblies in. Tamás Parkó, Botond Beliczai AER Symposium

Bevezetés: Relációs adatmodell

(Asking for permission) (-hatok/-hetek?; Szabad ni? Lehet ni?) Az engedélykérés kifejezésére a következő segédigéket használhatjuk: vagy vagy vagy

XML alapú adatbázis-kezelés. (Katona Endre diái alapján)

Átírás:

Rekurzió a Datalogban és az SQL3-ban Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009 10.2. Rekurzió. Az Eljut feladat 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Expressive Power of Datalog Without recursion, Datalog can express all and only the queries of core relational algebra. The same as SQL select-from-where, without aggregation and grouping. But with recursion, Datalog can express more than these languages. 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 2

Milyen fontos rekurzív feladatok vannak? I. Hierarchiák bejárása Leszármazottak-ősök ParentOf(parent,child) Find all of Mary s ancestors Vállalati hierarchia felettes-beosztott Employee(ID,salary) Manager(mID,eID) Project(name,mgrID) Find total salary cost of project X Alkatrész struktúra (mely alkatrésznek mely alkatrész része)

Milyen fontos rekurzív feladatok vannak? II. Gráf jellegű bejárások Repülőgép járatok, eljut-feladat Flight(orig,dest,airline,cost) Find cheapest way to fly from A to B Közösségi hálók Ki-kinek az ismerőse, Twitterben ki-kit követ Kiegészítés a gráf adatbázisokról Gráfok könnyen megadhatók relációs táblával, a gráf lekérdezések egyre gyakoribb feladatok, ezek relációs megoldása hatékonysági kérdés. Vannak kimondottan gráf-adatbázisok.

A Recursive Example EDB: Par(c,p) = p is a parent of c. Generalized cousins: people with common ancestors one or more generations back: Sib(x,y) Par(x,p) AND Par(y,p) AND x<>y Cousin(x,y) Sib(x,y) Cousin(x,y) Par(x,xp) AND Par(y,yp) AND Cousin(xp,yp) 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 5

Definition of Recursion Megelőzési gráf (IDB relációk közötti élek) Form a dependency graph whose Nodes = IDB predicates. Arc X->Y if and only if there is a rule with X in the head and Y in the body. Cycle = recursion; no cycle = no recursion. 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 6

Example: Dependency Graphs Cousin Answer Sib JoeSells Recursive Nonrecursive 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 7

Evaluating Recursive Rules The following works when there is no negation: 1. Start by assuming all IDB relations are empty. 2. Repeatedly evaluate the rules using the EDB and the previous IDB, to get a new IDB. 3. End when no change to IDB. 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 8

The Naïve Evaluation Algorithm Start: IDB = 0 Apply rules to IDB, EDB yes Change to IDB? no done 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 9

Seminaive Evaluation Since the EDB never changes, on each round we only get new IDB tuples if we use at least one IDB tuple that was obtained on the previous round. Saves work; lets us avoid rediscovering most known facts. A fact could still be derived in a second way. 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 10

Example: Evaluation of Cousin We ll proceed in rounds to infer Sib facts and Cousin facts. Remember the rules: Sib(x,y) Par(x,p) AND Par(y,p) AND x<>y Cousin(x,y) Sib(x,y) Cousin(x,y) Par(x,xp) AND Par(y,yp) AND Cousin(xp,yp) 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 11

Par Data: Parent Above Child Sib(x,y) Par(x,p) AND Par(y,p) AND x<>y Cousin(x,y) Par(x,xp) AND Par(y,yp) AND Cousin(xp,yp) a d Cousin(x,y) Sib(x,y) Round 1 Round 2 Round 3 Round 4 b c e f g h j k i 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 12

SQL-99 Recursion Datalog recursion has inspired the addition of recursion to the SQL-99 standard. Tricky, because SQL allows negation groupingand-aggregation, which interact with recursion in strange ways. 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 13

Form of SQL Recursive Queries WITH <stuff that looks like Datalog rules> <a SQL query about EDB, IDB> Datalog rule = [RECURSIVE] <name>(<arguments>) AS <query> 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 14

Example: SQL Recursion ---1 Find Sally s cousins, using SQL like the recursive Datalog example. Par(child,parent) is the EDB. WITH Sib(x,y) AS SELECT p1.child, p2.child FROM Par p1, Par p2 WHERE p1.parent = p2.parent AND p1.child <> p2.child; Like Sib(x,y) Par(x,p) AND Par(y,p) AND x <> y 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 15

Example: SQL Recursion ---2 Required Cousin is recursive WITH RECURSIVE Cousin(x,y) AS (SELECT * FROM Sib) UNION (SELECT p1.child, p2.child FROM Par p1, Par p2, Cousin WHERE p1.parent = Cousin.x AND p2.parent = Cousin.y) SELECT y FROM Cousin WHERE x = Sally ; Reflects Cousin(x,y) Sib(x,y) Reflects Cousin(x,y) Par(x,xp) AND Par(y,yp) AND Cousin(xp,yp) 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 16

Plan to Explain Legal SQL Recursion 1. Define monotone recursions. 2. Define a stratum graph to represent the connections among subqueries. 3. Define proper SQL recursions in terms of the stratum graph. 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 17

Recursion in the SQL-99 standard SQL-99 szabvány csak az ún. monoton rekurziót támogatja (viszont Datalogban megengedett a negáció és rekurzió együtt, de igen bonyolulttá válik a lekérdezés értelmezése, mint például a rétegzés), SQL-99 szabvány lineáris rekurziót enged meg, vagyis az értékadás kifejezésben egyetlen rekurzív relációt használhatunk. 10A_DLog4Rekurzio // Adatbázisok-1 elıadás // Ullman (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 18

Az Eljut-feladat Datalogban Tankönyv 10.2. fejezet példája (az ELJUT feladat) Jaratok(legitarsasag, honnan, hova, koltseg, indulas, erkezes) táblábanrepülőjáratok adatait tároljuk. Mely (x,y) párokra lehet eljutni x városból y városba? Datalogban felírva (intuitív bevezetés a Datalogba) Eljut(x, y) <-Jaratok(l, x, y, k, i, e) Eljut(x, y) <-Eljut(x, z) AND Jaratok(l, z, y, k, i, e) Vagy másképp felírva Datalogban(mi a különbség?) Eljut(x, y) <-Jaratok(_, x, y, _, _, _) Eljut(x, y) <-Eljut(x, z) AND Eljut(z, y)

Az Eljut feladat SQL-99 szabványban Datalog lineáris és nem-monoton rekurzió átírható: Eljut(x, y) <-Jaratok(l, x, y, k, i, e) Eljut(x, y) <-Eljut(x, z) AND Jaratok(l, z, y, k, i, e) Hova, mely városokba tudunk eljutni Budapestről? WITH RECURSIVE EljutAS (SELECT honnan, hova FROM Jaratok UNION SELECT Eljut.honnan, Jaratok.hova FROM Eljut, Jaratok WHERE Eljut.hova = Jaratok.honnan) SELECT hova FROM Eljut WHERE honnan= Bp ;

Oracle megoldások Az Oracle SQLa WITH RECURSIVE utasítást nem támogatja, ott másképpen oldották meg WITH utasítással (Oracle 11gR2 verziótól) witheljut (honnan, hova) as (select honnan, hova from jaratok union all select jaratok.honnan, eljut.hova from jaratok, eljut where jaratok.hova=eljut.honnan ) SEARCH DEPTH FIRST BY honnan SET SORTING CYCLE honnan SET is_cycleto 1 DEFAULT 0 select distinct honnan, hova from eljut order by honnan;