Data Base Relazionale Access.

By Fausto Marinsalta

 

 

3.1 Banche dati e query languages.

 

 

Le banche dati gerarchiche o relazionali ed i linguaggi di tipo procedurale sono gli strumenti per la realizzazione dei Sistemi Informativi a livello operativo, caratterizzati da grandi volumi di dati e da operazioni ripetitive.

 

Per i livelli direzionale e strategico sono necessari strumenti più flessibili, in grado di ricavare dalle banche dati le informazioni in risposta a problemi estemporanei, in breve tempo e senza il supporto di personale con elevate competenze informatiche.

 

Per la registrazione dei dati la struttura del data base relazionale, grazie alla sua flessibilità di accesso, costituisce la base indispensabile. Tale banca dati può essere generata in modo specifico per rispondere ad esigenze del singolo utente o di un gruppo di utenti (banca dati settoriale), o può essere ricavata dalle banche dati operative (banche dati aziendali), con processi che consentono di estrarre esclusivamente i dati interessanti per i processi elaborativi previsti. In ogni caso, alla base della costituzione di questi data base è necessario un processo di progettazione, in grado di definire i dati necessari e la loro struttura nell'ambito della banca dati.

 

Per quanto riguarda i processi elaborativi, sono necessari linguaggi particolari, orientati all'estrazione dei dati, ad elaborazioni semplici ed alla presentazione dei risultati in formato di report o di grafici. Tali linguaggi (query languages) devono essere di facile apprendimento, in quanto ne è previsto l'utilizzo diretto da parte degli utenti finali, ai quali non vengono richieste competenze informatiche particolari.

 

Per questi livelli del Sistema Informativo, sono perciò a carico dell'utente finale sia la progettazione e realizzazione delle banche dati, sia l'automazione dei processi di estrazione e presentazione delle informazioni.

 

 

 

3.2 La progettazione.

 

 

Il processo di progettazione è alla base della realizzazione di un data base efficiente, in termini di velocità di risposta, ed efficace, ossia in grado di fornire le informazioni richieste.

 

Le fasi di progettazione di un data base relazionale possono essere così sintetizzate:

 

§         Definizione degli obiettivi del data base, in base ai quali vengono individuati i dati che devono essere memorizzati nel data base.

§         Definizione delle tabelle, ossia suddivisione dei dati per "argomenti", che costituiranno le tabelle del data base.

§         Definizione dei campi, ossia dei singoli dati da inserire nelle tabelle e delle relative caratteristiche (tipologia, dimensioni, metodo di rappresentazione, …).

§         Definizione delle relazioni, ossia dei legami tra le tabelle, legami che consentono la costruzione di record logici mediante record fisici diversi.

§         Verifica della struttura ed eventuali correzioni.

 

La progettazione ha come obiettivo la definizione dell'architettura generale del data base, che dovrà rimanere inalterata nel tempo. Nuovi dati potranno essere aggiunti anche successivamente, ampliando la struttura delle tabelle o aggiungendo nuove tabelle. Perché questo non comporti una revisione di quanto già realizzato, è indispensabile che rimanga invariata l'architettura generale.

 

 

 

3.3 Strumenti di supporto.

 

 

Nel caso di software di gestione del data base orientato verso la realizzazione di banche dati settoriali, e quindi destinato direttamente agli utenti finali, è necessario che siano resi disponibili strumenti di facile utilizzo, per realizzare tutte le fasi di definizione della struttura, dell'inserimento dei dati, dell'estrazione di informazioni e della presentazione dei risultati.

 

In figura è riportata la mappa delle macrofunzioni disponibili in Access, il data base relazionale più diffuso per l'informatica individuale.


 

 

 


 

 Risultano disponibili le seguenti funzioni:

 

§         Tabelle: per la generazione della struttura, la registrazione dei dati, la loro visualizzazione e correzione.

§         Query: per l'estrazione ed eventuale modifica di informazioni con interrogazioni di tipo condizionato.

§         Maschere: per la realizzazione di intefacce a tutto schermo, per la visualizzazione o l'introduzione di dati.

§         Report: per la produzione di tabulati a stampa.

§         Macro: per l'automazione di operazioni ripetitive, che prevedono l'utilizzo in sequenza di più funzioni base.

§         Moduli: per la realizzazione di funzioni nel linguaggio Access Basic.

 

 

 

3.4 Realizzazione di una tabella.

 

 


Per la creazione di una nuova tabella è necessario innanzitutto definirne la struttura, ossia definire i campi che la compongono ed i loro attributi.

 

 

 

 

 


Per ogni dato occorre definire il nome del campo, il tipo dei dati, ed una serie di caratteristiche, in parte comuni ed in parte collegate al tipo dei dati.

 


 

 


Nell'esempio in figura viene inserito il campo Cognome, di tipo testo, con dimensione di 50 caratteri. I tipi dati disponibili sono visibili mediante una tendina che si può aprire nella cella testo, come evidenziato nella figura che segue.

 

Sono caratteristica del tipo del dato attributi quali:

§         La dimensione, che permette di definire l'ampiezza del campo.

§         Il formato, che permette di visualizzare nel modo desiderato valori numerici, date, valute, …

§         La presenza di cifre decimali, per i campi numerici.

 

Altri attributi sono validi per tutti i tipi:

§         La "maschera di input" permette di visualizzare dei caratteri di definizione del formato di un campo, per garantire che i dati immessi rispettino tale formato.

§         L' "etichetta" permette di assegnare un nome diverso al campo nelle maschere di input ed output.

§         Il "valore predefinito" fa sì che venga inserito automaticamente tale valore in tutti i nuovi record, per cui è necessario immettere il valore corretto solo nel caso sia diverso dal valore predefinito.

§         "Valido se …" consente di immettere degli intervalli di validità per i dati immessi.

§         "Messaggio di errore" è l'avvertimento che compare nel caso non sia rispettato l'intervallo di validità.

§         "Consenti lunghezza zero" permette di avere stringhe senza caratteri nel caso di campi di tipo testo o memo.

 

L'ultimo attributo riguarda l'eventuale associazione del dato ad un indice, che ne permette la ricerca random. Per i campi non associati ad indice è possibile solo la ricerca di tipo sequenziale, che allunga i tempi di risposta del sistema. L'associazione ad indice complica la struttura del data base, per cui è necessario valutare campo per campo quali associare ad indice e quali invece no.

 

Oltre all'associazione ad indice, viene definito se il campo può avere valori ripetuti o no. Questo è fondamentale per l'utilizzo del campo come chiave primaria di ricerca, ossia come dato in grado di identificare in modo univoco il record.

 

Perché un campo possa essere utilizzato come chiave di ricerca primaria è necessario che sia associato ad indice e che non siano ammessi duplicati.

 


 

 


Nella tabella che segue si ha un esempio di campo numerico.

 

Viene, inoltre, impostato come chiave di ricerca primaria il cognome; questo è possibile in quanto si ipotizza che non possano esserci, nella tabella, cognomi uguali.

 

 

 


 

 


Nel caso non sia possibile utilizzare un solo campo come chiave di ricerca primaria, in quanto non è garantita la condizione di non duplicazione, la chiave di ricerca primaria può essere costituita da più campi associati. E' garantita in questo caso la non duplicazione della coppia di dati.

 

Nell'esempio che segue, la chiave di ricerca primaria è data dalla coppia di dati Cognome e Nome.

 

Nel caso ciò non sia possibile, o perché non è esclusa la replicabilità della coppia (o anche di associazioni di ulteriori altri campi) o perché si preferisce avere una chiave di ricerca più sintetica, e quindi data da un solo campo, è possibile creare ad hoc un codice identificativo; nell'esempio questo è dato da un codice personale, dato aggiunto appositamente per creare un riferimento univoco al record.

 

 

 

 

 

 

 

 

 

 

 

 


 

 


La struttura della tabella viene completata, con la descrizione di tutti i campi e dei relativi attributi.

 

Si noti come nell'esempio un campo composte esclusivamente di cifre, quale il numero telefonico, venga definito come testo. Questo è possibile in quanto non si prevede di utilizzare tale dato in elaborazioni matematiche, ed è opportuno in quanto si evita di avere delle trasformazioni non richieste del dato originale, quali ad esempio la soppressione degli zeri non significativi. Inoltre le possibilità di ricerca associate ad un campo di tipo testo sono più articolate di quelle possibili con un campo di tipo numerico.

 

 


 

 

 

 


Una volta completata la struttura, questa può essere inserita in modo definitivo nel data base, e la tabella potrà essere richiamata per l'inserimento dei dati e per i successivi aggiornamenti. In questa fase viene assegnato il nome della tabella: Dipendenti, nel caso utilizzato come esempio.

 

 

 

 

 

 

 


 

 


3.5 Registrazione della tabella.

 

 

Al momento dell'apertura, la tabella si presenta come un modulo, nel quale nelle colonne sono indicati i campi, ed ogni riga costituisce un record. Al completamento della registrazione della singola riga, il relativo record viene memorizzato in modo definitivo nel data base.


 


Nel caso di tabelle di grandi dimensioni, lo schermo visualizza una parte della tabella. E' comunque sempre possibile scorrere la tabella usando i cursori per spostare la finestra, per visionare ulteriori campi, ed usando i comandi ai piedi della finestra per visionare altri record.

 

Si noti come, nei campi costituiti esclusivamente da cifre, sia possibile riconoscere il tipo di dati dall'allineamento: sulla destra per il tipo numerico (esempio anni di servizio), sulla sinistra il tipo testo (esempio reparto).

 

Nella fase di immissione dei dati, vengono attivate automaticamente le verifiche di compatibilità, sia quelle legate al tipo dei dati (esempio numerico, data, …) sia quelle definite dall'utente con l'attributo "valido se ..".

 

 In qualsiasi momento i dati possono essere modificati e si possono aggiungere nuovi record. Ad ogni riapertura della tabella i record vengono riordinati in ordine crescente di chiave di ricerca.

 

 

 


 


In qualsiasi momento si può passare dalla tabella dati alla struttura selezionando la relativa icona, e dalla struttura alla tabella selezionando l'icona foglio dati.

 

 

 

3.6 L'utilizzo della maschera come interfaccia di input/output.

 

 

L'utilizzo di una scheda, o maschera, permette di creare un'interfaccia verso la tabella, dedicando ad esempio l'intera schermata alla rappresentazione di un record. Questo consente di avere un colloquio più orientato all'utente, i dati possono essere meglio visualizzati e possono essere inserite ulteriori scritte di commento.

 

Per generare una maschera è sufficiente selezionare la funzione nel menù principale, richiedere l'autocomposizione, scegliere il tipo di maschera voluto, associare la tabella che deve essere gestita, selezionare i campi che devono essere inseriti nella maschera.

 

Le maschere generate in autocomposizione possono essere modificate, lavorando successivamente sulla loro struttura. 

 

 

 

 

 


 

 

 

 


3.7 Tabelle correlate.

 

 

Regola fondamentale per i data base è che debbono essere evitate ridondanze inutili dei dati. Infatti la ripetizione dello stesso dato rappresenta un costo di gestione, maggiori difficoltà di aggiornamento e possibilità di errore.

 

Inoltre, tabelle con un numero elevato di campi sono di più difficile comprensione e gestione, per cui è sempre preferibile limitare la loro dimensione.

 

Entrambi i problemi si risolvono con l'utilizzo di più tabelle messe in relazione tra di loro.

 

L'aggancio tra due tabelle consente di comporre un record logico, del quale fanno parte campi di record fisici diversi, in quanto appartenenti a tabelle diverse.

 

La relazione si attiva nel momento in cui i due campi delle due tabelle, che vengono correlati, hanno lo stesso contenuto.

 

Nell'esempio che segue una tabella libri è correlata ad una tabella utenti, in una applicazione di gestione prestiti. In figura sono rappresentati i campi ed i dati riferiti a due record correlati. In grassetto sono indicate le due chiavi di ricerca primarie. La relazione correla il campo ID Utente di entrambe le tabelle.

 

 

 

 

 

 

 

 

 

 

 


Quando i due campi hanno lo stesso contenuto, nell'esempio il valore 8492, si crea un record logico che indica che il libro con ID libro 243212 ed i relativi dati è stato preso in visione dall'utente identificato dall' ID Utente 8492:

 

ID Libro:  243212

Autore: Manzoni A.

Titolo:  Promessi Sposi

Anno Edizione:  1997

Casa Editrice: De Agostini

ID Utente:  8492

Cognome:  Rossi

Nome:  Giovanni

Indirizzo:  Via Milano 7

Città:  Brescia

Provincia:  BS

Categoria:  C

 
In definitiva si dispone del seguente record logico:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

La relazione può essere tra un record della tabella libri ed un record della tabella utenti se un utente può prendere in prestito un solo libro, o tra un record della tabella utenti e più record della tabella libri se un utente può prendere in prestito più libri. Nel caso in esame non è invece possibile che un libro sia in prestito a più utenti

 

In termini generali, sono possibili tre diversi tipi di relazione:

 

§         relazione uno a uno, ad un record di una tabella corrisponde, al massimo, un solo record di un’altra tabella;

§         relazione uno a molti, ad un record di una tabella corrispondono più record di un’altra tabella, non è vero il contrario;

§         relazione molti a molti, ad un record della prima tabella corrispondono più record della seconda tabella ed è vero il contrario.

 

La relazione uno a uno non è strettamente indispensabile, perché i dati della seconda tabella potrebbero essere inseriti, senza problemi, nella prima tabella. Questa relazione può risultare, però, utile, quando devo gestire dati particolari per un numero limitato di record (ad esempio le persone che hanno un incarico di lavoro all’estero) o dati che hanno una rilevanza limitata nel tempo (ad esempio dipendenti con un incarico a tempo negli stand di una fiera). In ogni caso permette di limitare il numero di campi inseriti in una singola tabella.

 

La relazione uno a molti, invece, come è già stato illustrato nell'esempio precedente, permette di risolvere i problemi di ridondanza di dati.

 

Sarebbe invece necessaria una relazione molti a molti nel caso una stessa circolare potesse essere in visione presso più utenti ed uno stesso utente potesse avere in visione più circolari.

 

La relazione molti a molti non è gestibile direttamente, ma occorre scinderla in due relazioni uno a molti, utilizzando una tabella intermedia, nel caso in esempio la tabella visure.

 

 

 

 

 

 

 

 

 

 

 

 

 


Le relazioni generate sono del tipo 1 a molti sia tra la tabella circolari e la tabella visure, che tra la tabella utenti e la tabella visure. Infatti nella tabelle visure i dati codice circolare e codice utente possono essere ripetuti: la chiave di ricerca primaria è data dall’accoppiamento dei due dati. Nella tabella visure possono essere inseriti altri dati quali data della assegnazione, data di prevista risposta, ecc.

 

Le relazioni, che legano tra di loro i dati, devono essere definite dall’utente in fase di creazione del data base. Il numero di relazioni influenza in modo esponenziale la complessità della struttura e di conseguenza i tempi di elaborazione. Ne consegue l’importanza della progettazione della struttura del data base relazionale per garantire adeguate prestazioni del sistema informatico.

 

 

 

3.8 Generazione delle relazioni.

 

 

La relazione tra due tabelle viene generata selezionando la relativa funzione nel menù ed indicando le tabelle su cui operare. La relazione viene generata automaticamente se i due campi da collegare con la relazione hanno lo stesso nome. Altrimenti la generazione della relazione viene effettuata trascinando con il cursore il campo della tabella primaria (valore uno della relazione) sul campo della tabella secondaria (valore molti della relazione).

 

Sia la struttura delle tabelle che la relazione vengono rappresentati in forma grafica.

 

Nell'esempio alla tabella dipendenti vista in precedenza viene aggiunta una tabella reparti, che ha la struttura indicata in figura, e viene creata la relazione tra il campo ID Reparto della Tabella Reparti ed il campo Reparto della Tabella Dipendenti.


 


Perché la relazione possa operare occorre che i dati del campo Reparto della Tabella Dipendenti trovino corrispondenza nel campo ID Reparto della Tabella Reparti.

 

 

 

3. 9 Estrazione dei dati.

 

 

La funzione di apertura della tabella permette di visualizzare tutti i dati registrati. Nel caso di tabelle di piccole dimensioni, lo schermo video consente la vista dell'intero archivio. Quando però l'archivio aumenta di dimensioni è opportuno poter estrarre soltanto i dati che interessano.

 

Questo è possibile mediante la funzione query, che permette di selezionare sia i campi che si vogliono, sia i record che soddisfano determinate condizioni.

 

La funzione di selezione permette inoltre di visualizzare contemporaneamente dati provenienti da tabelle diverse correlate.

 

Il risultato di una query è una tabella, nella quale sono disponibili solo i dati selezionati. Anche in questo caso è possibile sovrapporre a tale tabella, e quindi alla query, una maschera che consente di dedicare lo schermo video ad un solo record, per il quale i dati sono completati da didascalie ed eventuali commenti.

 

Le tabelle generate mediante le query di estrazione dei dati sono di tipo dinamico (dynaset). In realtà non vengono generate delle nuove tabelle ma semplicemente vengono creati dei puntatori ai dati presenti nel data base. I dati vengono trattati quindi in modo dinamico: alla modifica di un dato, vengono modificate tutte le occorrenze di tale dato.

 

Quindi i dati presenti nelle tabelle generate da una query sono modificabili, e le modifiche effettuate vengono riportate direttamente sul data base.

 

Per generale le query si utilizza il linguaggio SQL (Structured Query Language), diventato ormai uno standard per i linguaggi di interrogazione. Tale linguaggio è costituito da facili comandi, comprensibili anche per un utente con limitate competenze informatiche. Invece di usare direttamente il linguaggio SQL, si può utilizzare una sua interfaccia grafica che semplifica ulteriormente la creazione del comando di query. Tale interfaccia, di tipo visuale, utilizza la tecnica Query By Example (QBE); la query viene realizzata compilando una tabella nella quale vengono selezionati i campi da visualizzare, i criteri di estrazione, ed eventuali ulteriori operazioni.

 

In generale, le fasi di realizzazione di una query prevedono:

 

§         La selezione della funzione.

§         La scelta di operare mediante la definizione della struttura della query.

§         La selezione delle tabelle su cui operare.

§         La selezione dei campi su cui operare e dei campi da inserire nella tabella.

§         La definizione dei criteri di estrazione dei record.

§         L'esecuzione della query.

 

Nelle figure successive vengono riportate alcune delle schermate del processo sino alla presentazione del modulo di struttura della query.

 


                       

La definizione della query viene effettuata compilando la griglia della struttura.

 

I campi vengono selezionati trasferendoli dalle relative tabelle, mediante trascinamento con il mouse. Vengono estratti i campi che si desidera visualizzare nella tabella generata dalla query, selezionati mediante il comando "mostra", ed i campi che vengono utilizzati per imporre i criteri di estrazione dei record.

 

Per imporre i criteri di estrazione vengono utilizzate le righe "criteri" ed "oppure". Le celle diverse di tali righe sono legate da operatori AND,  se i vincoli sono riportati sulla stessa riga, e di OR se si trovano su righe diverse.

 

Nell'esempio che segue si cercano i dipendenti del reparto con codice "2412" con più di 3 anni di servizio (criterio AND).

 

 


 

 


La tabella generata è quella riportata nella figura che segue.

 

Nella figura successiva vengono invece selezionati tutti i dipendenti dei reparti con codici "2412" e "2417". In questo caso viene attivata la relazione OR, in quanto si selezionando i dipendenti di uno o dell'altro reparto.

 

 

 


 


Dalla struttura della query alla sua esecuzione si può passare utilizzando l'icona con il punto esclamativo o l'icona con il foglio dati, presenti nella barra degli strumenti. Viceversa per passare dalla tabella generata alla struttura della query si utilizza il tasto struttura.

 

La query, realizzata definendone la struttura, viene quindi tradotta nel corrispondente comando SQL, che può essere visto scegliendo la relativa modalità nel menù visualizza.

 


 

 


L'esecuzione della query avviene per interpretazione del comando SQL.

 

 

 

3.10 Utilizzo dei criteri nelle query di estrazione.

 

 

L'utilizzo dei criteri è fondamentale per estrarre dal data base solo i record voluti. L'interfaccia QBE permette di operare in vari modi. Nella tabella che segue sono indicate alcune modalità, le espressioni impostate nella riga criteri, e il contenuto dei campi selezionati, in funzione del tipo del campo. Per l'introduzione di dati, le stringhe di caratteri (campo formato testo), vengono racchiuse tra virgolette, mentre i dati numerici sono rappresentati nella forma usuale. Introducendo però stringhe di caratteri senza virgolette, nei criteri di campi definiti come testo, il sistema effettua automaticamente la conversione al formato corretto.

 

Tipo Criterio

Criterio

Tipo Campo

Contenuto Campo

Identità

ROSSI

"ROSSI"

324

"324"

324

#2/2/99#

Testo

Testo

Testo

Testo

Numerico

Data

Stringa di caratteri ROSSI

Stringa di caratteri ROSSI

Stringa di caratteri 324

Stringa di caratteri 324

Valore numerico 324

Data 2/2/99

Intervallo

>234,5

>=234,5

>"ROSSI"

>#1/1/99#

between 3 and 18

between #1/1/99# and #1/9/99#

Numerico

Numerico

Testo

Data

Numerico

Data

Valore numerico maggiore di 234,5

Valore maggiore o uguale a 234,5

Dopo ROSSI in ordine alfabetico

Dopo il giorno 1/1/99

Tra i valori 3 e 18

Tra i giorni 1/1/99 e 1/9/99

Uso carattere

Jolly:

?    singolo

·        stringa

 

ROSS?

ROSS*

*/*/99

*MO

?ALE

?AL?

Testo

Testo

Data

Testo

Testo

Testo

Stringa ROSS più un carattere

Stringa qualsiasi che inizia con ROSS

Data qualsiasi del 99

Stringa qualsiasi che termina con MO

Carattere più stringa ALE

Carattere più AL più carattere

       

 

Utilizzo degli operatori AND e OR..

 

Le condizioni di associazione di più criteri, relativi allo stesso dato, possono essere indicate nella stessa cella con l'utilizzo degli operatori AND e OR.

 

Ad esempio, volendo selezionare da una tabella utenti tutti quelli delle provincie di Pavia e Brescia, nei criteri associati al campo Provincia verrà indicato:

 

                                       Pavia or Brescia

 

Si noti come sia corretto l'uso dell'operatore OR, in quanto la selezione avviene se la provincia è Pavia o Brescia. L'operatore AND infatti non permette di individuare nessun record, in quanto un utente non può essere contemporaneamente della provincia di Pavia e della provincia di Brescia.

 

Nel caso si voglia selezionare, ad esempio, una data di consegna compresa tra il giorno 10 dicembre 1999 ed il giorno 4 gennaio 2000, il criterio può essere formulato con l'operatore between, come visto nella tavola precedente,  o utilizzando gli operatori >, <,=,AND:

 

>= #10/12/99# and <= #4/1/00#

 

Gli operatori AND e OR possono essere ripetuti:

 

                               Milano or Pavia or Brescia

 

Quando, però, la lista comprende più valori di estrazione è preferibile utilizzare l'operatore IN:

 

                               IN (Milano; Pavia; Brescia)

 

 

 

Gli operatori NULL e NOT NULL.

 

Tale operatore consente di inserire come criterio la condizione che il campo abbia o no un valore. Se, ad esempio, nella gestione dei prestiti di una biblioteca voglio individuare i libri al momento in circolazione, posso selezionare i record nei quali la data prestito risponde al seguente criterio:

 

                                               Is not Null

 

L'operatore date().

 

Tale operatore dà la data del giorno di elaborazione della query, prelevandola dal sistema. Se pertanto desidero avere una query che seleziona i libri con data prestito scaduta da più di 60 giorni al momento dell'elaborazione, il criterio associato a tale campo risulta:

 

                                               < date() - 60

 

Analogamente, se si vogliono i libri prestati negli ultimi 90 giorni, si userà il seguente criterio:

 

                                       Between date() and date() - 90

 

 

Ordinamento

 

E' possibile ordinare i dati in un dynaset, scegliendo il tipo di ordinamento (crescente o decrescente) mediante il corrispondente tasto funzionale nella barra degli strumenti. Se si scelgono ordinamenti su più campi, i dati vengono ordinati seguendo la sequenza di come i campi sono presenti nella query, da sinistra a destra.

 

 

 

3.11 Query con campi calcolati.

 

 

Uno dei principi della banca dati è che non devono essere inseriti nel data base dati che possono essere ottenuti come elaborazione dei dati presenti. I dati calcolati possono essere ottenuti inserendo gli opportuni algoritmi nelle query di selezione.

 

Ad esempio in una tabella che include i campi Prezzo Unitario e Quantità è possibile calcolare il campo Valore come prodotto dei due campi.

 

Sia il nome del nuovo campo, sia la formula per il calcolo vengono inseriti nella struttura della query, sulla riga campo.

 

Nell'esempio che segue vengono calcolati i valori per tutti i libri presenti in un magazzino. Le due figure mostrano la struttura della query ed il relativo risultato.

 

Nella formula i campi presenti nella tabella vengono indicati tra parentesi quadra. 

 

 

 

 


 

3.12 Utilizzo delle formule nelle query.

 

 

All'interno della query è possibile raggruppare dati ed eseguire operazioni su campi, operando su dati caratterizzati dall'appartenenza a record che hanno lo stesso valore nel campo di raggruppamento.

 

Tali query vengono appunto definite di aggregazione.

 

Le funzioni disponibili sono:

 

§         Somma

§         Media

§         Min (minimo)

§         Max (massimo)

§         Conteggio

§         DevSt (deviazione standard)

§         Var (varianza)

§         Primo

§         Ultimo

 

Nell'esempio che segue, viene creata una tabella che per ogni lezione, indica il docente, il mese, ed il numero di ore. Viene quindi generata una query che per ogni docente (su tale campo viene effettuato il raggruppamento) dà il numero di lezioni impartite (conteggio sul campo codice) ed il totale delle ore (somma sul campo ore).

 

Per impostare la struttura della query viene aggiunta la riga formule, selezionando nel menù visualizza la funzione formula (o totali) o mediante l'icona sommatoria della barra degli strumenti.

 

Il raggruppamento può essere fatto su più gruppi. Nell'esempio successivo vengono forniti gli stessi dati per docente (primo campo su cui viene effettuato il raggruppamento) e per mese (secondo campo di raggruppamento).

 

L'ordine dei raggruppamenti è dato dalla posizione relativa dei campi, a partire dalla sinistra della griglia della struttura della query.

 

Ovviamente è possibile operare sia sull'intera tabella, sia selezionandone i record mediante l'utilizzo dei criteri di selezione.

 

 

 

 

 

 

 

 

 

 

 

 

 


 


 

3.13 Query a campi incrociati.

 

 

Le tabelle generate dalle query che utilizzano più campi di raggruppamento presentano tutti i dati richiesti, ma in una forma poco leggibile. Con le query a campi incrociati è possibile ottenere le stesse informazioni nella forma di tabella di riepilogo (tipo foglio elettronico).

 

Per impostare la query a campi incrociati, occorre selezionare la relativa funzione nel menù query, che viene visualizzato quando è attiva la funzione struttura.

 

La compilazione della griglia della struttura rispetta le regole già viste. In più occorre definire quale campo costituisce l'intestazione della riga, e quale campo l'intestazione della colonna, e quale il valore da inserire nella cella. Nell'esempio inoltre i dati docente e mese sono stati ordinati in ordine crescente.

 

 


 

 


La tabella generata è riportata nella figura che segue.

 

 

 

 

 

 


 

 

 

 


3.14 Query parametriche.

 

 

Nelle query viste sino ad ora, tutte le volte che devono essere variati dei parametri occorre modificare la struttura, il che comporta delle competenze informatiche, anche se limitate.

 

Nel caso le variazioni siano dovute al valore del dato, utilizzato come criterio, e non ai criteri di impostazione della query, possono essere usate query di tipo parametrico, nelle quali vengono impostati i criteri nella definizione della struttura, ma i valori che definiscono il criterio vengono immessi in fase di esecuzione della query.

 

In questo caso al posto del valore viene immessa, nel campo criteri, inserita tra parentesi quadre, una scritta che verrà evidenziata in fase di esecuzione, associata ad una finestra di dialogo.

 

Nell'esempio che segue, da un data base di gestione di prestiti di una biblioteca si vuole sapere quali sono i libri presi in prestito da un utente che verrà specificato, mediante il cognome, al momento della richiesta. Come si può notare nella riga criteri relativa al cognome viene inserito il comando [immettere il cognome], e tale scritta compare associata alla richiesta del valore parametro. In fase di esecuzione vengono richiesti i libri in prestito all'utente con cognome Colombo.

 

 


 


 

 

 

 


3.15 Query di comando.

 

 

La modifica dei dati è possibile operando sia direttamente sulle tabelle dei dati sia sulle tabelle generate dalle query. In questi casi si effettuano modifiche sui singoli dati.

 

Con le query di comando è possibile generare nuove tabelle o portare variazioni sulle tabelle esistenti, operando contemporaneamente su più record.

 

Per tali operazioni sono disponibili quattro tipi di query, selezionabili mediante il menù query, attivo durante la funzione di definizione della struttura della query:

 

§         Creazione tabella

§         Eliminazione

§         Aggiornamento

§         Accodamento

 

Nelle query di comando, acquistano significati diversi le due icone della barra degli strumenti:

§         L'icona con punto esclamativo manda in esecuzione la query

§         L'icona con la tabella mostra i record ed i campi sui quali opererà la query in fase di esecuzione.

 

Creazione Tabella.

 

La struttura è identica a quella delle query di selezione. Viene però generata una nuova tabella permanente. Modifiche apportate ai dati rimangono limitate alla nuova tabella e non vengono riportate nella tabella originale.

 

Tale query può essere utilizzata per creare copie delle tabelle originali, o per fare selezioni su dati da conservare come documento attestante la situazione di tali dati ad una certa data.

 

 

Eliminazione.

 

Viene utilizzata per cancellare record da una tabella. Nell'esempio in figura vengono eliminati dall'archivio tutti i libri della Casa Editrice Garzanti.

 

Nella griglia della query vengono selezionati tutti i campi del record, trascinando il carattere asterisco, posto all'inizio dell'elenco dei campi, nel grafo che rappresenta la tabella.

 

 


 

 


In alcuni casi, l'esecuzione di una query di eliminazione può causare la cancellazione di record in tabelle correlate.

 

 

Accodamento.

 

E' possibile accodare ad una tabella record provenienti da un'altra tabella, appartenente allo stesso o ad altro data base. Le query di accodamento possono essere utilizzate anche se alcuni campi sono presenti in una sola delle tabelle.

 

L'utilizzo della query è guidato da menù di richieste successive.

 

Se le tabelle comprendono un campo contatore, questo viene aggiornato automaticamente.

 

Aggiornamento.

 

E' possibile aggiornare dati relativi a tutti i record, che rispecchiano determinate condizioni.

 

Nell'esempio vengono aumentati del 10% i prezzi di tutti i libri delle Case Editrici Mondadori e Garzanti.

 

 


 

 


Se si vuole verificare la funzionalità della query, prima della sua esecuzione, attraverso il comando selezionato mediante l'icona "foglio dati" della barra degli strumenti, è possibile vedere i campi che verranno aggiornati, con i valori precedenti l'aggiornamento.

 

 

3.16 I report.

 

 

Il report è un prospetto stampato, nel quale le informazioni sono organizzate in una forma strutturata scelta dall'utente. Nei report possono essere presenti dati estratti da tabelle, dati calcolati, scritte, grafici, ecc.

 

I report possono essere progettati e realizzati utilizzando maschere di composizione, o si può ricorrere all'autocomposizione, utilizzando strutture di report predefinite. Sulla struttura dei report generati in autocomposizione si può intervenire per introdurre personalizzazioni.

 

Le forme di report disponibili in autocomposizione sono riportate nella figura. Come si può notare, nella finestra di dialogo è inoltre necessario indicare la tabella o la query da cui il report deve prendere le informazioni.

 

 

 


Una volta selezionato il tipo di report, devono essere indicati i campi da inserire nel report. Completate tali operazioni il report può essere visto in anteprima di stampa o può esserne vista la struttura.

 

 

 

 

 


 


 

 


Come si vede nella struttura vengono inseriti automaticamente:

 

§         Il nome della tabella, preso dal nome della query

§         Le intestazioni delle colonne, prese dai nomi dei campo

§         La data a piè pagina, mediante il comando =Now()

§         La numerazione della pagina, ed il numero di pagine totali del report

 

Una copia del report stampato è riportata alla pagina successiva.