60
FACOLTA’ DI SCIENZE MATEMATICHE, FISICHE E NATURALI DIPARTIMENTO DI INFORMATICA CORSO DI LAUREA MAGISTRALE IN INFORMATICA ESAME DI “BASI DI DATI II” DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II Appello 03/9/2012 Docente: Prof. Michelangelo CECI Studente: Francesco PAPARELLA Anno Accademico 2010/2011 UNIVERSITÀ DEGLI STUDI DI BARI “ALDO MORO”

DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

FACOLTA’ DI SCIENZE MATEMATICHE, FISICHE E NATURALI

DIPARTIMENTO DI INFORMATICA

CORSO DI LAUREA MAGISTRALE IN INFORMATICA

ESAME DI

“BASI DI DATI II”

DOCUMENTAZIONE DEL

PROGETTO DI BASI DI DATI II

Appello 03/9/2012

Docente:Prof. Michelangelo CECI

Studente:Francesco PAPARELLA

Anno Accademico 2010/2011

UNIVERSITÀ DEGLISTUDI DI BARI“ALDO MORO”

Page 2: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

INDICE

INTRODUZIONE...........................................................................................................1

CAPITOLO 1.

RACCOLTA DEI REQUISITI.......................................................................................2

1.1 Specifica dei requisiti in linguaggio naturale .......................................................31.2 Fonti usate per la raccolta dei dati.........................................................................3

CAPITOLO 2.ANALISI DEI REQUISITI............................................................................................4

2.1 Scelta del livello di astrazione.................................................................................52.2 Evitare le frasi contorte...........................................................................................52.3 Individuazione omonimi e sinonimi........................................................................52.4 Standardizzazione delle frasi....................................................................................62.5 Glossario dei termini................................................................................................72.6 Riorganizzazione delle frasi per concetto................................................................7

CAPITOLO 3.

PROGETTAZIONE CONCETTUALE........................................................................8

3.1 Modello E-R............................................................................................................93.1.1 Schema scheletro........................................................................................93.1.2 Esplosione delle singole entità.................................................................103.1.3 Schema finale...........................................................................................13

3.2 Dizionario dei dati..................................................................................................153.2.1 Entità........................................................................................................153.2.2 Relazioni..................................................................................................163.2.3 Attributi....................................................................................................17

3.3 Regole aziendali....................................................................................................19

CAPITOLO 4.

PROGETTAZIONE LOGICO-RELAZIONALE......................................................20

4.1 Ristrutturazione modello E-R................................................................................214.1.1 Tavole delle operazioni...............................................................................214.1.2 Tavole dei volumi.......................................................................................224.1.3 Analisi delle ridondanze.............................................................................224.1.4 Eliminazione delle generalizzazioni...........................................................244.1.5 Eliminazione di attributi composti.............................................................24

Page 3: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

4.1.6 Schema E-R ristrutturato............................................................................244.2 Traduzione del modello E-R..................................................................................26

4.2.1 Schema SQL...............................................................................................284.2.2 Indici...........................................................................................................32

CAPITOLO 5.

TRIGGER......................................................................................................................33

5.1 Descrizione dei trigger..........................................................................................34

CAPITOLO 6.

PROGETTTAZIONE DELLA APPLICAZIONE......................................................43

6.1 Architettura dell’applicazione...............................................................................446.2 Installazione dell’applicazione..............................................................................466.3 Utilizzo dell’applicazione.....................................................................................47

Page 4: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

INTRODUZIONE

Il caso di studio presentato riguarda il corso di “Basi di Dati II” della laurea Magistrale in

Informatica realizzato dallo studente Francesco Paparella.

Il progetto che si vuol realizzare è tale da voler racchiudere nella totalità quanto appreso durante il

corso, cercando di mettere in pratica le nozioni teoriche e pratiche acquisite durante il corso. Esso

deve rispecchiare quelli che sono i vincoli di dominio imposti dall’ambiente in cui l’applicazione

sarà utilizzata e pertanto deve essere utilizzabile dai rappresentati dello stesso e per tale motivo si è

deciso di realizzare un piano di lavoro che si sviluppi lungo un percorso di analisi, progettazione,

implementazione e test.

L’idea è quella di realizzare un’applicazione web basata su JSP (Java Server Page) per eseguire le

operazioni sul database PostgreSQL a cui essa è collegata.

Il database sarà progettato secondo lo standard proposto da Atzeni, ovvero saranno eseguite le fasi

di definizione del modello concettuale, logico e fisico. Tale progettazione terrà conto delle

specifiche fornite dal docente, ma sarà opportunamente modellato ed esteso per far fronte alle

necessità degli stackholders e alle necessità del sistema informativo che lo dovrà utilizzare. Il

database PostgreSQL ne permette una implementazione semplice e a basso costo, in quanto è un

prodotto utilizzabile gratuitamente e che mette a disposizione numerose funzionalità professionali.

Page 5: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

CAPITOLO 1

RACCOLTA DEI

REQUISITI

o SPECIFICA DEI REQUISITI IN LINGUAGGIO

NATURALE

Page 6: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Si vuole rappresentare una base di dati per la gestione delle informazioni sugli affitti:

12345678910

Ciascun affitto è rivolto a una singola abitazione di cui si devono memorizzare ilcomune, la provincia, il codice del comune, i dati catastali (foglio, particella,subalterno, categoria catastale, rendita catastale, via/piazza, numero civico). Ogniabitazione può appartenere a più persone (locatore) che intervengono con unapercentuale di possesso differente. Ogni abitazione può essere locata a più persone(conduttori).Per ogni contratto si intendono memorizzare informazioni sull'importo annuo delcanone di locazione, la periodicità di pagamento (di default 1 mese) e la durata (data diinizio e data di fine).Si intendono anche memorizzare informazioni sul pagamento della cedolare secca cheprevede tre rate annue per la singola locazione.

o FONTI USATE PER LA RACCOLTA DEI DATI

Per la raccolta dei requisiti si sono utilizzate le seguenti fonti:

o documentazione esistente: contenuta interamente nella traccia dell’esame. Inoltre è

stato fatto uno studio del dominio per meglio comprendere il problema;o interviste con utenti: sono stati intervistati alcuni locatori in modo da poter chiarire

alcuni punti relativi al contratto di affitto.

Page 7: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

CAPITOLO 2

ANALISI

DEI

REQUISITI

La definizione dello schema concettuale è il primo passo da svolgere per realizzare la progettazione

del database. Tale procedura è effettuata a partire dal documento di specifica fornito che deve essere

opportunamente analizzato per identificarne gli elementi chiave. Pertanto si svolgeranno le fasi di:

scelta del corretto livello di astrazione, ristrutturazione delle frasi contorte, individuazione degli

Page 8: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

omonimi e sinonimi presenti, standardizzazione della struttura delle frasi, definizione del glossario

dei termini, strutturazione dei requisiti e rappresentazione dello schema concettuale.

o SCELTA DEL CORRETTO LIVELLO DI ASTRAZIONE

Prima di procedere con la progettazione concettuale della base di dati è necessario analizzare e

riorganizzare i requisiti raccolti.

Alla riga 4 si fa riferimento al locatore e si intende il proprietario della abitazione che viene data in affitto.Alla riga 5 si fa riferimento al conduttore e si intende la persona che prende in affitto una abitazione.

o EVITARE LE FRASI CONTORTE

All’interno della traccia è presente solamente una frase contorta, ovvero ai righi 3, 4 e 5. Essa viene

ristrutturata nel seguente modo: “Ogni abitazione può appartenere a più locatori con una

percentuale di possesso differente e può essere locata a più conduttori”.

o INDIVIDUAZIONE DEI SINONIMI E OMONIMI

Dopo una attenta analisi delle specifiche non è stata rilevata la presenza di sinonimi ed omonimi.

o STANDARDIZZAZIONE DELLE FRASI

Per ogni abitazione si rappresenta il comune, la provincia, il codice del comune, i dati catastali

(foglio, particella, subalterno, categoria catastale, rendita catastale, via/piazza, numero civico).

Per ogni persona si memorizza il nome, cognome, data di nascita, residenza (via/piazza, numero

civico, comune, provincia) e tipologia (locatore o contraente).

Page 9: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Per contratto si rappresentano le memorizzare informazioni sull'importo annuo del canone di

locazione, la periodicità di pagamento (di default 1 mese) e la durata (data di inizio e data di fine).

Per ogni cedolare secca si rappresentano le informazioni sul pagamento della cedolare secca che

prevede tre rate annue per la singola locazione.

o GLOSSARIO DEI TERMINI

Termine Descrizione Sinonimi Collegamenti

AbitazioneDimora abituale delcontraente e/o deisuoi familiari

CasaLocatore,contratto

Contratto

Accordo di due opiù parti percostituire, regolareo estinguere tra loroun rapportogiuridico dicaratterepatrimoniale

Locatore,contraente,abitazione

Cedolare secca

Sistema ditassazione checonsente al locatoredi applicare unregime ditassazioneagevolato

Contratto

o RIORGANIZZAZIONE DELLE FRASI PER CONCETTO

Frase di carattere generale:

Si vuole rappresentare una base di dati per la gestione delle informazioni sugli affitti.

Frasi relative alla abitazione:

Ciascun affitto è rivolto a una singola abitazione di cui si devono memorizzare il comune, la

provincia, il codice del comune, i dati catastali (foglio, particella, subalterno, categoria catastale,

rendita catastale, via/piazza, numero civico). Ogni abitazione può appartenere a più persone

Page 10: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

(locatore) che intervengono con una percentuale di possesso differente. Ogni abitazione può essere

locata a più persone (conduttori).

Frasi relative al contratto:

Per ogni contratto si intendono memorizzare informazioni sull'importo annuo del canone di

locazione, la periodicità di pagamento (di default 1 mese) e la durata (data di inizio e data di fine).

Frasi relative alla cedolare secca:

Si intendono anche memorizzare informazioni sul pagamento della cedolare secca che prevede tre

rate annue per la singola locazione.

Page 11: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

CAPITOLO 3

PROGETTAZIONE

CONCETTUALE

Si presenta di seguito il modello concettuale E-R della base di dati seguito dal dizionario dei dati e

dalle regole aziendali.

3.1 MODELLO E-R

Per la progettazione del modello E-R è stata utilizzata la strategia di progettazione ibrida. Sono stati

individuati i concetti più generali ed è stato creato un primo schema E-R generale (schema

scheletro). Successivamente ogni concetto generale è stato decomposto in sotto-concetti fino ad

Page 12: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

ottenere diversi sottoschemi separati ed infine è stata fatta l’integrazione degli schemi, per arrivare

allo schema concettuale E-R definitivo, completo e dettagliato.

3.1.1 SCHEMA SCHELETRO

3.1.2 ESPLOSIONE DELLE SINGOLE ENTITÀ

Prima entità – Abitazione: è stata identificata come entità debole e quindi viene inserita una chiave

esterna collegata all’entità “Dati catastali”.

Seconda entità - Dati catastali: la chiave primaria è formata da 3 attributi in quanto dopo alcune

ricerche effettuate si è compreso che i dati catastali sono identificati principalmente tramite 3

attributi ovvero foglio, particella e subalterno.

Page 13: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Terza entità – Persona: come si può bene notare dallo schema riportato qui di seguito, è stata

utilizzata una generalizzazione in quanto dalla lettura delle specifiche si rileva soltanto la presenza

di due tipologie di persone ovvero il locatore ed il conduttore. Inoltre si è pensato di inserire un

attributo composto per identificare i dati relativi alla residenza.

Quarta entità - Contratto

Page 14: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Quinta entità - Stipula: è una entità debole che viene identificata tramite le chiavi primarie delle

entità a cui è associata

Page 15: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Sesta entità - Cedolare secca: si è pensato di inserire una chiave esterna, che in questo schema non

viene riportata ma verrà inserita sullo schema finale e che fa rifermento all’entità contratto, in modo

da poter identificare univocamente ciascuna cedolare secca.

3.1.3 SCHEMA FINALE

Qui di seguito si riporta lo schema

concettuale risultante:

Page 16: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame
Page 17: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

17

Page 18: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Sono state fatte delle assunzioni non evidenziabili dalla specifiche fornite in ingresso:

o la generalizzazione di persona è totale ed esclusiva;o il locatore di una abitazione può essere anche più di una persona (ad esempio

moglie e marito);o il conduttore di una abitazione può essere anche più di una persona (ad

esempio moglie e marito);o esistono tre gruppi di categorie catastali, ovvero: immobili a destinazione

ordinaria (appartamento, villa, abitazione di tipo rurale, abitazione di tipo

popolare, ecc.), particolare e immobili a destinazione speciale (ospedali, case

di cura, istituti di credito, ecc.).

3.2. DIZIONARIO DEI DATI

3.2.1 ENTITÀ DELLO SCHEMA

Entità Descrizione Attributi IdentificatoreAbitazione Dimora abituale del

contraente e/o deisuoi familiari

comune, provincia,codice_comune

codice_comune,foglio, particella,subalterno

Daticatastali

Coordinate cheindividuanol'immobile sulterritorio e neforniscono latipologia fiscale,oltre che la rendita

foglio, particella, subalterno,categoria catastale

foglio, particella,subalterno

Persona

Essere umano senzadistinzione di sesso,razza, lingua,opinione econdizione sociale inquanto soggetto didiritto e, quindi,dotato di capacitàgiuridica. Può esserelocatore o conduttore

C.F., nome, cognome,data_di_nascita,luogo_di_nascita, residenza(via/piazza, numero_civico,comune, provincia)

C.F.

LocatorePersona che affittauna o più abitazionead un conduttore

C.F., nome, cognome, datadi nascita, luogo di nascita,residenza (via/piazza,numero_civico, comune,provincia),

C.F.

18

Page 19: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

num_contratti_stipulati

ConduttorePersona che prendein affitto dal locatoreuna o più abitazioni

C.F., nome, cognome, datadi nascita, luogo di nascita,residenza(via/piazza,numero_civico, comune,provincia)

C.F.

ContrattoAccordo di due o piùparti per costituire,regolare o estingueretra loro un rapportogiuridico di caratterepatrimoniale

id_contratto, importo_annuo,data_registrazione,peridocità, durata (data diinizio e data di fine)

id_contratto

Cedolaresecca

Metodo utilizzato dalconduttore per ilpagamento delleimposte relative alcontratto

id_cedolare, importo_totale,data_scadenza

id_cedolare,id_contratto

RataSistema per ilpagamento delleimposte relative allacedolare secca

id_rata, importo id_rata,id_cedolare

3.2.2 RELAZIONI DELLO SCHEMA

Associazioni

Descrizione Entitàcoinvolte

Attributi

Associati Rappresenta i dati catastalirelativi alla singolaabitazione

Abitazione,dati catastali

Affitta Identifica l’abitazione presain affitto dal conduttore

Abitazione,conduttore

Possiede Identifica l’abitazione/ipossedute dal locatore

Abitazione,locatore

Percentuale_possesso,stato

Assegnato Individua l’abitazione e ilcontratto a cui fariferimento

Contratto,abitazione

Pagato Identifica il metodo dipagamento dell’importorelativo al contrattostipulato

Contratto,cedolare secca

Composta Associa alla cedolare seccale rate che la compongono

Cedolaresecca, rata

Lettura Associa il conduttoreall’entità stipula

Conduttore,stipula

Stesura Associa il locatore all’entitàstipula

Locatore,stipula

Registrato Associa il contratto Stipula,

19

Page 20: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

all’entità stipula contratto

3.2.3 ATTRIBUTI

Attributi Entità/Associazione Tipo Descrizione Cardinalitàcomune Abitazione Text Comune in cui è

situatal’abitazione

(1,1)

provincia Text Provincia diappartenenzadel comune incui è situatal’abitazione

(1,1)

codice_comune Stringa Codice cheidentificaunivocamente ilcomune in cui èsituatal’abitazione

(1,1)

foglio Dati catastali Intero Riproducel'unitàterritoriale incui è suddivisocatastalmenteogni comune.

(1,1)

particella Intero composta dauna porzione diterreno ofabbricato,appartenente aduno stessosoggetto, aventeuna unicaqualità, classe edestinazione

(1,1)

subalterno Intero identifica inmanieraunivoca un'unitàimmobiliareautonomariconducibile adun determinatosoggettoproprietario efacente parte diuna più grandeentità

(1,1)

20

Page 21: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

immobiliare cheè rappresentatadallacorrispondenteparticella

categoria catastale Text indice diriferimento perlaclassificazione eladeterminazionedelle renditedellamaggioranzadei beniimmobili

(1,1)

rendita catastale Utilizzato perdeterminare ilvalore diun’immobile

(1,1)

via/piazza Text Identifical’abitazione

(1,1)

numero_civico Intero Numero civicoche identifical’abitazione

(1,1)

C.F. Persona Stringa Codice fiscaledella persona

(1,1)

nome Text Nome dellapersona

(1,1)

cognome Text Cognome dellapersona

(1,1)

data_di_nascita Stringa Data di nascitadella persona

(1,1)

luogo_di_nascita Text Luogo dinascita dellepersona

(1,1)

residenza Stringa Dati relativi allaresidenza di unapersona

(1,1)

num_contratti_stipulati Intero Numero deicontrattistipulati dallocatore

(1,1)

percentuale Possiede Intero Percentuale dipossesso di unaabitazione

(1,1)

stato Text Statodell’abitazione(Affittata, Nonaffittata)

(1,1)

21

Page 22: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

id_contratto Contratto Stringa Identificativodel contratto

(1,1)

importo_annuo Intero Importo totalerelativo ad unsingolocontratto

(1,1)

data_registrazione Stringa Data in cui ilcontratto vieneregistrato

(1,1)

periodicità Intero Periodicità delpagamentorelativa alcanone dilocazione

(1,1)

durata Stringa Durata delcontratto

(1,1)

id_cedolare Cedolare secca Stringa Identificativodella cedolaresecca

(1,1)

importo totale Intero Importo totalerelativo allacedolare secca

(1,1)

id_rata Rata Stringa Identificativodella rata

(1,3)

importo Intero Importo relativoalla singola rata

(1,1)

data_scadenza Stringa (1,3)

3.3 REGOLE AZIENDALI

Regole di vincoloRv1: la data di fine del contratto è data dalla somma tra la data di inizio e un numero di annipari a 6, che costituisce la durata minima del contratto;Rv2: l’importo annuo del canone e le modalità di pagamento sono stabilite dal locatore;

Regole d derivazioneNon sono presenti

22

Page 23: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

CAPITOLO 4

PROGETTAZIONE

LOGICA-

RELAZIONALE

23

Page 24: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

La progettazione dello schema logico comporta un’attenta analisi dello schema concettuale

che potrebbe contenere elementi non direttamente rappresentabili in un database relazionale

come ad esempio attributi multi-valore o generalizzazioni. In tale passo si procederà alla

normalizzazione dello schema concettuale e alla sua trasformazione in logico prendendo in

esame anche alcune valutazioni prestazionali su elementi ridondanti e carico di lavoro che il

database dovrà sorreggere. Per fare tali supposizioni è necessario identificare le operazioni

che più spesso saranno eseguite sul database e in conformità a queste cercare di ottimizzare la

struttura del database. I passi da svolgere sono quindi i seguenti: identificazione delle

operazioni frequenti con tavola delle operazioni, definizione della tavola dei volumi, analisi

delle ridondanze con tavola degli accessi, normalizzazione dello schema concettuale,

trasformazione in schema logico.

4.1 RISTRUTTURAZIONE MODELLO E-R

4.1.1 TAVOLA DELLE OPERAZIONI

Le operazioni sulla base di dati risultano essere le seguenti:

2 inserimento di una nuova abitazione;3 inserimento di un nuovo locatore;4 inserimento di un nuovo contratto;5 visualizzazione dei dati del locatore e del numero di contratti stipulati.

Le relative frequenze sono riportate nella seguente tabella:

Operazioni

Tipo

Frequenza

1 I 1 volta/mese2 I 1 volta/giorno3 I 15 volte/mese4 B 10

volte/giorno

Tabella 1 – Tavola delle operazioni

24

Page 25: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

5.1.1 TAVOLA DEI VOLUMI

Concetto Tipo

Volume

Abitazione E 1000Associati R 1000Dati catastali E 1000Affitta*1 R 300*3 = 900Possiede*2 R 500*5 =

2500Persona E 800Locatore E 500Conduttore E 300Assegnato R 250Contratto E 250Pagato R 250Cedolaresecca

E 250

Composta R 750Rata*3 E 250*3= 750Stipula R 250Relazione 1 R 250Relazione 2 R 250Relazione 3 R 250

Tabella 2 – Tavola dei volumi

*1 si assume in media che ogni conduttore affitta 3 abitazioni

*2si assume in media che ogni locatore possiede 5 abitazioni

*3la cedolare secca è composta da 3 rate

5.1.2 ANALISI DELLE RIDONDANZE

L'unica ridondanza presente è il numero di contratti stipulati che si può ricavare contando il

numero delle tuple presenti nell’entità contratto. L’operazione coinvolta è la numero 4. A

questo punto si procede alla determinazione della tavola degli accessi.

25

Page 26: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Seguono ora le tavole degli accessi (con ridondanza e senza ridondanza) relative

all’operazione 4 (visualizzazione dei dati del locatore e del numero di contratti stipulati).

1. Senza ridondanza:

Concetto Tipo Accessi

Tipo Accesso

Locatore E 1 LStesura R 1 LStipula E 1 LRegistrato

R 1 L

Contratto E 1 L

Tabella 3 – Tavola degli accessi senza ridondanza

2. Con ridondanza:

Concetto

Tipo Accessi

Tipo Accesso

Locatore E 1 L

Tabella 4 – Tavola degli accessi in presenza di ridondanza

Riportiamo qui di seguito i calcoli degli accessi per le due tavole:

1. Costo in assenza di ridondanza: 10*1*(1*2*1*3 + 1*1 + 1*1 + 1*1 + 1*1) = 10*5 = 50

*1: costo dell’operazione;*2: numero di accessi effettuati;*3: costo dell’accesso (in caso di lettura il costo è pari ad 1 e in caso di scrittura il

costo è pari a 2).

2. Costo in presenza di ridondanza: 10*(1*1) = 10*1 = 10

Dal confronto dei due valori ottenuti si può notare che conviene mantenere l’attributo

ridondante.

26

Page 27: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

5.1.3 ELIMINAZIONE DELLE GERARCHIE

Dall’osservazione dello schema E-R riportato a pagina 14, si nota la presenza di una sola

gerarchia che si riferisce all’entità “Persona”. Si è preferito accorpare l’entità padre nelle

entità figlie in modo da identificare in modo univoco il locatore ed il conduttore. Questa scelta

comporterà la presenza di due tabelle nel database con campi uguali.

5.1.4 ELIMINAZIONE DI ATTRIBUTI COMPOSTI

Abbiamo solamente due attributi composti, ovvero residenza presente nell’entità “Persona” e

durata presente nell’entità “Contratto”. Entrambi gli attributi sono stati scomposti e gli

attributi componenti vengono ereditati dalla entità a cui si riferiscono.

5.1.5 SCHEMA E-R RISTRUTTURATO

Si riporta di seguito lo schema E-R ristrutturato:

27

Page 28: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

28

Page 29: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

5.2 TRADUZIONE DEL MODELLO E-R RISTRUTTURATO IN

MODELLO LOGICO

Il modello logico di riferimento è il modello relazionale. Viene presentata la lista delle tabelle

con i rispettivi attributi, i vincoli di chiave primaria, i vincoli di integrità referenziale e

l’indicazione di eventuali valori nulli.

In grassetto verranno evidenziati i vincoli di chiave primaria e in corsivo quelli di chiave

esterna.

2 Abitazione

codice_comune foglio particella subalterno provincia comune

3 Dati catastali

foglio particella subalterno rendita_catastale categoria_catastale via/piazzanumero_civico

4 Locatore

Cf_loc nome cognome data_di_nascita luogo_di_nascitavia/piazza numero_civico comune provincia C.A.P.num_contratti_stipulati

5 Possiede

Cf_loc codice_comune foglio particellasubalterno percentuale_possesso stato

6 Conduttore

Cf_cond nome cognome data_di_nascita luogo_di_nascitavia/piazza numero_civico comune provincia C.A.P.

7 Affitta

Cf_cond codice_comune foglio particellasubalterno

29

Page 30: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

8 Contratto

id_contratto importo_annuo data_registrazione periodicitàgiorno_inizio mese_inizio anno_inizio giorno_finemese_fine anno_fine codice_comune foglioparticella subalterno

9 Stipula

Cf_loc Cf_cond id_contratto

10 Cedolare secca

id_cedolare id_contratto importo_totale

11 Rata

id_rata id_cedolare id_contratto importo data_scadenza

Vincoli di integrità referenziale:

1 Abitazione(foglio, particella, subalterno) chiave esterna di Dati catastali;2 Possiede(codice_comune, foglio, particella, subalterno) chiave esterna di Abitazione;3 Affitta(codice_comune, foglio, particella, subalterno) chiave esterna di Abitazione;4 Abitazione(Cf_cond) chiave esterna di Conduttore;5 Stipula(Cf_cond) chiave esterna di Conduttore;6 Stipula(Cf_loc) chiave esterna di Locatore;7 Stipula(id_contratto) chiave esterna di Contratto;8 Cedolare secca(id_contratto) chiave esterna di Contratto;9 Rata(id_cedolare, id_contratto) chiave esterna di Cedolare secca.

2.1.1 SCHEMA SQL

La base di dati è stata implementata in PostgreSql 8.4. Qui di seguito riportiamo le istruzioni

per la realizzazione in SQL dello schema logico:

TABELLA “Abitazione”

30

Page 31: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

CREATE TABLE abitazione

(

codice_comune character(4) NOT NULL DEFAULT 1,

foglio integer NOT NULL DEFAULT 1,

particella integer NOT NULL DEFAULT 1,

subalterno integer NOT NULL DEFAULT 1,

provincia character(2),

comune character(50),

primary key (codice_comune, foglio, particella, subalterno),

foreign key (foglio, particella, subalterno) references dati_catastali (foglio, particella,

subalterno) on update cascade on delete cascade

);

TABELLA “Dati catastali”

CREATE TABLE dati_catastali

(

foglio integer NOT NULL DEFAULT 1,

particella integer NOT NULL DEFAULT 1,

subalterno integer NOT NULL DEFAULT 1,

rendita_catastale nmeric NOT NULL DEFAULT 1,

categoria_catastale character(50),

via_piazza character(50),

numero_civico integer,

primary key(foglio, particella, subalterno)

);

TABELLA “Contratto”

CREATE TABLE contratto

(

id_contratto integer NOT NULL,

31

Page 32: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

importo_annuo numeric,

data_registrazione date,

periodicita integer,

giorno_inizio integer,

mese_inizio integer,

anno_inizio integer,

giorno_fine integer,

mese_fine integer,

anno_fine integer,

codice_comune character(4),

foglio integer,

particella integer,

subalterno integer,

primary key(id_contratto),

foreign key (codice_comune, foglio, particella, subalterno) references abitazione

(codice_comune, foglio, particella, subalterno) on update cascade on delete cascade

);

TABELLA “Locatore”

CREATE TABLE locatore

(

cf_loc character(16) NOT NULL DEFAULT 1,

nome character(50) NOT NULL DEFAULT 1,

cognome character(50) NOT NULL DEFAULT 1,

data_di_nascita date,

luogo_di_nascita character(50),

via_piazza character(50),

numero_civico integer,

comune character(50),

provincia character(2),

cap integer,

num_contratti_stipulati integer,

primary key (cf_loc)

32

Page 33: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

);

TABELLA “Possiede”

CREATE TABLE possiede

(

cf_loc character(16) NOT NULL,

codice_comune character(4) NOT NULL,

foglio integer NOT NULL,

particella integer NOT NULL,

subalterno integer NOT NULL,

percentuale_possesso integer,

stato character(30),

primary key (cf_loc, codice_comune, foglio, particella, subalterno),

foreign key (cf_loc) references locatore (cf_loc) on update cascade on delete cascade,

foreign key (codice_comune, foglio, particella, subalterno) references abitazione

(codice_comune, foglio, particella, subalterno) on update cascade on delete cascade

);

TABELLA “conduttore”

CREATE TABLE conduttore

(

cf_cond character(16) NOT NULL DEFAULT 1,

nome character(50) NOT NULL DEFAULT 1,

cognome character(50) NOT NULL DEFAULT 1,

data_di_nascita date,

luogo_di_nascita character(50),

via_piazza character(50),

numero_civico integer,

comune character(50),

provincia character(2),

cap integer,

primary key (cf_cond)

33

Page 34: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

);

TABELLA “Affitta”

CREATE TABLE affitta

(

cf_cond character(16) NOT NULL,

codice_comune character(4) NOT NULL,

foglio integer NOT NULL,

particella integer NOT NULL,

subalterno integer NOT NULL,

primary key (cf_cond, codice_comune, foglio, particella, subalterno),

foreign key (cf_cond) references conduttore (cf_cond) on update cascade on delete cascade,

foreign key (codice_comune, foglio, particella, subalterno) references abitazione

(codice_comune, foglio, particella, subalterno) on update cascade on delete cascade

);

TABELLA “Stipula”

CREATE TABLE stipula

(

cf_loc character(16) NOT NULL,

cf_cond character(16) NOT NULL,

id_contratto integer NOT NULL,

primary key (cf_loc, cf_cond, id_contratto),

foreign key (cf_cond) references conduttore (cf_cond) on update cascade on delete cascade,

foreign key (cf_loc) references locatore (cf_loc) on update cascade on delete cascade,

foreign key (id_contratto) references contratto (id_contratto) on update cascade on delete

cascade

);

34

Page 35: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

TABELLA “Cedolare secca”

CREATE TABLE cedolare_secca

(

id_cedolare integer NOT NULL,

id_contratto integer NOT NULL,

importo_totale numeric,

primary key (id_cedolare, id_contratto),

foreign key (id_contratto) references contratto (id_contratto) on update cascade on delete

cascade

);

TABELLA “rata”

CREATE TABLE rata

(

id_rata integer NOT NULL,

id_cedolare integer NOT NULL,

id_contratto integer NOT NULL,

importo numeric,

data_scadenza date,

primary key (id_rata, id_cedolare, id_contratto),

foreign key (id_cedolare, id_contratto) references cedolare_secca (id_cedolare,

id_contratto) on update cascade on delete cascade

);

2.1.2 INDICI

35

Page 36: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Poiché tutte le operazioni effettuate sulla base di dati non eseguono accessi puntuali o per

intervallo a campi non chiave delle tabelle, non sono stati definiti indici. Diverse prove hanno

evidenziato che il DBMS utilizza gli indici hash definiti per le chiavi primarie anche se

vengono definiti ulteriori indici su questi campi.

CAPITOLO 5

TRIGGER

36

Page 37: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

2.1 DESCRIZIONE DEI TRIGGER

Per rendere attivo il comportamento della base di dati è possibile definire i seguenti trigger, i

quali sono stati realizzati utilizzando il paradigma ECA (Evento - Condizione – Azione):

5 Trigger per verificare l’esistenza della chiave esterna sulla tabella abitazione

Evento: inserimento nella tabella “abitazione”Condizione: i dati della abitazione inserita devono essere presenti nella tabella “dati

catastali”Azione: rollback della transazioneGranularità di attivazione: livello di tupla

CREATE OR REPLACE FUNCTION "ABITAZIONE - controllo_dati_abitazione"()RETURNS trigger AS$BODY$beginperform * FROM "dati_catastali" WHERE "dati_catastali".foglio = new.foglio and "dati_catastali".particella = new.particella and "dati_catastali".subalterno = new.subalterno; if not found then

raise exception 'Inserire i dati catastali corretti!!!';return null;

elsereturn new;

end if;end;$BODY$LANGUAGE 'plpgsql' VOLATILE

CREATE TRIGGER verifica_chiave_esternaBEFORE INSERTON abitazioneFOR EACH ROWEXECUTE PROCEDURE "ABITAZIONE - controllo_dati_abitazione"();

6 Trigger per verificare l’esistenza dei dati di una abitazione quando viene inserito un nuovo

contratto

Evento: inserimento nella tabella “contratto”Condizione: i dati della abitazione a cui si riferisce il contratto devono essere presenti

nella tabella “abitazione”Azione: rollback della transazioneGranularità di attivazione: livello di tupla

37

Page 38: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

CREATE OR REPLACE FUNCTION "CONTRATTO - controllo_dati_abitazione"()RETURNS trigger AS$BODY$beginperform * FROM "abitazione" WHERE "abitazione".foglio = new.foglio and "abitazione".particella = new.particella and "abitazione".subalterno = new.subalterno and “abitazione".codice_comune = new.codice_comune;if not found then

raise exception 'Impossibile inserire un nuovo contratto!!!';return null;

elsereturn new;

end if;end;$BODY$LANGUAGE 'plpgsql' VOLATILE

CREATE TRIGGER verifica_dati_abitazioneBEFORE INSERTON contrattoFOR EACH ROWEXECUTE PROCEDURE "CONTRATTO - controllo_dati_abitazione"();

7 Trigger per l’inserimento automatico del codice di un nuovo contratto

Evento: inserimento nella tabella “contratto”Condizione: nessunaAzione: rollback della transazioneGranularità di attivazione: livello di tupla

CREATE OR REPLACE FUNCTION "CONTRATTO - inserisci_id_contratto"()RETURNS trigger AS$BODY$declarenumero_tuple integer:=0;Beginselect count(*) into numero_tuple from contratto;if (numero_tuple = 0) thennew.id_contratto = 1001; -- caso di tabella vuotaelsenew.id_contratto = ((select max(id_contratto) from contratto) +1);-- caso di esistenza di almeno una tuplaend if;return NEW;end;$BODY$LANGUAGE 'plpgsql' VOLATILE

38

Page 39: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

CREATE TRIGGER inserisci_codice_contrattoBEFORE INSERTON contrattoFOR EACH ROWEXECUTE PROCEDURE "CONTRATTO - inserisci_id_contratto"();

8 Trigger per l’inserimento automatico della data di scadenza di un contratto

Evento: inserimento nella tabella “contratto”Condizione: deve essere presente la data di inizio del contrattoAzione: rollback della transazioneGranularità di attivazione: livello di tupla

CREATE OR REPLACE FUNCTION "CONTRATTO - inserisci_data_fine"()RETURNS trigger AS$BODY$Beginupdate contratto set anno_fine = new.anno_fine + 6 where foglio=new.foglio and particella=new.particella and subalterno = new.subalterno; return NEW;end;$BODY$LANGUAGE 'plpgsql' VOLATILE

CREATE TRIGGER inerisci_data_scadenzaAFTER INSERTON contrattoFOR EACH ROWEXECUTE PROCEDURE "CONTRATTO - inserisci_data_fine"();

9 Trigger per il calcolo automatico dell’importo delle rate relative alla cedolare secca:

Evento: inserimento nella tabella “rata”Condizione: deve essere presente l’importo totale nella tabella “cedolare secca”Azione: rollback della transazioneGranularità di attivazione: livello di tupla

CREATE OR REPLACE FUNCTION "RATA - inserisci_importo"()RETURNS trigger AS$BODY$declareimporto_tot float;Beginselect importo_totale into importo_tot from cedolare_secca;update rata set importo = (importo_tot/3);return NEW;end;

39

Page 40: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

$BODY$LANGUAGE 'plpgsql' VOLATILE

CREATE TRIGGER inserisci_importo_rataAFTER INSERTON rataFOR EACH ROWEXECUTE PROCEDURE "RATA - inserisci_importo"();

10 Trigger per la verifica del codice della cedolare secca:

Evento: inserimento nella tabella “rata”Condizione: deve essere presente la cedolare secca a cui fa riferimento la rata inseritaAzione: rollback della transazioneGranularità di attivazione: livello di tupla

CREATE OR REPLACE FUNCTION "RATA - controllo_id_cedolare"()RETURNS trigger AS$BODY$beginperform * FROM "cedolare_secca" WHERE "cedolare_secca".id_cedolare = new.id_cedolare; if not found then

raise exception 'Inserire il codice cedolare corretto!!!';return null;

elsereturn new;

end if;end;$BODY$LANGUAGE 'plpgsql' VOLATILE

CREATE TRIGGER verifica_id_cedolareBEFORE INSERTON rataFOR EACH ROWEXECUTE PROCEDURE "RATA - controllo_id_cedolare"();

11 Trigger per l’aggiornamento automatico del campo “num_contratti_stipulati”

Evento: inserimento o cancellazione nella tabella “stipula”Condizione: nessunaAzione: rollback della transazioneGranularità di attivazione: livello di tupla

CREATE OR REPLACE FUNCTION "STIPULA - inserisci_contratto_stipulato"()RETURNS trigger AS

40

Page 41: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

$BODY$beginupdate locatore set num_contratti_stipulati = num_contratti_stipulati + 1 where cf_loc = new.cf_loc;return new;end;$BODY$LANGUAGE 'plpgsql' VOLATILE

CREATE TRIGGER aggiorna_num_contrattiBEFORE INSERTON stipulaFOR EACH ROWEXECUTE PROCEDURE "STIPULA - inserisci_contratto_stipulato"();

CREATE OR REPLACE FUNCTION "STIPULA - elimina_contratto_stipulato"()RETURNS trigger AS$BODY$beginupdate locatore set num_contratti_stipulati = num_contratti_stipulati - 1 where cf_loc = old.cf_loc;return old;end;$BODY$LANGUAGE 'plpgsql' VOLATILE

CREATE TRIGGER modifica_num_contrattiAFTER DELETEON stipulaFOR EACH ROWEXECUTE PROCEDURE "STIPULA - elimina_contratto_stipulato"();

12 Trigger per la verifica del locatore e del conduttore quando si inserisce un nuovo

contratto stipulato

Evento: inserimento o cancellazione nella tabella “stipula”Condizione: il locatore e il conduttore devono essere presenti nelle rispettive tabelleAzione: rollback della transazioneGranularità di attivazione: livello di tupla

CREATE OR REPLACE FUNCTION "STIPULA - controllo_cf_conduttore"()RETURNS trigger AS$BODY$beginif new.cf_cond not in (select cf_cond from conduttore) then

raise exception 'Conduttore non presente!!!';

41

Page 42: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

return null;end if;return new;end;$BODY$ LANGUAGE 'plpgsql' VOLATILE

CREATE TRIGGER verifica_cf_conduttoreBEFORE INSERTON stipulaFOR EACH ROWEXECUTE PROCEDURE "STIPULA - controllo_cf_conduttore"();

CREATE OR REPLACE FUNCTION "STIPULA - controllo_cf_locatore"()RETURNS trigger AS$BODY$beginif new.cf_loc not in (select cf_loc from locatore) then

raise exception 'Locatore non presente!!!';return null;

end if;return new;end;$BODY$LANGUAGE 'plpgsql' VOLATILE

CREATE TRIGGER verifica_cf_locatoreBEFORE INSERTON stipulaFOR EACH ROWEXECUTE PROCEDURE "STIPULA - controllo_cf_locatore"();

13 Trigger per verificare l’esistenza del contratto quando si inserisce un nuovo contratto

stipulato

Evento: inserimento o cancellazione nella tabella “stipula”Condizione: il contratto inserito deve essere presente nella rispettiva tabellaAzione: rollback della transazioneGranularità di attivazione: livello di tupla

CREATE OR REPLACE FUNCTION "STIPULA - controllo_id_contratto"()RETURNS trigger AS$BODY$beginif new.id_contratto not in (select id_contratto from contratto) then

raise exception 'Contratto non presente!!!';return null;

end if;

42

Page 43: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

return new;end;$BODY$

LANGUAGE 'plpgsql' VOLATILE

CREATE TRIGGER verifica_id_contrattoBEFORE INSERT OR UPDATEON stipulaFOR EACH ROWEXECUTE PROCEDURE "STIPULA - controllo_id_contratto"();

14 Trigger per la verifica del codice del contratto quando si inserisce una nuova cedolare

secca

Evento: inserimento o cancellazione nella tabella “cedolare secca”Condizione: il contratto inserito deve essere presente nella rispettiva tabellaAzione: rollback della transazioneGranularità di attivazione: livello di tupla

CREATE OR REPLACE FUNCTION "CEDOLARE SECCA - controllo_id_contratto"()RETURNS trigger AS$BODY$beginif new.id_contratto not in (select id_contratto from contratto) then

raise exception 'Contratto non presente!!!';return null;

end if;return new;end;$BODY$LANGUAGE 'plpgsql' VOLATILE

CREATE TRIGGER verifica_id_contrattoBEFORE INSERTON cedolare_seccaFOR EACH ROWEXECUTE PROCEDURE "CEDOLARE SECCA - controllo_id_contratto"();

15 Trigger per la verifica dell’esistenza dei dati di una abitazione e del locatore quando

esso inserisce una abitazione di sua proprietà

Evento: inserimento o cancellazione nella tabella “possiede”Condizione: i dati relativi all’abitazione e al locatore devono essere presenti nelle

rispettive tabelle

43

Page 44: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Azione: rollback della transazioneGranularità di attivazione: livello di tupla

CREATE OR REPLACE FUNCTION "POSSIEDE - controllo_dati_abitazione"()RETURNS trigger AS$BODY$beginperform * FROM "dati_catastali" WHERE "dati_catastali".foglio = new.foglio and "dati_catastali".particella = new.particella and "dati_catastali".subalterno = new.subalterno; if not found then

raise exception 'Impossibile inserire una abitazione!!!';return null;

elsereturn new;

end if;end;$BODY$LANGUAGE 'plpgsql' VOLATILE

CREATE TRIGGER verifica_dati_abitazioneBEFORE INSERTON possiedeFOR EACH ROWEXECUTE PROCEDURE "POSSIEDE - controllo_dati_abitazione"();

CREATE OR REPLACE FUNCTION "POSSIEDE - controllo_cf_locatore"()RETURNS trigger AS$BODY$beginif new.cf_loc not in (select cf_loc from locatore) then

raise exception 'Codice fiscale locatore inesistente!!!';return null;

end if;return new;end;$BODY$ LANGUAGE 'plpgsql' VOLATILE

CREATE TRIGGER verifica_locatoreBEFORE INSERTON possiedeFOR EACH ROWEXECUTE PROCEDURE "POSSIEDE - controllo_cf_locatore"();

16 Trigger per la verifica dei dati relativi all’abitazione e del conduttore quando esso

inserisce una nuova casa in affitto

44

Page 45: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Evento: inserimento o cancellazione nella tabella “possiede”Condizione: i dati relativi all’abitazione e al conduttore devono essere presenti nelle

rispettive tabelleAzione: rollback della transazioneGranularità di attivazione: livello di tupla

CREATE OR REPLACE FUNCTION "AFFITTA - controllo_cf_conduttore"()RETURNS trigger AS$BODY$beginif new.cf_cond not in (select cf_cond from conduttore) then

raise exception 'Codice fiscale conduttore inesistente!!!';end if;return new;end;$BODY$LANGUAGE 'plpgsql' VOLATILE

CREATE TRIGGER verifica_conduttoreBEFORE INSERTON affittaFOR EACH ROWEXECUTE PROCEDURE "AFFITTA - controllo_cf_conduttore"();

CREATE OR REPLACE FUNCTION "AFFITTA - controllo_dati_abitazione"()RETURNS trigger AS$BODY$beginperform * FROM "abitazione" WHERE "abitazione".foglio = new.foglio and "abitazione".particella = new.particella and "abitazione".subalterno = new.subalterno and "abitazione".codice_comune = new.codice_comune ; if not found then

raise exception 'Impossibile inserire un nuovo contratto di affitto!!!';return null;

elsereturn new;

end if;end;$BODY$ LANGUAGE 'plpgsql' VOLATILE

CREATE TRIGGER verifica_dati_abitazioneBEFORE INSERTON affittaFOR EACH ROWEXECUTE PROCEDURE "AFFITTA - controllo_dati

45

Page 46: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

CAPITOLO 6

PROGETTAZIONE

DELLA APPLICAZIONE

6.1 ARCHITETTURA DELL’APPLICAZIONE

L’applicazione web sviluppata, denominata “Agenzia dei Tributi”, è stata realizzata

utilizzando la tecnologia delle Java Server Pages (JSP) invece dell’uso diretto delle Servlet,

in quanto la parte fissa (presentazione) di una pagina è predominante rispetto alla parte che

46

Page 47: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Lato ServerLato Client

Browser JSP

DatabasePostgres

viene generata dinamicamente con codice Java; inoltre quest’ultimo viene gestito con

semplici scriptlet ed espressioni riguardanti le operazioni sulla base di dati.

In definitiva, il client fa riferimento direttamente alla pagina JSP che interagisce a sua volta

con il database e il risultato viene passato direttamente al client.

Figura 1 – Architettura dell’applicazione

La pagina “index.html” rappresenta la pagina principale dell’applicazione ed include i

riferimenti ad altre due pagine ovvero “login.jsp” e “registra.jsp”. Per poter utilizzare

l’applicazione è necessario registrarsi. Una volta registrati al sistema ed aver effettuato il

login, verrà visualizzata all’utente la pagina con l’elenco delle operazioni disponibili, ovvero

inserimento, modifica, cancellazione e visualizza.

La pagina “inserimento. jsp” contiene i riferimenti alle pagine per l’immissione dei dati nel

database:

1) inserimento_dati_catastali.jsp: utilizzata per inserire i dati catastali di una nuova

abitazione;2) inserimento_abitazione.jsp: utilizzata per inserire i dati di una nuova abitazione;3) inserimento_locatore.jsp: utilizzata per inserire i dati relativi ad un nuovo locatore;4) inserimento_conduttore.jsp: utilizzata per inserire i dati relativi ad un nuovo

conduttore;5) inserimento_contratto.jsp: utilizzata per inserire i dati relativi ad un nuovo contratto;6) inserimento_cedolare_secca.jsp: utilizzata per inserire i dati relativi ad una cedolare

secca;

47

Page 48: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

7) inserimento_contratti_stipulati.jsp: utilizzata per inserire i dati relativi ad un nuovo

contratto stipulato tra il locatore ed il conduttore;8) inserimento_abitazioni_possedute.jsp: utilizzata per inserire i dati relativi alle

abitazioni possedute da un locatore.

La pagina “modifica.jsp” contiene i riferimenti alle pagine per la modifica dei dati presenti nel

database:

9) modifica_dati_catastali.jsp: utilizzata per modificare i dati catastali di una abitazione;10) modifica_dati_locatore.jsp: utilizzata per modificare i dati di un locatore;11) modifica_dati_conduttore.jsp: utilizzata per modificare i dati di un conduttore;12) modifica_importo_contratto.jsp: utilizzata per modificare l’importo totale di un

contratto;13) modifica_abitazioni_possedute.jsp: utilizzata per modificare le case possedute da un

locatore.

La pagina “elimina.jsp” contiene i riferimenti alle pagine per l’eliminazione dei dati presenti

nel database:

14) elimina_dati_catastali.jsp: utilizzata per eliminare i dati catastali di una abitazione;15) elimina _locatore.jsp: utilizzata per eliminare i dati di un locatore;16) elimina _conduttore.jsp: utilizzata per eliminare i dati di un conduttore;17) elimina_contratto.jsp: utilizzata per eliminare un contratto.

La pagina “visualizza.jsp” contiene i riferimenti alle pagine per la visualizzazione dei dati

presenti nel database:

18) visualizza_contratti_in_scadenza.jsp: utilizzata per visualizzare i contratti in scadenza

in un determinato mese ed anno. Inoltre vengono visualizzati i dati del conduttore a

cui fa riferimento il contratto;19) visualizza_contratti_stipulati.jsp: utilizzata per visualizzare i dati dei contratti stipulati

da un locatore;20) visualizza_dati_catastali_abitazione.jsp: utilizzata per visualizzare i dati catastali della

abitazioni possedute da un locatore;21) visualizza_dati_cedolare_rata.jsp: utilizzata per visualizzare i dati relativi alle rate per

il pagamento della cedolare secca;22) visualizza_dettagli_abitazione.jsp: utilizzata per visualizzare i dettagli di una

abitazione posseduta da un locatore.

48

Page 49: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Tutte le pagine jsp realizzate utilizzano un’istanza della classe java “Connessione_Database”,

la quale contiene tutte le istruzioni per la connessione al database e per l’esecuzione delle

query.

6.2 INSTALLAZIONE DELL’APPLICAZIONE

L’applicazione viene fornita tramite il file “Ageniza_Tributi.war”.

Per poterla utilizzare è necessario installare sul proprio computer i seguenti software:

1. PostgreSQL 8.4;2. Apache Tomcat 7.0.

Dopo avere verificato la presenza dei software sul pc, avviare PostgreSQL ed eseguire le

seguenti operazioni:

1 creazione di un nuovo utente con nome “postgres” e password “admin”;2 creazione di un nuovo database denominato “Agenzia_tributi” e cliccare in

corrispondenza del database con il tasto destro del mouse e scegliere “ Ripristino” . Dalla

finestra che comparirà scegliere il file “Agenzia_tributi.backup” e cliccare il pulsante

“Ok”. In questo modo verranno caricate tutte le tabelle componenti il database con i

relativi dati e trigger creati;3 creazione di un nuovo database denominato “Utenti” e cliccare in corrispondenza del

database con il tasto destro del mouse e scegliere “ Ripristino” . Dalla finestra che

comparirà scegliere il file “Utenti.backup” e cliccare il pulsante “Ok”. In questo modo

verranno caricate tutte le informazioni relative agli utenti registrati al sistema.

Una volta terminata la creazione del database, copiare il file “Ageniza_Tributi.war” nella

cartella “webapps” di Apache Tomcat. Fatto ciò, posizionarsi nella cartella “bin” di Apache

Tomcat ed avviare il file “Tomcat7”. In questo modo verrà effettuato automaticamente il

deploy dell’applicazione sul server web e se l’operazione è stato eseguita correttamente

all’interno della cartella “webapps” sarà presente una sotto-cartella denominata

“Ageniza_Tributi.war”, la quale rappresenta la nostra applicazione.

49

Page 50: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

6.3 UTILIZZO DELL’APPLICAZIONE

Terminata la fase di installazione del sistema, aprire il browser e digitare il seguente indirizzo:

http://localhost:8080/Agenzia_Tributi/index.html e dopo aver premuto “Invio” verrà

visualizzata la Home page dell’applicazione

Figura 2 – Home page

50

Page 51: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Come si può notare all’interno della “Home page”, sono presenti due voci “Login” e

“Registra”. Per poter utilizzare l’applicazione è necessario registrarsi e cliccando sul pulsante

“Registra” verrà visualizzata la seguente pagina:

Figura 3 – Pagina per la registrazione di un nuovo utente

Al termine della fase di registrazione verrà visualizzato un messaggio che riporterà l’esito

dell’operazione svolta e cliccando sul pulsante “Accedi” si potrà accedere alla pagina con la

lista delle operazioni che si possono svolgere.

Mentre cliccando sulla voce “Login” verrà visualizzata la seguente pagina:

51

Page 52: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Figura 4 – Pagina di login

Dopo aver inserito “Username”e “Passowrd”, si accederà al sistema e verrà mostrata la

pagina con la lista delle operazioni.

Figura 5 – Pagina contenente l’elenco delle operazioni

52

Page 53: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

In questa pagina sono presenti quattro link alle varie operazioni che si possono svolgere sul

database, ovvero “Inserimento”, “Modifica”, “Elimina” e “Visualizzazione”.

Cliccando sulla voce “Inserimento”, verranno mostrati i link alle pagine per inserire ad

esempio i dati catastali, i dati del locatore, i dati del conduttore, ecc.

Figura 5 – Pagina per l’inserimento dei dati

Selezionando la voce “Locatore”, verrà visualizzata la seguente pagina:

53

Page 54: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Figura 6 – Pagina per l’inserimento dei dati di un locatore

e come si può notare dalla immagine sono presenti vari campi da compilare e terminata la fase

di compilazione, cliccando sul pulsante “Inserisci” verrà effettuato l’inserimento dei dati

all’interno del database. Al termine dell’operazione verrà mostrato un messaggio ed una

tabella riepilogativa contenente i dati inseriti.

Figura 7 – Pagina di conferma dei dati inseriti

54

Page 55: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Selezionando la voce “Modifica”, si accederà alla pagina riportata qui di seguito, in cui come

nel caso precedente verranno riportati i link di alcune operazioni di modifica che si possono

effettuare sul database.

Figura 8 – Pagina per la modifica dei dati

55

Page 56: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Scegliamo la voce “Locatore”, in modo da poter modificare i dati precedentemente inseriti:

Figura 9 – Pagina per la modifica dei dati del locatore

All’utente verrà chiesto di inserire il codice fiscale del locatore, in quanto esso lo identifica

all’interno della base di dati ed inoltre ci sono i vari campi in cui si potranno inserire i nuovi

valori. Come per l’operazione di inserimento, anche in questo caso verrà mostrato all’utente

un messaggio di conferma dell’operazione eseguita ed una tabella riepilogativa contenente i

nuovi valori inseriti.

56

Page 57: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Figura 10 – Pagina di conferma dei dati modificati

Selezionando la voce “Elimina”, verrà visualizzata la pagina contente i link alle pagine per la

modifica dei dati:

Figura 11 – Pagina per l’eliminazione dei dati

Scegliamo la voce “Locatore” in modo da eliminare i dati del locatore inserito.

57

Page 58: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Figura 12 – Pagina per l’eliminazione dei dati del locatore

Come per l’operazione di modifica, anche in questo caso verrà chiesto all’utente di inserire il

codice fiscale del locatore che si vuole eliminare. Al termine dell’operazione verrà

visualizzato solamente il messaggio di conferma.

Figura 13 – Pagina per l’eliminazione dei dati del locatore

58

Page 59: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Infine scegliendo la voce “Visualizzazione” verrà visualizzata la seguente pagina:

Figura 13 – Pagina per la visualizzazione dei dati presenti nel database

In questa pagina sono presenti i link alle diverse operazioni di ricerca che si possono

effettuare sul database, ed in questo caso ne sono riportate solo alcune più significative.

Scegliendo la prima voce “Dati catastali di una abitazione posseduta da un locatore” ,

verrà visualizzata la seguente pagina:

59

Page 60: DOCUMENTAZIONE DEL PROGETTO DI BASI DI DATI II · facolta’ di scienze matematiche, fisiche e naturali dipartimento di informatica corso di laurea magistrale in informatica esame

Figura 14 – Pagina per la visualizzazione dei dati catastali di una abitazione posseduta da un locatore

Inserendo il codice fiscale del locatore, verrà eseguita una ricerca all’interno del database e

verranno mostrati i dati di tutte le abitazione possedute dal locatore stesso.

Figura 15 – Pagina in cui vengono mostrati i risultati della ricerca

60