Base di Dati AMICI Piemonte
Pasturenzi Francesco matricola: 131523
Tutor: Prof.ssa Silvia Chiusano
Sommario
Introduzione
(2)
1 Teoria sulla progettazione
1.1 Diagramma E-R
1.1.1 Entità
1.1.2 Relazioni
1.1.3 Attributi
1.1.4 Identificatori
1.1.5 Generalizzazione
1.2 Traduzione logica
1.2.1 Ristrutturazione dello schema E-R
1.2.2 Traduzione nel modello relazionale
(4)
(4)
(4)
(5)
(5)
(6)
(7)
(7)
(7)
(9)
2
Progettazione database AMICI Piemonte
2.1 Descrizione del vecchio sistema
2.2 Descrizione del nuovo sistema
2.2.1 Diagramma relazioni in Access
2.2.2 Modello E-R
2.2.3 Traduzione logica
(11)
(11)
(12)
(12)
(14)
(15)
3
Use cases
3.1 Avvio Programma
3.1.1 Diagramma UML
3.1.2 Codice “Apertura database”
3.1.3 Interfaccia grafica in Visual Basic 6.0
3.2 Inserimento nuovo socio
3.2.1 Diagramma UML
3.2.2 Query SQL utilizzando linguaggio ADO
3.2.3 Interfaccia grafica in Visual Basic 6.0
3.3 Gestione pagamenti soci
3.3.1 Diagramma UML
3.3.2 Query SQL utilizzando linguaggio ADO
3.3.3 Interfaccia grafica in Visual Basic 6.0
3.4 Stampa etichette
3.4.1 Diagramma UML
3.4.2 Query SQL utilizzando linguaggio ADO
3.4.3 Progettazione di report di stampa con Visual Basic 6.0
3.4.4 Alcune anteprime di stampa
(17)
(17)
(18)
(18)
(19)
(19)
(20)
(20)
(23)
(24)
(24)
(24)
(27)
(28)
(28)
(29)
(30)
(30)
4
Riempimento
(32)
A Sintassi SQL
A.1 Selezione record
A.2 Inserimento record
A.3 Aggiornamento record
(35)
(35)
(35)
(35)
B Sintassi UML
B.1 Elementi del modello
B.2 Relazioni
(36)
(37)
(37)
Referenze
(39)
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 1
Introduzione
Una base di dati (o database) è una collezione di dati che rappresenta le informazioni di
interesse per un sistema informativo.
Una definizione più tecnica è che la base di dati è una collezione di dati gestita da un
DBMS.
Il DBMS(Data Base Management System) è sinonimo di “sistema per la gestione di basi di
dati” è un sistema software in grado di gestire collezioni di dati che siano grandi,condivise,
persistenti.
In una base di dati sono definiti lo schema, che descrive la struttura dei dati (nome tabella
e nomi colonne) e l’ istanza, costituita dal contenuto di ogni tabella, cioè dai valori effettivi
dei dati (righe delle tabelle)
L’ accesso ai dati avviene tramite l’uso di interfacce amichevoli che permettono di
specificare interrogazioni senza utilizzare un linguaggio testuale.
I linguaggi di accesso ai dati divisi in due categorie:
•
Linguaggi di definizione dei dati (DDL) utilizzati per definire gli schemi e le
autorizzazioni per l’accesso. (Es: CREATE TABLE…)
•
Linguaggi di manipolazione dei dati (DML) utilizzati per l’interrogazione e
l’aggiornamento delle istanze delle basi di dati. (Es: SELECT, INSERT, DELETE,
UPDATE…)
Per approfondimenti si consiglia il testo [1] e [4].
Il linguaggio usato per le interrogazioni (query) è SQL inserito all’interno del linguaggio
ospite Visual Basic 6.
La base dati è stata realizzata per A.M.I.C.I. Piemonte in quanto l’associazione in
questione ha dato disponibilità di sistemare la sua base di dati.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 2
La base di dati raccoglie tutte le informazioni relative ai soci, dottori, politici e dirigenti che
contribuiscono al lavoro dell’associazione.
Per ogni dirigente sono elencate le informazioni relative alla società che dirige.
Per quanto riguarda i soci la base di dati registra i versamenti effettuati nell’arco degli anni;
della figura professionale dei medici sono registrate le specialità (intese sia come
specialità nell’ambito lavorativo sia come specialità date durante gli studi).
All’associazione
collaborano
anche
politici
e
dirigenti
d’azienda
(ASL,
altre
ASSOCIAZIONI e CASE FARMACEUTICHE).
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 3
Capitolo 1
Teoria sulla progettazione dei database
In questo capitolo si descrivono gli elementi necessari per progettare un database.
Il paragrafo 1.1 parla sul come rappresentazione le specifiche informali sotto forma di
schema concettuale. Lo schema concettuale serve per definire una descrizione formale e
completa, l’obiettivo è la rappresentazione del contenuto informativo della base di dati.
Il paragrafo 1.2 invece parla della traduzione del modello concettuale nello schema logico.
Si spiegano criteri di ottimizzazione delle operazioni da fare sui dati. Fa riferimento al
modello logico dei dati prescelto.
Per approfondimenti si consiglia il testo [1] e [4].
1.1 Diagramma E-R
E’ il modello concettuale più diffuso.
Fornisce costrutti per descrivere le specifiche sulla struttura dei dati
•
In modo semplice e comprensibile
•
Con un formalismo grafico
•
In modo indipendente dal modello dei dati, che può essere scelto in seguito
1.1.1 Entità
Rappresenta classi di oggetti del mondo reale che hanno proprietà comuni e esistenza
autonoma.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 4
1.1.2 Relazioni
Rappresentano un legame logico tra due o più entità.
Occorrenze di una relazione
Un’occorrenza di una relazione è una n-ipla (n-riga) costituita da occorrenze di entità, una
per ciascuna delle entità coinvolte. Non vi possono essere n-uple identiche.
Cardinalità
Descrive numero minimo e massimo di occorrenze di una relazione a cui può partecipare
un occorrenza di un’entità.
•
Minimo assume i valori
0 (partecipazione opzionale)
1 (partecipazione obbligatoria)
•
Massimo varia tra
1 (al più un occorrenza)
N (numero arbitrario di occorrenze)
Esempio: E1(0,1) --------(1,1)E2 :
E1 ha partecipazione opzionale e al più un occorrenza per ogni oggetto
E2 ha partecipazione obbligatoria e al più un occorrenza per ogni oggetto.
Le cardinalità minime raramente sono 1 per tutte le entità coinvolte in una relazione.
1.1.3 Attributi
Descrivono una proprietà elementare di un’entità o di una relazione.
Ogni attributo è caratterizzato dal dominio l’insieme dei valori ammissibili per l’attributo.
Gli attributi si possono raggruppare anche tutti in uno.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 5
Esempio:
Via
civico
Indirizzo
Cardinalità
Anche agli attributti può essere specificata una cardinalità.
Se è omessa corrisponde ad (1,1).
•
Minima 0 corrisponde ad un attributo che ammette il valore nullo.
•
Massima N corrisponde ad un attributo che può assumere più di un valore per la
stessa occorrenza (attributo multivalore).
1.1.4 Identificatori
Sono specificati per ogni entità.
Le relazioni NON hanno identificatori.
Descrivono i concetti dello schema che permettono di individuare in modo univoco le
occorrenze delle entità.
Ogni entità deve avere almeno un identificatore e può esistere più di un identificatore
appropriato per un’entità
Identificatore interno
Semplice: costituito da un solo attributo.
Composto: costituito da più attributi (interni) della stessa entità.
Identificatore esterno
L’entità che non dispone internamente di attributi sufficiente per definire un identificatore è
denominata entità debole.
L’entità debole deve partecipare con cardinalità (1,1) in ognuna della relazioni che
forniscono parte dell’identificatore.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 6
1.1.5 Generalizzazione
Descrive un collegamento logico tra un’entità padre (quella a monte) e una o più entità
figlie (quelle a valle).
Proprietà
Ogni occorrenza di un’entità figlia è anche un occorrenza dell’entità padre.
Ogni proprietà dell’entità padre (attributi, identificatori, relazioni, ecc) è anche una
proprietà di ogni entità figlia
Proprietà nota come ereditarietà.
Caratteristiche ortogonali:
•
Generalizzazione totale: se ogni occorrenza dell’entità padre è un occorrenza di
almeno una delle entità figlie, parziale altrimenti.
•
Generalizzazione esclusiva: se ogni occorrenza dell’entità padre è al più
un’occorrenza di una delle entità figlie, sovrapposta altrimenti.
1.2 Traduzione logica
Obiettivo:
•
Definizione di uno schema logico relazionale corrispondente allo schema ER di
partenza.
1.2.1 Ristrutturazione dello schema ER
Lo schema ER ristrutturato tiene conto di aspetti realizzativi
Non è più uno schema concettuale
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 7
Obiettivi
•
Eliminazione dei costrutti per cui non esiste una rappresentazione diretta nel
modello relazionale
•
Trasformazioni voite ad aumentare l’efficienza delle operazioni di accesso ai dati
Analisi delle ridondanze
Rappresentano informazioni significative.
Effetti delle ridondanze sullo schema logico
•
Semplificazione e velocizzazione delle interrogazioni
•
Maggiore complessità e rallentamento degli aggiornamenti
•
Maggiore occupazione di spazio
Decisione se conservarle
Eliminazione delle gerarchie
Non sono rappresentabili direttamente nel modello relazionale.
Le gerarchie vengono sostituite da entità e relazioni.
Metodi di ristrutturazione:
•
Accorpamento delle entità figlie nell’entità padre.
•
Accorpamento dell’entità padre nelle entità figlie.
Eliminazione degli attributi multivalore
Non sono rappresentabili nel modello relazionale.
L’attributo multivalore è rappresentato mediante una nuova entità collegata da una
relazione all’entità originale.
Eliminazione degli attributi composti
Gli attributi composti non sono rappresentabili nel modello relazionale.
Due alternative:
•
Si rappresentano in modo separato gli attributi componenti (adatto se è necessario
accedere separatamente a ciascun attributo).
•
Si introduce un unico attributo che rappresenta la concatenazione degli attributi
componenti (adatta se è sufficiente l’accesso all’informazione complessiva).
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 8
Scelta degli identificatori primari
Necessaria per definire la chiave primaria delle tabelle.
Un buon identificatore deve:
•
Non assume valore nullo.
•
Essere costituito da pochi attributi e possibilmente interno.
•
Essere utilizzato da molte operazioni d’accesso.
1.2.2 Traduzione nel modello relazionale
Si esegue sullo schema ER ristrutturato.
Ad ogni entità si fa corrisponde una tabella con gli stessi attributi invece per le relazioni
occorre considerare la cardinalità massima.
La chiave primaria deve essere sottolineata.
Gli attributi opzionali devono essere indicati con asterisco (*).
Relazioni Molti-a-Molti
Ogni relazione molti a molti corrisponde ad una tabella
•
La chiave primaria è la combinazione degli identificatori delle due entità collegate
Relazioni Uno-a-Molti
Sono possibili due modalità di traduzione
•
Mediante attributi
Gli eventuali attributi di una relazione di questo genere vengono messi nell’entità
con cardinalità più bassa. Esempio: (1,1) o (0,1)
•
Mediante una nuova tabella
Viene creata una tabella con i due identificatori delle due entità, ma come chiave
primaria si tiene l’identificatore dell’entità con cardinalità più bassa più si
aggiungono gli eventuali attributi della relazione.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 9
Relazioni Uno-a-Uno
Sono possibili più traduzioni
•
Partecipazione obbligatoria da entrambi i lati
Bisogna mettere l’identificatore della seconda entità come attributo nella prima
entità più aggiungere gli attributi della relazione (oppure viceversa)
•
Partecipazione opzionale da un lato
Esempio: E1 (0,1)----------E2 (1,1)
L’identificatore dell’entità E1 viene messo come attributo nell’entità E2 assime
agli attributi della relazione.
•
Partecipazione opzionale da entrambi i lati
Si crea una tabella della relazione che ha entrambi gli identificatori delle due
entità collegate, più gli eventuali attributi della relazione, ma solo uno dei due
come chiave primaria
Entità con identificatore esterno
Quando si crea la tabella dell’entità debole (cioè quella con un identificatore esterno) si
deve definire una chiave primaria composta, formata dall’identificatore dell’entità stessa
più l’identificatore esterno dell’entita a cui è collegata.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 10
Capitolo 2
Progettazione database AMICI Piemonte
In questo capitolo si farà una descrizione del vecchio e del nuovo database mettendo in
rilievo le differenze più rilevanti tra le due basi di dati.
Si parlerà dei linguaggi usati per la progettazione e implementazione della nuova base di
dati.
Per approfondimenti sui linguaggi che verranno accennati in questo capitolo si consiglia il
testo [5], [6], [7], [8].
2.1 Descrizione del vecchio sistema
Nella precedente base di dati era presente una tabella per ogni oggetto e di conseguenza
gli attributi comuni venivano duplicati ed erano in numero notevole.
Inoltre le tabelle in questione non erano relazionate tra di loro; questo portava alla
mancanza dei criteri di integrità referenziale ( aggiorna campi correlati a catena o elimina
record correlati a catena).
Nel caso in cui l’utente avesse cancellato/modificato un’ istanza di una tabella,
quest’istanza sarebbe stata cancellata/modificata solo nella tabella correntemente
utilizzata portando il sistema a funzionare si correttamente ma una successiva
interrogazione tramite query avrebbe portato a falsi risultati.
Esempio:
se l’utente avesse cancellato un socio, l’istanza del socio sarebbe stata cancellata, ma i
pagamenti relativi a quel socio sarebbero rimasti.
Da questo esempio si evince che un successivo filtraggio dei dati avrebbe portato ad
errori nella lettura della base di dati.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 11
2.2 Descrizione del nuovo sistema
Il nuovo sistema è stato implementato usando Microsoft Access 2007, è stato usato
Access perché oltre ad essere di facile e veloce utilizzo viene gestito molto bene sia da
ADO (ActiveX Data Objects) che da Visual Basic 6 essendo i programmi usati per la
gestione e la grafica della nuovo sistema.
Con l’attuale versione sono state create tabelle di dimensioni più piccole con la possibilità
di relazionarsi. In ogni tabella sono stati inseriti solo gli attributi più stretti associati alla
tabella in questione; questo ha portato ad una struttura della base di dati più schematica
con un aumento della complessità nella creazione delle query(interrogazioni) alle
informazioni contenute in essa.
Dopo aver definito gli attributi, le tabelle, le relazioni e le query si è passati alla scrittura del
Il programma è stato realizzato usando Microsoft Visual Basic 6.0 per l’interfaccia grafica e
il linguaggio ADO (ActiveX Data Objects) per l’accesso e gestione dei record della base di
dati.
Gli utenti dell’associazione hanno richiesto che il programma avesse come requisiti un
filtraggio per attributi più esteso rispetto a quello che utilizzavano in precedenza. Hanno
poi richiesto che i C.A.P. venissero memorizzati in un apposita tabella e che i pagamenti
venissero filtrati per SOCI PAGANTI e NON PAGANTI in modo da rendere il loro lavoro
veloce.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 12
2.2.1 Diagramma relazioni in Access
Figura 1 Diagramma relazioni in Access
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 13
Email (0,1)
Note (0,1)
Tel (0,N)
Persone
Ind
(0,1)
Spec
(1,N)
(1,1)
Soci
Ind
(0,1)
(t,s)
Indirizzo
Data_Nasc (0,1)
ID_P
Sesso (0,1)
Nome
Qual (0,1)
2.2.2 Modello E-R
Politici
Dottori
(0,1)
(0,1)
Dirigenti
(1,1)
(1,1)
(1,1)
Partito
(0,1)
Prov_Nasc (0,1)
Citta_Nasc (0,1)
(0,1)
(0,N)
(1,N)
(0,N)
(0,N)
(0,N)
Cap
(0,N)
(0,N)
Malattie
(1,1)
(1,1)
Pagamenti
Ind
Quota_€
(1,1)
Nome_Soc
Anno
Società
ID_SOC
Data
Cap
(0,N)
(0,N)
Ind
Nome
ID_OSP
(0,N)
Citta
Nome
ID_MAL
Provincia
Ospedali
(t,e)
Causale
(p,e)
Iscrizioni
Casa Farma
(0,N)
Asl
Asssoc.
(1,1)
Tel (0,N)
Tel
Tel
Spec (1,N)
(1,N)
(1,1)
Spec_Dott
Pasturenzi Francesco – Base di dati AMICI Piemonte
Spec
Pagina 14
2.2.3 Traduzione logica
Persone (ID_P, NOME, COGNOME, QUAL*, SESSO*, APPUNTI*, EMAIL*)
Tipo_Pers (ID_P, TIPO)
Tel (TEL, ID_P)
Soci (ID_S, DATA_NASC*, CITTA_NASC*, PROV_NASC*, INDIRIZZO, CAP, ID_MAL*,
ID_OSP*)
Dottori (ID_D, IND*, CAP, ID_OSP*)
Spec_Dott (SPEC, ID_D)
Malattie (ID_MAL, NOME)
* = attributo opzionale
__ (sottolineatura)=chiave primaria
Ospedali (ID_OSP, NOME, IND, CAP)
Politici (ID_POL, IND*, CAP, PARTITO*)
Dirigenti (ID_DIR, ID_SOC)
Società (ID_SOC, IND, CAP, TIPO, NOME_SOC)
Cap (CAP, CITTA, PROVINCIA)
Pagamenti (DATA, ID_P, CAUSALE*, QUOTA_€, TIPO*, ANNO)
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 15
Discussione sulla traduzione logica
Nell’entità Persone sono stati fatti salire i figli (Soci, Dottori, Politici, Dirigenti) e quindi
anche le loro relazioni. Essendo l’entità Persone totale-sovrapposta, ogni persona può
appartenere solo a quelle categorie e a più di una. Questo porta alla definizione di una
nuova tabella (Tipo_Pers) con una chiave primaria composta.
L’attributo Tel di cardinalità (0,N) è stato normalizzato in un’entità con chiave primaria
TEL(univoca) in quanto ogni persona può avere più di un numero di telefono e ogni
numero di telefono può essere associato esclusivamente ad una persona.
Nell’entità Società sono stati fatti salire i figli (Casa Farma, Associazioni, Asl) e quindi
anche le loro relazioni. Essendo l’entità Società totale-esclusiva ogni società(identificata
dall’ID_SOC) può appartenere solo a quelle categorie e ad una sola di esse. Questo porta
a definire l’attributo TIPO all’interno della tabella Società.
L’entità Pagamenti ha una chiave primaria composta (DATA, ID_P) quindi ogni Persona,
più precisamente ogni socio, può fare più di un pagamento ma in date diverse.
Nell’entità Pagamenti è stato fatto salire il figlio Iscrizioni che ha come attributo il TIPO di
pagamento fatto. Essendo l’entità Iscrizioni parziale-esclusiva i pagamenti possono essere
di qualsiasi tipo ma di uno solo di essi.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 16
Capitolo 3
Use cases
In questo capitolo si parla della progettazione e dell’implementazione della base di dati .
Vengono riportate figure con relative descrizioni riferite alla parte grafica vista e usata dall’utente.
Inoltre vengono aggiunti i spezzoni di codici usati per selezionare inserire aggiornare la base di dati.
E’ stato preso in esame l’avvio del programma, l’inserimento di un nuovo socio, la gestione dei
pagamenti e la parte relativa alla stampa delle etichette. Ogni spezzone di codice è descritto
attraverso l’uso di diagrammai UML.
Per approfondimenti in merito all forme, frecce usate nei diagrammi UML si consiglia di
leggere l’appendice B e il testo [2] e [3].
Per quanto riguarda il codice relativo si legga il testo [1] [4] [5] [6] [7] [8].
3.1 Avvio programma
L’utilizzatore quando avvia il programma si trova davanti ad una finestra di autenticazione
con UserName e Password, l’username è fisso con il valore “admin” la password viene
impostata in progettazione.
Una volta digitata la password corrispondente il programma fa un controllo all’interno del
sistema per confrontare se il percorso del database definito in progettazione corrisponde
effettivamente alla posizione del database su disco.
Se il confronto da esito positivo all’utente viene visualizzata una finestra (figura 3) con le
possibili interrogazioni che può fare ad esso. Vedi figura 2 per i casi d’uso.
Altrimenti viene fuori un'altra finestra che gli permette di ricercare e quindi di selezionare
dal suo file system il database in questione.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 17
3.1.1 Diagramma UML
Base di dati AMICI Piemonte
Autenticazione
<<include>>
UTENTE
<<include>>
Persone
<<include>>
<<extend>>
Visualizza /Ricerca
Società
<<extend>>
<<include>
<<include>>
Stampa
<<include>
<<include>
Inserisci/Modifica
<<include>
Ospedali/Malattie/Cap
Figura 2 Diagramma dei Casi d’Uso – Avvio programma
3.1.2 Codice “Apertura database”
Il codice riportato di seguito è stato scritto in un modulo .bas (modulo per le variabili
globali).
Nel Form_Load del frmINIZIO viene impostato il percorso del database all’avvio del
programma:
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 18
3.1.3 Interfaccia grafica in Visual Basic 6.0
Interfaccia iniziale programma
Figura 3 Interfaccia iniziale – Avvio programma
Ogni pulsante porta ad un form(finestra) specifico.
Ad ogni attivazione di un nuovo form, i form precedenti che hanno permesso l’attivazione
vengono disabilitati. Questo evita che l’utente possa provocare danni nell’apertura e
chiusura di recordset(righe della tabella) in uso in quel momento.
3.2 Inserimento “nuovo socio”
L’utente ha la possibilità di inserire un nuova persona socio, politico, dirigente o dottore
che sia. In questo paragrafo viene descritto solo l’inserimento del socio ma i passaggi
descritti sono identici anche per le altre categorie. Vedi figura 4.
L’utente può controllare se vuole se la persona è già presente (opzionale).
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 19
Successivamente inserisce i dati relativi alla persona e poi quelli specifici per il socio, una
volta fatto questo il programma di preoccuperà di controllare i dati immessi e di salvarli
come nuovo record nelle rispettive tabelle. Questo avviene tramite query di inserimento.
Da notare che se l’utente inserisce dati relativi ad un socio già esistente, il programma non
dà nessun errore, semplicemente ignora i dati immessi e tiene quelli già presenti. Per
questo la ricerca del socio se è già esistente è opzionale.
3.2.1 Diagramma UML
Inserimento SOCIO
UTENTE
Inserisci
Persona
<<include>>
<<extend>>
Verificare se già
presente
Aggiungi
dati SOCIO
Verificare dati inseriti
Figura 4 Diagramma dei Casi d’Uso – Inserimento Socio
3.2.2 Query SQL utilizzando linguaggio ADO
Inizializza controlli Cap, Malattia, Ospedale
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 20
Inserimento tupla nella tabella ‘Persone’
Questa parte di codice crea una nuova tupla nella tabella Persone con gli attributi uguali
ai valori immessi nelle rispettive TextBox.
Inserimento tupla nella tabella ‘Soci’
Il codice riportato di seguito controlla se è stato messo lo “svirgolo” nella CheckBox del
SOCIO, se sì allora abilita le rispettive TextBox e quindi permette all’utente di inserire i
valori. Vedi figura 5.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 21
Inoltre esegue due selezioni per “ID” una sulla tabella Malattie, l’altra sulla tabella
Ospedali; questo serve per trovare gli ID corrispondenti ai nomi selezionati dai due menù a
tendina.
Dopodiché ottenuti i valori delle TextBox e gli ID delle tabelle Malattie e Ospedali, i dati
del socio vengono aggiunti nella tabella Soci.
E’ necessario eseguire un ulteriore inserimento nella tabella Tipo_Pers in quanto, come
precedentemente descritto, una persona può appartenere a più categorie; quindi, nella
tabella Tipo_Pers verrà inserito l’ID_P della nuova persona e al “Tipo” verrà assegnato il
valore “ ‘SOCIO’ “.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 22
Per quanto riguarda l’Inserimento nelle categorie Dottore, Politico e Dirigente il codice è
simile a quello visto per Socio (vedi sopra).
Prima dell’effettivo inserimento VB6 effettua un controllo sui vari campi: se un campo
obbligatorio non è stato inserito allora visualizza un messaggio di errore del tipo “Inserire i
dati dove c’è l’asterisco (*)”.
3.2.3 Interfaccia grafica in Visual Basic 6.0
Interfaccia per l’inserimento
Figura 5 Interfaccia per l’inserimento del socio
Per PERSONE si intende Soci, Politici, Dottori e Dirigenti.
Essendo che queste
quattro categorie hanno alcune caratteristiche comuni è stato
preferito creare un unico form per l’inserimento e per la modifica comune, questo porta ad
una diminuzione del codice e dello spazio del programma con un aumento della
complessità per la gestione degli attributi che differiscono tra le quattro categorie.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 23
3.3 Gestione “pagamenti soci”
L’utente può visualizzare oltre che i dati anagrafici anche i pagamenti riferiti a quel socio.
Inoltre può effettuare un filtraggio generale su tutti i pagamenti di tutti i soci presenti
all’interno della base di dati e stampare le informazioni ottenute. Vedi figura 6.
3.3.1 Diagramma UML
Pagamenti SOCIO
Visualizzare
SOCI
Selezionare
SOCIO
UTENTE
<<extend>>
<<extend>>
Filtraggio pagamenti
Visualizza pagamenti
associati
<<include>>
<<include>>
Stampa
Figura 6 Diagramma dei casi d’Uso – Pagamenti soci
3.3.2 Query SQL utilizzando linguaggio ADO
Seleziona informazioni sui PAGAMENTI di un determinato SOCIO
Questa parte di codice seleziona tutti gli attributi della tabella Pagamenti relativi ad un
determinato socio:
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 24
Per visualizzare i pagamenti bisogna fare click sul pulsante PAGAMENTI SOCIO.
Utilizzando il codice riportato di seguito si ottiene la sommatoria dell’attributo “Quota_€”
della tabella Pagamenti per quel determinato socio:
Seleziona informazioni sui PAGAMENTI di un determinato SOCIO per FILTRAGGIO
Come richiesto dall’associazione AMICI Piemonte, è stato implementato il codice relativo
ad un filtraggio più selettivo.
L’associazione ha richiesto di poter filtrare i pagamenti per dati anagrafici dei soci e per
intervalli di tempo ben definiti in modo da capire anche quali soci non hanno pagato.
Vedi figura 7 e 8.
Filtro normale: questo filtro visualizza alcuni attributi della tabella Persone e tutti gli attributi
della tabella Pagamenti a seconda dei parametri immessi nelle TextBox di quel filtro.
Codice:
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 25
Filtro per periodo: questo filtro visualizza alcuni attributi della tabella Persone e tutti gli
attributi della tabella Pagamenti a seconda delle due date immesse:
Filtro per soci non paganti: questo filtro visualizza alcuni attributi della tabella Persone
e tutti gli attributi della tabella Pagamenti a seconda dell’anno in cui viene fatta la
ricerca:
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 26
3.3.3 Interfaccia grafica in Visual Basic 6.0
Form per “Visualizzare i PAGAMENTI del SOCIO”
Figura 7 Interfaccia grafica – Pagamenti socio
Form per “Filtrare i PAGAMENTI dei SOCI”
Figura 8 Interfaccia grafica – Filtra pagamenti soci
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 27
3.4 Stampa etichette
All'interno di Visual Basic 6 è presente uno strumento che permette la creazione di report
(denominato per l'appunto Data Report Designer) il quale consente di produrre tabulati.
L’utente ha la possibilità di stampare per ogni categoria di persone le etichette.
Le etichette sono utili nel caso in cui dovesse spedire delle lettere. In questo caso si può
eseguire un filtraggio e poi si avvia la stampa delle sole persone filtrate.
Si veda la figura 9 per i casi d’uso.
3.4.1 Diagramma UML
Stampa Etichette
<<extend>>
UTENTE
Visualizzare
SOCI
Stampa Etichette
<<extend>>
<<include>>
Filtraggio
Figura 9 Diagramma dei Casi d’Uso – Stampa etichette soci
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 28
3.4.2 Query SQL utilizzando linguaggio ADO
Report ‘Etichette Soci’
Di seguito è riportato il codice che viene eseguito da Visual Basic 6 quando viene
chiamata la “Stampa di etichette”:
Questi parametri vengono inseriti in ordine all’interno della query del report in questione.
Vedi figura 10.
La finestra di proprietà del report:
Figura 10 Proprietà per la stampa etichette soci
SELECT Nome, Cognome, Qual, Ind, Societa.Cap, Citta, Tipo, Provincia, Nome_Soc
FROM Persone, Dirigenti, Societa, Cap
WHERE Persone.ID_P=Dirigenti.ID_DIR and Dirigenti.ID_SOC=Societa.ID_SOC and Societa.Cap=Cap.Cap and TIPO LIKE ? and
Nome LIKE ? and Cognome LIKE ? and Societa.Cap LIKE ? and Citta LIKE ? and Provincia LIKE ? and Nome_SOC LIKE ?
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 29
3.4.3 Progettazione report di stampa con Visual Basic 6
Questo report è stato creato per la stampa di etichette dei soci filtrati.
Figura 11 Report di progettazione Etichette
3.4.4 Alcune anteprime di stampa
Etichette Soci
Figura 12 Esempio di stampa etichette
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 30
Elenco Soci
Figura 13 Esmpio di stampa elenco soci
Pagamenti Socio
Figura 14 Esmpio di stampa pagamenti soci
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 31
Capitolo 4
Migrazione
Per quanto concerne il riempimento, le tabelle della precedente base di dati sono state
esportate da Access a Excel, sono state fatte le modifiche necessarie per adattare i dati a
questo sistema e poi nuovamente importate in Access.
Si specifica che questo metodo non è il più adatto per effettuare un riempimento ma è il
metodo più veloce per un database con così poche tabelle.
Perché è stato utilizzato questo metodo?
Nel precedente database era presente una tabella per ogni categoria di persone:
Ang_Soci (ID, Cognome, Nome,…)
Ang_Dottori (ID, Cognome, Nome,…)
Ang_Politici (ID, Cognome, Nome,…)
E ogni tabella aveva gli stessi attributi. (quindi attributi duplicati, tra cui l’ID=chiave
primaria)
Invece il nuovo database contiene:
Persone (ID_P, Cognome, Nome,…)
Soci (collegamento a ID_P, Data_Nasc, …)
Politici (collegamento a ID_P, Ind,…)
Dottori (collegamento a ID_P, Partito,….)
Dirigenti (collegamento a ID_P, collegamento a ID_SOC)
Da quanto illustrato precedentemente nel nuovo database viene creato solo un attributo
ID(ID_P), gli altri sono collegamenti ad esso; nel vecchio database gli ID erano
indipendenti(duplicati).
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 32
Gli ID e ID_P sono le chiavi primarie delle tabelle.
Problema: Come fare a copiare gli attributi ID, Cognome, Nome, Qualifica, Sesso, Note
dei record delle tabelle Ang_Soci, Ang_Dottori, Ang_Politici nella tabella Persone del
nuovo database?
Questo è un notevole problema perché essendo gli ID di queste tabelle indipendenti tra di
loro
sarà presente un record con ID=1 sia nella tabella Ang_Soci, sia nella tabella
Ang_Dottori e sia nella tabella Ang_Politici.
Quindi se si eseguisse una serie di query di questo genere:
INSERT INTO Persone(ID_P, Nome, Cognome, Qual, Sesso, Appunti)
(SELECT ID, Nome, Cognome, Qualifica, Sesso, Note FROM Ang_Soci)
INSERT INTO Persone(ID_P, Nome, Cognome, Qual, Sesso, Appunti)
(SELECT ID, Nome, Cognome, Qualifica, Sesso, Note FROM Ang_Dottori)
INSERT INTO Persone(ID_P, Nome, Cognome, Qual, Sesso, Appunti)
(SELECT ID, Nome, Cognome, Qualifica, Sesso, Note FROM Ang_Politici)
La prima query va a buon fine le altre due NO! Perché?
Perchè si cerca di duplicare i valori della chiave primaria ID_P con l’inserimento di
ID già esistenti.
Soluzione:
1. esportare le tre tabelle Ang_Soci, Ang_Dottori e Ang_Politici su Excel;
2. cambiare tutti gli ID, con le funzioni di incremento di Excel, in modo tale che siano
tutti diversi;
3. importare nuovamente le tabelle in Access;
4. eseguire le query definite sopra.
In questo modo non verranno generati errori e i dati selezionati verranno effettivamente
inseriti.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 33
Un procedimento simile è stato utilizzato anche per altre tabelle del vecchio database
come Ang_Asl, Ang_Associazioni, Ang_CaseFarma, Caratt_Dottori.
Tali tabelle sono state tutte esportate in Excel, modificate e importate in Access.
Dopodiché sono state create ed eseguite le query appropriate per il riempimento delle
nuove tabelle.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 34
A
Sintassi SQL
A.1 Selezione record
SELECT [DISTINCT] ElencoAttributiDaVisualizzare
FROM ElencoTabelleDaUtilizzare
[WHERE CondizioniTupla]
[GROUP BY ElencoAttributiDiRaggruppamento]
[HAVING CondizioniSuAggregati]
[ORDER BY ElencoAttributiDiOrdinamento];
A.2 Inserimento record
Inserimento di una tupla
INSERT INTO NomeTabella [(ElencoColonne]
VALUES (ElencoCostanti);
Inserimento di più tuple
INSERT INTO NomeTabella [(ElencoColonne]
(Interrogazione);
Sono inserite in NomeTabella tutte le tuple selezionate dall’Interrogazione.
Esempio di Interrogazione:
(SELECT ElencoColonne FROM Tabelle WHERE Condizioni);
A.3 Aggiornamento record
UPDATE NomeTabella
SET colonna = espressione
{, colonna = espressione}
[WHERE condizione];
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 35
B
Linguaggio UML
Ci sono modi diversi di guardare un sistema. Uno è quello di "aprirlo" e guardarci dentro,
per vedere come è strutturato all'interno. E' il punto di vista del progettista, interessato agli
aspetti architetturali, ad un livello di maggiore o minore dettaglio.
Un altro punto di vista, opposto, è quello di guardare a come può essere utilizzato. In
questo caso il sistema viene visto come una "black box", sigillata, ed è possibile
osservarne solo i comportamenti dall'esterno. E' il punto di vista dell'utilizzatore, e di tutto
ciò che interagisce con il sistema nell'ambito del suo funzionamento.
Questo secondo punto di vista corrisponde al modello dei casi d'uso. I casi d'uso (il
termine "use case" è stato coniato dal metodologo svedese Ivar Jacobson) sono
semplicemente i modi in cui il sistema può essere utilizzato.
I casi d'uso svolgono un duplice ruolo nello sviluppo di un sistema.
Da un lato, particolarmente nelle fasi iniziali della progettazione, servono per chiarire cosa
dovrà fare il sistema.
Sull'altro fronte, i casi d'uso guidano l'intero progetto di sviluppo. Costituiscono il punto di
partenza per la progettazione del sistema
Il modello dei casi d'uso rappresenta le funzionalità che il sistema offre ai suoi utilizzatori.
I diagrammi forniscono una "mappa visuale", estremamente sintetica, degli utilizzi del
sistema.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 36
B.1 Elementi del modello
Casi d’uso
Sono le funzionalità che il sistema mette a disposizione dei suoi utilizzatori.
Descrivono come verrà concretamente utilizzato.
Attori
Sono i soggetti, esterni al sistema, che interagiscono con il sistema.
Gli attori interagiscono con il sistema tramite messaggi (richieste, comunicazioni, risposte).
Sistema di riferimento
E' l'entità i cui utilizzi vengono descritti dall'insieme dei casi d'uso. Più precisamente, un
insieme completo di casi d'uso descrive in modo completo gli utilizzi del sistema, ossia dal
punto di vista”esterno” degli attori che interagiscono con esso, senza rivelare la struttura
interna del sistema.
B.2 Relazioni
Partecipazione
Ogni caso d’uso è collegato agli attori, uno o più, che partecipano al caso d’uso stesso
mediante una associazione che ha il significato di partecipazione.
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 37
Include
Casi d’uso diversi possono avere in comune una sequenza di passi da svolgere. In questo
caso è possibile enucleare la sequenza comune, e definirla come un caso d’uso a se
stante, da “includere” nei casi d’uso originari.
<<include>>
Extend
L'associazione "extend" permette di definire che un caso d'uso ("base") può venire
"esteso" con il comportamento definito in un altro caso d'uso, (“di estensione”).
L'estensione riguarda un comportamento opzionale del caso d'uso base, ed è soggetta ad
una condizione di attivazione.
<<extend>>
Generalizzazione/Specializzazione
Asssocia un caso d’uso di tipo generale ad uno o più casi d’uso specializzati
Generale
Pasturenzi Francesco – Base di dati AMICI Piemonte
Specializzato
Pagina 38
Referenze
[1] https://dbdmg.polito.it/twiki/bin/view/Public/BD1_INF
[2] http://it.wikipedia.org/wiki/UML
[3] http://www.analisi-disegno.com/usecases/LineeGuidaUML-CasiUsoV2.pdf
[4] Basi di dati: modelli e linguaggi di interrogazione – McGraw Hill 2002 di Atzeni, Ceri,
Torione, Paraboschi
[5] Microsoft Visual Basic 6 – Mondatori Informatica di Francesco Balena
[6] Microsoft ADO.NET 2.0 Passo per Passo – Mondatori Informatica di Rebecca Riordan
[7]ADO.NET Guida per lo sviluppatore – HOEPLY- pubblicazione 07/2003
[8] SQL i portatili – Mondatori Informatica di Micheal J. Hernandez, John L. Viescas
Pasturenzi Francesco – Base di dati AMICI Piemonte
Pagina 39