Ricorsione in SQL-99.

Slides:



Advertisements
Presentazioni simili
Interrogazioni Semplici Le operazioni di interrogazione vengono specificate per mezzo dellistruzione select select ListaAttributi from ListaTabelle [where.
Advertisements

Premessa: si assume di aver risolto (correttamente
Principale limitazione di AR e SQL-92: interrogazioni ricorsive
Master Bioinformatica 2002: Grafi Problema: cammini minimi da tutti i vertici a tutti i vertici Dato un grafo pesato G =(V,E,w), trovare un cammino minimo.
Introduzione ai grafi Grafo diretto e non diretto
1 DATA BASE GESTIONE VENDITE. 2 QUERY1 Per ogni Cognome di Rappresentante e Descrizione di Prodotto calcolare la somma delle quantità vendute: Somma (Quantità)
Esercizio zSi vuole realizzare un data warehouse per una azienda che vende mobili allingrosso. zIl data warehouse deve permettere di analizzare i ricavi.
Query OQL e XQUERY a confronto
Biglietti e Ritardi: schema E/R
Data warehousing con SQL Server
Biglietti e Ritardi: schema E/R
1 Misura Derivata: esempio dei biglietti CostoMedioBiglietto (CMB) calcolato come INCASSO/NUM_BIG. SUM AVG Implementazione in Analysis Services 1. Si definisce.
Principale limitazione di AR e SQL-92: interrogazioni ricorsive IMPIEGATO NOMENOMECAPO RossiVerdi NeriVerdi DeSio TucciDeSio DeLucaDeSio Lazio selezionare.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Generazione di Piani attraverso Grafi di Pianificazione
Cammini minimi con una sorgente
19/01/2014 Viste. 19/01/2014 Viste Le Viste Logiche o Viste o View possono essere definite come delle tabelle virtuali, i cui dati sono riaggregazioni.
Il computer ragiona? Problemi e algoritmi.
Intelligenza Artificiale 2 Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
Algoritmi e Strutture Dati
Meccanismi one-parameter. Riepilogo Archi di un grafo controllati da agenti egoistici Solo lagente conosce il peso associato al proprio arco Obiettivo:
Informatica di base A.A. 2003/2004 Algoritmi e programmi
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmi e Strutture Dati
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
Rassegna sui metodi per query rewriting e il query answering using views.
Esercitazione.
Programmazione logica
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
Come ragiona il computer
SQL: Structured Query Language
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL OPERATORI INSIEMISTICI IN SQL Siano due tabelle: GiochiSolitari(CodiceGioco, NomeGioco, PrezzoGioco)
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
MODELLO LOGICO DEI DATI
Algoritmi e Strutture Dati
PARTE PRIMA: Reti Cablate
Gerarchie Ricorsive Una gerarchia ricorsiva deriva dalla presenza di una ricorsione o ciclo (un anello nel caso più semplice) nello schema operazionale.
Web Communities and their identificaton
SQL.
Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino
1 Data warehousing con SQL Server SQL Server è un RDBMS (Relational DataBase Management System) Analysis Services è un componente di SQL Server che offre.
Intelligenza Artificiale 2 Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
Esercitazione 7.
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Algebra relazionale (III). Esempi di Interrogazioni: 3 Trovare matricola e nome dei capi i cui impiegati guadagnano tutti più di Tutti gli impiegati?
Raggruppamento in SQL Esempio di raggruppamento
Interrogazioni (parte 2)
Intelligenza Artificiale Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Carluccio Antonio Carluccio Alessandra Caricola Giovanni Vizzino Anna Università degli Studi di Bari.
Sistemi basati su conoscenza Metodi di ricerca informata Prof. M.T. PAZIENZA a.a
Grammatiche Grammatiche libere da contesto Grammatiche regolari
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
Il Problema del Commesso Viaggiatore. Traveling Salesman’s Problem (TSP) Un commesso viaggiatore deve visitare un certo numero di città Conosce la distanza.
Intelligenza Artificiale Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
Flusso di Costo Minimo Applicazione di algoritmi: Cammini Minimi Successivi (SSP) Esercizio 1 Sia data la seguente rete di flusso, in cui i valori riportati.
Raggruppamenti e target list scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =
Interrogazioni Le interrogazioni in SQL sono formulate in modo dichiarativo specificando cioè cosa si vuole ottenere e non come lo si vuole ottenere. L’interrogazione.
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
Il computer ragiona? Problemi e algoritmi. Paola Pianegonda2 Cos’è un problema?  Problema è qualsiasi situazione della quale non conosciamo la soluzione.
Approfondimenti SQL.
Algoritmi e Strutture Dati Luciano Gualà
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Transcript della presentazione:

Ricorsione in SQL-99

Introduzione In SQL2 non è possibile definire interrogazioni che facciano uso della ricorsione Esempio Voli(lineaAerea, da, a, parte, arriva) non è possibile esprimere l’interrogazione che ritrova tutte le città raggiungibili l’una dall’altra, con un numero arbitrario di tappe intermedie per risolvere queste interrogazioni con SQL2, è necessario utilizzare SQL da programma in SQL-99 è stata aggiunta la possibilità di esprimere interrogazioni ricorsive

Idea di base base teorica: basi di dati deduttive Raggiunge(da,a)  Voli(lineaAerea, da, a, parte, arriva) Raggiunge(da,a)  Voli(lineaAerea, da, citta1, parte, arriva),Raggiunge(citta1,a) Voli è una relazione estensionale (esiste, su disco) Raggiunge è una vista, cioè una relazione intensionale, la cui definizione dipende da se stessa ricorsione

SQL-99 - comando WITH Supporta il comando WITH per definire relazioni intensionali le relazioni intensionali definite con il comando WITH non diventano parte dello schema ma rappresentano solo dichiarazioni di relazioni da utilizzare nel contesto dell’interrogazione l’interrogazione può poi essere usata in un qualunque contesto in cui sia possibile utilizzare un’interrogazione SQL

SQL-99 - comando WITH WITH R1 AS <definizione di R1>, ... Rn AS <definizione di Rn>, <interrogazione che coinvolge R1, …, Rn>

SQL-99 - comando WITH ogni dichiarazione può essere ricorsiva e le relazioni possono essere mutuamente ricorsiva ogni relazione coinvolta in una ricorsione deve essere preceduta dalla parola chiave RECURSIVE la definizione per la relazione Ri consiste in parola chiave opzionale RECURSIVE il nome della relazione che si sta definendo parola chiave AS interrogazione che definisce Ri e può fare riferimento a R1 ,…, Ri-1 l’interrogazione finale che può far riferimento a tutte le relazioni definire in precedenza

SQL-99 - restrizione la ricorsione deve essere lineare nella definizione di una relazione R, R può comparire una sola volta

Voli(lineaAerea,da,a,parte,arriva) Esempio non corretto Voli(lineaAerea,da,a,parte,arriva) predicato Raggiunge non lineare WITH RECURSIVE Raggiunge(da,a) AS (SELECT da,a FROM Voli) UNION (SELECT R1.da, R2.a FROM Raggiunge AS R1, Raggiunge AS R2 WHERE R1.a = R2.a) SELECT * FROM Raggiunge;

Esempio predicato Raggiunge (lineare) WITH Coppie AS SELECT da,a FROM Voli, RECURSIVE Raggiunge(da,a) AS Coppie UNION (SELECT Coppie.da, Raggiunge.a FROM Coppie, Raggiunge WHERE Coppie.a = Raggiunge.da) SELECT * FROM Raggiunge;

SQL-99 - comando WITH le definizioni all'interno del comando WITH sono disponibili solo all'interno del comando e non possono essere usate al di fuori di questo nel comando WITH si possono definire viste invece che tabelle la differenza sintattica è che si usa la parola chiave VIEW nella definizione della relazione

Esempio VIEW Coppie AS SELECT da, a FROM Voli se si definisce Coppie come vista, tale relazione non viene effettivamente costruita, ma il suo uso nella costruzione di Raggiunge viene sostituito dall'uso delle componenti dalle tuple di Voli

SQL-99 - semantica La semantica delle interrogazioni ricorsive è definita mediante la nozione di punto fisso si costruisce una sequenza Ri di relazioni tali che: R0 è la relazione vuota Ri, 1  i, viene ottenuta applicando la definizione della relazione a Ri-1 quando, per un certo i, si ha che Ri = Ri-1 ci si ferma e tale relazione è il risultato dell'interrogazione

Esempio Determinare i cammini di un grafo dati gli archi WITH RECURSIVE Cammino(da,a) AS (SELECT da,a FROM Arco) UNION (SELECT R1.da, R2.a FROM Arco AS R1, Cammino AS R2 WHERE R1.a = R2.da); SELECT * FROM Cammino;

Esempio (continua) Arco Cammino0 = ; Cammino1 =

Esempio - semantica Cammino2 = Cammino1  Cammino3 = Cammino2  Cammino4 = Cammino3 punto fisso e risultato

Ricorsione e negazione In alcuni casi è necessario utilizzare la negazione nella definizione di un predicato ricorsivo EXCEPT NOT IN in presenza di ricorsione, questo può però dare luogo a problemi nel definire la semantica

Esempio errato WITH RECURSIVE P(X) AS (SELECT * FROM R) EXCEPT (SELECT * FROM Q), RECURSIVE Q(X) AS (SELECT * FROM P) SELECT * FROM P;

Esempio errato (continua) se R contiene solo 0, l'interrogazione ha due possibili risposte: {R(0), P(0)} {R(0), Q(0)} ma non c’è modo di scegliere tra le due

Esempio corretto Si vogliono determinare le città: raggiungibili una dall’altra anche in più voli della United Airlines (UA) non raggiungibili una dall’altra anche in più voli della American Airlines (AA)

Esempio corretto (continua) WITH Triple AS SELECT lineaAerea, da, a FROM Voli, RECURSIVE Raggiunge(lineaAerea,da,a) AS Triple UNION (SELECT Triple.lineaAerea, Triple.da, Raggiunge.a FROM Triple, Raggiunge WHERE Triple.a = Raggiunge.da AND Triple.lineaAerea = Raggiunge.lineaAerea) (SELECT da,a FROM Raggiunge WHERE lineaAerea = 'UA') EXCEPT (SELECT da,a FROM Raggiunge WHERE lineaAerea = 'AA');

Esempio corretto (continua)

Esempio corretto (continua) La prima sottointerrogazione restituisce le seguenti coppie la seconda sottointerrogazione restituisce le seguenti coppie

Esempio corretto (continua) Il risultato è la differenza tra questi insiemi di coppie

Stratificazione Per evitare i problemi dovuti all'uso della ricorsione attraverso la negazione, ci si restringe alla ricorsione in cui la negazione è stratificata la nozione di negazione stratificata permette di limitare l’uso della ricorsione a interrogazioni la cui semantica è ben definita quando la negazione è stratificata esiste un algoritmo per calcolare un particolare minimo punto fisso, che corrisponde al contenuto informativo "intuitivo"

Stratificazione Grafo i cui nodi corrispondono alle relazioni arco dal nodo A al nodo B etichettato da - se nella definizione di A compare B negato arco dal nodo A al nodo B se nella definizione di A compare B non-negato

Stratificazione Se il grafo ha un ciclo che contiene uno o più archi negativi la ricorsione non è stratificata, altrimenti la ricorsione è stratificato i predicati intensionali possono essere raggruppati in strati lo strato di un predicato A è il più grande numero di archi negativi su un cammino che comincia da A se la ricorsione è stratificata è possibile calcolare il contenuto delle relazioni in accordo alla semantica di punto fisso nell'ordine dei loro strati, partendo dal più basso

Stratificazione In SQL-99 viene richiesta la stratificazione anche rispetto ad altri costrutti non monotoni, ad esempio aggregati

Esempio WITH RECURSIVE P(X) AS (SELECT * FROM R) UNION (SELECT * FROM Q), RECURSIVE Q(X) AS SELECT SUM(X) FROM P SELECT * FROM P; Se R contiene 12 e 34, Q passa da  a {46} a {92} non monotono