Corso di Basi di Dati Spaziali Modello logico Modelli logici Permettono una rappresentazione astratta dei dati La maggior parte dei sistemi di basi di dati oggi sul mercato si basa sul modello relazionale Angelo Montanari Donatella Gubiani Il modello relazionale Proposto da E. F. Codd nel 1970 per favorire l indipendenza dei dati Disponibile in DBMS reali nel 1981 (non è facile coniugare l indipendenza con l efficienza e l affidabilità!) Si basa sul concetto matematico di relazione (con una variante) Le relazioni hanno una naturale rappresentazione per mezzo di tabelle Relazione matematica Dati n insiemi (anche non distinti) D 1,,D n prodotto cartesiano D 1 D n : l insieme di tutte le n-uple (d 1,, d n ) tali che d 1 D 1,, d n D n relazione matematica su D 1,, D n : un sottoinsieme di D 1 D n 4 Definizioni Esempio di relazione matematica D 1,, D n sono i domini (o tipi di dato) della relazione possono essere definiti a prescindere dalle tabelle n è il grado della relazione cambia molto raramente se lo schema è ben fatto Il numero di tuple della relazione è la cardinalità della relazione varia frequentemente ogni tabella ha cardinalità finita 5 D 1 ={a,b} D ={x,y,z} prodotto cartesiano D 1 D una relazione r D 1 D a a a b b b a a a x y z x y z x y z 6 1
Proprietà Una relazione matematica è un insieme di n-uple ordinate (d 1,, d n ) tali che d 1 D 1,, d n D n Una relazione è un insieme le n-uple sono distinte non c'è ordinamento fra le n-uple 7 Struttura posizionale Partite string string int int PARTITE Juve Lazio Juve Roma Lazio Milan Roma Milan Ciascuno dei domini svolge due ruoli diversi, distinguibili attraverso la posizione 0 0 1 0 1 8 Struttura non posizionale A ciascun dominio si può associare un nome (attributo) danno significato (ruolo) possono portare problemi nella formalizzazione PARTITE CASA Juve Lazio Juve Roma FUORI Lazio Milan Roma Milan RETI_CASA 0 0 RETI_FUORI 1 0 1 9 Il modello è basato su valori I riferimenti fra dati in relazioni diverse sono rappresentati per mezzo di valori dei domini che compaiono nelle ennuple 10 STUDENTI MATRICOLA 6554 8765 98 456 Maria Alessandra NASCITA 05/1/198 0/11/1981 1/10/1979 01/0/1984 STUDENTI MATRICOLA 6554 8765 98 456 Maria Alessandra NASCITA 05/1/198 0/11/1981 1/10/1979 01/0/1984 ESAMI STUDENTE 456 456 98 6554 VO 8 6 7 0 CORSO 04 0 01 01 ESAMI STUDENTE VO 8 6 7 0 CORSO CORSI CODICE 01 0 04 TILO Analisi Chimica Chimica DOCENTE Bruni 11 CORSI CODICE 01 0 04 TILO Analisi Chimica Chimica DOCENTE Bruni 1
Struttura basata su valori: vantaggi Rispetto ai modelli basati su record e puntatori: richiede di rappresentare solo ciò che è rilevante dal punto di vista dell applicazione la rappresentazione logica non fa nessun riferimento a quella fisica è relativamente semplice il trasferimento da un calcolatore ad un altro A livello fisico i dati possono essere rappresentati secondo modalità che prevedono l uso di puntatori 1 Definizioni e notazioni - 1 Schema di relazione: un nome R con un insieme di attributi X = {A 1,..., A n }: R(X) = R(A 1,..., A n ) Schema di base di dati: insieme di schemi di relazione: R = {R 1 (X 1 ),..., R k (X k )} 14 Definizioni e notazioni - Una n-pla su un insieme di attributi X è una funzione che associa a ciascun attributo A in X un valore del dominio di A t[x] denota il valore della ennupla t sull insieme di attributi X t[a] denota il valore della ennupla t sull'attributo A 15 Definizioni e notazioni - Istanza di relazione su uno schema R(X) è un insieme r di ennuple su X r(r) o r R(X) Istanza di base di dati su uno schema R= {R 1 (X 1 ),..., R n (X n )} è un insieme di istanze di relazioni r = {r 1,..., r n } (con r i relazione su R i ) 16 Strutture nidificate Da Filippo Via Roma, Roma Ricevuta Fiscale 15 del 1/10/000 Coperti,00 Antipasti 6,0 Primi 1,00 Bistecche 18,00 Totale 9,0 Da Filippo Via Roma, Roma Ricevuta Fiscale 140 del 1/10/000 Coperti,00 Antipasti 7,00 Primi 8,00 Orate 0,00 Caffè,00 Totale 9,00 17 Relazioni che rappresentano strutture nidificate RICEVUTE NUMERO 15 DATA 1/10/000 TALE 9,0 140 1/10/000 9,00 DETTAGLIO NUMERO Q.TA DESCRIZIONE 15 15 15 15 140 Coperti Antipasti Primi Bistecche Coperti IMPOR,00 6,0 1,00 18,00,00 18
Strutture nidifcate, riflessione Abbiamo rappresentato veramente tutti gli aspetti delle ricevute? Dipende da che cosa ci interessa! l'ordine delle righe è rilevante? possono esistere linee ripetute in una ricevuta? Sono possibili rappresentazioni diverse? 19 Rappresentazione alternativa per strutture nidificate RICEVUTE DETTAGLIO NUMERO 15 15 15 15 140 NUMERO 15 140 RIGA 1 4 1 DATA 1/10/000 1/10/000 Q.TA TALE 9,0 9,00 DESCRIZIONE Coperti Antipasti Primi Bistecche Coperti IMPOR,00 6,0 1,00 18,00,00 0 Informazione incompleta - 1 Informazione incompleta - Antonio Maria INDIRIZZO Via Roma, 15 Udine Piazza S.Lorenzo, 5 Trieste TELEFONO 0444567 1 Non conviene (anche se spesso si fa) usare valori del dominio (0, stringa nulla, 99,...) Tecnica rudimentale ma efficace: valore nullo: denota l assenza di un valore del dominio (e non è un valore del dominio) t[a], per ogni attributo A, è un valore del dominio dom(a) oppure il valore nullo NULL Si possono (e debbono) imporre restrizioni sulla presenza di valori nulli Tipi di valore nullo (Almeno) Tre casi differenti valore sconosciuto/non disponibile valore non esistente valore senza informazione I DBMS non distinguono i tipi di valore nullo Basi di dati scorrette Esistono istanze di basi di dati che, pur sintatticamente corrette, non rappresentano informazioni possibili per l applicazione di interesse 4 4
Base di dati scorretta Vincolo di integrità ESAMI STUDENTE VO LODE 76545 76545 0 e lode 78764 7 e lode 7940 4 STUDENTI MATRICOLA 76545 78764 78764 CORSO 01 0 0 04 Maria Antonio Proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l applicazione I diversi vincoli possono essere classificazione a seconda degli elementi coinvolti: vincoli intrarelazionali vincoli interrelazionali 5 6 Vincoli intrarelazionali Vincoli di tupla - 1 I vincoli intrarelazionali sono definiti rispetto a singole relazioni Si distinguono: vincoli di tupla vincoli che coinvolgono più tuple I vincoli di tupla sono vincoli che possono essere valutati all interno di ogni singola tupla, indipendentemente dalle altre tuple Possono essere relativi ad un singolo attributo vincoli di dominio (Voto 18) AND (Voto 0) 7 8 Vincoli di tupla - vincolo NOT NULL Matricola IS NOT NULL Possono coinvolgere diversi attributi (NOT(Lode="e lode")) OR (Voto=0) Vincolo di chiave Il vincolo intrarelazionale fondamentale per il modello relazionale è il vincolo di chiave Intuitivamente, una chiave è un insieme di attributi utilizzato per identificare univocamente le tuple di una relazione 9 0 5
Esempio di chiave - 1 MATRICOLA 7655 7876 654 87654 6765 CORSO Informatica Matematica Ingegneria Informatica Ingegneria NASCITA 5/1/78 /11/76 10/11/79 /11/76 5/1/78 Non ci sono due n-ple con lo stesso valore sull attributo Matricola Non ci sono due ennuple uguali su tutti e tre gli attributi Cognome, Nome e Data di Nascita 1 Formalmente: Chiave un insieme di attributi K è superchiave di una relazione r se r non contiene due tuple distinte t1 e t con t1[k] = t[k] K è chiave di r se è una superchiave minimale di r (cioè non esiste un altra superchiave K di r che sia contenuta in K come sottoinsieme proprio) Esempio di chiave - MATRICOLA 7655 7876 654 87654 6765 CORSO Informatica Matematica Ingegneria Informatica Ingegneria Matricola è una chiave: è superchiave contiene un solo attributo e quindi è minimale Cognome, Nome, Nascita è un altra chiave: è superchiave minimale NASCITA 5/1/78 /11/76 10/11/79 /11/76 5/1/78 Considerazioni sulle chiavi Ogni relazione ha una chiave Fra le possibili chiavi di una relazione deve essere selezionata una chiave primaria Per garantire l identificazione univoca di ogni tupla, la chiave primaria non può assumere valori nulli Quando non è possibile trovare degli attributi identificanti è necessario introdurre un attributo aggiuntivo, un codice 4 Vincoli interrelazionali Vincoli interrelazionali coinvolgono più relazioni La più importante classe di vincoli interrelazionali sono i vincoli di integrità referenziale Informazioni in relazioni diverse sono correlate attraverso valori comuni valori delle chiavi primarie INFRAZIONI CODICE DATA VIGILE PROVINCIA NUMERO 41 1//004 987 MI 9548K 554 6451 4//005 5/4/005 95 95 E9548 89548 71 5//006 945 89548 VIGILI MATRICOLA 987 Luca 95 945 754 Mori Antonio 5 6 6
INFRAZIONI CODICE 41 554 6451 71 AU DATA VIGILE 1//004 987 4//005 95 5/4/005 95 5//006 945 PROVINCIA NUMERO MI 9548K E9548 89548 PROVINCIA MI NUMERO 9548K E9548 89548 89548 Vincolo di integrità referenziale - 1 Un vincolo di integrità referenziale (o references key) fra gli attributi X di una relazione R 1 e un altra relazione R impone ai valori su X in R 1 di comparire come valori della chiave primaria di R Esempio precedente: l attributo Vigile della relazione INFRAZIONI e la relazione VIGILI gli attributi Prov e Numero di INFRAZIONI e la relazione AU 7 8 Violazione di vincolo di integrità referenziale INFRAZIONI CODICE 41 554 6451 71 AU DATA 1//004 4//005 5/4/005 5//006 PROVINCIA MI VIGILE 987 95 95 945 NUMERO E9548 F9548 89548 PROVINCIA MI NUMERO E9548 E9548 89548 89548 9 Vincoli di integrità referenziale - Giocano un ruolo fondamentale nel concetto di modello basato su valori in presenza di valori nulli i vincoli possono essere resi meno restrittivi sono possibili meccanismi per il supporto alla loro gestione ("azioni" compensative a seguito di violazioni) attenzione ai vincoli su più attributi 40 IMPIEGATI PROGETTI Integrità referenziale e valori nulli MATRICOLA 41 554 6451 70 CODICE IDEA XYZ BOH INIZIO 01/006 07/006 01/007 Maria DURATA 6 4 4 PROGET IDEA XYZ IDEA COS 00 10 150 41 Violazione di vincoli di integrità: soluzioni La violazione di un vingolo di integrita referenziale può verificarsi in diverse situazioni inserimento di una nuova tupla eliminazione di una tupla aggiornamento di una tupla Diverse sono le soluzioni che possono essere adottate rifiuto dell operazione (comportamento standard) eliminazione in cascata introduzione di valori nulli 4 7
Eliminazione in cascata Introduzione di valori nulli IMPIEGATI MATRICOLA 41 554 6451 70 Maria PROGET IDEA XYZ IDEA IMPIEGATI MATRICOLA 41 554 6451 70 Maria PROGET IDEA XYZ IDEA PROGETTI CODICE INIZIO DURATA COS IDEA 01/006 6 00 XYZ 07/001 07/006 4 10 BOH 01/007 4 150 PROGETTI CODICE INIZIO DURATA COS IDEA 01/006 6 00 XYZ 07/001 07/006 4 10 BOH 01/007 4 150 4 44 AU INCIDENTI Vincoli multipli su più attributi CODICE 41 6451 PROVINCIA MI DATA 1//06 5/6/06 NUMERO PR_A 9548K E9548 89548 NUM_A E9548 89548 PR_A MI NUM_A 9548K E9548 Per trattare dati spaziali Dato un modello logico tradizionale (modello relazionale) introduzione di uno o più tipi di dato spaziale Vincoli di integrità referenziale fra: gli attributi ProvA e NumeroA di INCIDENTI e la relazione AU gli attributi ProvB e NumeroB di INCIDENTI e la relazione AU 45 46 Modello GEO-relazionale Il modello relazionale prevede una serie di tipi di dato di base: INTEGER: numeri interi REAL: numeri reali approssimati STRING: stringhe di caratteri BOOLEAN: valori booleani (vero, falso) Per trattare dati spaziali vengono introdotti uno o più tipi di dato spaziale (SDT) 47 Tipi di dato spaziale (SDT) Geometria lineare i componenti di base sono punti, segmenti di retta, spezzate, spezzate chiuse Si definisce uno SDT specifico per ogni dimensione dimensione 0 punto dimensione 1 spezzata dimensione poligono 48 8
Elementi di geometria - 1 Spazio di riferimento: R Punto: P(x,y) a è il vettore che individua il punto P in R 49 Elementi di geometria - Segmento di retta per i punti P e Q individuati dai vettori a e b: s={λa+(1-λ)b λ [0,1]} chiamiamo estremi del segmento i punti s.e 1 =Q(λ=0) e s.e =P(λ=1) Spezzata è un insieme di segmenti di retta sp={s 1,,s n } tale che ogni estremo di segmento è condiviso da esattamente due segmenti, eccetto al massimo due estremi, detti estremi della spezzata 50 Elementi di geometria - se la spezzata non si interseca si dice spezzata semplice se la spezzata non ha estremi si dice spezzata chiusa una spezzata si dice monotona rispetto a una retta L se ogni retta L ortogonale a L incontra la spezzata in al più un punto Elementi di geometria - 4 a) segmento b) spezzata semplice c) spezzata non semplice d) spezzata chiusa e) spezzata monotona f) spezzata non monotona 51 5 Elementi di geometria - 5 Elementi di geometria - 6 Poligono semplice: data una spezzata chiusa sp, è la porzione di R delimitata da sp sp fa parte del poligono 5 Poligono bucato: data una spezzata chiusa sp e un insieme di spezzate chiuse H={sp 1,,sp n }, è la porzione di R delimitata da sp alla quale siano tolte le porzioni di piano delimitate da sp i H, a condizione che: sp e tutte le sp i H siano parte del poligono tutte le sp i H siano contenute nel poligono semplice delimitato da sp tutte le sp i H non intersechino sp per ogni sp i,sp j H, sp i non intersechi sp j ed sp i non contenga sp j 54 9
Elementi di geometria - 7 Un poligono P si dice convesso se per ogni coppia di punti A e B in P il segmento AB è completamente incluso in P Un poligono monotono è un poligono semplice tale che la sua frontiera si può spezzare esattamente in due spezzate monotone Una regione è un insieme di poligoni Elementi di geometria - 8 Esempi di poligoni: a) semplice b) non semplice c) convesso d) monotono e) bucato f) regione 55 56 Punto - 1 Punto - POINT è un insieme finito P di punti di R Boundary di P è l'insieme vuoto Interior di P è P stesso 57 Dato P: POINT sono definite le seguenti operazioni: P.X: REAL coordinata x del baricentro di P; P.Y: REAL coordinata y del baricentro di P; P.Distanza(Q: POINT): REAL distanza euclidea tra il baricentro di P e il baricentro di Q; P.NumPunti: INTEGER numero di punti presenti in P; P.Punto(I: INTEGER): POINT i-esimo punto presente in P; P.Unione(Q: POINT): POINT genera l'unione dei due insiemi di punti. Si suppone definito anche l'operatore di uguaglianza: P = Q 58 Linea - 1 Linea - LINE è un insieme di spezzate L di R tale che nessuna coppia di spezzate abbia come intersezione una spezzata Boundary di L è l'insieme di punti di R costituito dagli estremi delle spezzate tolti gli estremi che appartengono a più di una spezzata Interior di L è l'insieme di punti di R costituito dalle spezzate private degli estremi che costituiscono il Boundary di L 59 Data L: LINE sono definite le seguenti operazioni: L.Boundary: POINT boundary di L; L.NumSpezzate: INTEGER numero di spezzate di L L.Lunghezza: REAL lunghezza di L ottenuta sommando la lunghezza di tutte le spezzate che la compongono; L.Semplice: BOOLEAN vero se l'unione delle spezzate di L è una spezzata semplice; L.Chiusa: BOOLEAN vero se l'unione delle spezzate di L è una spezzata chiusa; L.Unione(K: LINE): LINE genera un valore di tipo LINE che rappresenta l'unione di L e K; 60 10
Linea - L.IntersezioneL(K: LINE): LINE genera un valore di tipo LINE che rappresenta l'intersezione di L e K. Se l'intersezione è costituita solo da punti, allora produce l'insieme vuoto; L.IntersezioneP(K: LINE): POINT genera un valore di tipo POINT che rappresenta l'intersezione di L e K. Se l'intersezione è costituita solo da spezzate, allora produce l'insieme vuoto. Se nell'intersezione sono presenti spezzate e punti isolati, restituisce solo questi ultimi. Si suppone definito anche l'operatore di uguaglianza: L = L' 61 Poligono - 1 POLYGON è un insieme G di poligoni bucati di R, tale che ogni coppia di poligoni costituisce un insieme di punti non connesso Definizione. Un insieme di punti si dice (path-)connesso se per ogni coppia di suoi punti esiste un cammino (path) completamente contenuto nell insieme che li connette Boundary di G è costituito dalle spezzate che delimitano i poligoni di G Interior di G è costituito dai poligoni privati delle spezzate che li delimitano 6 Poligono - Poligono - Dato G: POLYGON sono definite le seguenti operazioni (per semplicità consideriamo insiemi singoletti): G.Frontiera: LINE valore geometrico di tipo LINE che costituisce la frontiera esterna del poligono; G.Boundary: LINE valore geometrico di tipo LINE che costituisce la frontiera del poligono; G.Semplice: BOOLEAN vero se G e semplice; G.NumBuchi: INTEGER numero di buchi presenti nel poligono G; G.Perimetro: REAL lunghezza del perimetro di G ottenuto sommando la lunghezza di tutte le spezzate G.Unione(H: POLYGON): POLYGON genera un valore di tipo POLYGON che rappresenta l'unione dei due poligoni G e H; G.IntersezioneG(H: POLYGON): POLYGON genera un valore di tipo POLYGON che rappresenta l'intersezione dei due poligoni G e H. Se l'intersezione è costituita solo da punti e/o linee allora produce l'insieme vuoto; G.IntersezioneL(H: POLYGON): LINE genera un valore di tipo LINE che rappresenta l'intersezione dei due poligoni G e H. Se l'intersezione è costituita solo da punti e/o da poligoni allora produce l'insieme vuoto. Se l'intersezione presenta oltre a spezzate anche poligoni e/o punti restituisce solo le spezzate; che lo delimitano; G.Area: REAL misura dell'area del poligono G; 6 64 Poligono - 4 Poligono - 5 G.IntersezioneP(H: POLYGON): POINT genera un valore di tipo POINT che rappresenta l'intersezione dei due poligoni G e H. Se l'intersezione è costituita solo da linee e/o poligoni allora produce l'insieme vuoto. Se l'intersezione presenta oltre a punti isolati anche linee e/o poligoni restituisce solo i punti isolati. Si suppone definito anche l'operatore di uguaglianza: G = G 65 66 11
Relazioni (o tabelle) - 1 Uno schema di tabella è definito come R(X 1 :D 1,...,X n :D n ) dove D 1,...,D n rappresentano domini di base o geometrici Un'istanza di tale schema è r di R(X 1 : D 1,...,X n : D n ) dove r D 1 xxd n Relazioni (o tabelle) - COMUNE( Nome: STRING, NumAbitanti: INTEGER, Estensione: POLYGON) 67 68 Rappresentazione dei dati spaziali: problemi La rappresentazione dei valori geometrici in un GEO-DBMS presenta alcuni problemi: l'occupazione di memoria di un valore geometrico l'imprecisione nelle coordinate (rappresentazione approssimata dei numeri reali) i valori geometrici sono fortemente correlati Rappresentazione dei dati spaziali: metodi Due metodi: insieme di liste di coordinate struttura basata sulla topologia dei dati 69 70 Liste di coordinate - 1 Liste di coordinate - Ogni tipo di dato spaziale è definito in modo analogo poligono come insieme di coordinate linee come insieme di coordinate punti come un singoletto di coordinate 71 G1=(ln,(<0,0>,<1,>,<1,7>,<1,11>,<15,10>,<0,4>,<4,6>)) G=(ln,(<-,10>,<1,7>,<1,11>,<14,1>,<0,1>)) G=(pg,(<5,14>,<10,1.5>,<11,1>,<1,11>,<1,7>,<0,10>, <0,1.5>)) 7 1
Liste di coordinate - Vantaggi: l'indipendenza tra i valori geometrici le buone prestazioni dell'operazione di visualizzazione grafica della geometria di un sottoinsieme limitato di valori Svantaggi: tutte le selezioni spaziali e le operazioni di manipolazione richiedono l'applicazione di algoritmi di geometria computazionale la ridondanza nella rappresentazione della geometria 7 Struttura basata sulla topologia - 1 Ogni tipo di dato spaziale è definito in modo diverso a seconda della sua struttura topologica poligono come insieme di linee linee come insieme di punti punti come coppia di coordinate 74 Struttura basata sulla topologia - Struttura basata sulla topologia - 75 76 Struttura basata sulla topologia - 4 G1 = <ln, {a1,a,a}> G = <ln,{a1,a4,a5}> G = <pg,{a1,a6,a7}> a1 = (P, (), P) a = (P1, (<1,>), P) a = (P, (<15,10>, <0,4>), P4) a4 = (P, ( <14,1>),P5) a5 = (P6, (),P) a6 = (P, (<0,10>, <0,1.5>), P7) Struttura basata sulla topologia - 5 P1 = <0,0> P = <1,7> P = <1,11> P4 = <4,6> P5 = <0,1> P6 = <-,10> P7 = <5,14> a7 = (P7, (<10,1.5>, <11,1>), P) 77 78 1
Struttura basata sulla topologia - 6 Vantaggi: l'eliminazione della ridondanza la riduzione di alcune operazioni geometriche a selezione di un insieme di identificatori o puntatori a valori geometrici elementari precalcolati la riduzione della ricerca via predicati topologici ad un confronto tra identificatori o puntatori a valori geometrici elementari precalcolati la verifica dei vincoli spaziali immediata e supportata dalla struttura topologica 79 Struttura basata sulla topologia - 7 Svantaggi: il ripristino della topologia corretta a valle di ogni inserimento di un nuovo valore geometrico la pura visualizzazione di un valore geometrico richiede il ritrovamento della geometria attraverso una catena di puntatori (indirettezze) 80 14