Gerarchie Ricorsive Una gerarchia ricorsiva deriva dalla presenza di una ricorsione o ciclo (un anello nel caso più semplice) nello schema operazionale.

Slides:



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

Ricorsione in SQL-99.
Principale limitazione di AR e SQL-92: interrogazioni ricorsive
Calcolo Relazionale.
Algebra e calcolo relazionale (parte 2)
DBMS (DataBase Management System)
SQL applicato a SQL Server
Estendere i linguaggi: i tipi di dato astratti
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Esercizio zSi vuole realizzare un data warehouse per una azienda che vende mobili allingrosso. zIl data warehouse deve permettere di analizzare i ricavi.
DOCUMENTAZIONE DI SCHEMI E/R
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.
Biglietti: schema E/R.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
Principale limitazione di AR e SQL-92: interrogazioni ricorsive IMPIEGATO NOMENOMECAPO RossiVerdi NeriVerdi DeSio TucciDeSio DeLucaDeSio Lazio selezionare.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Alberi binari di ricerca
Microsoft Office: Access OpenOffice: Base
Capitolo 3 Strutture dati elementari 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.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Basi di dati Università Degli Studi Parthenope di Napoli
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
Esercitazione.
Modello Relazionale Definisce tipi attraverso il costruttore relazione, che organizza i dati secondo record a struttura fissa, rappresentabili attraverso.
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:
Daniel Stoilov Tesi di Laurea
SELECT STATEMENT Clausola WHERE permette di limitare il numero di record da estrarre SELECT */ [DISTINCT] colonna/ espressione [alias],… FROM table [WHERE.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
Basi di dati Claudia Raibulet
SQL: Structured Query Language
Progettazione di un database
Prof. Cerulli – Dott.ssa Gentili
Il modello ER Proposto da Peter Chen nel 1976 rappresenta uno standard per la progettazione concettuale (in particolare per le basi di dati) Ha una rappresentazione.
MODELLO LOGICO DEI DATI
Valutazione costi di una QUERY. A.1-Nome di tutti i fornitori che forniscono il prodotto P2 forpro fornitori CP=P2 Nome fornitori (CF, Nome, Citta) prodotti(CP,
Basi di Dati e Sistemi Informativi
1 Il Linguaggio SQL Il Linguaggio SQL Prof. Lorenzo Vita, Ing. Luigi Testa.
SQL.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
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.
1 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Informatica per laurea triennale.
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
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?
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.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
Vincoli interrelazionali
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 =
Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.
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.
Approfondimenti SQL.
Microsoft Access Filtri, query. Filtri Un filtro è una funzione che provoca la visualizzazione dei soli record contenenti dati che rispondono a un certo.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Transcript della presentazione:

Gerarchie Ricorsive Una gerarchia ricorsiva deriva dalla presenza di una ricorsione o ciclo (un anello nel caso più semplice) nello schema operazionale. Esempio di schema operazionale con anello: Rappresentazione sullo Schema di Fatto di una Gerarchia ricorsiva la costruzione dell’albero degli attributi non può essere realizzata con la procedura automatica in quanto la ricorsione provoca un loop. 1

Gerarchie Ricorsive: eventi ed aggregazione Nelle tabelle che seguono viene illustrata intuitivamente la semantica dell’aggregazione in presenza di gerarchie ricorsive La tabella 5.30 mostra gli eventi primari per ATTIVITÀ (non si considera TipoAttività) e un’istanza della gerarchia ricorsiva indicandone la relazione di subordinazione tra i vari impiegati A livello di istanze di una gerarchia ricorsiva, l’aspetto caratteristico è la lunghezza variabile delle relazioni padre-figlio tra i vari livelli 2

Gerarchie Ricorsive: eventi ed aggregazione La tabella 5.31 mostra gli eventi secondari derivanti dall’aggregazione ricorsiva degli eventi primari: al primo livello di aggregazione per ciascun impiegato si riportano le ore complessivamente lavorate da lui e dagli eventuali immediati subordinati 3

Gerarchie Ricorsive: eventi ed aggregazione Nella tabella 5.32 si riportano gli eventi secondari al secondo livello di aggregazione: 4

Gerarchie Ricorsive: Progettazione Logica La soluzione di base del modello a stella comporterebbe l’introduzione della dimension table : IMPIEGATO(NOME,NOMECAPO) A livello d’istanze, la situazione di tabella 5.30, si traduce in: Con tale soluzione, per effettuare le aggregazioni viste nelle tabelle 5.31 e 5.32, devo saper calcolare tutti i discendenti (a tutti i livelli) di un dato impiegato : tale calcolo comporta delle interrogazioni ricorsive che non sono formulabili in SQL-92 (ACCESS, SQL-SERVER 2000, …) ma in SQL-99 (ORACLE, SQL-SERVER 2005, …). L’alternativa è quella di usare strumenti ad hoc: Tabelle di Navigazione (Interrogazione ricorsive pre-calcolate) Relazioni padre-figlio di Analysis Services 5

Principale limitazione di AR e SQL-92: interrogazioni ricorsive IMPIEGATO NOME NOMECAPO Rossi Verdi Neri DeSio Tucci DeLuca Lazio Query NOMECAPO Verdi DeSio Lazio selezionare tutti i capi di “Rossi” Questa interrogazione è riconducibile ad un caso di chiusura transitiva di una relazione binaria In SQL-3 (SQL-1999) si possono esprimere interrogazioni ricorsive In DB2 WITH CAPO (NOME, NOMECAPO) AS ( SELECT NOME, NOMECAPO FROM IMPIEGATO UNION SELECT CAPO.NOME, IMPIEGATO.NOMECAPO FROM CAPO, IMPIEGATO WHERE CAPO.NOMECAPO = IMPIEGATO.NOME ) SELECT NOMECAPO FROM CAPO WHERE NOME = 'Rossi' AND NOMECAPO IS NOT NULL; SQL-SERVER 2005 e ACCESS non accettano interrogazioni ricorsive 6

Interrogazioni Ricorsive in SQL In SQL2 non è possibile definire interrogazioni che facciano uso della ricorsione: una vista non può essere definita a partire dalla vista stessa Esempio Impiegato(Nome,NomeCapo) non è possibile esprimere l’interrogazione che ritrova “tutti i capi di un impiegato”, con un numero arbitrario di livelli intermedi per risolvere queste interrogazioni con SQL2, è necessario utilizzare SQL da programma (o stored procedure) in SQL-99 c’è la possibilità di esprimere interrogazioni ricorsive base teorica: basi di dati deduttive Capo(Nome,NomeCapo)  Impiegato(Nome,NomeCapo) Capo(Nome,NomeCapo) Impiegato(Nome,impiegato1), Capo(impiegato1,NomeCapo) Capo è una vista ricorsiva: nella sua definizione usa se stessa 7

SQL-99 - comando WITH il comando WITH consente di definire delle tabelle temporanee che non diventano parte dello schema ma rappresentano solo definizioni di relazioni da utilizzare nel contesto dell’interrogazione associata a WITH WITH R1 AS <definizione di R1>, ... Rn AS <definizione di Rn>, <interrogazione che coinvolge R1, …, Rn> ogni definizione può essere ricorsiva e 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 (seguita da AS) interrogazione che definisce Ri e può fare riferimento a R1 ,…, Ri-1 l’interrogazione finale che può far riferimento a tutte le relazioni definite in precedenza la ricorsione deve essere lineare nella definizione di una relazione R, R può comparire una sola volta 8

Esempi Esempio di ricorsione lineare WITH RECURSIVE CAPO (NOME, NOMECAPO) AS ( SELECT NOME, NOMECAPO FROM IMPIEGATO UNION SELECT CAPO.NOME, IMPIEGATO.NOMECAPO FROM CAPO, IMPIEGATO WHERE CAPO.NOMECAPO = IMPIEGATO.NOME ) SELECT * FROM CAPO; Esempio di ricorsione non lineare : non accettata dallo standard WITH RECURSIVE CAPO (NOME, NOMECAPO) AS ( SELECT NOME, NOMECAPO FROM IMPIEGATO UNION SELECT R1.NOME, R2.NOMECAPO FROM CAPO R1, CAPO R2 WHERE R1.NOMECAPO = R2.NOME ) SELECT * FROM CAPO; La forma della query deriva dalla semantica, ovvero dal modo con la quale la vista ricorsiva CAPO viene calcolata 9

SQL-99 - semantica della ricorsione La semantica delle interrogazioni ricorsive è definita mediante la nozione di punto fisso Se R è una relazione Binaria R(A,B) si definisce chiusura transitiva di R,denotata con R+, la più piccola (rispetto alla inclusione insiemistica) relazione tale che Contiene R Se (x,y) e (y,z) sono in R+ allora anche (x,z) è in R+ R+ è il minimo punto fisso della funzione: F(R) = R0   R.A,R0.B (R  R.B= R0.A R0 ) e si calcola come segue: R0 = R Ri = F(Ri-1) quando, per un certo i, si ha che Ri = Ri-1 ci si ferma e tale relazione è il minimo punto fisso della funzione F e costituisce R+ Esempio: CAPO è la chiusura transitiva di IMPIEGATO Chiusura transitiva e riflessiva R* : contiene anche tutte le coppie (x,x) con X in R 10

Esempio Relazione Arco(Da,a) Arco(Da,a) rappresenta un grafo; definiamo una vista Cammino(Da,a) per rappresentare i cammini dal punto Da al punto a La vista Cammino(Da,a) è la chiusura transitiva Relazione Arco(Da,a) e si calcola in SQL-99 attraverso la seguente interrogazione ricorsiva 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; 11

Esempio di calcolo del punto fisso R=Arco R0 = Cammino0  R.da, R0.a (R  R.a = R0.daR0 ) in A.R. Cammino0 = Arco(Da,a) SELECT R.da, R0.a FROM Arco R, Cammino0 R0 WHERE R. a = R0.da Cammino1 = Cammino0  Cammino2 = Cammino1  Cammino3 = Cammino2 punto fisso e risultato 12

Tabella di Navigazione Siccome le viste ricorsive sono difficili da esprimere ed non formulabili in SQL-92 e quindi in molti DBMS commerciali, si pre-calcola il loro risultato e si inserisce in opportune tabelle La Tabella di navigazione memorizza la chiusura transitiva e riflessiva di una relazione binaria; in essa viene inoltre calcolato e riportato anche il livello e l’indicazione di foglia 13

Uso della Tabella di Navigazione Le informazioni presenti nella Tabella di Navigazione vengono usate in fase di visualizzazione (ed interrogazione) del Fatto Considerando Foglia come dimensione di ATTIVITA’ Visualizzare tutte le ore lavorate indipendentemente da Foglia Visualizzare solo le ore lavorate dagli impiegati “foglia” Visualizzare solo le ore lavorate dagli impiegati “non foglia” Considerando Livello come dimensione di ATTIVITA’ Visualizzare tutte le ore lavorate indipendentemente da Livello : per un impiegato ottengo tutte le ore lavorate da tutti i sui figli a tutti i livelli Visualizzare tutte le ore lavorate, per un certo da Livello X: per un impiegato ottengo tutte le ore lavorate da tutti i sui figli a livello X Visualizzare tutte le ore lavorate, fino ad un certo da Livello X: per un impiegato ottengo tutte le ore lavorate da tutti i sui figli a livello Y <= X (richiede una espressione MDX) 14

Calcolo della Tabella di Navigazione Uso di un DBMS con SQL-99: SQL-SERVER 2005, ORACLE, … Uso del nuovo sistema limitato solo per il calcolo di una interrogazione ricorsiva In un DBMS con SQL-92 posso “simulare” il calcolo dell’interrogazione ricorsiva sulla base dell’algoritmo di calcolo del minimo punto fisso discusso intuitivamente in precedenza Un esempio di tale simulazione e’ sul sito web Come gestire il “flusso delle operazioni” (ad esempio, come decidere quando fermare il calcolo perche’ e’ stato raggiunto il punto fisso) ? Stored procedures (vedi insegnamento di BAsi di Dati) A mano … 15