Corso Storia Basi di Dati donatella.gubiani/universita/corsi/bds/bds/slide5... · PDF...
date post
05-Aug-2020Category
Documents
view
0download
0
Embed Size (px)
Transcript of Corso Storia Basi di Dati donatella.gubiani/universita/corsi/bds/bds/slide5... · PDF...
Università degli Studi di Udine 1
Corso Corso di di
Basi di Dati SpazialiBasi di Dati Spaziali
Angelo MontanariAngelo Montanari Donatella GubianiDonatella Gubiani
Estensione spaziale di SQL Estensione spaziale di SQL (i sistemi PostgreSQL (i sistemi PostgreSQL
e Oracle Spatial)e Oracle Spatial)
Università degli Studi di Udine 2
StoriaStoria
• Storia:Storia: –1974: prima proposta SEQUEL1974: prima proposta SEQUEL –1981: prime implementazioni1981: prime implementazioni –1983: standard di fatto1983: standard di fatto –1986, 1989, 1992 e 1999: 1986, 1989, 1992 e 1999: standardstandard
Università degli Studi di Udine 3
Funzionalità Funzionalità
• Insieme di linguaggi con varie Insieme di linguaggi con varie funzionalità: funzionalità: –DDLDDL –DMLDML •aggiornamentoaggiornamento • interrogazioneinterrogazione
Università degli Studi di Udine 4
Per trattare dati spaziali… Per trattare dati spaziali…
• Estensione SQL con nuovi Estensione SQL con nuovi costrutti per trattare i tipi di costrutti per trattare i tipi di dato spaziale introdottidato spaziale introdotti –DDL: definizioneDDL: definizione –DML: aggiornamento e DML: aggiornamento e interrogazioneinterrogazione
Università degli Studi di Udine 5
Componente DDL Componente DDL
• Permette di creare schemi di basi Permette di creare schemi di basi di dati: domini, tabelle, indici, di dati: domini, tabelle, indici, asserzioni, viste, privilegiasserzioni, viste, privilegi
• Meccanismi standard SQLMeccanismi standard SQL
Università degli Studi di Udine 6
Domini e Domini e definizione di tabelle definizione di tabelle
• Gli attributi di una tabella possono Gli attributi di una tabella possono essere associati, oltre ai tipi di essere associati, oltre ai tipi di dato tradizionali, ad uno dei tipi di dato tradizionali, ad uno dei tipi di dato spazialedato spaziale – PointPoint – LineLine – PolygonPolygon
Università degli Studi di Udine 7
Definizione di tabellaDefinizione di tabella
CREATE TABLE NAZIONE( Nome VARCHAR(20) PRIMARY KEY,
NumAbitanti INTEGER NOT NULL, Geometria POLYGON NOT NULL
)
CREATE TABLE FIUME( Nome VARCHAR(20) PRIMARY KEY,
Geometria LINE NOT NULL )
Università degli Studi di Udine 8
Definizione degli indiciDefinizione degli indici
• Oltre ai tradizionali indici, Oltre ai tradizionali indici, rivestono un ruolo rivestono un ruolo fondamentale gli indici spazialifondamentale gli indici spaziali
Università degli Studi di Udine 9
DML: Componente di DML: Componente di interrogazione interrogazione
• Permette di accedere Permette di accedere all’informazione presente in una all’informazione presente in una base dei dati (ma non consente di base dei dati (ma non consente di modificarla)modificarla)
Università degli Studi di Udine 10
Tipi di interrogazioneTipi di interrogazione
• L’estensione spaziale SQL permette di L’estensione spaziale SQL permette di rispondere, oltre a interrogazioni con rispondere, oltre a interrogazioni con criteri alfanumerici, a interrogazioni criteri alfanumerici, a interrogazioni basate su criteri spazialibasate su criteri spaziali – Selezioni basate su relazioni spaziali rispetto Selezioni basate su relazioni spaziali rispetto a valori geometrici costanti o query a valori geometrici costanti o query interattiveinterattive
– Interrogazioni con criteri spaziali o join Interrogazioni con criteri spaziali o join spazialispaziali
Università degli Studi di Udine 11
Costrutti fondamentaliCostrutti fondamentali
• SELECT:SELECT: specifica la lista degli specifica la lista degli attributi che si vuole siano restituiti attributi che si vuole siano restituiti (anche funzioni aggregate)(anche funzioni aggregate)
• FROM: FROM: specifica le tabelle alle quali specifica le tabelle alle quali bisogna accedere per rispondere bisogna accedere per rispondere all’interrogazioneall’interrogazione
• WHERE: WHERE: specifica le condizioni che specifica le condizioni che devono essere soddisfatte dalle righe devono essere soddisfatte dalle righe coinvolte nell’interrogazione per poter coinvolte nell’interrogazione per poter partecipare alla soluzione finalepartecipare alla soluzione finale
Università degli Studi di Udine 12
Interrogazioni spazialiInterrogazioni spaziali
• Utilizzano funzioni e relazioni su Utilizzano funzioni e relazioni su tipi di dato spazialetipi di dato spaziale – Predicati utilizzati nella clausola Predicati utilizzati nella clausola WHERE (relazioni spaziali)WHERE (relazioni spaziali)
– Funzioni applicate alle tuple del Funzioni applicate alle tuple del risultato (clausola SELECT)risultato (clausola SELECT)
Università degli Studi di Udine 13
Interrogazioni con criteri Interrogazioni con criteri spaziali – 1spaziali – 1
Esempio.Esempio. Selezionare le nazioni Selezionare le nazioni confinanti con la (adiacenti alla) Franciaconfinanti con la (adiacenti alla) Francia
SELECT N1.Nome FROM NAZIONE N1, NAZIONE N2 WHERE N2.Nome=“Francia” and Touch(N1.Geometria,N2.Geometria)
Università degli Studi di Udine 14
Interrogazioni con criteri Interrogazioni con criteri spaziali – 2spaziali – 2
Esempio.Esempio. Determinare i fiumi che Determinare i fiumi che attraversano la Germaniaattraversano la Germania
SELECT F.Nome FROM FIUME F, NAZIONE N WHERE N.Nome=“Germania” and Cross(F.Geometria,N.Geometria)
Università degli Studi di Udine 15
Interrogazioni con criteri Interrogazioni con criteri spaziali – 3spaziali – 3
Esempio.Esempio. Determinare l’area delle Determinare l’area delle nazioni attraversate dal fiume Donnazioni attraversate dal fiume Don
SELECT N.Nome, Area(N.Geometria) FROM Nazione N, Fiume F WHERE F.Nome=“Don” and
Cross(F.Geometria,N.Geometria)
Università degli Studi di Udine 16
Interrogazioni con criteri Interrogazioni con criteri spaziali – 4spaziali – 4
Esempio.Esempio. Determinare la lunghezza Determinare la lunghezza totale dei fiumi che attraversano l’Italiatotale dei fiumi che attraversano l’Italia
SELECT Sum(Length(F.Geometria)) FROM FIUME F, NAZIONE N WHERE N.Nome=“Italia” and Cross(F.Geometria,N.Geometria)
Università degli Studi di Udine 17
Interrogazioni con criteri Interrogazioni con criteri spaziali – 5spaziali – 5
Esempio.Esempio. Determinare le nazioni Determinare le nazioni contenute nel rettangolo @rectanglecontenute nel rettangolo @rectangle
SELECT Nome FROM NAZIONE WHERE In(Geometria,@rectangle)
Università degli Studi di Udine 18
DML: Componente di DML: Componente di aggiornamentoaggiornamento
• Permette di operare sulle tabelle: Permette di operare sulle tabelle: inserire, modificare e cancellare i dati di inserire, modificare e cancellare i dati di una base dei datiuna base dei dati
• Operazioni diOperazioni di – inserimento: insertinserimento: insert – eliminazione: deleteeliminazione: delete – modifica: updatemodifica: update
di una o più tuple di una relazione sulla di una o più tuple di una relazione sulla base di una condizione che può base di una condizione che può coinvolgere anche altre relazionicoinvolgere anche altre relazioni
Università degli Studi di Udine 19
PostgreSQLPostgreSQL
• 1996 è diventato un progetto open 1996 è diventato un progetto open sourcesource
• Supporta un modello Supporta un modello object-object- relational relational che gestisce i tipi di dato che gestisce i tipi di dato spazialespaziale
Università degli Studi di Udine 20
Estensione spazialeEstensione spaziale
• Uno dei primi sistemi a prevedere Uno dei primi sistemi a prevedere un’estenzione spazialeun’estenzione spaziale – un insieme di tipi geometriciun insieme di tipi geometrici – un insieme di operatori e funzioni sui un insieme di operatori e funzioni sui tipi geometricitipi geometrici
– un’estensione SQL integrata con un’estensione SQL integrata con operatori spazialioperatori spaziali
Università degli Studi di Udine 21
Tipi di dato spazialeTipi di dato spaziale Tipo geometrico Rappresentazione Descrizione
point (x,y) Punto
line ((x1,y1),(x2,y2)) Retta infinita
lseg ((x1,y1),(x2,y2)) Segmento
box ((x1,y1),(x2,y2)) Rettangolo
path ((x1,y1),…,(xn,yn)) Linea chiusa
path [(x1,y1),…,(xn,yn)] Linea (aperta)
polygon ((x1,y1),…,(xn,yn)) Poligono
circle Cerchio
Università degli Studi di Udine 22
Rappresentazione dei dati in PostgreSQL - 1
Alcune rappresentazioni sono ambigue (non identificano il corrispondente tipo di dato spaziale). Per tale ragione, il tipo di dato viene indicato in modo esplicito:
''::tipo
Esempio. Un rettangolo è rappresentato da: '((0,0),(1,1))':: box
mentre un segmento è rappresentato da: '((0,0),(1,1))':: lseg
Università degli Studi di Udine 23
Rappresentazione dei dati in PostgreSQL - 2
La sintassi usata per definire un poligono è molto simile (differisce solo nel nome del tipo di dato spaziale) a quella impiegata per definire una poli-linea chiusa
Poligoni e poli-linee chiuse differiscono in:
• funzioni che possono essere applicate