AFD-Arpa Fonte Dati-Documentazione DataBase

Progetto:
Riferimento:
ARPA Fonte Dati
Documentazione Database
ARPA Fonte Dati
Regione Toscana
Documentazione Database
_________________________
1
Progetto:
Riferimento:
Redatto da
ARPA Fonte Dati
Documentazione Database
L. Folchi (TAI)
Rivisto da
Approvato da
Versione
Data emissione
Stato
2
1.0
08/10/13
FINAL
Progetto:
Riferimento:
Versione
Data
1,0
3
ARPA Fonte Dati
Documentazione Database
Descrizione
08/10/13 Versione Iniziale
Progetto:
Riferimento:
ARPA Fonte Dati
Documentazione Database
Sommario
1
INTRODUZIONE ................................................................................................... 6
2
TABELLE ............................................................................................................... 6
2.1
FONTEDATI ....................................................................................................... 8
2.2
ATTRIBUTE ....................................................................................................... 9
2.3
ATTRIBUTOVALORE .......................................................................................... 9
2.4 ............................................................................................................................ 10
2.5
ATTRIBUTECOLLECTOR_ATTRIBUTE ............................................................... 10
2.6
USERDOMAINDEFINITION .............................................................................. 10
2.7
USERDOMAIN ................................................................................................. 10
2.8
ABSTRACTCUSTOMVALIDATOR ....................................................................... 11
2.9
COMPILATION ................................................................................................ 11
2.10
COMPILATION_ATTRIBUTECOLLECTOR ....................................................... 12
2.11
RESPONSE ................................................................................................... 12
2.12
RESPONSEVALUEABSTRACT ........................................................................ 12
2.13
SERVERNODE .............................................................................................. 13
2.14
SERVERNODELOG ........................................................................................ 13
2.15
SERVERNODE_DATASOURCE ....................................................................... 13
3
VISTE ................................................................................................................. 14
3.1
COMPILAZIONI_AC_INCOMPLETE .................................................................. 14
3.2
STATO_COMPILAZIONI .................................................................................. 15
3.3
COMPILAZIONI ............................................................................................... 15
4
ESEMPIO DI INSERIMENTO DI UNA COMPILAZIONE.......................................... 15
4.1
VERIFICA ESISTENZA DELLA COMPILAZIONE ................................................. 16
4.2
DEFINIZIONE DELLA RELAZIONE CON LA COLLEZIONE ATTRIBUTI ................ 16
4.3
DEFINIZIONE DELLA RELAZIONE CON L’ATTRIBUTO ...................................... 17
4.4
CONTROLLO DEL NUMERO DELLE RISPOSTE ................................................... 17
4.5
DEFINIZIONE DELLA RISPOSTA ..................................................................... 18
4.5.1.
ATTRIBUTO NON DI TIPO SELEZIONE [TIPO =T|D|N] ............................. 18
4.5.2.
ATTRIBUTO È DI TIPO SELEZIONE [TIPO=S] ........................................... 18
4
Progetto:
Riferimento:
ARPA Fonte Dati
Documentazione Database
Indice delle figure
Figura 1: Schema del database per Arpa Fonte Dati ______________________________________________________ 8
Figura 2: Viste di database _________________________________________________________________________ 14
5
Progetto:
Riferimento:
ARPA Fonte Dati
Documentazione Database
1 Introduzione
Il presente manuale ha lo scopo di illustrare lo schema del database utilizzato dalla
applicazione Arpa Fonte Dati [afd].
2 Tabelle
Le tabelle utilizzate dal sistema afd sono riportate di seguito e le dividiamo in tre
gruppi.
Il primo gruppo sono le tabelle utilizzate per la definizione della fonte dati e quindi
alimentate dalla applicazione di amministrazione.
1. FONTEDATI
2. ATTRIBUTE
3. ATTRIBUTOVALORE
4. ATTRIBUTECOLLECTOR
5. ATTRIBUTECOLLECTOR_ATTRIBUTE
6. USERDOMAINDEFINITION
7. USERDOMAIN
8. ABSTRACTCUSTOMVALIDATOR
Il secondo gruppo sono le tabelle utilizzate nella fase di compilazione della fonte dati.
9. COMPILATION
10.COMPILATION_ATTRIBUTECOLLECTOR
11.RESPONSE
12.RESPONSEVALUEABSTRACT
Infine il terzo gruppo sono le tabelle di servizio utilizzate dal nodo server o
afd_exporter.
6
Progetto:
Riferimento:
ARPA Fonte Dati
Documentazione Database
13.SERVERNODE
14.SERVERLOG
15.SERVERNODE_DATASOURCE
La base di tutto il sistema è la tabella FONTEDATI che contiene la definizione,
appunto, delle fonti dati [Figura 1].
7
Progetto:
Riferimento:
ARPA Fonte Dati
Documentazione Database
Figura 1: Schema del database per Arpa Fonte Dati
2.1
FONTEDATI
Elenco dei campi:
•
ID: chiave primaria
•
COMPILATIONENABLED: flag per indicare se la fonte può essere compilata
8
Progetto:
Riferimento:
ARPA Fonte Dati
Documentazione Database
•
CREATIONDATE: data di creazione della fonte dati
•
IDENTIFICATIVO: identificativo della fonte dati che viene utilizzata nell’RFC
•
LASTUPDATE: data di ultimo aggiornamento
•
NOME: nome utilizzato nella parte GUI
•
NOTE: note
•
PUBLISHED: flag per indicare se la fonte dati è disponibile verso l’RFC
2.2
ATTRIBUTE
Elenco dei campi:
•
ID : chiave primaria
•
CHIAVE : etichetta dell’attributo che viaggia sull’RFC
•
DATAFINEVALIDITA : deprecato
•
DESCRIZIONE : Etichetta utilizzata dalla parte di GUI
•
ESPORTABILE : flag per indicare che l’attributo può essere utilizzato dal RFC
•
MASSIMONUMERORISPOSTE: numero massimo di risposte per l’attributo
•
MOSTRAMESSAGGIOVALIDATORE: flag per indicare se deve essere visualizzato
il messaggio del validatore, se assegnato il validatore
•
OBBLIGATORIO: flag per indicare che l’attributo è obbligatorio
•
TIPO: carattere per indicare il tipo di Attibuto
o T: testo;
o N: numerico;
o S: selezione;
o D: data.
•
VISIBILE : flag per indicare se l’attributo deve essere compilato da un operatore
o se è un attributo costante con valore precompilato;
•
FONTEDATI_ID : chiave esterna alla fonte dati, obbligatoria
•
VALIDATORE_ID: chiave esterna al validatore, assegnato solo per attributi il cui
tipo è T [testo]
•
DEFAULTVALUE: valore di default, obbligatorio se l’attributo non è visibile.
2.3 ATTRIBUTOVALORE
Elenco dei campi:
• ID: chiave primaria
• CHIAVE: chiave dell’attributo utilizzato dal RFC
9
Progetto:
Riferimento:
ARPA Fonte Dati
Documentazione Database
• DEFAULTSELECTION: deprecato
• VALORE: valore utilizzato dalla parte grafica
• ATTRIBUTEID: chiave esterna all’attributo, ma solo se l’attributo è di tipo S
[Selezione]
2.4
Elenco dei campi:
•
ID: chiave primaria
•
ATTRIBUTESPERROW: deprecato
•
DESCRIPTION: Descrizione della collezione
•
DOMAINTYPE: Descrizione del dominio utente a cui riferisce la collezione1
•
NAME : Nome della collezione
•
FONTEDATI_ID: chiave esterna alla fonte dati, obbligatoria
•
POSITION: posizione della collezione all’interno della fonte dati, definito in
maniera automatica dal sistema.
2.5 ATTRIBUTECOLLECTOR_ATTRIBUTE
Elenco dei campi:
•
ATTRIBUTECOLLECTOR_ID: chiave esterna per l’attributecollector
•
ATTRIBUTE_ID: chiave esterna per l’attribute
•
ATTRIBUTES_ORDER: ordine di associazione attributecollector-attribute
2.6 USERDOMAINDEFINITION
Elenco dei campi:
•
ID: chiave primaria
•
LASTUPDATE: data utlimo aggiornamento
•
NAME: nome, che verrà eventualmente riferito dal campo domaintype della
tabella ATTRIBUTECOLLECTOR
•
FONTEDATI_ID: chiave esterna alla fonte dati.
2.7 USERDOMAIN
Elenco dei campi:
1
Per il dominio utenti viene utilizzata la descrizione perché i domini utenti posso essere sia entità di database che
istanze di bean definite al di fuori del database, quindi per unificarne la gestione, l’associazione tra Collezioni e Domini
utenti viene fatta per “nome del dominio”.
10
Progetto:
Riferimento:
ARPA Fonte Dati
Documentazione Database
•
ID: chiave primaria
•
FISCALCODE: Codice fiscale censibile all’interno del dominio utenti, obbligatorio
•
LASTUPDATE: data ultimo aggiornamento
•
NAME: nome
•
SURNAME: cognome
•
USERDOMAINDEFINITION_ID: chiave esterna alla definizione del dominio utenti
USERDOMAINDEFINITION
2.8 ABSTRACTCUSTOMVALIDATOR
Elenco dei campi:
•
ABSTRACT_VALIDATOR_TYPE:
tipo
del
validatore,
utilizzato
solo
regex_validator
•
ID: chiave primaria
•
MESSAGE: Messaggio da visualizzare in caso di mancata validazione
•
NAME: nome del validatore
•
REGEX_PARAM: Regular Expression da applicare per validare il testo.
2.9 COMPILATION
Elenco dei campi:
•
ID: chiave primaria
•
CODICEFISCALE: codice fiscale censito
•
LASTUPDATE: data ultimo aggiornamento della compilazione
•
LOCKTIME: tempo limite entro il quale la compilazione non può essere rispedito,
caso in cui l’invio dell’aggiornamento non ha dato risposte,
•
FONTEDATI_ID: chiave esterna alla fonte dati
•
READYTOSEND: flag per indicare che la compilazione è stata modificate e può
partire l’RFC 156
•
REMOVABLE: flag per indicare che la compilazione viene rimossa, quindi dop
l’RFC 156 il record deve essere rimosso
•
COGNOME: cognome dell’utente censito
•
NOME: nome dell’utente censito
11
Progetto:
Riferimento:
2.10
ARPA Fonte Dati
Documentazione Database
COMPILATION_ATTRIBUTECOLLECTOR
Elenco dei campi:
•
COMPILATION_ID: chiave esterna a compilation
•
ATTRIBUTECOLLECTOR_ID: chiave esterna all’AttributeCollector
•
COLLECTORS_ORDER: ordine di assegnazione dell’attributecollector a
compilation, definito automaticamente
2.11
RESPONSE
Elenco dei campi:
•
ID: chiave primaria
•
LASTUPDATE: ultimo aggiornamento della risposta
•
ATTRIBUTE_ID: chiave esterna per attribute che riferisce la risposta
•
COMPILATION_ID: chiave esterna a compilation
•
ATTRIBUTECOLLECTOR_ID: chiave esterna a attributecollection
2.12
2
RESPONSEVALUEABSTRACT
Elenco dei campi:
•
RESPONSE_VALUE_ABSTRACT_TYPE:
tipologia
della
risposta,
indica
se
"response_value_textual" oppure "response_value_selection"
•
ID: chiave primaria
•
RESPONSE_VALUE_TXT: in caso di risposta tipo "response_value_textual"
riporta il valore inserito
•
RESPONSE_VALUE_DBL: deprecato
•
RESPONSE_VALUE_DATETIME: deprecato3
•
RESPONSE_ID: chiave esterna alla tabella response
•
RESPONSE_VALUE_ID: chiave esterna alla tabella attributovalore se il tipo è
"response_value_selection"
•
LASTUPDATE: data ultimo aggiornamento
2
La risposta viene inserita a fronte di una compilazione, di un attributo ed una collezione di attributi, perché lo stesso
attributo può essere inserito in più collezioni è quindi necessario distinguere a fronte di quale collezione viene risposto
ad un attributo
3
I campi response_value_dbl e response_value_datetime non vengono utilizzati perché queri tipi di dato sono
comunque gestiti come campi testo.
12
Progetto:
Riferimento:
2.13
ARPA Fonte Dati
Documentazione Database
SERVERNODE
Elenco dei campi:
•
ID : chiave primaria
•
ACTIVE: flag per nodo attivo
•
ALLDATASOUCEMANAGEMENT: flag per indicare se il nodo gestisce tutte le fonti
dati
•
CODE: nome del servernode
•
DESCRIPTION: breve descrizione
•
LASTKEEPALIVE : data ultimo keepAlive
•
LASTUPDATE: data ultimo aggiornamento
•
STARTUPTIME: data startup del nodo
Per nodo si intende l’istanza di afd_exporter in esecuzione. Possono esistere più
afd_exporter, e quindi servernode, che gestiscono una particolare insieme di
fontidati.
2.14
SERVERNODELOG
Elenco dei campi:
•
ID: chiave primaria
•
CREATIONDATE: data di creazione del record
•
STATUS: registrazione esito operazione, se positivo [0] o negativo[1]
•
EVENTTYPE: tipo evento RFC146 [0] o RFC156 [1]
•
MESSAGE: messaggio ricevuto [RFC156] o restituito [RFC146]
•
COMPILATION_ID: chiave esterna alla compilazione per cui viene fatta la
comunicazione
•
DATASOURCE_ID: chiave esterna alla fonte dati compilazione per cui viene
fatta la comunicazione
•
SERVERNODE_ID: chiave esterna al servernode che stà eseguendo le
comunicazioni
2.15
SERVERNODE_DATASOURCE
Elenco dei campi:
•
SERVERNODE_ID: chiave esterna per servernode
13
Progetto:
Riferimento:
•
ARPA Fonte Dati
Documentazione Database
DATASOURCE_ID: chiave esterna per fontedati.
I record in questa tabella esistono solo se esiste un servernode dedicato ad una o più
fonti dati.
Figura 2: Viste di database
3 Viste
Per poter sfruttare la potenza del database nell’applicare determinati filtri ed
ordinamenti sono state introdotte tre viste, una dipendente dall’altra:
1. COMPILAZIONI_AC_INCOMPLETE
2. STATO_COMPILAZIONI
3. COMPILAZIONI
Vediamo di seguito il dettagli odi ogni vista.
3.1 COMPILAZIONI_AC_INCOMPLETE
Elenco dei campi:
•
COMPILATION_ID: chiave esterna alla tabella compilation
•
ATTRIBUTECOLLECTOR_ID: chiave esterna alla tabella attributecollector
per cui esistono degli attributi obbligatori non compilati
Se tutte le collezioni attributi, riferite nelle compilazioni, hanno gli attributi obbligatori
con risposte, la vista in questione risulta vuota, altrimenti vengono elencate le
collezioni attributi parzialmente compilati.
14
Progetto:
Riferimento:
ARPA Fonte Dati
Documentazione Database
3.2 STATO_COMPILAZIONI
Elenco dei campi:
•
ATTRIBUTECOLLECTOR_ID: chiave esterna alla tabella attributecollector
•
COMPILATION_ID: chiave esterna alla tabella compilation
•
COMPILATO: flag per indicare se la compilazione è completa, 1 se è completa, 0
altrimenti
In questa view vengono elencate tutte le attributecollector
coinvolte nelle
compilazioni.
3.3 COMPILAZIONI
Elenco dei campi:
•
ID : chiave primaria
•
CODICEFISCALE: codice fiscale censito
•
LASTUPDATE: ultimo aggiornamento della compilazione
•
LOCKTIME: tempo di lock della compilazione per il re-invio dell’RFC156
•
FONTEDATI_ID: chiave esterna alla fontedati
•
READYTOSEND: flag di pronto all’invio con RFC156
•
REMOVABLE: flag per indicare che la compilazione è cancellata
•
COGNOME: cognomen censito
•
NOME: nome censito
•
ATTRIBUTECOLLECTOR_ID: chiave esterna ad attributecollector
•
COMPILATION_ID: duplicato della chiave primaria
•
COMPILATO: flag per indicare se l’ attributecollector è completamente
compilato
Questa view viene utilizzata per ottenere gli ordinamenti sul completamento delle
compilazioni delle attributecollector.
4 Esempio di inserimento di una compilazione
Nel caso in cui sia necessario inserire una compilazione con dei processi batch, e
quindi fuori dalla navigazione logica della portlet di compilazione, descriviamo di
seguito i passi da seguire.
15
Progetto:
Riferimento:
ARPA Fonte Dati
Documentazione Database
Parametri per inserire la compilazione:
•
Codice fiscale da censire, obbligatorio
•
Nome
•
Cognome
•
idFD : Identificativo univoco della fonte dati, obbligatorio
•
Descrizione o identificativo univoco della collezione attributi, obbligatorio
•
Descrizione o identificativo univoco dell’attributo, obbligatorio
•
Risposta, obbligatorio.
4.1 Verifica esistenza della compilazione
Per la definizione della compilazione si inizia con l’inserire, o recuperare, l’utenza
censita.
1. Select id from afd.compilation where
codicefiscale=’AAAAAA50A01A111A’ and fontedati_id=<idFD>
Se l’operazione non restituisce risultato, l’utente deve essere censito con la segunte
operazione:
2. insert into compilation(codicefiscale, nome, cognome, fontedati_id,
readytosend, removable) values (’AAAAAA50A01A111A’, ‘nome’,
‘cognome’, idFD, true, false);
Recuperare l’identificativo come al passo 1, indichiamo da adesso idComp.
4.2 Definizione della relazione con la Collezione Attributi
Per ogni fonte dati compilata è anche necessario anche definire quale Collezione
attributi è coinvolta.
Se si ha la descrizione della Collezione Attributi è necessario risalire alla chiave
univoca:
3. select id from afd.attributecollector where lower(nome)
like
lower(‘%<descrizione>%’)
Chiamiamo a questo punto l’identificativo idAC.
A questo punto è necessario eseguire la seguente query:
4. insert into COMPILATION_ATTRIBUTECOLLECTOR values (<idComp>,
<idAC>, (select max(COLLECTORS_ORDER)+1 from
16
Progetto:
Riferimento:
ARPA Fonte Dati
Documentazione Database
COMPILATION_ATTRIBUTECOLLECTOR where COMPILATION_ID=<idComp> and
ATTRIBUTECOLLECTOR_ID = <idAC>))
4.3 Definizione della relazione con l’Attributo
A questo punto è necessario riferire l’attributo per cui si deve aggiungere la risposta.
Se si ha la chiave (stringa utilizzata in RFC) dell’attributo è necessario risalire al suo
identificativo univoco, con la seguente query:
5. select id from attribute join ATTRIBUTECOLLECTOR_ATTRIBUTE on
ATTRIBUTECOLLECTOR_ATTRIBUTE.attribute_id= attribute.id where
lower(attribute.chiave) like lower(‘%<descrizione>%’) and
ATTRIBUTECOLLECTOR_ATTRIBUTE. ATTRIBUTECOLLECTOR_ID=<idAC>
E’ necessario andare in JOIN con le Collezioni di Attributo per verificare la consistenza
del legame attributo - collezione di attributi. Chiamiamo l’identificativo idAttr.
Prima di inserire la risposta è necessario controllare che l’attributo non sia già in
compilazione, si esegue la seguente query:
6. select id from afd.response where attribute_id=<idAttr> and
COMPILATION_ID = <idComp> and ATTRIBUTECOLLECTOR_ID = <idAC>;
Chiamiamo l’identificativo così recuperate idResp.
Nel caso in cui l’attributo non risulti inserito è necessario inserirlo con la seguente
query:
7. insert into response(ATTRIBUTE_ID, COMPILATION_ID,
ATTRIBUTECOLLECTOR_ID) values (<idAttr>, <idComp>, <idAC>);
è necessario a questo punto recuperare l’identificativo inserito come descritto al punto
6.
4.4 Controllo del numero delle risposte
Prima di andare ad inserire la risposta è necessario controllare quante risposte
prevede l’attributo:
8. Select massimonumerorisposte from afd.attribute where id =<idAttr>
Se il valore trovato è uguale a 0, si può passare alla definizione della risposta [4.5].
Se il valore trovato NON è uguale a 0 è necessario controllare il numero delle risposte
già inserite:
9. Select count(*) as tot from afd.RESPONSEVALUEABSTRACT where
response_id = <idResp>
17
Progetto:
Riferimento:
ARPA Fonte Dati
Documentazione Database
L’accesso alla funzionalità espresso nel prossimo paragrafo [4.5] si ha solo se
massimonumerorisposte > tot.
4.5 Definizione della risposta
Ultimo passaggio, ma forse quello più impegnativo, è la definizione della risposta da
inserire. Distinguiamo due casi, il caso in cui l’attributo è di tipo selezione ed il caso in
cui non lo è.
10.
Select tipo from afd.attribute where id =<idAttr>
4.5.1. Attributo Non di tipo Selezione [tipo =T|D|N]
Per definire la risposta è necessario inserire la seguente operazione:
11.
Insert into afd.RESPONSEVALUEABSTRACT
(RESPONSE_VALUE_ABSTRACT_TYPE, RESPONSE_VALUE_TXT, RESPONSE_ID)
values (‘response_value_textual’, <risposta>, <idResp>)
4.5.2. Attributo è di tipo Selezione [tipo=S]
Per definire la risposta è necessario recuperare l’identificativo univoco del valore
scelto.
12.
Select id from afd.attributovalore where attribute_id=<idAttr>
and lower(chiave) like lower(‘%<valore risposta>%’)
Chiamiamo questo identificativo trovato idAV. Adesso vediamo la query per inserire la
risposta:
13.
Insert into afd.RESPONSEVALUEABSTRACT
(RESPONSE_VALUE_ABSTRACT_TYPE, RESPONSE_VALUE_ID, RESPONSE_ID)
values (‘response_value_selection’, <idAV>, <idResp>)
Oppure si possono unificare le due query sopra con la seguente:
14.
Insert into afd.RESPONSEVALUEABSTRACT
(RESPONSE_VALUE_ABSTRACT_TYPE, RESPONSE_VALUE_ID, RESPONSE_ID)
values (‘response_value_selection’, (Select id from
afd.attributovalore where attribute_id=<idAttr> and lower(chiave)
like lower(‘%<valore risposta>%’)), <idResp>)
18