Caso di Studio: ANAGRAFE AZIENDE AGRICOLE

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Caso di Studio: ANAGRAFE AZIENDE AGRICOLE"

Transcript

1 UNIVERSITÀ DEGLI STUDI DI UDINE Dipartimento di Scienze Agrarie CORSO DI LAUREA IN SCIENZE E TECNOLOGIE DELL AMBIENTE E DEL TERRITORIO Caso di Studio: ANAGRAFE AZIENDE AGRICOLE 1 Descrizione del dominio applicativo Si vuole gestire l anagrafica delle aziende agricole della regione Friuli Venezia Giulia. Per ogni azienda si vuole mantener traccia del Codice Univoco di identificazione delle Aziende Agricole 1, della denominazione, dei proprietari (per ognuno nome, cognome, codice fiscale), della sede legale (via, civico, comune e provincia), di uno o più numeri di telefono e delle diverse sedi in cui viene svolta l attività. Per ogni sede di attività si vuole gestire i riferimenti della particella catastale (con mappale catastale e superficie). Per le particelle su cui viene svolta l attività di coltivazione si vuole tener traccia del tipo di irrigazione disponibile (nessuno, a pioggia o a scorrimento), delle colture coltivate e se la coltivazione è gestita in rotazione 2 o meno. Nel caso in cui la particella sia coltivata fuori rotazione si vuole l indicazione sulla percentuale di terreno coltivata per ogni coltura. Nel caso di particelle gestite in rotazione si vuole l informazione relativa all ordine di gestione delle diverse colture. Per le particelle su cui viene svolta l attività di allevamento si vuole tener traccia del numero di animali gestiti per specie (suini, bovini, equini, etc.) 1 Il CUAA, corrispondente al codice fiscale, è il numero identificativo da utilizzarsi in tutti i rapporti con la pubblica amministrazione, ai sensi dell art. 1, comma 2, del D.P.R. 503/99. 2 La rotazione delle colture o avvicendamento colturale è una tecnica adottata in agricoltura e giardinaggio che prevede la variazione, da un ciclo produttivo all altro, della specie agraria coltivata nello stesso appezzamento, al fine di migliorare o mantenere la fertilità del terreno agrario e garantire, a parità di condizioni, una maggiore resa. Si contrappone alla tecnica della monosuccessione, che consiste nella ripetizione sullo stesso appezzamento della coltura effettuata nel ciclo precedente. 1

2 e tipo di stabulazione utilizzato (a terra, box su lattiera, recinti individuali, etc.). Tenere presente che non tutti i tipi di stabulazione possono essere associati a tutte le specie animale. Inoltre, per ogni particella si vuole memorizzare informazioni relative al tipo di stoccaggio dei residui prodotti (vasca scoperta, platea per solidi, platea scoperta, platea coperta, etc.) con il relativo volume. 2 Progettazione Concettuale rappresentato in Fi- Lo schema risultante dalla progettazione concettuale gura 1. Figura 1: Schema CGG. Note: - entità ATTIVITA: l attributo tipo indica il tipo di attività svolta (coltivazione o allevamento, supponendo che possa essere o l una o l altra, non entrambe); 2

3 - relazione SU: l attributo diritto indica la modalità con cui viene svolta l attività sulla particella (proprietà, affitto,...); 3 Progettazione logica Il primo passo della progettazione concettuale consiste nella ristrutturazione dello schema concettuale che, a partire dallo schema rappresentato in Figura 1, considererà i seguenti punti: 1. attributo multivalore telefono dell entità AZIENDA: si introduce un entità TELEFONO che viene legata all entità AZIENDA mediante una relazione di tipo uno a molti; 2. attributo composto indirizzo dell entità PARTICELLA: l attributo composto mappale viene eliminato e sono mantenuti i singoli attributi semplici che lo compongono; 3. attributo composto indirizzo della relazione SEDELEGALE: l attributo composto indirizzo viene eliminato e sono mantenuti i singoli attributi semplici che lo compongono; 4. specializzazione dell entità ATTIVITÀ: supponendo che le attività (particelle su cui si svolge l attività) vengano accedute per tipo di attività si decide di eliminare le entità padre e mantenere solo le figlie della specializzazione. Questa ristrutturazione porta a duplicare le relazioni su e svolge con relativi attributi. L attributo tipo dell entità attività perde poi di significato e può essere eliminato. Note: si perdono alcuni vincoli 1) il fatto che ogni azienda deve avere almeno un attività sia essa di coltivazione o di allevamento 2) ogni particella ha associato un unica attività (coltivazione o allevamento, non entrambe); 5. specializzazione dell entità COLTIVAZIONE: supponendo che si sia interessati alle colture coltivate sulle diverse particelle, indipendentemente dal tipo di coltivazione (rotazione o fuori rotazione) si decide di eliminare le entità figlie della specializzazione. Note: si perde il vincolo secondo cui ogni attività di coltivazione deve aver associato almeno una coltura; 6. accorpamento di relazioni: le due relazioni coltiva (nate dalla ristrutturazione della specializzazione dell entità COLTIVAZIONE) sono stae accorpate in un unica relazione inglobando i due attributi che a questo punto diventano opzionali. Note: si riesce così a vincolare ogni coltivazione ad essere associata ad almeno una coltura ma bisogna tener presente che almeno uno due 3

4 attributi (non entrambi) deve essere popolato. La popolazione di tali attributi deve essere anche uniforme rispetto al tipo di coltivazione definito. Lo schema CGG ristrutturato risulta quindi essere quello rappresentato in Figura 2. Figura 2: Schema CGG ristrutturato. Si può quindi procedere con traduzione vera e propria dello schema CGG ristrutturato sul modello logico relazionale esteso per il trattamento dei dati spaziali (gli attributi con nome the geom avranno infatti associato un dominio di tipo spaziale). 1. Procedendo con ordine, andiamo prima a tradurre tutte le entità: ST OCCAGGIO(codice, descrizione) descrizione NOT NULL ST ABU LAZION E(codice, descrizione) descrizione NOT NULL 4

5 AN IM ALE(codice, specie) specie NOT NULL COLT U RA(codice, nome) nome NOT NULL IRRIGAZION E(codice, descrizione) descrizione NOT NULL P ROV IN CIA(codiceistat, nome, the geom) nome NOT NULL COM U N E(codiceistat, provincia, nome, the geom) nome NOT NULL P ART ICELLA(provincia, comune, sezione, f oglio, numero, superf icie, the geom) superficie NOT NULL AZIEN DA(CU AA, denominazione, dataf ondazione, the geom) denominazione NOT NULL P ROP RIET ARIO(codicef iscale, nome, cognome, datanascita) nome, cognome, datanascita NOT NULL T ELEF ON O(azienda, numero) T IP OALLEV AM EN T O(stabulazione, animale) ALLEV AM EN T O(provincia, comune, sezione, f oglio, particella) COLT IV AZION E(provincia, comune, sezione, f oglio, particella) 2. Quindi, consideriamo le relazioni di tipo uno a molti che apporteranno delle modifiche ad alcune delle precedenti tabelle: relazione sede legale: AZIEN DA(CU AA, denominazione, dataf ondazione, the geom, provincia, comune, via, civico, cap) denominazione, provincia, comune, via, civico, cap NOT NULL 5

6 fk (provincia,comune) references COMUNE(provincia,codiceistat) relazione ha: T ELEF ON O(azienda, numero) azienda NOT NULL fk (azienda) references AZIENDA(CUAA) relazioni svolgea e sua ALLEV AM EN T O(provincia, comune, sezione, f oglio, particella, azienda, diritto) azienda, diritto NOT NULL fk (azienda) references AZIENDA(CUAA) fk (provincia,comune,sezione,foglio,particella) references PARTICEL- LA(provincia,comune,sezione,foglio,numero) relazione svolgec e suc COLT IV AZION E(provincia, comune, sezione, f oglio, particella, azienda, diritto) azienda, diritto NOT NULL fk (azienda) references AZIENDA(CUAA) fk (provincia,comune,sezione,foglio,particella) references PARTICEL- LA(provincia,comune,sezione,foglio,numero) relazione irriga COLT IV AZION E(provincia, comune, sezione, f oglio, particella, azienda, diritto, irriga) azienda, diritto, irriga NOT NULL fk (azienda) references AZIENDA(CUAA) fk (provincia,comune,sezione,foglio,particella) references PARTICEL- LA(provincia,comune,sezione,foglio,numero) fk (irriga) references IRRIGAZIONE(codice) 3. Infine, introduciamo le tabelle necessarie per la traduzione delle relazioni molti a molti: relazione proprieta: P ROP RIET A(azienda, proprietario) fk (azienda) references AZIENDA(CUAA) fk (proprietario) references PROPRIETARIO(codicefiscale) relazione dispone: DISP ON E(provincia, comune, sezione, f oglio, particella, stoccaggio, 6

7 Figura 3: Schema logico relazionale. volume) volume NOT NULL fk (provincia,comune,sezione,foglio,particella) references ALLEVAMEN- TO(provincia,comune,sezione,foglio,particella) fk (stoccaggio) references STOCCAGGIO(codice) relazione alleva: ALLEV A(provincia, comune, sezione, f oglio, particella, stabulazione, animale, quantita) quiantita NOT NULL fk (provincia,comune,sezione,foglio,particella) references ALLEVAMEN- TO(provincia,comune,sezione,foglio,particella) fk (stabulazione, animale) references TIPOALLEVAMENTO(stabulazione, animale) relazione coltiva: COLT IV A(provincia, comune, sezione, f oglio, particella, coltura, ordine, percentuale) check (ordine IS NOT NULL or percentuale IS NOT NULL) check (ordine IS NULL or percentuale IS NULL) fk (provincia,comune,sezione,foglio,particella) references COLTIVAZIO- NE(provincia,comune,sezione,foglio,particella) fk (coltura) references COLTURA(codice) 7

8 Lo schema logico relazionale finale risulterà essere quindi quello rappresentato in Figura 3. 4 Linguaggio SQL 4.1 Creazione della base di dati CREATE TABLE STOCCAGGIO ( c o d i c e CHAR( 2 ) PRIMARY KEY, d e s c r i z i o n e VARCHAR( 3 0 ) NOT NULL UNIQUE CREATE TABLE STABULAZIONE ( c o d i c e CHAR( 2 ) PRIMARY KEY, d e s c r i z i o n e VARCHAR( 3 0 ) NOT NULL UNIQUE CREATE TABLE ANIMALE ( c o d i c e CHAR( 2 ) PRIMARY KEY, s p e c i e VARCHAR( 3 0 ) NOT NULL UNIQUE CREATE TABLE COLTURA ( c o d i c e CHAR( 2 ) PRIMARY KEY, nome VARCHAR( 3 0 ) NOT NULL UNIQUE CREATE TABLE IRRIGAZIONE ( c o d i c e CHAR( 2 ) PRIMARY KEY, d e s c r i z i o n e VARCHAR( 3 0 ) NOT NULL UNIQUE CREATE TABLE PROVINCIA ( c o d i c e i s t a t CHAR( 3 ) PRIMARY KEY, nome VARCHAR( 3 0 ) NOT NULL SELECT AddGeometryColumn (, p r o v i n c i a, the geom,4326, MULTIPOLYGON, 2 CREATE INDEX i d x g i s t p r o v i n c i a ON p r o v i n c i a USING g i s t ( the geom CREATE TABLE COMUNE ( p r o v i n c i a CHAR( 3 ) REFERENCES PROVINCIA( c o d i c e i s t a t ) ON UPDATE CASCADE, c o d i c e i s t a t CHAR( 3 ), nome VARCHAR( 3 0 ) NOT NULL, PRIMARY KEY ( p r o v i n c i a, c o d i c e i s t a t ) SELECT AddGeometryColumn (, comune, the geom,4326, MULTIPOLYGON, 2 CREATE INDEX i d x g i s t c o m u n e ON comune USING g i s t ( the geom CREATE TABLE PARTICELLA ( p r o v i n c i a CHAR( 3 ), comune CHAR( 3 ), s e z i o n e CHAR( 1 ), f o g l i o INTEGER, numero INTEGER, s u p e r f i c i e NUMERIC( 1 0, 2 ) NOT NULL, PRIMARY KEY ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, numero ) 8

9 , FOREIGN KEY ( p r o v i n c i a, comune ) REFERENCES COMUNE( p r o v i n c i a, c o d i c e i s t a t ) ON UPDATE CASCADE SELECT AddGeometryColumn (, p a r t i c e l l a, the geom,4326, POLYGON, 2 ) ; CREATE INDEX i d x g i s t p a r t i c e l l a ON p a r t i c e l l a USING g i s t ( the geom ) ; CREATE TABLE AZIENDA ( CUAA VARCHAR( 1 6 ) PRIMARY KEY, denominazione VARCHAR( 3 0 ) NOT NULL, d a t a f o n d a z i o n e DATE, p r o v i n c i a CHAR( 3 ) NOT NULL, comune CHAR( 3 ) NOT NULL, v i a VARCHAR( 3 0 ) NOT NULL, c i v i c o VARCHAR( 5 ) NOT NULL, cap NUMERIC( 5, 0 ) NOT NULL, FOREIGN KEY ( p r o v i n c i a, comune ) REFERENCES COMUNE( p r o v i n c i a, c o d i c e i s t a t ) ON UPDATE CASCADE SELECT AddGeometryColumn (, azienda, the geom,4326, POINT, 2 CREATE INDEX i d x g i s t a z i e n d a ON azienda USING g i s t ( the geom CREATE TABLE PROPRIETARIO ( c o d i c e f i s c a l e CHAR( 1 6 ) PRIMARY KEY, nome VARCHAR( 3 0 ) NOT NULL, cognome VARCHAR( 3 0 ) NOT NULL, d a t a n a s c i t a DATE NOT NULL CREATE TABLE TELEFONO ( azienda VARCHAR( 1 6 ) REFERENCES AZIENDA(CUAA) ON UPDATE CASCADE ON DELETE CASCADE, numero VARCHAR( 1 0 ), PRIMARY KEY ( azienda, numero ) CREATE TABLE TIPOALLEVAMENTO ( s t a b u l a z i o n e CHAR( 2 ) REFERENCES STABULAZIONE( c o d i c e ) ON UPDATE CASCADE, animale CHAR( 2 ) REFERENCES ANIMALE( c o d i c e ) ON UPDATE CASCADE, PRIMARY KEY ( s t a b u l a z i o n e, animale ) CREATE TABLE ALLEVAMENTO ( p r o v i n c i a CHAR( 3 ), comune CHAR( 3 ), s e z i o n e CHAR( 1 ), f o g l i o INTEGER, p a r t i c e l l a INTEGER, PRIMARY KEY ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a ), azienda VARCHAR( 1 6 ) REFERENCES AZIENDA(CUAA), FOREIGN KEY ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a ) REFERENCES PARTICELLA( p r o v i n c i a, comune, s e z i o n e, f o g l i o, numero ) ON UPDATE CASCADE CREATE TABLE COLTIVAZIONE ( p r o v i n c i a CHAR( 3 ), comune CHAR( 3 ), s e z i o n e CHAR( 1 ), f o g l i o INTEGER 9

10 , p a r t i c e l l a INTEGER, PRIMARY KEY ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a ), azienda VARCHAR( 1 6 ) REFERENCES AZIENDA(CUAA) ON UPDATE CASCADE, FOREIGN KEY ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a ) REFERENCES PARTICELLA( p r o v i n c i a, comune, s e z i o n e, f o g l i o, numero ), i r r i g a CHAR( 2 ) REFERENCES IRRIGAZIONE( c o d i c e ) ON UPDATE CASCADE CREATE TABLE PROPRIETA ( azienda VARCHAR( 1 6 ) REFERENCES AZIENDA(CUAA) ON UPDATE CASCADE, p r o p r i e t a r i o CHAR( 1 6 ) REFERENCES PROPRIETARIO( c o d i c e f i s c a l e ) ON UPDATE CASCADE, PRIMARY KEY ( azienda, p r o p r i e t a r i o ) CREATE TABLE DISPONE ( p r o v i n c i a CHAR( 3 ), comune CHAR( 3 ), s e z i o n e CHAR( 1 ), f o g l i o INTEGER, p a r t i c e l l a INTEGER, FOREIGN KEY ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a ) REFERENCES PARTICELLA( p r o v i n c i a, comune, s e z i o n e, f o g l i o, numero ) ON UPDATE CASCADE, s t o c c a g g i o CHAR( 2 ) REFERENCES STOCCAGGIO( c o d i c e ) ON UPDATE CASCADE, volume NUMERIC( 5, 2 ) NOT NULL, PRIMARY KEY ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, s t o c c a g g i o ) CREATE TABLE ALLEVA ( p r o v i n c i a CHAR( 3 ), comune CHAR( 3 ), s e z i o n e CHAR( 1 ), f o g l i o INTEGER, p a r t i c e l l a INTEGER, FOREIGN KEY ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a ) REFERENCES PARTICELLA( p r o v i n c i a, comune, s e z i o n e, f o g l i o, numero ) ON UPDATE CASCADE, s t a b u l a z i o n e CHAR( 2 ), animale CHAR( 2 ), FOREIGN KEY ( s t a b u l a z i o n e, animale ) REFERENCES TIPOALLEVAMENTO( s t a b u l a z i o n e, animale ) ON UPDATE CASCADE, q u a n t i t a INTEGER NOT NULL, PRIMARY KEY ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, s t a b u l a z i o n e, animale ) CREATE TABLE COLTIVA ( p r o v i n c i a CHAR( 3 ), comune CHAR( 3 ), s e z i o n e CHAR( 1 ), f o g l i o INTEGER, p a r t i c e l l a INTEGER, FOREIGN KEY ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a ) REFERENCES PARTICELLA( p r o v i n c i a, comune, s e z i o n e, f o g l i o, numero ) ON UPDATE CASCADE, c o l t u r a CHAR( 2 ) REFERENCES COLTURA( c o d i c e ) ON UPDATE CASCADE 10

11 Figura 4: Interfaccia per l importazione di file shape, p e r c e n t u a l e NUMERIC( 3 ), o r d i n e NUMERIC( 1 ), PRIMARY KEY ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, c o l t u r a ), CHECK ( o r d i n e IS NOT NULL or p e r c e n t u a l e IS NOT NULL), CHECK ( o r d i n e IS NULL or p e r c e n t u a l e IS NULL) 4.2 Popolamento della base di dati Si suppone di aver caricato lo shape file dei comuni in una tabella ausiliaria COMUNI geoportalenazionale prima di procedere al caricamento delle geometrie relative alle province e ai comuni attraverso la funzionalitã messa a disposizione da PostGIS (Figura 4). INSERT INTO STOCCAGGIO ( codice, d e s c r i z i o n e ) VALUES ( PC, PLATEA COPERTA INSERT INTO STOCCAGGIO ( codice, d e s c r i z i o n e ) VALUES ( PP, PLATEA PER SOLIDI INSERT INTO STOCCAGGIO ( codice, d e s c r i z i o n e ) VALUES ( PS, PLATEA SCOPERTA INSERT INTO STOCCAGGIO ( codice, d e s c r i z i o n e ) VALUES ( VC, VASCA COPERTA INSERT INTO STABULAZIONE ( codice, d e s c r i z i o n e ) VALUES ( BL, BOX SU LATTIERA 11

12 INSERT INTO STABULAZIONE ( codice, d e s c r i z i o n e ) VALUES ( RI, RECINTI INDIVIDUALI INSERT INTO STABULAZIONE ( codice, d e s c r i z i o n e ) VALUES ( TE, A TERRA INSERT INTO ANIMALE ( codice, s p e c i e ) VALUES ( BO, BOVINIO INSERT INTO ANIMALE ( codice, s p e c i e ) VALUES ( EQ, EQUINI INSERT INTO ANIMALE ( codice, s p e c i e ) VALUES ( SU, SUINO INSERT INTO TIPOALLEVAMENTO ( s t a b u l a z i o n e, animale ) VALUES ( RI, BO INSERT INTO TIPOALLEVAMENTO ( s t a b u l a z i o n e, animale ) VALUES ( RI, EQ INSERT INTO TIPOALLEVAMENTO ( s t a b u l a z i o n e, animale ) VALUES ( TE, BO INSERT INTO TIPOALLEVAMENTO ( s t a b u l a z i o n e, animale ) VALUES ( TE, SU INSERT INTO COLTURA ( codice, nome ) VALUES ( AV, AVENA INSERT INTO COLTURA ( codice, nome ) VALUES ( FA, FAGIOLO INSERT INTO COLTURA ( codice, nome ) VALUES ( MA, MAIS INSERT INTO COLTURA ( codice, nome ) VALUES ( PI, PISELLO INSERT INTO COLTURA ( codice, nome ) VALUES ( SO, SOIA INSERT INTO IRRIGAZIONE ( codice, d e s c r i z i o n e ) VALUES ( NS, NESSUNA ) ; INSERT INTO IRRIGAZIONE ( codice, d e s c r i z i o n e ) VALUES ( PG, PIOGGIA ) ; INSERT INTO IRRIGAZIONE ( codice, d e s c r i z i o n e ) VALUES ( SC, SCORRIMENTO INSERT INTO PROVINCIA ( c o d i c e i s t a t, nome ) VALUES ( 030, UDINE INSERT INTO PROVINCIA ( c o d i c e i s t a t, nome ) VALUES ( 031, GORIZIA INSERT INTO PROVINCIA ( c o d i c e i s t a t, nome ) VALUES ( 032, TRIESTE INSERT INTO PROVINCIA ( c o d i c e i s t a t, nome ) VALUES ( 093, PORDENONE UPDATE PROVINCIA a s P SET the geom = (SELECT ST Multi ( s t u n i o n ( the geom ) ) FROM COMUNI geoportalenazionale a s GP WHERE GP. c o d p r o v i n=p. c o d i c e i s t a t INSERT INTO COMUNE ( p r o v i n c i a, c o d i c e i s t a t, nome ) VALUES ( 030, 068, PAGNACCO INSERT INTO COMUNE ( p r o v i n c i a, c o d i c e i s t a t, nome ) VALUES ( 030, 118, TAVAGNACCO INSERT INTO COMUNE ( p r o v i n c i a, c o d i c e i s t a t, nome ) VALUES ( 030, 129, UDINE UPDATE COMUNE a s C SET the geom = (SELECT the geom FROM COMUNI geoportalenazionale a s GP WHERE GP. c o d p r o v i n=c. p r o v i n c i a and GP. cod comune=c. c o d i c e i s t a t INSERT INTO AZIENDA (CUAA, denominazione, datafondazione, p r o v i n c i a, comune, via, c i v i c o, cap ) VALUES ( , TENUTA UDINESE, NULL, 030, 068, VIA UDINE, 45/A,33030 INSERT INTO AZIENDA (CUAA, denominazione, p r o v i n c i a, comune, via, c i v i c o, cap ) VALUES ( , AZIENDA AGRICOLA UDINESE, 030, 129, VIA ROMA, 11/3,33100 INSERT INTO AZIENDA (CUAA, denominazione, p r o v i n c i a, comune, via, c i v i c o, cap, d a t a f o n d a z i o n e ) VALUES ( , COLTIVAZIONI 12

13 BIOLOGICHE, 030, 129, VIA DELLE SCIENZE, 100,33100, UPDATE AZIENDA SET the geom=st PointFromText ( POINT( ), 4326) WHERE CUAA= ; PAGNACCO UPDATE AZIENDA SET the geom=st PointFromText ( POINT( ), 4326) WHERE CUAA= ; UDINE UPDATE AZIENDA SET the geom=st PointFromText ( POINT( ), 4326) WHERE CUAA= ; UDINE INSERT INTO TELEFONO ( azienda, numero ) VALUES ( , INSERT INTO TELEFONO ( azienda, numero ) VALUES ( , INSERT INTO TELEFONO ( azienda, numero ) VALUES ( , INSERT INTO PROPRIETARIO ( c o d i c e f i s c a l e, nome, cognome, d a t a n a s c i t a ) VALUES ( BNCMRA85Y66T656A, MARIA, BIANCHI, INSERT INTO PROPRIETARIO ( c o d i c e f i s c a l e, nome, cognome, d a t a n a s c i t a ) VALUES ( RSSANT80X88R765X, ANTONIO, ROSSI, INSERT INTO PROPRIETARIO ( c o d i c e f i s c a l e, nome, cognome, d a t a n a s c i t a ) VALUES ( RSSMRA85X56T789M, MARIO, ROSSI, INSERT INTO PROPRIETARIO ( c o d i c e f i s c a l e, nome, cognome, d a t a n a s c i t a ) VALUES ( VRDMRA84X58T789M, MARIO, VERDI, INSERT INTO PROPRIETA ( azienda, p r o p r i e t a r i o ) VALUES ( , RSSANT80X88R765X INSERT INTO PROPRIETA ( azienda, p r o p r i e t a r i o ) VALUES ( , BNCMRA85Y66T656A INSERT INTO PROPRIETA ( azienda, p r o p r i e t a r i o ) VALUES ( , RSSMRA85X56T789M INSERT INTO PROPRIETA ( azienda, p r o p r i e t a r i o ) VALUES ( , RSSMRA85X56T789M INSERT INTO PROPRIETA ( azienda, p r o p r i e t a r i o ) VALUES ( , VRDMRA84X58T789M INSERT INTO PARTICELLA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, numero, s u p e r f i c i e ) VALUES ( 030, 118,, 10, 1,9000 INSERT INTO PARTICELLA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, numero, s u p e r f i c i e ) VALUES ( 030, 118,, 10, 2,7000 INSERT INTO PARTICELLA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, numero, s u p e r f i c i e ) VALUES ( 030, 118,, 11, 1,6000 INSERT INTO PARTICELLA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, numero, s u p e r f i c i e ) VALUES ( 030, 068,, 12, 1,4000 INSERT INTO PARTICELLA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, numero, s u p e r f i c i e ) VALUES ( 030, 068,, 12, 2,6500 INSERT INTO PARTICELLA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, numero, s u p e r f i c i e ) VALUES ( 030, 129,, 55, 1,7500 INSERT INTO PARTICELLA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, numero, s u p e r f i c i e ) VALUES ( 030, 129,, 55, 3,6000 UPDATE PARTICELLA SET the geom=st PolygonFromText ( POLYGON( ( , , , , ) ),4326) WHERE p r o v i n c i a= 030 AND comune= 118 AND s e z i o n e= AND f o g l i o= 10 AND numero= 1 ; t a v a g n a c c o UPDATE PARTICELLA SET the geom=st PolygonFromText ( POLYGON( ( , , , , ) ),4326) WHERE p r o v i n c i a= 030 AND comune= 118 AND s e z i o n e= AND f o g l i o= 10 AND numero= 2 ; t a v a g n a c c o UPDATE PARTICELLA SET the geom=st PolygonFromText ( POLYGON( ( ,

14 , , , ) ),4326) WHERE p r o v i n c i a= 030 AND comune= 118 AND s e z i o n e= AND f o g l i o= 11 and numero= 1 ; t a v a g n a c c o UPDATE PARTICELLA SET the geom=st PolygonFromText ( POLYGON( ( , , , , ) ),4326) WHERE p r o v i n c i a= 030 AND comune= 068 AND s e z i o n e= AND f o g l i o= 12 and numero= 1 ; pagnacco UPDATE PARTICELLA SET the geom=st PolygonFromText ( POLYGON( ( , , , , ) ),4326) WHERE p r o v i n c i a= 030 AND comune= 068 AND s e z i o n e= AND f o g l i o= 12 and numero= 2 ; pagnacco UPDATE PARTICELLA SET the geom=st PolygonFromText ( POLYGON( ( , , , , ) ),4326) WHERE p r o v i n c i a= 030 AND comune= 129 AND s e z i o n e= AND f o g l i o= 55 and numero= 1 ; udine UPDATE PARTICELLA SET the geom=st PolygonFromText ( POLYGON( ( , , , , ) ),4326) WHERE p r o v i n c i a= 030 AND comune= 129 AND s e z i o n e= AND f o g l i o= 55 AND numero= 3 ; udine INSERT INTO PARTICELLA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, numero, s u p e r f i c i e, the geom ) VALUES ( 030, 129,, 10, 1,9000, ST PolygonFromText ( POLYGON ( ( , , , , ) ),4326) udine d a t i a l l e v a m e n t i INSERT INTO ALLEVAMENTO ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, azienda ) VALUES ( 030, 118,, 10, 1, INSERT INTO ALLEVAMENTO ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, azienda ) VALUES ( 030, 068,, 12, 1, INSERT INTO ALLEVAMENTO ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, azienda ) VALUES ( 030, 129,, 55, 1, INSERT INTO ALLEVAMENTO ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, azienda ) VALUES ( 030, 129,, 55, 3, INSERT INTO DISPONE ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, s t o c c a g g i o, volume ) VALUES ( 030, 118,, 10, 1, PC, INSERT INTO DISPONE ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, s t o c c a g g i o, volume ) VALUES ( 030, 118,, 10, 1, PP, INSERT INTO DISPONE ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, s t o c c a g g i o, volume ) VALUES ( 030, 129,, 55, 1, PC, INSERT INTO DISPONE ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, s t o c c a g g i o, volume ) VALUES ( 030, 129,, 55, 3, VC, INSERT INTO ALLEVA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, s t a b u l a z i o n e, animale, q u a n t i t a ) VALUES ( 030, 118,, 10, 1, TE, BO,1000 INSERT INTO ALLEVA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, s t a b u l a z i o n e, animale, q u a n t i t a ) VALUES ( 030, 118,, 10, 1, TE, SU, INSERT INTO ALLEVA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, s t a b u l a z i o n e, animale, q u a n t i t a ) VALUES ( 030, 068,, 12, 1, TE, BO,

15 Figura 5: Rappresentazione dei dati spaziali inseriti (comuni, particelle e aziende) INSERT INTO ALLEVA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, s t a b u l a z i o n e, animale, q u a n t i t a ) VALUES ( 030, 068,, 12, 1, RI, BO, INSERT INTO ALLEVA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, s t a b u l a z i o n e, animale, q u a n t i t a ) VALUES ( 030, 129,, 55, 1, RI, EQ,1500 INSERT INTO ALLEVA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, s t a b u l a z i o n e, animale, q u a n t i t a ) VALUES ( 030, 129,, 55, 3, RI, BO,1800 d a t i c o l t i v a z i o n i INSERT INTO COLTIVAZIONE ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, azienda, i r r i g a ) VALUES ( 030, 118,, 10, 2, , NS INSERT INTO COLTIVAZIONE ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, azienda, i r r i g a ) VALUES ( 030, 118,, 11, 1, , PG INSERT INTO COLTIVAZIONE ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, azienda, i r r i g a ) VALUES ( 030, 068,, 12, 2, , PG INSERT INTO COLTIVA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, p e r c e n t u a l e, ordine, c o l t u r a ) VALUES ( 030, 118,, 10, 2,NULL, 1, MA INSERT INTO COLTIVA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, c o l t u r a, o r d i n e ) VALUES ( 030, 118,, 10, 2, SO, 2 INSERT INTO COLTIVA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, c o l t u r a, p e r c e n t u a l e ) VALUES ( 030, 118,, 11, 1, SO, 5 0 INSERT INTO COLTIVA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, c o l t u r a, p e r c e n t u a l e ) VALUES ( 030, 118,, 11, 1, FA, 5 0 INSERT INTO COLTIVA ( p r o v i n c i a, comune, s e z i o n e, f o g l i o, p a r t i c e l l a, c o l t u r a, p e r c e n t u a l e ) VALUES ( 030, 068,, 12, 2, MA, I dati spaziali così inseriti sono rappresentati in Figura 5). 15

16 4.3 Interrogazione dei dati Determinare il codice e il nome di tutte le province: SELECT c o d i c e i s t a t, FROM PROVINCIA; nome Determinare i nomi (distinti) dei proprietari: SELECT DISTINCT nome FROM PROPRIETARIO; Determinare la denomione delle aziende di cui non si conosce la data di fondazione: SELECT denominazione FROM AZIENDA WHERE annofondazione IS NULL; Determinare il nome dei comuni associati ai nomi delle corrispondenti province: SELECT C. nome a s comune, P. nome a s p r o v i n c i a FROM COMUNE a s C, PROVINCIA a s P WHERE p r o v i n c i a = P. c o d i c e i s t a t ; SELECT C. nome a s comune, P. nome a s p r o v i n c i a FROM COMUNE a s C JOIN PROVINCIA a s P ON p r o v i n c i a = P. c o d i c e i s t a t ; Determinare per ogni azienda cuaa, denominazione, comune (nome), via, civico e cap. SELECT cuaa, denominazione, nome, via, c i v i c o, cap FROM AZIENDA, COMUNE WHERE AZIENDA. p r o v i n c i a=comune. p r o v i n c i a AND comune=c o d i c e i s t a t ; SELECT cuaa, denominazione, nome, via, c i v i c o, cap FROM AZIENDA JOIN COMUNE ON AZIENDA. p r o v i n c i a=comune. p r o v i n c i a AND comune=c o d i c e i s t a t ; Determinare per ogni azienda del comune di Udine cuaa, denominazione, via, civico e cap. SELECT cuaa, denominazione, via, c i v i c o, cap FROM AZIENDA, COMUNE WHERE AZIENDA. p r o v i n c i a=comune. p r o v i n c i a AND comune=c o d i c e i s t a t AND nome= UDINE ; SELECT cuaa, denominazione, via, c i v i c o, cap FROM AZIENDA JOIN COMUNE ON AZIENDA. p r o v i n c i a=comune. p r o v i n c i a AND comune=c o d i c e i s t a t AND nome= UDINE ; Determinare per ogni azienda cuaa, denominazione, comune (nome), via, civico e cap. 16

17 SELECT cuaa, denominazione, PROVINCIA. nome, COMUNE. nome via, c i v i c o, cap FROM AZIENDA, COMUNE, PROVINCIA WHERE AZIENDA. p r o v i n c i a=comune. p r o v i n c i a AND comune=comune. c o d i c e i s t a t AND PROVINCIA. c o d i c e i s t a t=comune. p r o v i n c i a ; SELECT cuaa, denominazione, nome, via, c i v i c o, cap FROM AZIENDA JOIN COMUNE ON AZIENDA. p r o v i n c i a=comune. p r o v i n c i a AND comune=c o d i c e i s t a t JOIN PROVINCIA ON PROVINCIA. c o d i c e i s t a t= COMUNE. p r o v i n c i a ; Determinare il nome dei proprietari omonimi (stesso nome): SELECT DISTINCT nome FROM PROPRIETARIO AS P1, PROPRIETARIO AS P2 WHERE P1. nome=p2. nome AND P1. c o d i c e f i s c a l e <P2. c o d i c e f i s c a l e ; SELECT nome FROM PROPRIETARIO GROUP BY nome HAVING COUNT( ) >1; Determinare l insieme delle colture (nome) coltivate in rotazione: SELECT DISTINCT nome FROM COLTIVA JOIN COLTURA ON c o l t u r a=c o d i c e WHERE o r d i n e IS NOT NULL; Determinare le colture coltivate sia in rotazione che fuori rotazione: SELECT DISTINCT nome FROM COLTIVA JOIN COLTURA ON c o l t u r a=c o d i c e WHERE o r d i n e IS NOT NULL INTERSECT SELECT DISTINCT nome FROM COLTIVA JOIN COLTURA ON c o l t u r a=c o d i c e WHER p e r c e n t u a l e IS NOT NULL; Determinare le colture coltivate solo in rotazione, non fuori rotazione: SELECT DISTINCT nome FROM COLTIVA JOIN COLTURA ON c o l t u r a=c o d i c e WHERE o r d i n e IS NOT NULL EXCEPT SELECT DISTINCT nome FROM COLTIVA JOIN COLTURA ON c o l t u r a=c o d i c e WHER p e r c e n t u a l e IS NOT NULL; Determinare la denominazione delle aziende che allevano bovini e hanno dispongono di vasche scoperte con un volume superiore di 200. SELECT A. denominazione FROM AZIENDA AS A JOIN ALLEVAMENTO AS AL JOIN ALLEVA AS AE ON A. cuaa=al. azienda ON AL. p r o v i n c i a=ae. p r o v i n c i a AND AL. comune=ae. comune 17

18 AND AL. s e z i o n e=ae. s e z i o n e AND AL. f o g l i o=ae. f o g l i o AND AL. p a r t i c e l l a=ae. p a r t i c e l l a JOIN TIPOALLEVAMENTO AS TA ON AE. s t a b u l a z i o n e=ta. s t a b u l a z i o n e AND AE. animale=ta. animale JOIN ANIMALE AS AN JOIN DISPONE AS DI ON TA. animale=an. c o d i c e ON AL. p r o v i n c i a=di. p r o v i n c i a AND AL. comune=di. comune AND AL. s e z i o n e=di. s e z i o n e AND AL. f o g l i o=di. f o g l i o AND AL. p a r t i c e l l a=di. p a r t i c e l l a JOIN STOCCAGGIO AS ST ON DI. s t o c c a g g i o=st. c o d i c e WHERE ST. d e s c r i z i o n e= VASCA COPERTA AND DI. volume >200 AND AN. s p e c i e= BOVINO ; SELECT A. denominazione FROM AZIENDA AS A JOIN ALLEVAMENTO AS AL ON A. cuaa=al. azienda JOIN ALLEVA AS AE ON AL. p r o v i n c i a=ae. p r o v i n c i a AND AL. comune=ae. comune AND AL. s e z i o n e=ae. s e z i o n e AND AL. f o g l i o=ae. f o g l i o AND AL. p a r t i c e l l a=ae. p a r t i c e l l a JOIN TIPOALLEVAMENTO AS TA ON AE. s t a b u l a z i o n e=ta. s t a b u l a z i o n e AND AE. animale=ta. animale JOIN ANIMALE AS AN ON TA. animale=an. c o d i c e WHERE AN. s p e c i e= BOVINO INTERSECT SELECT A. denominazione FROM AZIENDA AS A JOIN ALLEVAMENTO AS AL ON A. cuaa=al. azienda JOIN DISPONE AS DI ON AL. p r o v i n c i a=di. p r o v i n c i a AND AL. comune=di. comune AND AL. s e z i o n e=di. s e z i o n e AND AL. f o g l i o=di. f o g l i o AND AL. p a r t i c e l l a=di. p a r t i c e l l a JOIN STOCCAGGIO AS ST ON DI. s t o c c a g g i o=st. c o d i c e WHERE ST. d e s c r i z i o n e= VASCA COPERTA AND DI. volume >200; SELECT A. denominazione FROM AZIENDA AS A WHERE cuaa IN ( SELECT azienda FROM ALLEVAMENTO AS AL JOIN ALLEVA AS AE ON AL. p r o v i n c i a=ae. p r o v i n c i a AND AL. comune=ae. comune AND AL. s e z i o n e=ae. s e z i o n e AND AL. f o g l i o=ae. f o g l i o AND AL. p a r t i c e l l a=ae. p a r t i c e l l a JOIN TIPOALLEVAMENTO AS TA ON AE. s t a b u l a z i o n e=ta. s t a b u l a z i o n e AND AE. animale=ta. animale JOIN ANIMALE AS AN ON TA. animale=an. c o d i c e WHERE AN. s p e c i e= BOVINO ) AND cuaa IN (SELECT azienda FROM ALLEVAMENTO AS AL JOIN DISPONE AS DI ON AL. p r o v i n c i a=di. p r o v i n c i a 18

19 AND AL. comune=di. comune AND AL. s e z i o n e=di. s e z i o n e AND AL. f o g l i o=di. f o g l i o AND AL. p a r t i c e l l a=di. p a r t i c e l l a JOIN STOCCAGGIO AS ST ON DI. s t o c c a g g i o=st. c o d i c e WHERE ST. d e s c r i z i o n e= VASCA COPERTA AND DI. volume >200 SELECT A. denominazione FROM AZIENDA AS A WHERE EXISTS ( SELECT FROM ALLEVAMENTO AS AL JOIN ALLEVA AS AE ON AL. p r o v i n c i a=ae. p r o v i n c i a AND AL. comune=ae. comune AND AL. s e z i o n e=ae. s e z i o n e AND AL. f o g l i o=ae. f o g l i o AND AL. p a r t i c e l l a=ae. p a r t i c e l l a JOIN TIPOALLEVAMENTO AS TA ON AE. s t a b u l a z i o n e=ta. s t a b u l a z i o n e AND AE. animale=ta. animale JOIN ANIMALE AS AN ON TA. animale=an. c o d i c e WHERE AN. s p e c i e= BOVINIO AND A. cuaa=al. azienda ) AND EXISTS (SELECT FROM ALLEVAMENTO AS AL JOIN DISPONE AS DI ON AL. p r o v i n c i a=di. p r o v i n c i a AND AL. comune=di. comune AND AL. s e z i o n e=di. s e z i o n e AND AL. f o g l i o=di. f o g l i o AND AL. p a r t i c e l l a=di. p a r t i c e l l a JOIN STOCCAGGIO AS ST ON DI. s t o c c a g g i o=st. c o d i c e WHERE ST. d e s c r i z i o n e= VASCA COPERTA AND DI. volume >200 AND A. cuaa =AL. azienda Determinare il numero di particelle coltivate per azienda : SELECT azienda, COUNT( ) FROM COLTIVAZIONE GROUP BY azienda ; Determinare il numero di animali complessivi allevati per azienda : SELECT azienda, SUM( q u a n t i t a ) FROM ALLEVAMENTO a s A1 JOIN ALLEVA a s A2 ON A1. p r o v i n c i a=a2. p r o v i n c i a AND A1. comune=a2. comune AND A1. s e z i o n e =A2. s e z i o n e AND A1. f o g l i o=a2. f o g l i o AND A1. p a r t i c e l l a=a2. p a r t i c e l l a GROUP BY azienda ; Determinare l area delle diverse particelle, e confrontarle con le superfici precedentemente inserite: SELECT comune, s e z i o n e, f o g l i o, p a r t i c e l l a, s t a r e a ( ST Transform ( the geom, ) ), s u p e r f i c i e FROM PARTICELLA; Aggiornare quindi le superfici con i dati corretti: UPDATE PARTICELLA SET s u p e r f i c i e = s t a r e a ( ST Transform ( the geom, ) 19

20 Determinare l area complessiva delle particelle coltivate (a partire dalle geometrie): SELECT SUM( s t a r e a ( ST Transform ( the geom, ) ) ) FROM PARTICELLA a s P JOIN ALLEVAMENTO AS A ON P. p r o v i n c i a=a. p r o v i n c i a AND P. comune=a. comune AND P. s e z i o n e=a. s e z i o n e AND P. f o g l i o=a. f o g l i o AND P. numero=a. p a r t i c e l l a ; SELECT s t a r e a (ST UNION( ST Transform ( the geom, ) ) ) FROM PARTICELLA a s P JOIN ALLEVAMENTO AS A ON P. p r o v i n c i a=a. p r o v i n c i a AND P. comune=a. comune AND P. s e z i o n e=a. s e z i o n e AND P. f o g l i o=a. f o g l i o AND P. numero=a. p a r t i c e l l a ; Determinare per ogni comune il numero di aziende che hanno sede in esso: [ caso con i s o l i comuni che hanno a z i e n d e ] SELECT C. p r o v i n c i a C. c o d i c e i s t a t a s codice, C. nome AS comune, COUNT( ) a s numerosedi FROM COMUNE AS C JOIN AZIENDA AS A ON C. p r o v i n c i a=a. p r o v i n c i a AND C. c o d i c e i s t a t=a. comune GROUP BY C. p r o v i n c i a,c. c o d i c e i s t a t,c. nome ; [ caso con t u t t i i comuni ] SELECT C. p r o v i n c i a C. c o d i c e i s t a t a s codice, C. nome AS comune, COUNT(A.CUAA) a s numerosedi FROM COMUNE AS C LEFT OUTER JOIN AZIENDA AS A ON C. p r o v i n c i a=a. p r o v i n c i a AND C. c o d i c e i s t a t=a. comune GROUP BY C. p r o v i n c i a,c. c o d i c e i s t a t,c. nome ; Determinare la distanza fra le diverse aziende (sedi): SELECT s1. cuaa, s1. denominazione, s2. cuaa, s2. denominazione, ST Distance ( ST Transform ( s1. the geom, ), ST Transform ( s2. the geom, ) ) AS d i s t a n z a FROM azienda a s s1, azienda a s s2 WHERE s1. cuaa<s2. cuaa ; Determinare per ogni comune le particelle in esso coltivate (sfruttando le geometrie): SELECT c. nome, p. f o g l i o, p. numero FROM comune a s c, p a r t i c e l l a a s p JOIN c o l t i v a z i o n e a s co ON p. p r o v i n c i a=co. p r o v i n c i a AND p. comune=co. comune AND p. f o g l i o=co. f o g l i o AND p. s e z i o n e=co. s e z i o n e AND p. numero=co. p a r t i c e l l a WHERE s t c o n t a i n s ( c. the geom, p. the geom Determinare per ogni comune il totale delle superfici delle particelle coltivate (sfruttando le geometrie): SELECT c. nome, SUM( s t a r e a ( s t t r a n s f o r m ( p. the geom, ) ) ) a r e a C o l t i v a t a FROM comune a s c, p a r t i c e l l a a s p JOIN c o l t i v a z i o n e a s co ON p. p r o v i n c i a=co. p r o v i n c i a AND p. comune=co. comune AND p. f o g l i o=co. f o g l i o AND p. s e z i o n e=co. s e z i o n e AND p. numero=co. p a r t i c e l l a WHERE s t c o n t a i n s ( c. the geom, p. the geom ) GROUP BY c. p r o v i n c i a, c. c o d i c e i s t a t, c. nome ; 20

21 Determinare il buffer di 1000 metri rispetto alle aziende e determinare se le particelle su cui lavorano svolgono attività di allevamento sono in esso incluse o meno: SELECT a. denominazione, a l. p r o v i n c i a, a l. comune, a l. f o g l i o, a l. p a r t i c e l l a, s t c o n t a i n s ( s t b u f f e r ( s t t r a n s f o r m ( a. the geom, ),1000), s t t r a n s f o r m ( p. the geom, ) ) a s i n c l u s a I n B u f f e r FROM p a r t i c e l l a a s p JOIN allevamento a s a l ON p. p r o v i n c i a=a l. p r o v i n c i a AND p. comune=a l. comune AND p. f o g l i o=a l. f o g l i o AND p. s e z i o n e=a l. s e z i o n e AND p. numero=a l. p a r t i c e l l a JOIN azienda a ON a l. azienda=a. cuaa ; Determinare per ogni azienda il numero di particelle su cui svolgono coltivazione e il numero di quelle su cui svolgono allevamento: SELECT a. cuaa, a. denominazione, COUNT( c. p a r t i c e l l a ) a s n u m e r o P a r t i c e l l e C o l t i v a t e, COUNT( a l. p a r t i c e l l a ) a s n u m e r o P a r t i c e l l e A l l e v a t e FROM azienda a s a LEFT OUTER JOIN c o l t i v a z i o n e a s c ON a. cuaa=c. azienda LEFT OUTER JOIN allevamento a s a l ON a. cuaa=a l. azienda GROUP BY a. cuaa, a. denominazione ; 4.4 Trigger In fase di progettazione sono stati indicati alcuni vincoli non gestibili attraverso il puro modello logico relazionale ma, come si era accennato, Ã necessario l inserimento di alcuni trigger. Si riportano di seguito alcuni esempi. Un primo trigger ha il compito di settare/modificare il valore dell attributo area associata alla particella in base alla geometria della particella stessa 3. CREATE OR REPLACE FUNCTION f p a r t i c e l l a a r e a ( ) RETURNS t r i g g e r AS $BODY$ BEGIN new. s u p e r f i c i e = s t a r e a ( ST Transform ( new. the geom, ) RETURN new ; END; $BODY$ LANGUAGE p l p g s q l ; CREATE TRIGGER t p a r t i c e l l a a r e a BEFORE INSERT OR UPDATE ON p a r t i c e l l a FOR EACH ROW EXECUTE PROCEDURE f p a r t i c e l l a a r e a ( Per la verifica il precedente trigger è sufficiente riaggiornare le geometrie associate alle particelle. Sono necessari dei trigger per la gestione dei vincoli spaziali imposti dalla relazione spaziale come ad esempio l inclusione delle sedi delle aziende nei comuni in cui stanno. Si riporta a scopo esemplificativo l esempio relativo 3 Nota: tenere presente che nella realtà l area da considerare è quella data dall agenzia del territorio. 21

22 al trigger che in fase di inserimento/modifica di un azienda verifica che la sua geometria sia contenuta nel rispettivo comune: CREATE OR REPLACE FUNCTION azienda incomune ( ) RETURNS t r i g g e r AS $BODY$ DECLARE num i n t e g e r ; BEGIN SELECT COUNT( ) INTO num FROM COMUNE AS C WHERE new. p r o v i n c i a=c. p r o v i n c i a AND new. comune=c. c o d i c e i s t a t AND s t c o n t a i n s (C. the geom, new. the geom IF num=0 THEN RAISE EXCEPTION Vincolo s p a z i a l e non s o d d i s f a t t o ( sede non i n c l u s a n e l comune ) ; ELSE RETURN new ; END IF ; END; $BODY$ LANGUAGE p l p g s q l ; CREATE TRIGGER t a z i e n d a i n c o m u n e BEFORE INSERT OR UPDATE ON azienda FOR EACH ROW EXECUTE PROCEDURE azienda incomune ( Per verificare il precedente trigger è sufficiente eseguire i seguenti aggiornamenti. Nel primo caso i vincoli spaziali non sono soddisfatti ed il trigger blocca l aggiornamento, nel secondo caso l inserimento viene eseguito vista la soddisfazione del vincolo: INSERT INTO AZIENDA (CUAA, denominazione, datafondazione, p r o v i n c i a, comune, via, c i v i c o, cap, the geom ) VALUES ( , AZIENDA DI PAGNACCO,NULL, 030, 068, VIA ROMA, 4/A,33030, ST PointFromText ( POINT( ),4326) UDINE INSERT INTO AZIENDA (CUAA, denominazione, datafondazione, p r o v i n c i a, comune, via, c i v i c o, cap, the geom ) VALUES ( , AZIENDA DI PAGNACCO,NULL, 030, 068, VIA ROMA, 4/A,33030, ST PointFromText ( POINT( ),4326) PAGNACCO 4.5 Viste Creare una vista che restituisce l elenco delle aziende con tutte le informazioni ad essa associate, in particolare il nome del comune e della provincia in cui si trovano: c r e a t e view AZIENDA INFO AS SELECT A.CUAA a s CUAA, A. denominazione AS denominazione, A. datafondazione, C. nome AS comune, P. nome a s p r o v i n c i a, A. the geom a s the geom FROM COMUNE AS C JOIN AZIENDA AS A ON C. p r o v i n c i a=a. p r o v i n c i a AND C. c o d i c e i s t a t=a. comune JOIN PROVINCIA AS P ON C. p r o v i n c i a=p. c o d i c e i s t a t ; INSERT INTO geometry columns ( f t a b l e c a t a l o g, f t a b l e s c h e m a, f t a b l e n a m e, f geometry column, coord dimension, s r i d, type ) VALUES (, p u b l i c, a z i e n d a i n f o, the geom, 2, 4326, POINT 22

23 Creare una vista che associa ad ogni comune il numero di sedi di aziende in esso contenute: c r e a t e view COMUNE SEDI AS SELECT C. p r o v i n c i a C. c o d i c e i s t a t a s codice, C. nome AS comune, COUNT (A.CUAA) a s numerosedi, C. the geom a s the geom FROM COMUNE AS C LEFT OUTER JOIN AZIENDA AS A ON C. p r o v i n c i a=a. p r o v i n c i a AND C. c o d i c e i s t a t=a. comune GROUP BY C. p r o v i n c i a,c. c o d i c e i s t a t,c. nome, C. the geom ; INSERT INTO geometry columns ( f t a b l e c a t a l o g, f t a b l e s c h e m a, f t a b l e n a m e, f geometry column, coord dimension, s r i d, type ) VALUES (, p u b l i c, comuni sedi, the geom, 2, 4326, MULTIPOLYGON Nota: l inserimento della riga nella tabella delle geometrie non è necessaria nella nuova versione di PostGIS in cui la tabella geometry columns è diventata una vista. Inoltre, per poter poi utilizzare la vista da vecchie versioni di qgis è necessario avere un attributo numerico che possa essere utilizzato come identificatore. Bisogna quindi aggiungere un attributo quale: to number(a.cuaa, )::int as id nella prima vista e to number(c.provincia C.codiceistat, )::int as id per la seconda. 5 Interfacciamento con i GIS Molti sistemi GIS utilizzano come sorgente dati le basi di dati spaziali e permettono quindi la visualizzazione dei dati in esse contenuti, oltre che tutta una serie di operazioni. Sfruttando il sistema QGIS si possono creare delle viste analoghe a quelle rappresentate in Figura 6 in cui è stato visualizzato un layer vettoriali per ogni tabella spaziale della nostra base di dati. Sfruttando le viste precedentemente create si possono aggiungere ulteriori e più completi strati informativi: 23

24 Figura 6: Visualizzazione dei dati contenuti nelle tabelle spaziali da qgis. Figura 7: Visualizzazione delle viste da qgis. 24

Caso di Studio: SITI CONTAMINATI

Caso di Studio: SITI CONTAMINATI UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Agraria CORSO DI LAUREA IN SCIENZE E TECNOLOGIE DELL AMBIENTE E DEL TERRITORIO Caso di Studio: SITI CONTAMINATI L Anagrafe dei siti da bonificare, come strumento

Dettagli

Caso di Studio: SITI CONTAMINATI

Caso di Studio: SITI CONTAMINATI Caso di Studio: SITI CONTAMINATI L Anagrafe dei siti da bonificare, come strumento delle Regioni per la gestione delle implicazioni di natura tecnica, amministrativa, finanziaria, su tale tipologia di

Dettagli

Caso di Studio: SITI CONTAMINATI

Caso di Studio: SITI CONTAMINATI UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Agraria CORSO DI LAUREA IN SCIENZE E TECNOLOGIE DELL AMBIENTE E DEL TERRITORIO Caso di Studio: SITI CONTAMINATI L Anagrafe dei siti da bonificare, come strumento

Dettagli

ESAME di INFORMATICA e ARCHIVIAZIONE

ESAME di INFORMATICA e ARCHIVIAZIONE UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME di INFORMATICA e ARCHIVIAZIONE 20 luglio 2011 1 Progettazione

Dettagli

ESAME di INFORMATICA e ARCHIVIAZIONE

ESAME di INFORMATICA e ARCHIVIAZIONE UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME di INFORMATICA e ARCHIVIAZIONE 8 settembre 2011 1 Progettazione

Dettagli

Caso di Studio: ANAGRAFE ZOOTECNICA SUINA

Caso di Studio: ANAGRAFE ZOOTECNICA SUINA UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Agraria CORSO DI LAUREA IN SCIENZE E TECNOLOGIE DELL AMBIENTE E DEL TERRITORIO Caso di Studio: ANAGRAFE ZOOTECNICA SUINA 1 Descrizione del dominio applicativo

Dettagli

Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 6 MARZO 2015 Tempo: 2h30m

Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 6 MARZO 2015 Tempo: 2h30m Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 6 MARZO 2015 Tempo: 2h30m Si consideri il seguente schema di base di dati, che vuole memorizzare alcune informazioni relative a Twitter. TWEET

Dettagli

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati Corso di Laura in Informatica Umanistica Basi di Dati Corso di Laura in Informatica Umanistica Appello del 28/06/2010 Parte 1: Algebra Relazionale e linguaggio SQL Docente: Giuseppe Amato Sia dato il seguente schema di base di dati per la gestione

Dettagli

Basi di dati: appello 14/07/06

Basi di dati: appello 14/07/06 Basi di dati: appello 14/07/06 Si consideri il seguente schema di base di dati che vuole tenere traccia dell attività di un agenzia che affitta appartamenti per vacanze nella città di Varazze. CLIENTE

Dettagli

CORSO di INFORMATICA e ARCHIVIAZIONE

CORSO di INFORMATICA e ARCHIVIAZIONE UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA CORSO di INFORMATICA e ARCHIVIAZIONE Caso di Studio - 2011 1

Dettagli

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: BASI DI DATI ING. INFORMATICA PROVA PRATICA 10 LUGLIO 2013 SOLUZIONI Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: PAZIENTE(CodFiscale, Cognome, Nome,

Dettagli

Corso di Basi di Dati A.A. 2015/2016

Corso di Basi di Dati A.A. 2015/2016 Corso di Laurea in Ingegneria Gestionale Sapienza Università di Roma Corso di Basi di Dati A.A. 2015/2016 - Esercizi Tiziana Catarci, Andrea Marrella Ultimo aggiornamento : 06/04/2016 Esercizio 1 Dare

Dettagli

Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno Cognome e nome: Matricola:

Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno Cognome e nome: Matricola: Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno 2012 Cognome e nome: Matricola: Parte prima Domanda 1 Domanda 2 Domanda 3 Totale Istruzioni: È vietato portare

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 2 Vincoli di integrità Proprietà che devono essere soddisfatte da ogni istanza della base di dati. Il soddisfacimento è definito rispetto al

Dettagli

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati Corso di Laura in Informatica Umanistica Basi di Dati Corso di Laura in Informatica Umanistica Appello del 09/06/2010 Parte 1: Algebra Relazionale e linguaggio SQL Docente: Giuseppe Amato Sia dato il seguente schema di base di dati per la gestione

Dettagli

Basi di Dati - Informatica umanistica Esercitazione (Lab)

Basi di Dati - Informatica umanistica Esercitazione (Lab) Basi di Dati - Informatica umanistica Esercitazione (Lab) a.a. 2017-2018 Vinícius Monteiro de Lira (vinicius.monteirodelira@isti.cnr.it) Esercitazione Mini-project! openflights.org Esercitazione (Summary)

Dettagli

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2017/2018 1 Settima parte Interrogazione di una

Dettagli

Vincoli, procedure e regole attive in SQL. SQL: vincoli, trigger 1

Vincoli, procedure e regole attive in SQL. SQL: vincoli, trigger 1 Vincoli, procedure e regole attive in SQL SQL: vincoli, trigger 1 Qualità dei dati Qualità dei dati: correttezza, completezza, attualità In molte applicazioni reali i dati sono di scarsa qualità (5% -

Dettagli

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi. Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi. Cognome: Nome: Matricola: Domanda 1 (15%) Considerare la base di dati relazionale contenente le seguenti relazioni:

Dettagli

Basi di Dati e Sistemi Informativi A 1 A.A. 2009/ /09/10 -A Prof. Paolo Brunasti

Basi di Dati e Sistemi Informativi A 1 A.A. 2009/ /09/10 -A Prof. Paolo Brunasti Basi di Dati e Sistemi Informativi A 1 COGNOME NOME MATRICOLA PC T AR SQL-DML SQL-DDL DIAG ER Teoria (2 punti Descrivere le modalità di uso integrato tra Trigger e Stored Procedure Spiegare le proprietà

Dettagli

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati Corso di Laura in Informatica Umanistica Basi di Dati Corso di Laura in Informatica Umanistica Appello del 26/07/2010 Parte 1: Algebra Relazionale e linguaggio SQL Docente: Giuseppe Amato Sia dato il seguente schema di base di dati per la gestione

Dettagli

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo. PROBLEMA. Un albergo di una grande città intende gestire in modo automatizzato sia le prenotazioni sia i soggiorni e realizzare un database. Ogni cliente viene individuato, tra l altro, con i dati anagrafici,

Dettagli

Laboratorio di Basi di Dati e Multimedia

Laboratorio di Basi di Dati e Multimedia Laboratorio di Basi di Dati e Multimedia Laurea in Informatica Multimediale - A.A. 2006/07 Docente: Alessandra Di Pierro Email: dipierro@sci.univr.it Lezione 2 Vincoli intrarelazionali Proprietà che devono

Dettagli

Prova Scritta di Basi di Dati

Prova Scritta di Basi di Dati Prova Scritta di Basi di Dati 1 Luglio 2008 COGNOME: NOME: MATRICOLA: Si prega di risolvere gli esercizi direttamente sui fogli del testo, negli spazi indicati. Usare il foglio protocollo solo per la brutta

Dettagli

Concettuale. Giuseppe Amato

Concettuale. Giuseppe Amato Esercitazione Progettazione Concettuale 14 Aprile 2010 Giuseppe Amato Esercitazione Progettazione Concettuale Si considerino i i seguenti fttidi fatti interesse di un agenzia immobiliare. Immobili in vendita:

Dettagli

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: BASI DI DATI INGEGNERIA INFORMATICA PROVA PRATICA 26 LUGLIO 2014 SOLUZIONI Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: PAZIENTE(CodFiscale, Cognome,

Dettagli

SQL /10/2016 Basi di dati - SQL 1

SQL /10/2016 Basi di dati - SQL 1 SQL 24-27/10/2016 Basi di dati - SQL 1 Esercitazioni pratiche Per SQL è possibile (e fondamentale) svolgere esercitazioni pratiche Verranno anche richieste copme condizione per svolgere le prove parziali

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 9 Raffaella Gentilini 1 / 41 Sommario 1 DBMS Attivi e Triggers 2 2 / 41 DBMS Attivi DBMS Attivi I DBMS tradizionale sono passivi: Eseguono delle operazioni solo

Dettagli

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: BASI DI DATI INGEGNERIA INFORMATICA PROVA PRATICA 20 GIUGNO 2014 SOLUZIONI Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: PAZIENTE(CodFiscale, Cognome,

Dettagli

ESAME di INFORMATICA e ARCHIVIAZIONE

ESAME di INFORMATICA e ARCHIVIAZIONE UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME di INFORMATICA e ARCHIVIAZIONE 28 settembre 2011 1 Progettazione

Dettagli

Interrogazioni in SQL

Interrogazioni in SQL Interrogazioni in SQL Corso di Basi di Dati 4 dicembre 2013 1 Interrogazioni sullo schema aziendale 1. Ottenere i nomi dei dipartimenti dislocati in piú sedi. 2. Ottenere il numero di supervisori. 3. Produrre

Dettagli

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: BASI DI DATI INGEGNERIA INFORMATICA PROVA PRATICA 20 LUGLIO 2015 SOLUZIONI Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: PAZIENTECodFiscale, Cognome,

Dettagli

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 1 OTTOBRE 2015 Tempo: 2h30m

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 1 OTTOBRE 2015 Tempo: 2h30m Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 1 OTTOBRE 2015 Tempo: 2h30m Si consideri il seguente schema di base di dati, che vuole memorizzare informazioni relative ai viaggi di lavoro

Dettagli

Laboratorio di Basi di Dati Esercizio 8.4/9.1

Laboratorio di Basi di Dati Esercizio 8.4/9.1 Laboratorio di Basi di Dati Esercizio 8.4/9.1 Pierluigi Pierini Technolabs S.p.a. Pierluigi.Pierini@technolabs.it Università degli Studi di L Aquila Dipartimento di Informatica Technolabs S.p.A. R&D Department

Dettagli

UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME

UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME 14 maggio 2009 1 Progettazione di basi di dati Si vuole

Dettagli

ESERCIZI SQL. Esercizio 1

ESERCIZI SQL. Esercizio 1 ESERCIZI SQL 2 Esercizio 1 3 Esercizio 1 4 Esercizio 1 Si specifichino le seguenti interrogazioni SQL sulla base di dati relazionale AZIENDA. Si mostri il risultato di ciascuna interrogazione. 1. Si restituisca

Dettagli

BASE DI DATI. Esercizi Progettazione concettuale Progettazione logica Concetti avanzati SQL: Raggruppamento Nidificazione

BASE DI DATI. Esercizi Progettazione concettuale Progettazione logica Concetti avanzati SQL: Raggruppamento Nidificazione BASE DI DAI Esercizi Progettazione concettuale Progettazione logica Concetti avanzati SQL: Raggruppamento Nidificazione Informatica Umanistica Università di Pisa Esercizio: Agenzia immobiliare Si considerino

Dettagli

A.A. 2018/2019. Esercitazione 11. Strutturazione di Istruzioni in Linguaggio SQL. [ Possibili Soluzioni ] FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE

A.A. 2018/2019. Esercitazione 11. Strutturazione di Istruzioni in Linguaggio SQL. [ Possibili Soluzioni ] FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE A.A. 2018/2019 Esercitazione 11 Strutturazione di Istruzioni in Linguaggio SQL [ Possibili Soluzioni ] Docente Prof. Raffaele Pizzolante FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE Esercizio 1 Scrivere

Dettagli

Basi di dati: appello 07/02/06

Basi di dati: appello 07/02/06 Basi di dati: appello 07/02/06 Si consideri il seguente schema di base di dati di una casa editrice: restauro (id_quadro, data, tipo intervento, c.f._restauratore, ora_inizio, ora _fine.) quadro (id, titolo,

Dettagli

Verifica di Informatica. Cognome e Nome: Classe 5ª Ci, Data

Verifica di Informatica. Cognome e Nome: Classe 5ª Ci, Data Verifica di Informatica Cognome e Nome: Classe 5ª Ci, Data Progettare la base di dati di una palestra. E necessario memorizzare le informazioni relative ai clienti che riguardano: codice fiscale, cognome

Dettagli

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: BASI DI DATI INGEGNERIA INFORMATICA PROVA PRATICA 25 SETTEMBRE 2014 SOLUZIONI Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: PAZIENTE(CodFiscale, Cognome,

Dettagli

PARTITIONING PARTITIONING. 27/11/08 /home/scotty/enrico/corso web/finale/architettura/partit page 1

PARTITIONING PARTITIONING. 27/11/08 /home/scotty/enrico/corso web/finale/architettura/partit page 1 PARTITIONING PARTITIONING 27/11/08 /home/scotty/enrico/corso web/finale/architettura/partit page 1 PARTITIONING Cos'è il partitioning Metodi per eseguire il partitioning Partition setup Partition table

Dettagli

Primo Compitino di Basi di Dati

Primo Compitino di Basi di Dati Primo Compitino di Basi di Dati 19 Aprile 2004 Svolgere gli esercizi direttamente sul foglio del testo Usare fogli aggiuntivi solo in mancanza di spazio. NOME: COGNOME: MATRICOLA: Esercizio Punti previsti

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Esercitazione PostgreSQL Dopo aver lanciato il client grafico pgadmin III di PostgreSQL svolgere le operazioni descritte nel seguito, tenendo presenti i suggerimenti forniti

Dettagli

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: BASI DI DATI INGEGNERIA INFORMATICA PROVA PRATICA 10 GIUGNO 2015 SOLUZIONI Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: PAZIENTECodFiscale, Cognome,

Dettagli

Soluzione esercitazione 01

Soluzione esercitazione 01 Soluzione esercitazione 01 Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SolEse01.pdf Sistemi Informativi L-A Videonoleggio - caso A: tabella

Dettagli

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe SQL SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe Operazioni di aggiornamento Abbiamo visto come creare tabelle e come interrogarle. Vedremo ora come popolarle

Dettagli

Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste

Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste Corso di Basi di Dati 9. Esercitazioni in SQL: Check, asserzioni, viste A.A. 2016 2017 Check Come abbiamo visto, SQL permette di specificare vincoli sugli attributi e le tabelle attraverso il comando check

Dettagli

Corso di. Basi di Dati I. 11. Esercitazioni in SQL: Altri esercizi

Corso di. Basi di Dati I. 11. Esercitazioni in SQL: Altri esercizi Corso di Basi di Dati 11. Esercitazioni in SQL: Altri esercizi A.A. 2016 2017 Esempio: consideriamo le seguenti tabelle Articoli(Id, Nome, Colore) Fornitori(Id, Nome, Indirizzo) Catalogo(Articolo, Fornitore,

Dettagli

Esercitazione 4 SQL.

Esercitazione 4 SQL. Esercitazione 4 SQL foglia@iet.unipi.it DB Riferimento Il database di riferimento è il database UNIPI, creare una nuova istanza di database sul server e caricare i dati CREATE TABLE 1. Creare una tabella

Dettagli

Basi di dati: appello 04/07/06

Basi di dati: appello 04/07/06 Basi di dati: appello 04/07/06 Si consideri il seguente schema di base di dati che vuole tenere traccia dei DVD noleggiati dai clienti di una videoteca: CLIENTE (CodiceFiscale, Cognome, Nome, Residenza)

Dettagli

ESERCITAZIONE: AZIENDA

ESERCITAZIONE: AZIENDA ESERCITAZIONE: AZIENDA Homework 24 ottobre 2002 Emanuel Weitschek emanuel@dia.uniroma3.it Prerequisiti (software) PostgreSQL pgadmin Driver JDBC Ambito Si consideri una base di dati che contiene informazioni

Dettagli

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: BASI DI DATI INGEGNERIA INFORMATICA PROVA PRATICA 29 GIUGNO 2015 SOLUZIONI Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: PAZIENTE(CodFiscale, Cognome,

Dettagli

Basi di Dati. Dettagli e Approfondimenti SQL-92 25/02/2004. Dettagli e Approfondimenti. DDL: Tabelle. DML: Aggiornamenti.

Basi di Dati. Dettagli e Approfondimenti SQL-92 25/02/2004. Dettagli e Approfondimenti. DDL: Tabelle. DML: Aggiornamenti. Basi di Dati SQL-92 Dettagli e Approfondimenti SQL-92 >> Sommario Dettagli e Approfondimenti DDL: Tabelle valori di default vincoli di riferimento modifiche allo schema DDL: Viste definizione e uso DDL:

Dettagli

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013) SQL quick reference piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013) I tipi dei dati di SQL sono: delimitatori delle costanti: TEXT(n) stringa di caratteri

Dettagli

Basi di Dati SQL-92. Dettagli e Approfondimenti

Basi di Dati SQL-92. Dettagli e Approfondimenti Basi di Dati SQL-92 Dettagli e Approfondimenti SQL-92 >> Sommario Dettagli e Approfondimenti DDL: Tabelle valori di default vincoli di riferimento modifiche allo schema DDL: Viste definizione e uso DDL:

Dettagli

Basi di Dati SQL-92. Dettagli e Approfondimenti

Basi di Dati SQL-92. Dettagli e Approfondimenti Basi di Dati SQL-92 Dettagli e Approfondimenti SQL-92 >> Sommario Dettagli e Approfondimenti DDL: Tabelle valori di default vincoli di riferimento modifiche allo schema DDL: Viste definizione e uso DDL:

Dettagli

A.A. 2018/2019. Esercitazione 12. Strutturazione di Istruzioni in Linguaggio SQL. [ Possibili Soluzioni ] FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE

A.A. 2018/2019. Esercitazione 12. Strutturazione di Istruzioni in Linguaggio SQL. [ Possibili Soluzioni ] FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE A.A. 2018/2019 Esercitazione 12 Strutturazione di Istruzioni in Linguaggio SQL [ Possibili Soluzioni ] Docente Prof. Raffaele Pizzolante FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE Esercizio 1 Scrivere

Dettagli

Basi di Dati. Dettagli e Approfondimenti

Basi di Dati. Dettagli e Approfondimenti Basi di Dati Dettagli e Approfondimenti Dettagli e Approfondimenti Altre Forme di Join Funzioni Aggregative Approfondimenti DDL Espressioni Algebra Relazionale >> Dettagli e Approfondimenti Operatori Binari

Dettagli

Esempio di database relazionale con l utilizzo del prodotto MySQL

Esempio di database relazionale con l utilizzo del prodotto MySQL Esempio di database relazionale con l utilizzo del prodotto MySQL Marco Liverani Aprile 2015 In queste pagine viene riportato in sintesi il progetto di un database relazionale esemplificativo con cui viene

Dettagli

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella Gestione e Analisi dei Dati Lezione 2 Vincoli su attributo Selezioni semplici su una tabella Vincoli sui Dati Regole del dominio di interesse Unicità di codici di corso e matricole Un codice deve corrispondere

Dettagli

σ data 15/12/2013 data 20/12/2014

σ data 15/12/2013 data 20/12/2014 Dato lo schema: Basi di Dati Prof. Alfredo Pulvirenti A.A. 2014-2015 Prova in itinere 18 dicembre 2014 (A) EVENTO(id, titolo, data, categoria, costo_partecipazione, idcatering) ORGANIZZATORE(id,idevento)

Dettagli

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2 Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2 Vincoli di integrita 2 Cosa e un vincolo di integrita E una proprieta sempre valida

Dettagli

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto SQL Università degli Studi di Salerno Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto A.A. 2005/2006 Select La forma di select cui siamo arrivati

Dettagli

Fondamenti di Informatica A. A / 1 9

Fondamenti di Informatica A. A / 1 9 Fondamenti di Informatica Prof. Marco Lombardi A. A. 2 0 1 8 / 1 9 Concetti Introduttivi 1/2 SQL (Structured Query Language) permette di manipolare i dati, interrogare un database relazionale e modellarne

Dettagli

ESERCITAZIONE: Fornitore-Fornisce-Articolo

ESERCITAZIONE: Fornitore-Fornisce-Articolo ESERCITAZIONE: Fornitore--Articolo PROGETTAZIONE CONCETTUALE Sia dato il diagramma ER rappresentativo di una certa realtà di interesse Cognome CodF Nome DataN CodA Descrizione Prezzo Fornitore N N E Fornito

Dettagli

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query:

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query: Basi di dati: appello 07/02/11 Si consideri il seguente schema di base di dati che vuole tenere traccia delle informazioni relative ad un sistema per il pagamento automatico del pedaggio autostradale.

Dettagli

Basi di dati: appello 09/03/07

Basi di dati: appello 09/03/07 Basi di dati: appello 09/03/07 Si consideri il seguente schema di base di dati che vuole tenere traccia dell attività di un azienda che si occupa della fornitura di viti e bulloni per aziende che producono

Dettagli

Interrogazioni nidificate

Interrogazioni nidificate Interrogazioni nidificate Nella clausola where si possono utilizzare valori prodotti da altre istruzioni select utilizzando any (qualsiasi) o all (tutti) insieme agli operatori di confronto Trovare nome,

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Matricola Nome Cog Firma Es.1 Es.2 Es.3 Es.4 Es.5 Tot. Esercizio 1 (6 punti) Data la seguente struttura dati: typedef struct{ int elementi[5][5]; int numerorighe; int numerocolonne; Matrice; Fondamenti

Dettagli

Interrogazioni nidificate

Interrogazioni nidificate Interrogazioni nidificate Trovare nome, cognome e matricola degli studenti che non hanno fatto esami select Matricola,Nome,Cognome from studenti where matricola all (select studente group by studente)

Dettagli

Archivi e basi di dati - ing. M. Cossentino. Settore. Traccia 1. Traccia 200. Settore non polarizzato

Archivi e basi di dati - ing. M. Cossentino. Settore. Traccia 1. Traccia 200. Settore non polarizzato Settore Traccia 1 Traccia 200 Settore non polarizzato '! " # $ % & ( ) * + + ' ' ' !"#"$%, & &'(("% '&)'' ''"* - -. / / / 0/!- "-, (0 #- / / / 0/ --- + 1 ' # $ + 2 13 ,, - 4 '. & 56 2 '/!!! "7&% 8, 9 /'"'0'1'&'

Dettagli

SQL - Structured Query Language

SQL - Structured Query Language SQL - Structured Query Language Lab 05 Alessandro Lori Università di Pisa 27 Aprile 2012 Riepilogo esercitazione precedente Operatori insiemistici (UNION, INTERSECT, EXCEPT) Riepilogo esercitazione precedente

Dettagli

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a. 2013-2014 Docente: Gigliola Vaglini Docente laboratorio: Francesco Pistolesi Lezione 3 Structured Query Language

Dettagli

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: BASI DI DATI INGEGNERIA INFORMATICA PROVA PRATICA 31 GENNAIO 2015 SOLUZIONI Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema: PAZIENTE(CodFiscale, Cognome,

Dettagli

Soluzione prova scritta di basi di dati del 30 Settembre 2002

Soluzione prova scritta di basi di dati del 30 Settembre 2002 Soluzione prova scritta di basi di dati del 30 Settembre 2002 Esercizio 1 ER: UNIVERSITA' OFFRE CORSO LAUREA TIENE DI CORSO PRESIDENTE IN PRESIEDE EDIZIONE Ruolo Email Cognome Tel DIPARTIMENTO AFFILIATO

Dettagli

Operazioni scatenanti. Nozione ed uso. Sintassi. Esempio

Operazioni scatenanti. Nozione ed uso. Sintassi. Esempio Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: Gestione di vincoli di integrità: Per fallimento Per modifica Auditing: Sicurezza Statistiche Valori derivati

Dettagli

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni Domanda 1 Si consideri una base di dati sulle relazioni R 1 (A, B, C) R 2 (D, E, F ) Scrivere interrogazioni in SQL equivalenti alle seguenti

Dettagli

SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL))

SQL non è solo un linguaggio di interrogazione (Query Language), ma. Un linguaggio per la definizione di basi di dati (Data-definition language (DDL)) SQL PER LA DEFINIZIONE DI BASI DI DATI 1 SQL non è solo un linguaggio di interrogazione (Query Language), ma Un linguaggio per la definizione di basi di dati (Data-definition language (DDL)) CREATE SCHEMA

Dettagli

SQL PER LA DEFINIZIONE DI BASI DI DATI

SQL PER LA DEFINIZIONE DI BASI DI DATI SQL PER LA DEFINIZIONE DI BASI DI DATI SQL non è solo un linguaggio di interrogazione (Query Language), ma Un linguaggio per la definizione di basi di dati (Data-definition language (DDL)) CREATE SCHEMA

Dettagli

Basi di dati I 10 settembre 2019 Tempo a disposizione: un ora e 30 minuti. Possibili soluzioni. Cognome: Nome: Matricola:

Basi di dati I 10 settembre 2019 Tempo a disposizione: un ora e 30 minuti. Possibili soluzioni. Cognome: Nome: Matricola: Tempo a disposizione: un ora e 30 minuti. Possibili soluzioni Cognome: Nome: Matricola: Domanda 1 (20%) Considerare la seguente base di dati, che fa riferimento alle pratiche gestite da una assicurazione

Dettagli

SQL: "storia" 31/05/2006 2

SQL: storia 31/05/2006 2 SQL originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia il DML ne esistono varie versioni vediamo gli aspetti essenziali, non i dettagli

Dettagli

PROGETTAZIONE DI DATABASE Linguaggio SQL

PROGETTAZIONE DI DATABASE Linguaggio SQL PROGETTAZIONE DI DATABASE Linguaggio SQL Modello Concettuale (Modellazione del mondo reale) Modello Logico (Definizione del tipo e del formato dei dati) Modello Fisico (Implementazione fisica su supporti

Dettagli

Basi di dati: appello 11/07/07

Basi di dati: appello 11/07/07 Basi di dati: appello 11/07/07 Si consideri il seguente schema di base di dati che vuole tenere traccia dell attività di una ditta di trasporti. FURGONE(Targa, Anno, Modello, Marca, Portata, Alimentazione)

Dettagli

Progetto Basi di Dati

Progetto Basi di Dati Grigoras Valentin Progetto Basi di Dati 1. ABSTRACT La palestra è una struttura che offre diversi corsi dal lunedì al sabato, dalle 09:00 alle 23:00, i quali si adeguano sempre di più ai bisogni e alle

Dettagli

Manuale SQL. Manuale SQL - 1 -

Manuale SQL. Manuale SQL - 1 - Manuale SQL - 1 - Istruzioni DDL Creazione di una tabella : CREATE TABLE Il comando CREATE TABLE consente di definire una tabella del database specificandone le colonne, con il tipo di dati ad esse associate,

Dettagli

SQL Esempi. 24/10-7/11/2016 Basi di dati - SQL 1

SQL Esempi. 24/10-7/11/2016 Basi di dati - SQL 1 SQL Esempi 24/10-7/11/2016 Basi di dati - SQL 1 Esercitazioni pratiche Per SQL è possibile (e fondamentale) svolgere esercitazioni pratiche Verranno anche richieste copme condizione per svolgere le prove

Dettagli

IL MODELLO RELAZIONALE

IL MODELLO RELAZIONALE Basi di dati 1 IL MODELLO RELAZIONALE (CAPITOLO 2) Codd 1970 Indipendenza dei dati Distinzione nella descrizione dei dati tra livello fisico e livello logico Vendors IBM,Informix,Microsoft,Oracle,Sybase

Dettagli

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA 3. Panoramica su SQL Prof. Mauro Giacomini Sommario Introduzione Istruzione SELECT Tipi di Join Subquery Comandi DML Creazione delle tabelle Introduzione

Dettagli

BASI di DATI. SQL: concetti fondamentali

BASI di DATI. SQL: concetti fondamentali BASI di DATI SQL: concetti fondamentali 1 SQL-92 >> Sommario Concetti Fondamentali Introduzione Creazione ed eliminazione di bd Creazione ed eliminazione di tabelle Inserimenti di ennuple Interrogazioni

Dettagli

PRODOTTO CARTESIANO Caso Generale

PRODOTTO CARTESIANO Caso Generale PRODOTTO CARTESIANO Caso Generale Vincoli di integrità dei dati Un database non deve solamente memorizzare i dati, ma garantire che i dati memorizzati siano corretti; se i dati sono imprecisi o incoerenti,

Dettagli

ESAME di INFORMATICA e ARCHIVIAZIONE

ESAME di INFORMATICA e ARCHIVIAZIONE UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME di INFORMATICA e ARCHIVIAZIONE 22 giugno 2011 1 Progettazione

Dettagli

Stringhe di caratteri

Stringhe di caratteri Domini primitivi In SQL sono disponibili alcune famiglie di domini elementari attraverso le quali è possibile definire i domini di appartenenza dei campi. Stringhe di caratteri CHARACTER [VARYING] [(NumeroCaratteri)]

Dettagli

Corso di Informatica Medica

Corso di Informatica Medica Università degli Studi di Trieste Corso di Laurea Magistrale in INGEGNERIA CLINICA ESERCITAZIONE: IL LINGUAGGIO SQL Corso di Informatica Medica Docente Sara Renata Francesca MARCEGLIA Dipartimento di Ingegneria

Dettagli

CORSO DI BASI DI DATI

CORSO DI BASI DI DATI CORSO DI BASI DI DATI 3 luglio 2008 Esercizio 1 Sia dato il seguente schema relazionale: SQU ADRA(ids, nome, annof ondazione) CICLIST A(idc, nome, cognome, datan ascita, squadra, nazionalita) GARA(nome,

Dettagli

Basi di Dati e Sistemi Informativi

Basi di Dati e Sistemi Informativi Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/ Esercizio 1 Scrivere il codice SQL dello schema ARTICOLI Codice

Dettagli

Le Basi di Dati Attive

Le Basi di Dati Attive Le Basi di Dati Attive Basi di dati: Architetture e linee di evoluzione - Seconda edizione Capitolo 5 Appunti dalle lezioni SQL in Linguaggi di programmazione L uso diretto dell interprete SQL è tipicamente

Dettagli

Basi di dati: appello 21/09/12

Basi di dati: appello 21/09/12 Basi di dati: appello 21/09/12 Si consideri il seguente schema di base di dati che vuole tenere traccia degli immobili venduti da diverse agenzie dislocate su tutto il territorio nazionale: AGENZIA (Codice,

Dettagli