106
3. MODELLO RELAZIONALE 138 © Istituto Italiano Edizioni Atlas QUIZ Answer key on page 512 1. Which of the following statements is the definition of degree of a relation? a. The degree of a relation is the number of attributes it contains. b. The degree of a relation is the number of different values in a candidate key. c. The degree of a relation is the number of alternate keys in the relation. d. The degree of a relation is the number of candidate keys of the relation. 2. Choose the relational schema representing the E/R model in the figure. a. FacultyStudent (FacultyID, FacAttributes, RegistrationDate, StudentID, StudAttributes). b. Faculty (FacultyID, FacAttributes) Student (StudentID, StudAttributes, RegistrationDate). c. Faculty (FacultyID, FacAttributes) Student (StudentID, StudAttributes, FacultyID, RegistrationDate). d. Faculty (FacultyID, FacAttributes, RegistrationDate) Student (StudentID, StudAttributes, FacultyID). e. Faculty (FacultyID, FacAttributes, StudentID, RegistrationDate) Student (StudentID, StudAttributes). 3. Which of these statements, related to the below relational schema, are true (T) and which are false (F)? Customers (CustomerID, Name, Surname, SSN, Address, Town, ZIP) Purchases (ID, Date, Article, UnitPrice, Qty, CustomerID) Note: In the United States, a Social Security Number (SSN) is a nine-digit code identifying US citizens and workers, similarly to Codice Fiscale in Italy a. CustomerID in Customers table is a primary key b. CustomerID in Purchases table is a candidate key c. SSN is a candidate key d. The set of attributes (Name, Surname, SSN) is a candidate key e. SSN is an alternate key f. The set of attributes (Name, Surname) is a candidate key 4. Which of the following statements describes the relational schema of the previous question? a. The schema represents a 1:1 relationship between Customer and Purchase entities. b. The schema represents a N:1 relationship between Customer and Purchase entities. c. The schema represents a 1:N relationship between Customer and Purchase entities. d. The schema represents a N:N relationship between Customer and Purchase entities. 5. Which of the following statements are correct with respect to the concept of normalization? (K is the primary key) a. A table in second normal form is also a 3NF table. b. The table: T (K, A1, A2, A3) is definitely a 2NF table. c. The table: T (K, A1, A2, A3) is definitely a 3NF table. d. The table: T (K, A1) is definitely a 2NF table. e. The table: T (K, A1) is definitely a 3NF table. 1 Has N Faculty FacultyID {PK} FacAttributes Student StudentID {PK} StudAttributes RegistrationDate

QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

3. MODELLO RELAZIONALE138 © Istituto Italiano Edizioni Atlas

QUIZ

Answer key on page 512

1. Which of the following statements is the definition of degree of a relation?a. The degree of a relation is the number of attributes it contains.b. The degree of a relation is the number of different values in a candidate key.c. The degree of a relation is the number of alternate keys in the relation.d. The degree of a relation is the number of candidate keys of the relation.

2. Choose the relational schema representing the E/R model in the figure.

a. FacultyStudent (FacultyID, FacAttributes, RegistrationDate, StudentID, StudAttributes).b. Faculty (FacultyID, FacAttributes) Student (StudentID, StudAttributes, RegistrationDate).c. Faculty (FacultyID, FacAttributes) Student (StudentID, StudAttributes, FacultyID,

RegistrationDate).d. Faculty (FacultyID, FacAttributes, RegistrationDate) Student (StudentID, StudAttributes, FacultyID).e. Faculty (FacultyID, FacAttributes, StudentID, RegistrationDate) Student (StudentID, StudAttributes).

3. Which of these statements, related to the below relational schema, are true (T) and which arefalse (F)?

Customers (CustomerID, Name, Surname, SSN, Address, Town, ZIP)Purchases (ID, Date, Article, UnitPrice, Qty, CustomerID)

Note: In the United States, a Social Security Number (SSN) is a nine-digit code identifying US

citizens and workers, similarly to Codice Fiscale in Italy

a. CustomerID in Customers table is a primary key

b. CustomerID in Purchases table is a candidate key

c. SSN is a candidate key

d. The set of attributes (Name, Surname, SSN) is a candidate key

e. SSN is an alternate key

f. The set of attributes (Name, Surname) is a candidate key

4. Which of the following statements describes the relational schema of the previous question?a. The schema represents a 1:1 relationship between Customer and Purchase entities.b. The schema represents a N:1 relationship between Customer and Purchase entities.c. The schema represents a 1:N relationship between Customer and Purchase entities.d. The schema represents a N:N relationship between Customer and Purchase entities.

5. Which of the following statements are correct with respect to the concept of normalization?(K is the primary key)a. A table in second normal form is also a 3NF table.b. The table: T (K, A1, A2, A3) is definitely a 2NF table.c. The table: T (K, A1, A2, A3) is definitely a 3NF table.d. The table: T (K, A1) is definitely a 2NF table.e. The table: T (K, A1) is definitely a 3NF table.

1 Has NFaculty

FacultyID {PK}FacAttributes

Student

StudentID {PK}StudAttributesRegistrationDate

Page 2: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

Conoscenze

Software DBMS.Aspetti funzionali e organizzativi del database.Oggetti di Access: tabelle, query, mascheree report.Raggruppamenti e funzioni di calcolo.Viste logiche.

Abilità

Utilizzare il software Access perimplementare il modello logico e leassociazioni tra le tabelle.Creare e modificare tabelle e query.Creare e personalizzare maschere e report.Inserire criteri avanzati nelle query.Importare ed esportare dati.Creare query basate su query.

Che cosa imparerai in questo capitolo

Contenuti

Il programma AccessLa creazione delle tabelleLe proprietà dei campiLe associazioni tra le tabelleLe queryLe maschereLe maschere con sottomaschereI reportRaggruppamenti e calcoliCriteri avanzati nelle queryFormule nelle queryImportazione, esportazione e collegamentodatiOggetti multimedialiLe viste logicheQuery basate su queryPersonalizzazione di maschere

4Access

Page 3: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS140 © Istituto Italiano Edizioni Atlas

1 Il programma Access

Nei precedenti capitoli sono stati descritti gli aspetti generali dei prodotti software per lagestione delle basi di dati e i concetti fondamentali dei database relazionali. In questo capitoloviene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze, per altreversioni del programma, sono presentate nei Contenuti digitali integrativi del testo.Access è un sistema di gestione di basi di dati relazionali (RDBMS, Relational DataBase Manage-ment System): può essere utilizzato su personal computer con sistema operativo Windows eutilizza al suo interno il linguaggio SQL.

Il programma si presenta con l’interfaccia grafica dei prodotti Microsoft Office per Windows, coni comandi organizzati in schede a seconda della loro funzione.

La scheda File (o menu File) ha un ruolo speciale perché in essa sono raggruppati i comandi diuso generale per creare, aprire e salvare un database, comandi che, nelle precedenti versioni diAccess, erano raggruppati nel menu File.

Scheda File Scheda Crea

Barra multifunzione

Visualizzazionebackstage

Page 4: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 141© Istituto Italiano Edizioni Atlas

In un database gestito da Access possono essere definite sette categorie di oggetti: le tabelle,le query, le maschere, i report, le pagine, le macro e i moduli. Per dare una prima definizionegenerale di questi elementi si può dire che:

le tabelle, ottenute dal modello concettuale dei dati secondo le regole di derivazionedescritte nel precedente capitolo, costituiscono lo schema secondo cui sono organizzati i datinel database;

le query (interrogazioni sui dati) permettono di ricavare nuove tabelle dalle tabelle iniziali,estraendo i dati secondo i criteri scelti dall’utente;

le maschere consentono la presentazione dei dati e il loro aggiornamento (inserimento,modifica e cancellazione) usando finestre grafiche;i report si usano per presentare i dati su carta, secondo prospetti ordinati, in modo dafacilitarne la consultazione;

le pagine sono utilizzate per visualizzare e pubblicare i dati del database in formato Web;

le macro sono sequenze di comandi di Access raccolti in un’unica operazione. Le macroliberano gli utenti dai lavori ripetitivi perché la loro esecuzione causa l’esecuzione di tutti icomandi che la compongono;

i moduli sono procedure scritte nel linguaggio Visual Basic che permettono di eseguireoperazioni più complesse.

L’elenco degli oggetti contenuti in Access è visualizzabile nel riquadro di spostamento.

Riquadro di spostamento Barra di stato

Barra di accesso rapido

Schede aggiuntive Campi eTabella nel gruppo Strumentitabella, quando la tabella èvisualizzata con i dati.

Page 5: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS142 © Istituto Italiano Edizioni Atlas

L’uso di Access permette di caricare i dati nelle tabelle e di eseguire successivamente le interro-gazioni sul database. In particolare per caricare i dati occorre:� creare un database;� aprire un database;� definire le tabelle;� caricare i dati.

Mentre per realizzare le interrogazioni è necessario:� definire le associazioni (indicate con il termine di relazioni nella terminologia di Access) tra le

tabelle;� realizzare le query necessarie.

Da ultimo, è possibile definire un passo aggiuntivo, per permettere una più facile gestione deidati, realizzando sia maschere per l’aggiornamento delle tabelle, sia report per la presentazionedei risultati finali su prospetti di stampa. Sulla base di queste ulteriori possibilità, diciamo cheAccess non è solo un DBMS, ma è anche un generatore di applicazioni.

Per definire un nuovo database, nei programmi di Microsoft Office, selezionare il programmaAccess.

Nel riquadro principale della finestra che si apre, clic su Database desktop vuoto.

Clic per specificare ilpercorso dove salvareil database sul disco.

Assegnare unnome al database.

Clic per creare il database

Page 6: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 143© Istituto Italiano Edizioni Atlas

Il database viene creato con una tabella vuota denominata Tabella1.Al database di Access viene automaticamente assegnata l’estensione predefinita .accdb. Per leversioni precedenti del programma Access l’estensione predefinita è .mdb.Il programma Access salva tutti gli oggetti del database (tabelle, query, maschere, report) in ununico contenitore registrato su disco con un file di tipo .accdb.Per un database già esistente, occorre ricercare e selezionare il file sul disco facendo clic su Aprinel menu File.All’apertura del database, il video si presenta diviso in due parti principali: a sinistra il Riquadrodi spostamento con gli oggetti del database e a destra l’area di lavoro con gli oggetti aperti.

Per creare un’applicazione si può usare la funzione di autocomposizione (in inglese Wizard) sullabase di modelli generali presenti in Access, che consentono di generare in modo automaticola struttura di database per gestioni di uso comune per la casa, per l’ufficio o per l’azienda. Perutilizzare i modelli, scegliere il modello desiderato tra quelli proposti nella finestra Nuovo dellavisualizzazione backstage.

Questo modo di procedere risulta molto utile per l’addestramento all’uso di Access e comunquefornisce una struttura sulla quale si può successivamente intervenire con modifiche o aggiunte.Nel seguito saranno illustrate le operazioni principali da svolgere per creare le tabelle deldatabase, per inserire i dati e per effettuare interrogazioni senza fare uso di Wizard, ma proce-dendo per passi, a partire dal modello concettuale del problema in esame.

Per imparare le funzionalità del programma Access può essere utile il database di esempioNorthwind.accdb (nelle versioni precedenti Northwind.mdb), fornito da Microsoft: di solito si trovanella directory di installazione di Access. Contiene molti oggetti (tabelle, query, maschere e report)e le tabelle sono già popolate con molti dati, in modo che possano essere utilizzate per le prove.

Riquadro di spostamentocon gli oggetti del database.

Quando si apre un databaseesistente, il programma Accessvisualizza un Avviso di sicurezzasulla barra dei messaggi. Se si èsicuri della provenienza deldatabase, clic sul pulsante Abilitail contenuto.

Area di lavoro con glioggetti aperti.

Clic per nascondere o aprireil Riquadro di spostamento.

Page 7: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS144 © Istituto Italiano Edizioni Atlas

Creare la base di dati per gestire una collezione di dischi musicali.

Il database di nome CollezioneMusicale comprende le tabelle corrispondenti alle entità checaratterizzano la gestione che vogliamo automatizzare. Le entità individuate sono:

� Artista con le informazioni sugli artisti: nome, genere musicale prevalente praticato dell’ar-tista (classica, rock, jazz, ecc.), note biografiche;

� Registrazione con le informazioni sui dischi: titolo, etichetta, tipo di formato (LP, i diversi tipidi CD e DVD), numero di brani che possono essere contenuti nella registrazione, duratamassima e capacità del supporto (di un CD registrabile interessa la capacità in termini dibyte), note descrittive;

� Brano per le informazioni sui motivi musicali contenuti nelle registrazioni: titolo, generemusicale, durata e spazio occupato sul supporto, posizione nella registrazione, note sulbrano.

Tra Artista e Brano esiste l’associazione Eseguire che è un’associazione uno a molti, perché unartista esegue uno o più brani, mentre un brano è eseguito da un solo artista: per questoproblema artista è il singolo cantante o un gruppo musicale, un’orchestra, un quartetto, ecc.e quindi il brano è sempre riconducibile a un solo artista. Tra Registrazione e Brano esisteun’associazione uno a molti, in quanto una registrazione contiene molti brani, mentre unbrano è contenuto in una precisa registrazione. Poiché nel database possono esserci registra-zioni prive di brani e artisti per i quali non è stato registrato alcun brano, la partecipazionedi Artista nell’associazione Eseguire è facoltativa, così come la partecipazione di Registrazionenell’associazione Contenere.

Riassumiamo l’analisi dei dati nel seguente diagramma entità/associazioni:

Tra gli attributi delle entità compaiono, come chiavi, i tre attributi IDArtista, IDBrano eIDRegistrazione che identificano univocamente un’istanza dell’entità tramite un numero pro-gressivo; questa scelta permette, tra l’altro, di gestire le possibili omonimie tra artisti, titoli dibrani o titoli di album identici.

Verifichiamo il modello utilizzando le regole di lettura:Ogni artista può eseguire uno o più brani, ogni brano deve essere eseguito da un solo artista.Ogni registrazione può contenere uno o più brani, ogni brano deve essere contenuto in unasola registrazione.

Utilizzando le regole di derivazione, si passa dal modello concettuale alle corrispondentitabelle del modello relazionale, introducendo le opportune chiavi esterne per rappresentarele associazioni.

ESERCIZIO GUIDATOAPPLICA

1 N

Eseguire Artista

IDArtista {PK}NomeGenereNote

Brano

IDBrano {PK}TitoloBranoGenereDurataBranoDimensionePosizioneNote

Registrazione

IDRegistrazione {PK}TitoloAlbumEtichettaAlbumTipoAlbumNumeroBraniDurataMassimaCapacitàNote

N 1

Contenere

Page 8: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 145© Istituto Italiano Edizioni Atlas

Si ottengono tre tabelle con il seguente schema:

Artisti (IDArtista, Nome, Genere, Note)Registrazioni (IDRegistrazione, TitoloAlbum, EtichettaAlbum, TipoAlbum, NumeroBrani,

DurataMassima, Capacità, Note)Brani (IDBrano, TitoloBrano, Genere, DurataBrano, Dimensione, Posizione, Note, IDArtista,

IDRegistrazione)

Le associazioni uno a molti Eseguire e Contenere sono state rappresentate aggiungendo agliattributi dell’entità a molti, come chiavi esterne, le chiavi primarie delle corrispondenti entitàa uno. Conseguentemente, l’associazione Eseguire è all’origine della chiave esterna IDArtistanella tabella Brani, mentre l’associazione Contenere viene rappresentata con la chiave esternaIDRegistrazione nella tabella Brani.

Lo schema seguente illustra le principali caratteristiche delle colonne delle tabelle.

1. Database Northwind2. Guida pratica per l’uso della versione Access 2003

CONTENUTI DIGITALI INTEGRATIVI

PK (Primary Key) indica la chiave primaria; FK (Foreign Key) indica la chiave esterna.

Nello schema compare anche la scelta per la possibile indicizzazione di un campo dellatabella. L’indicizzazione di un campo, come è stato precisato nel primo capitolo del libro,consente al DBMS di recuperare le informazioni rapidamente, senza dover scorrere tutta latabella per individuare i record con il valore cercato. L’indicizzazione di un campo, che inAccess viene effettuata automaticamente per i campi chiave, è raccomandata per tutti i campiche sono utilizzati di frequente per ricercare informazioni. Per esempio, poiché è probabileche si vorranno ricercare i brani in base al genere musicale, si può decidere di indicizzare ilcampo Genere della tabella Brani.

Tabella Attributo Chiave Formato Indicizzato

Artisti IDArtista PK Numerico (intero) sìNome Carattere (50) sìGenere Carattere (10) sìNote Carattere (255) no

Registrazioni IDRegistrazione PK Numerico (intero) sìTitoloAlbum Carattere (50) sìEtichettaAlbum Carattere (20) noTipoAlbum Carattere (10) noNumeroBrani Numerico (intero) noDurataMassima Numerico (intero) noCapacità Numerico (intero) noNote Carattere (255) no

Brani IDBrano PK Numerico (intero) sìTitoloBrano Carattere (50) sìGenere Carattere (10) sìDurataBrano Numerico (reale) noDimensione Numerico (intero) noPosizione Numerico (intero) noNote Carattere (255) noIDArtista FK Numerico (intero) sìIDRegistrazione FK Numerico (intero) sì

Page 9: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS146 © Istituto Italiano Edizioni Atlas

2 La creazione delle tabelle

Una tabella è un insieme di dati relativi ad uno stesso argomento. I dati di una tabella vengonorappresentati suddivisi in colonne e righe. Spesso si ricorre alla terminologia informatica conven-zionale: le colonne vengono denominate campi e le righe record.

Ogni tabella di un database rappresenta una sola tra le entità che caratterizzano la realtàosservata, in modo da mantenere distinti i dati ed evitare anomalie durante le operazioni su undatabase.

Per esempio, nel database CollezioneMusicale le informazioni sugli artisti sono conservate in unatabella specifica e le righe dei brani contengono il riferimento al codice dell’artista (IDArtista), enon al nome dell’artista: quando vogliamo ottenere l’elenco dei brani di un artista, possiamoessere sicuri di ottenere tutti i dati richiesti, perché il riferimento è scritto in modo uguale per tuttii brani di quell’artista; inoltre se per qualche motivo il nome dell’artista venisse modificato, nonsaremmo costretti a cambiarne il nome in tutte le righe dei brani relativi all’artista.

Per creazione di tabelle si intende la descrizione della struttura della tabella specificandoobbligatoriamente per ogni colonna:

� il nome della colonna;

� il tipo di dati che essa contiene: testo (per esempio nomi, titoli, descrizioni), numero (stipendi,importi), data/ora (date di nascita, date di registrazione), sì/no (campi di controllo comepagato, registrato, superato).

Le proprietà del campo possono essere ulteriormente precisate impostando:

� la dimensione massima (in byte) prevista per i dati da inserire nella colonna;

� il formato di un attributo per indicare le caratteristiche dei valori che il campo può assumere(per esempio, lunghezza in caratteri per i campi di testo, numero intero o reale per i campinumerici);

� il valore predefinito (valore di default) per indicare un valore che viene inserito nel campo inmancanza di diversa specificazione;

� l’obbligatorietà dell’assegnazione di un valore per il campo (richiesto), cioè il campo deveessere valorizzato e non può essere lasciato vuoto.

Per avere una rappresentazione precisa delle entità del database e per facilitare le operazioni diritrovamento dei dati, ogni colonna deve contenere un dato elementare, non ulteriormentescomponibile: un campo non può avere sottocampi, né campi ripetuti.

Per esempio, le informazioni sulla residenza di una persona sono rappresentate con diversi campiseparati: Indirizzo, CAP, Città, Nazione, Telefono e Fax. In questo modo un’interrogazione aldatabase consente di ottenere immediatamente l’elenco delle persone di una nazione, perché ildato è disponibile in una colonna specifica.

Per Access il nome della colonna può avere un formato qualsiasi purché non ecceda 64 caratteri;il tipo di dati può essere definito da un insieme molto ampio di opzioni; la dimensione è nellamaggior parte dei casi predefinita in funzione del tipo scelto. Il tipo testo (Testo breve), essendoil più usato, viene proposto come predefinito.

La tabella della pagina seguente riassume i tipi di dati utlizzabili in Access.

Tabelle

Page 10: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 147© Istituto Italiano Edizioni Atlas

Nella versione Access 2000/2003 il tipo Testo lungo si chiama Memo e il tipo Numerazioneautomatica si chiama Contatore.Si osservi che il tipo Numerazione automatica, essendo autoincrementale, risulta particolarmen-te utile per rappresentare identificatori di record che hanno una numerazione progressiva, peresempio numero delle fatture, oppure numero di registrazione di esami, scontrini, prove deglistudenti, in generale movimenti che rappresentano gli eventi nella gestione dei dati e cheavvengono in una data specifica.I campi di questo tipo sono normalmente indicati in Access con il nome ID (abbreviazione diIdentificativo).

In Access, una nuova tabella può essere definita sia in visualizzazione Foglio dati, cioè con loschema tabellare che presenta i valori dei campi nelle righe, sia in visualizzazione Struttura, chemostra il nome e i tipi dei campi.

Tipo Descrizione Dimensione

Testo breve Testo o combinazioni di testo e di numeri, Fino a 255 caratterioppure numeri che non richiedono calcoli,come numeri di telefono

Testo lungo Testo lungo o combinazione di testo e numeri Fino a 1 GB di dati

Numerico Dati numerici utilizzati in calcoli matematici 1 byte (byte), 2 byte (intero), 4 byte (interolungo oppure non intero con precisione singo-la), 8 byte (precisione doppia)

Data/Ora Valori data e ora per gli anni da 100 a 9999 8 byte (predefinita)

Valuta Valori per valuta e dati numerici utilizzati in 8 byte (fino a 4 cifre per la parte frazionariacalcoli matematici e 15 per la parte intera)

Numerazione Numero progressivo univoco, incrementato 4 byte (se una chiave esterna è associata aAutomatica automaticamente di un’unità, ogni volta che una chiave di questo tipo, deve essere dichia-

viene aggiunto un nuovo record a una tabella rata di tipo numerico Intero lungo)

Sì/No Campo contenente un solo valore tra due 1 bit(Sì/No, True/False, On/Off)

Oggetto OLE Un oggetto, come un foglio di calcolo di Fino a 1 GBExcel, documento di Word, grafico, filmato,suono, collegati o incorporati in una tabelladi Access

Collegamento Testo utilizzato come indirizzo di un colle- Composto da quattro parti ognuna delle qualiipertestuale gamento ipertestuale a un documento può contenere fino a 2048 caratteri

registrato su disco oppure un indirizzoInternet nel formato URL

Allegato Qualsiasi tipo di file supportato dal sistema È possibile allegare immagini, grafici, file diogni tipo come si allegano file a messaggi diposta elettronica (più di un file per record)

Calcolato Campo nel quale si visualizzano i valori Dimensione del risultato del calcolocalcolati in funzione di altri campi dellastessa tabella

Ricerca È un campo dove il valore può essere In genere 4 byteguidata scelto da un elenco di valori predefiniti,

utilizzando una casella di riepilogo o unacasella combinata

Page 11: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS148 © Istituto Italiano Edizioni Atlas

Vediamo le operazioni per creare una nuova tabella in Visualizzazione Foglio dati:nella scheda Crea, clic sul pulsante Tabella.

Per eliminare un campo, si deve fare clic sul pulsante Elimina nel gruppo Aggiungi ed elimina,dopo averne selezionato il nome.Poiché la tabella è aperta in Visualizzazione Foglio dati, dopo aver definito la struttura dellatabella con i nomi e i tipi dei campi, è possibile già in questa fase inserire i valori delle colonnenelle righe sottostanti, oppure l’operazione di inserimento dei dati può essere rimandata ad unmomento successivo.

Vediamo le operazioni per creare una nuova tabella in Visualizzazione Struttura: nella schedaCrea, clic sul pulsante Struttura tabella.

Nell’area di lavoro viene aperta una finestra con tre colonne:

- nella prima sono indicate le intestazioni delle colonne (Nome campo)

- nella seconda il tipo di dato contenuto nelle colonne (Tipo dati)

- nella terza (facoltativa) note esplicative o promemoria (Descrizione).

Al campo è assegnato il nome provvi-sorio Campo1: scrivere il nuovo nomeoppure usare il pulsante Nome edidascalia.

3

Viene automaticamente creatauna tabella con il nome provvi-sorio Tabella1 con campo ID ditipo Numerazione automatica,che diventa la chiave primariadella tabella.

1

Se il campo è di tipo Testobreve: modificare la lunghezzapreimpostata a 255.Se è di tipo Numerico:impostare il formato con ipulsanti del gruppoFormattazione.

4

Definire il tipo per il nuovo campodall’elenco che si apre facendoclic sul titolo della colonnaoppure dai pulsanti del gruppoAggiungi ed elimina dellascheda Campi.

2

Clic per salvare latabella assegnandoun nome significativo.

5

Page 12: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 149© Istituto Italiano Edizioni Atlas

Le proprietà dei campi possono essere precisate ulteriormente inserendo dei valori nel pannelloinferiore della finestra.

Clic per eliminare ilcampo selezionato.

Per rinominare un campo,scrivere il nuovo nomesopra il precedente.

Inserire i nomi dei campi e le descrizioni nellerighe usando i tasti freccia a sinistra e frecciaa destra della tastiera per spostarsi da unacolonna all’altra e le frecce verso l’alto e versoil basso per spostarsi da una riga all’altra. Cisi può spostare anche con il tasto Invio o iltasto di tabulazione.

Il valore predefinitopuò essere modifica-to nella casellaDimensione campo.

Quando si sceglie il tipoTesto breve viene fissataper la lunghezza il valoredi default uguale a 255.

Clic per inserire unnuovo campo primadi quello selezionato.

Page 13: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS150 © Istituto Italiano Edizioni Atlas

Seguendo queste indicazioni si può creare la tabella Artisti, con quattro campi: identificativodell’artista (tipo Numerazione automatica), nome dell’artista (tipo Testo breve. dimensione 50),genere musicale (tipo Testo breve dimensione 10) e note (tipo Testo breve, dimensione 255).

Clic sul pulsanteChiave primaria.

3

Clic nel quadratinogrigio accanto alnome del campoper selezionarlo.

2

Clic per chiuderela tabella.

6

Accanto al nome delcampo compare ilsimbolo di una chiave.

4

Clic per salvare la tabellacon il nome Artisti.

5

Inserire i trecampi di tipoTesto breve.

1

Quando si sceglie il tipoNumerico, si puòprecisare il tipo nelpannello inferiore dellafinestra, scegliendo traIntero, Intero lungo, ecc.

Fissando la chiave primaria si stabilisce un controllo intrinseco sull’inserimento dei dati nellatabella, in quanto, in caso di duplicazione della chiave, verrà segnalato un errore.Inoltre la chiave è lo strumento che ci consente di stabilire i collegamenti tra le diverse tabelledel database attraverso le corrispondenze con la chiave esterna.

Page 14: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 151© Istituto Italiano Edizioni Atlas

Se l’utente salva la tabella senza definire un campo chiave, il programma suggerisce di usarecome chiave, per identificare le righe in modo univoco, un campo aggiuntivo a cui assegnaautomaticamente il nome ID e il tipo Numerazione automatica (autoincrementale).Le operazioni appena descritte devono ora essere ripetute per creare le altre due tabelle: Branie Registrazioni. Si possono usare le due figure seguenti come traccia per il lavoro.

Si osservi l’uso della colonna Descrizione per commentare il campo, descrivendolo e specificandomeglio le caratteristiche per i valori immessi nel campo, quali: obbligatorietà e condizioni divalidità.

Dopo aver salvato la struttura delle tabelle nel database su disco, occorre procedere all’inseri-mento dei dati nelle tabelle.

Page 15: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS152 © Istituto Italiano Edizioni Atlas

Caricare i dati nella tabella.

1. Nel riquadro di spostamento clic su Tabelle per visualizzare l’elenco delle tabelle neldatabase.

2. Selezionare la tabella nella quale si vogliono inserire i dati e doppio clic sul suo nome,oppure clic con il tasto destro sul nome della tabella e scegliere Apri nel menu di sceltarapida. La tabella viene aperta in modalità Visualizzazione Foglio dati.

3. Inserire i dati nelle righe usando i tasti: freccia a sinistra ← e freccia a destra →, perspostarsi da una colonna all’altra, e le frecce verso l’alto ↑ e verso il basso ↓, per spostarsida una riga all’altra. Ci si può spostare anche con il tasto Invio o il tasto Tab (tabulazione)che si trova sulla tastiera a sinistra, sopra il tasto di Blocco maiuscole.

Se un campo è di tipo Numerazione automatica, non va inserito alcun valore, perché vieneautomaticamente aggiornato e incrementato ogni volta che si passa nella riga sottostante perla registrazione di un nuovo record.La stessa modalità operativa può essere usata in momenti successivi per aggiungere nuoverighe a quelle già registrate, oppure semplicemente per vedere i dati contenuti in una tabella.L’operazione deve essere effettuata per tutte le tabelle del database. È opportuno iniziaredalle tabelle che contengono dati di tipo anagrafico, in modo da utilizzare i valori delle chiavinelle altre tabelle, quando dobbiamo inserire i valori corrispondenti nelle chiavi esterne delletabelle collegate. Nell’esempio della collezione musicale si possono inserire nell’ordine: primaArtisti, poi Registrazioni, e infine Brani.Si osservi che, mentre si popolano le tabelle con i dati, nella barra di stato appare ladescrizione del dato immessa nel campo Descrizione al momento della creazione dellatabella. Per esempio, immettendo il valore del campo DurataBrano della tabella Brani, nellabarra di stato compare il messaggio: Durata in minuti: 4,5 indica 4 minuti e mezzo. Sicomprende allora che l’inserimento di descrizioni significative dei dati è utile non solo nellafase della progettazione delle tabelle, ma anche per la loro gestione.

ESERCIZIO GUIDATOAPPLICA

Page 16: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 153© Istituto Italiano Edizioni Atlas

I dati caricati nelle tre tabelle e le principali caratteristiche della finestra VisualizzazioneFoglio dati sono riportati nella figura precedente e nelle due seguenti.

Cancellare una riga della tabella1. Clic nel quadratino grigio a sinistra della riga che deve essere eliminata; la riga viene

evidenziata.2. Premere sulla tastiera il tasto CANC e dare OK alla richiesta di conferma della cancellazio-

ne. In alternativa clic sul pulsante Elimina nella scheda Home della barramultifunzione; anche in questo caso il sistema richiede di confermare la cancellazioneprima di eseguire il comando.

Selettoredi record

Clic qui per selezionare tutti i record. Clic qui per selezionare una colonna.

Pulsanti di spostamento

Page 17: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS154 © Istituto Italiano Edizioni Atlas

ESEMPIO 1

Quando una tabella è aperta in Access, per passare velocemente dalla Visualizzazione Strutturaalla Visualizzazione Foglio dati e viceversa, si possono usare le icone che si trovano in basso adestra nella barra di stato. Il passaggio da una visualizzazione all’altra si esegue anche facendo clic sulla prima icona dellascheda Home (indicata con Visualizzazioni) che propone automaticamente l’icona dellaVisualizzazione Struttura quando la tabella è mostrata come Foglio dati e viceversa.

Nella Visualizzazione Foglio Dati compare, dopo le colonne definite, unacolonna di nome Fare clic per aggiungere, che permette di definire unnuovo campo, specificandone il tipo e il nome. Si osservi, però, chebisogna ricorrere comunque alla Visualizzazione Struttura per definireesattamente le proprietà del campo in quanto, per esempio, un dato ditipo Testo breve è automaticamente di 255 caratteri e il tipo numerico èpredefinito del tipo Intero lungo. Ne segue che questa funzionalità, di uncerto interesse per la prototipazione veloce di una tabella, non è inpratica di reale concreto interesse e se ne sconsiglia l’uso.

Le icone che compaiono nelle diverse schede della barra multifunzione cambiano automatica-mente nella composizione a seconda dell’attività che si sta svolgendo: nelle prime esercitazionicon Access può sicuramente essere utile controllare il significato delle icone passando con ilmouse sopra di esse per visualizzarne una breve descrizione. Per ulteriori dettagli ed esempi sulletabelle si veda la Guida in linea, attivabile dall’icona posta sopra la barra multifunzione, oppurepremendo il tasto F1, e ricercando: “tabella”. Si ricordi poi che il tasto F1 provoca, ove possibile,una ricerca nella guida in linea contestuale alle azioni che si stanno eseguendo e, in questi casi,si ottengono esattamente le informazioni necessarie in quel momento.

Le proprietà dei campi delle tabelle

Per rendere più affidabili e precise le operazioni di inserimento e aggiornamento dei datipossono essere definite opportune caratteristiche dei campi, precisandole nel pannelloposto nella parte inferiore della finestra Visualizzazione Struttura della tabella.

Definire le caratteristiche dei campi TitoloBrano, DurataBrano e Genere della tabellaBrani nel database CollezioneMusicale.

� TitoloBrano: ogni brano deve obbligatoriamente avere un titolo che sarà utilizzato perricercare brani nel database; per evidenziarlo, è visualizzato in caratteri maiuscoli.Per rendere obbligatoria l’immissione del titolo, la proprietà Richiesto è stata impostata aSì; per visualizzare il titolo in caratteri maiuscoli, accanto a Formato viene inserito il simbolo> (mentre il simbolo < causa la conversione in caratteri minuscoli).Infine, per accelerare la ricerca di un brano in base al titolo, alla proprietà Indicizzato vieneassegnato il valore Sì(Duplicati ammessi) che ammette la presenza di brani con lo stessotitolo nella tabella Brani.

Page 18: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 155© Istituto Italiano Edizioni Atlas

Osserviamo che la scelta Sì(Duplicati non ammessi) avrebbe impedito di catalogare duebrani con il medesimo titolo e avrebbe attribuito al campo TitoloBrano le caratteristichetipiche di una chiave.

Visualizza il titolo in caratteri maiuscoli.

Immissione obbligatoriadel titolo.

Ammette brani conlo stesso titolo.

Generatore di espressioni:clic sui tre puntini (…) al terminedella riga, oppure clic suGenera … del menu di sceltarapida del tasto destro delmouse sulla riga Valido se.

� DurataBrano: per esprimere la durata del brano in minuti e frazioni di minuto servononumeri con una parte intera e una parte frazionaria espressa, mediante la proprietà Posi-zioni decimali, con due cifre decimali. La precisione singola, che garantisce 7 cifre signifi-cative, è adatta a rappresentare questo tipo di dato. Il campo DurataBrano viene propo-sto con 4 come valore predefinito, per mezzo della proprietà Valore predefinito, ritenen-dolo un valore di uso frequente per rappresentare la parte intera della durata.Si è voluto anche introdurre un test per controllare che i valori immessi ricadano tra i valoriammissibili per la durata. Il controllo è attuato tramite l’espressione >=0 and <= 60, checaratterizza la proprietà Valido se; nel caso venga immesso un valore non consentitodall’espressione, viene visualizzato un messaggio di errore che riporta la scritta immessanella proprietà Messaggio errore.

Page 19: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS156 © Istituto Italiano Edizioni Atlas

� Genere: definisce il genere musicale del brano. Per limitare le scelte ai soli valori propostiin un elenco visualizzato accanto al campo al momento dell’immissione del dato, ossiatramite una casella di riepilogo, si utilizzano le proprietà della scheda Ricerca.

Per la creazione della casella di riepilogo è consigliabile usare un generatore attivabile inmodalità Visualizzazione Struttura direttamente nella colonna Tipo dati selezionando, per iltipo dati prescelto, l’opzione Ricerca guidata … Per l’eventuale modifica delle proprietà ècomunque necessario ricorrere alla scheda Ricerca, per aggiungere o eliminare voci o pervariare le voci inserite.

La variazione delle proprietà di un campo ha effetto a partire dal momento della variazione;si tengano ben presenti le possibili conseguenze sulla validità dei dati già immessi. Peresempio, se la dimensione di TitoloBrano viene ridotta passando da 50 a 30 caratteri, èpossibile che i titoli già immessi vengano troncati o che, per effetto della variazione di uncontrollo di validità, i dati già immessi non siano più validi.Nell’esempio precedente non si è fatto uso di alcuna Maschera di input. È utile peròricordare che le maschere di input possono semplificare l’immissione dei dati, per esempiopermettono di inserire una data digitando i soli valori numerici corrispondenti a giorno, mesee anno, senza immettere il carattere di separazione tra giorno e mese e tra mese e anno, cheviene inserito dal sistema in base alla maschera.Per costruire una maschera di input conviene fare uso di una creazione guidata, attivandol’opportuno generatore direttamente dalla riga della proprietà Maschera di input, con unclic sui tre puntini a destra (…) per visualizzare la finestra di dialogo Creazione guidataMaschera di input.Informazioni dettagliate ed esempi sulle maschere di input, e più in generale su ognuna delleproprietà sopra citate, sono ottenibili dalla guida in linea posizionando il cursore sulla rigadella proprietà e premendo il tasto F1 della tastiera.

Scheda Ricerca

Visualizza controllo: Casella di riepilogo.Tipo origine riga: Elenco valori.Origine riga: elenco dei valori ammissibilitra apici, separati con punto e virgola.

Page 20: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 157© Istituto Italiano Edizioni Atlas

3 Le associazioni tra le tabelle

Access consente di definire e di memorizzare le associazioni, cioè i collegamenti esistenti tra letabelle di un database, in modo visuale, con l’interfaccia grafica. Nell’ambiente Access si usa iltermine Relazioni per indicare le associazioni tra le tabelle.Per esempio tra la tabella Artisti e la tabella Brani esiste un’associazione uno a molti, perché perogni artista si possono avere più brani registrati nella collezione. Anche tra la tabella Registrazionie la tabella Brani si può stabilire un’associazione uno a molti, perché in ogni disco sono normal-mente contenuti più brani.

Definire le associazioni tra le tabelle.

1. Nella scheda Strumenti database o nella scheda Strumenti tabella della barramultifunzione, clic sul pulsante Relazioni.

2. Si apre la scheda Relazioni dove sono visualizzate tutte le tabelle che compongono ildatabase con l’elenco dei campi che compongono le tabelle: il campo chiave è evidenziatocon la relativa icona.

3. Per definire la relazione uno a molti tra due tabelle, clic sulla chiave primaria della primatabella e, tenendo premuto il tasto sinistro, trascinare il mouse fino a sovrapporsi alcampo che è chiave esterna nella seconda tabella: rilasciando il tasto sinistro, si apre lafinestra Modifica relazioni per definire dettagliatamente le caratteristiche dell’associa-zione che si sta creando.

4. Nella finestra Modifica relazioni compare anche la casella Applica integrità referenziale.Come si è visto nel precedente capitolo, l’integrità referenziale viene rispettata quando,per ogni valore non nullo della chiave esterna, esiste un valore corrispondente dellachiave primaria nella tabella associata. È opportuno attivare questo controllo facendo clicsulla casella di spunta a sinistra dell’opzione, per garantire la consistenza dei dati che sicorrispondono nelle due tabelle.

Associazioni

ESERCIZIO GUIDATOAPPLICA

Impostazione del controllosull’integrità referenziale.

Page 21: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS158 © Istituto Italiano Edizioni Atlas

5. Clic sul pulsante Crea per confermare.

Nella finestra delle relazioni sono rappresentate graficamente le linee orientate che unisconola chiave primaria di una tabella con la chiave esterna dell’altra: i caratteri 1 e ∞ (simbolomatematico di infinito) stanno a indicare una relazione uno a molti.Per cancellare una relazione, nella finestra delle relazioni, basta fare clic con il mouse sullalinea che unisce le tabelle e premere il tasto Canc, oppure fare clic con il tasto destro delmouse sulla linea e scegliere Elimina.Se alle tabelle del database CollezioneMusicale si applicano i vincoli di integrità referenzialenon è possibile inserire i dati di un nuovo brano, con i campi IDArtista e IDRegistrazione dellatabella Brani a valore non nullo, se prima non sono stati inseriti i dati dell’artista che lo eseguenella tabella Artisti, e della registrazione che lo contiene nella tabella Registrazioni. Non ènemmeno possibile eliminare i dati di un artista se ci sono brani a lui associati e, analoga-mente, non possono essere eliminate le informazioni su una registrazione se, nella tabellaBrani, sono presenti righe che fanno riferimento a quella registrazione.

Nella finestra di dialogo Modifica relazionisono presenti anche le opzioni Aggiornacampi correlati a catena e Elimina campicorrelati a catena.Queste funzioni sono da utilizzare con cau-tela perché l’aggiornamento dei campicorrelati fa in modo che, per esempio, uncambiamento sul valore del campo IDArtistanella tabella Artisti comporti la corrispon-dente variazione dello stesso campo nellatabella Brani; l’eliminazione dei campicorrelati implica che l’eliminazione di unariga dalla tabella Registrazioni determini l’eli-minazione nella tabella Brani di tutte quelle righe con il campo IDRegistrazione di valoreuguale a quello di IDRegistrazione della riga eliminata.

Page 22: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 159© Istituto Italiano Edizioni Atlas

Dopo aver stabilito tra le tabelle del database le associazioni uno a molti, nella visualizzazionedei dati delle tabelle che stanno dalla parte a uno compare all’inizio di ogni riga il carattere +.

4 Le query

Per query si intende un’interrogazione sui dati presenti in un database. I dati che fornisconola risposta alla query possono provenire da una o più tabelle; inoltre, i dati prodotti da unaquery sono organizzati secondo lo schema di una tabella e possono, a loro volta, essereoggetto di ulteriori interrogazioni.

In modalità Visualizzazione Foglio dati è possibile ottenere particolari visualizzazioni di unatabella applicando filtri che condizionano l’output (per esempio, gli ordini eseguiti dopo il 10gennaio, oppure i prodotti presenti in magazzino in quantità minore di 30 pezzi).Un filtro è costituito dalle condizioni definite dall’utente per i campi di una tabella. Per poterdefinire un filtro sui dati di una tabella bisogna aprirla in Visualizzazione Foglio dati e posizionarsisu una colonna (per esempio il campo Genere di Brani).

Facendo clic su +,sono mostrate, inuna tabella collegata,tutte le righeassociate (i branicontenuti in quellaregistrazione).

ESERCIZI da 1 a 5 pag. 197 e da 31 a 36 pag. 199

Selezioni in base ai valori dei dati immessinella colonna: clic su Filtro, oppure clicsulla freccia accanto al nome del campo.

Page 23: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS160 © Istituto Italiano Edizioni Atlas

In pratica è possibile selezionare le righe con certi valori oppure con valori appartenenti aopportuni intervalli per il campo selezionato.

Se il criterio è uguale a un dato scritto in un record, dopo un clic su di esso, fare clic sull’iconaSelezione e poi scegliere il criterio desiderato tra quelli proposti. Per esempio, se nellavisualizzazione della tabella Brani si posiziona il cursore sul campo Genere di un brano del generemusicale “Country” e si applica questo tipo di filtro, si possono visualizzare le righe di Brani cherispettano nel campo Genere uno dei criteri elencati in figura.

Per rimuovere il filtro, fare clic sull’icona a forma di imbuto Attiva/disattiva filtro che è diventata selezionabile.

Volendo definire più regole di estrazione per la stessa tabella, è necessario fare clic sull’ico-na Avanzate selezionando poi Filtro in base a maschera o Ordinamento/filtroavanzato.

Nel primo caso i criteri stabiliti su campi diversi (operatore AND) vengono scelti tramite le casellecombinate visualizzate nella riga vuota della maschera che appare; i criteri stabiliti sullo stessocampo (operatore OR) vengono definiti uno per maschera, dove ogni maschera è attivatafacendo clic sull’etichetta Oppure, posta in basso a sinistra.

Nel secondo caso viene aperta una finestra: occorre fare doppio clic sul campo in cui definire ilcriterio, che verrà scritto nella corrispondente riga Criteri. In entrambi i casi, per attivare il filtro,occorre fare clic sull’icona Applica filtro, posta nella barra multifunzione.

I filtri sono adatti per rispondere a semplici esigenze informative, mentre lo strumento più usatoper interrogare il database è la query, costruita in modalità QBE (Query By Example, cioèdefinizione dell’interrogazione attraverso un esempio).La struttura grafica della finestra QBE consente di costruire un esempio di tabella con la rispostaalla query che si vuole realizzare, usando il mouse per selezionare, trascinare e gestire in varimodi gli oggetti in essa contenuti.

Page 24: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 161© Istituto Italiano Edizioni Atlas

Con riferimento al database CollezioneMusicale, si vogliono visualizzare il titolo dell’al-bum, l’etichetta e il numero di brani delle registrazioni di un certo formato (disco, CD-ROM, ecc.) precisato dall’utente al momento dell’interrogazione sul database.

Tutti i dati che servono si trovano nella tabella Registrazioni: pertanto questa sarà l’unicatabella utilizzata dalla query. L’interrogazione da realizzare si compone di una selezione sullerighe di Registrazioni e della successiva proiezione sui campi richiesti; la sequenza di opera-zioni da realizzare è quindi la seguente:

1. σP Registrazioni Temp1 = Selezione di Registrazioni per TipoAlbum = [Tipo album scelto]

2. ΠL Temp1 Proiezione di Temp1 su TitoloAlbum, EtichettaAlbum, NumeroBrani.

Definiamo la query in Access.

ESERCIZIO GUIDATOAPPLICA

Clic sul pulsanteChiudi per chiudere lafinestra di dialogo.

3

Nella finestra Mostra tabella, che si apre, selezionarela tabella desiderata (Registrazioni) facendo clic sulsuo nome e poi clic sul pulsante Aggiungi, oppurefacendo doppio clic sul nome della tabella.

2

Nella scheda Crea dellabarra multifunzione clicsul pulsante Strutturaquery.

1

Sullo schermo, nella finestra graficaQBE, appare una casella con ilnome della tabella scelta e l’elencodei campi che la compongono.

Query

Page 25: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS162 © Istituto Italiano Edizioni Atlas

Indicare quali sono i campi che devono comparire nel risultato dell’interrogazione.

Aggiungere anche il campo chedeve essere usato nel criterioper selezionare le righe cheinteressano (campo TipoAlbum).

6

Scelta dei campi che devono comparire nel risultato della query: clic suTitoloAlbum nella tabella e, con il tasto sinistro premuto, trascinare ilcampo nella prima cella della riga Campo e poi rilasciare il tasto delmouse. Oppure doppio clic sul campo da inserire nella query.

4

Ripetere il procedimentoper tutti i campi che sivogliono ottenere dallaquery ((EtichettaAlbume NumeroBrani).

5

Per inserire nella querytutti i campi di una tabelladoppio clic sull’asterisco:* significa tutti i campi (ininglese, all).

Normalmente per tutti i campi viene attivata, con un segno di spunta, la casella sulla rigaMostra della griglia sottostante: questo significa che il campo comparirà nella tabella risul-tante; se invece la casella è vuota, il campo viene utilizzato nella costruzione della query, manon verrà visualizzato.

Si apre la finestra con larichiesta del parametro.

10

La query è parametrica: lamedesima interrogazionepuò essere usata più volteper estrarre le liste didiversi tipi di album.

Togliere la selezione diMostra per il campoTipoAlbum, perché nondeve comparire neirisultati della query.

7

Clic sul pulsanteEsegui percollaudare laquery.

9

L’interrogazione richiede di estrarre solo idati sulle registrazioni di un certo formato:nella riga Criteri, sotto il campoTipoAlbum, inserire il testo [quale tipo diformato?], con le parentesi quadre.

8

Page 26: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 163© Istituto Italiano Edizioni Atlas

Salvare la definizione della query facendo clic sull’icona Salva ; sostituire il nome suggeritoQuery1 con un nome più significativo, per esempio Elenco per TipoAlbum.Chiudere la finestra della query con un clic sul pulsante di chiusura alla destra della barracon la scheda della query.

Ovviamente la query può anche essere non parametrica: in questo caso basta scrivere nella rigadei criteri il valore specifico da controllare (senza parentesi quadre).Il criterio sul campo di una query può anche essere rappresentato da operatori di confronto:< (minore), <= (minore o uguale), > (maggiore), >= (maggiore o uguale), = (uguale), <> (diverso),Between.Per esempio, se si vogliono selezionare dalla tabella Registrazioni quelle che hanno il numero dibrani superiore a 2, basta scrivere nella riga dei criteri, in corrispondenza del campo NumeroBrani,la condizione >2.Le condizioni possono essere poi combinate tra loro con gli operatori logici AND e OR.Per esempio il criterio che il numero di brani sia compreso tra 2 e 10 si rappresenta con lacondizione:

>=2 AND <=10

che può essere espressa, con l’operatore di confronto Between nel seguente modo:

Between 2 AND 10

La riga Oppure sotto la riga Criteri nello schema della query consente di inserire condizionidiverse per lo stesso campo. L’effetto complessivo è quello di un’unica condizione logica nellaquale le condizioni inserite nelle diverse righe sono composte tramite l’operatore OR.

Si ponga però attenzione al fatto che la condizione risultante è costruita in due passi: per primacosa le condizioni sulla medesima riga sono composte in AND e, successivamente, le condizionisulle diverse righe, costruite al passo precedente, sono composte in OR. Ne segue che, peresempio, le condizioni in figura sono interpretate come:

( DurataBrano > 3,5 AND Genere = “Pop” ) OR Genere = “Rock”

che seleziona tutti i brani rock e i brani pop che durano più di 3 minuti e mezzo.

Per la scrittura della condizione nella riga Criteri si può usare ilGeneratore di espressioni oppure, per ovviare alla limitatezza dellospazio a disposizione in Criteri, si può scrivere o visualizzare lacondizione in una finestra indipendente.Entrambe le modalità si attivano dalla riga della condizione facendoclic con il tasto destro e selezionando Genera … per il generatore diespressioni o Zoom … per attivare la nuova finestra.Il passaggio dalla sequenza di operazioni relazionali alla corrispon-dente interrogazione espressa come QBE in Access è il seguente: le selezionisi realizzano scrivendo opportune condizioni nella riga Criteri dei campi ogget-to della selezione; i campi sui quali viene eseguita la proiezione sono quelli cheappaiono nella griglia della QBE con il segno di spunta selezionato.

Page 27: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS164 © Istituto Italiano Edizioni Atlas

Per eseguire una query: nel riquadro di spostamento clic sull’etichetta Query per visualizzarel’elenco delle query memorizzate.

Selezionare la query che si vuole eseguire, facendo un doppio clic sul suo nome, oppure facendoclic con il tasto destro del mouse sul nome della query e scegliendo l’opzione Apri.

Si apre una finestra con la quale si chiede all’utente di specificare il valore da assegnare alparametro che è stato definito nella struttura della query. Nell’esempio precedente la queryrichiede che venga specificato il tipo di album da ricercare. Scrivendo, per esempio, CD-ROM latabella risultante dall’interrogazione viene aperta in modalità di Visualizzazione Foglio dati.

Dalla tabella di partenza, di nome Registrazioni, sono state estratte le sole righe che hanno nellacolonna TipoAlbum il valore richiesto (CD-ROM), cioè quelle righe che soddisfano alla condizionescritta nella riga dei criteri della query.

La query possiede tre modalità di visualizzazione che possonoessere scelte velocemente facendo clic sul pulsante Visualizza inalto a sinistra.Due di queste modalità sono già state descritte e utilizzate; unaterza, la Visualizzazione SQL, si riferisce alla visualizzazione delcodice che “sta sotto all’interrogazione”, nascosto dall’interfacciagrafica. Il codice è costituito da comandi del linguaggio SQL, cheè il linguaggio standard per i prodotti DBMS, di cui si parlerà nelprossimo capitolo. La query Elenco per TipoAlbum è realizzata conla seguente frase del linguaggio SQL.

Si noti che il passaggio fra le diverse visualizzazioni si può eseguire anche per mezzo delle iconeche appaiono nella barra di stato a destra. Naturalmente il passaggio dalla VisualizzazioneStruttura alla Visualizzazione Foglio dati provoca l’esecuzione della query.

Quando la query è aperta in modalità di Visualizzazione Struttura o Visualizzazione SQL,si può attivarne l’esecuzione facendo clic sul pulsante con il punto esclamativo nellascheda Progettazione degli Strumenti Query.

VisualizzazioneFoglio dati

Visualizzazione SQL

Page 28: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 165© Istituto Italiano Edizioni Atlas

Definire un’interrogazione per ottenere un elenco dei brani di durata superiore a 7minuti contenente nome, genere musicale e durata del brano, oltre al nome dell’artistache lo esegue.

Nella query, oltre alla tabella Brani, occorre utilizzare anche la tabella Artisti, perché nellatabella Brani esiste solo il codice identificativo dell’artista, ma non il suo nome. La sequenzadi operazioni da realizzare è quindi la seguente:

1. σP Brani Temp1 = Selezione di Brani per DurataBrano > 72. Temp1FK ArtistiPK Temp2 = Congiunzione di Temp1 e Artisti su IDArtista3. ΠL Temp2 Proiezione di Temp2 su TitoloBrano, Brani.Genere,

DurataBrano, Nome.

Definiamo una query su due tabelle collegate.

1. Nella scheda Crea della barra multifunzione clic su Struttura query.2. Nella finestra Mostra tabella selezionare la prima tabella che serve facendo clic sul suo

nome e poi clic sul pulsante Aggiungioppure doppio clic sul nome della tabella.

3. Ripetere l’operazione anche per la secondatabella.

4. Clic sul pulsante Chiudi per chiudere la fi-nestra di dialogo.Le due tabelle compaiono nella parte supe-riore della finestra QBE unite con una lineaorientata che indica la relazione esistentetra esse tramite l’attributo comune (nel-l’esempio l’identificativo dell’artista).

5. Selezionare con un doppio clic i campi dalla prima tabella (TitoloBrano, Genere, DurataBrano)e il campo dalla seconda tabella (Nome).

6. Nella riga individuata da Criteri:, sotto il campo DurataBrano, inserire la condizione >7.7. Salvare la definizione della query assegnando un nome significativo (BraniLunghi).8. Chiudere la finestra della query con un clic sul pulsante di chiusura in alto a destra.

Nella modalità QBE di Access la congiunzione tra due tabelle è espressa dalla linea che collega icampi delle due tabelle che vengono confrontati per realizzare il join. La congiunzione realizzata èun equi-join ottenuto automaticamente quando le due tabelle sono inserite nella finestra della QBE.Eseguendo la query, si ottengono i dati desiderati con le colonne estratte da entrambe le tabelle.

I dati contenuti in una tabella o i dati ottenuti da una query possono essere visualizzati in modoordinato secondo criteri di ordinamento crescente o decrescente per i valori numerici, oppurein ordine alfabetico per valori di tipo alfanumerico.La tabella e la query devono essere visualizzate in modalità Foglio dati. Per attivarel’ordinamento si possono usare le icone (Ordinamento crescente o descrescente)nella scheda Home della barra multifunzione.Per le query l’ordinamento può essere impostato nella Visualizzazione Struttura, utilizzando lariga Ordinamento (Crescente o Decrescente) dello schema della query.

3. Creazione di query con Access 2003

CONTENUTI DIGITALI INTEGRATIVI

ESERCIZIO GUIDATOAPPLICA

Page 29: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS166 © Istituto Italiano Edizioni Atlas

Associazioni e join nelle query

Si possono costruire query anche se non sono state definite le associazioni tra le tabelle? Cheimportanza ha per la query il collegamento, tra i campi nelle due tabelle, che si è costruitocon l’associazione?Per rispondere a queste domande costruiamo l’interrogazione per produrre l’elenco dei branidi durata superiore ai 7 minuti con il nome dell’artista che lo esegue, a partire dalle tabelleBrani e Artisti, supponendo però che tra queste tabelle non sia stata definita alcuna associa-zione. L’esecuzione di questa query produce un elenco senza senso formato da 28 record,ottenuto combinando in tutti i modi possibili i 4 brani di durata superiore a 7 minuti con isette artisti della tabella Artisti.Osserviamo che, in pratica, per costruire questa query è sufficiente aprire la precedentequery BraniLunghi in Visualizzazione Struttura ed eliminare il collegamento tra Brani e Artisti,facendo clic con il tasto destro sulla linea che collega le tabelle e selezionando l’opzioneElimina tra le due scelte proposte: Proprietà join ed Elimina.

Possiamo concludere che:

� la query si può costruire anche senza collegare le tabelle e, in tale caso, Access le componecostruendo il prodotto cartesiano tra le righe selezionate delle due tabelle;

� se tra due tabelle è stata definita un’associazione, quando esse sono usate in un’interro-gazione, Access le compone automaticamente con un equi-join.

A questo punto ci si può chiedere se sia possibile costruire una query corretta anchepartendo da tabelle tra le quali non sono state definite associazioni. La risposta è affermativa.Nella query in Visualizzazione Struttura trasciniamo il campo IDArtista della tabella Brani sulcampo IDArtista della tabella Artisti. Viene visualizzata una riga che collega i campi.Facendo clic con il tasto destro sulla linea che collega le tabelle e selezionando la sceltaProprietà join, appare la seguente finestra:

Utilizziamo il left join per risolvere il seguente problema: elencare le registrazioni per le qualinon è stato inserito nel database alcun brano.Costruiamo pertanto una query sulle tabelle Registrazioni e Brani e selezioniamo tra i campida mostrare IDRegistrazione e TitoloAlbum di Registrazioni oltre a TitoloBrano di Brani.Facendo clic con il tasto destro sulla linea che collega le tabelle attiviamo la finestra ProprietàJoin e osserviamo che è selezionata l’opzione 1 mentre la dicitura di fianco all’opzione 2precisa: Includi tutti i record di ‘Registrazioni’ e solo i record di ‘Brani’ in cui i campi collegatisono uguali che definisce esattamente il comportamento di un left join tra Registrazioni eBrani.

Equi join

Left join

Right join

Page 30: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 167© Istituto Italiano Edizioni Atlas

Essa soddisfa alle esigenze del problema, in quanto l’esecuzione di una query in cui le duetabelle sono collegate con un left join produce una tabella dove appaiono tutte le registra-zioni. Alcune saranno accompagnate dai titoli di brani, altre saranno accompagnate da uncampo vuoto.

Per elencare le registrazioni senza brani, bisogna selezionare le sole righe dove il campoTitoloBrano è lasciato vuoto. Un campo con queste caratteristiche, è un campo che contieneun valore nullo ed è riconoscibile con il predicato Is Null riportato nella riga Criteri incorrispondenza del campo TitoloBrano.

Al posto di Is Null è possibile scrivere semplicemente Null, ma bisogna evitare di scrivere ilcriterio = Null che rappresenta un criterio valido, ma viene eseguito andando a ricercare lerighe che hanno come TitoloBrano i quattro caratteri “Null”.

L’esecuzione della query produce l’elenco richiesto con le raccolte che non hanno branicollegati. Nei Contenuti digitali integrativi del precedente capitolo un problema analogo erastato risolto con una differente modalità, attraverso l’operazione insiemistica di differenza trainsiemi.

Si osservi che questa modalità di soluzione è quella abitualmente adottata per risolvere similiproblemi e corrisponde alla seguente interrogazione:

1. RegistrazioniPK Left BraniFK Temp1= CongiunzioneSinistra di Registrazioni e Brani suIDRegistrazione

2. σP Temp1 Temp2 = Selezione di Temp1 per TitoloBrano Is Null

3. ΠL Temp2 Proiezione di Temp2 su IDRegistrazione, TitoloAlbum.

Tra le tabelle del database CollezioneMusicale sono state definite due associazioni uno amolti. Vediamo ora come bisogna operare per costruire in Access le associazioni molti a moltioppure uno a uno.

Le registrazioni identificatedai codici 4, 5 non hannobrani catalogati.

Page 31: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS168 © Istituto Italiano Edizioni Atlas

� Associazioni molti a molti. Ricordando le regole di derivazione per passare dal modelloconcettuale dei dati alle corrispondenti tabelle, un’associazione molti a molti tra due entitàviene derivata creando, due tabelle T1 e T2 che rappresentano le entità e una terza tabellaT3, che rappresenta l’associazione e contiene le chiavi primarie delle due entità associate,oltre agli eventuali attributi dell’associazione.In pratica l’associazione molti a molti viene trasformata in due associazioni uno a molti, unatra T1 e T3 e l’altra tra T2 e T3.

� Associazioni uno a uno. Supponiamo di avere organizzato le informazioni sui dipendentidi un’azienda in una base di dati con due tabelle, secondo il seguente schema:Dipendenti (Matricola, Stipendio, DataAssunzione, Dipartimento)Anagrafica (CodiceFiscale, Cognome, Nome, Indirizzo, Matricola)

L’associazione tra le due tabelle è, per la natura stessa dei dati, uno a uno, in quanto a unapersona con un certo codice fiscale corrisponde un solo dipendente e viceversa un dipen-dente ha uno e un solo codice fiscale.Secondo le regole di derivazione, un’associazione uno a uno viene derivata con un’unicatabella, e quindi le due tabelle Anagrafica e Dipendenti dovrebbero confluire in un’unicatabella. Supponiamo di voler mantenere le due tabelle Anagrafica e Dipendenti separate ecollegate da un’associazione uno a uno.Se cerchiamo di costruire l’associazione tra Anagrafica e Dipendenti, come è stato descrittonel precedente paragrafo, ponendo sulla finestra delle relazioni prima la tabella Dipendenti,poi la tabella Anagrafica e quindi collegando i campi Matricola nelle due tabelle, vieneproposta un’associazione uno a molti. Questo avviene perché il sistema decide il tipo diassociazione che si può stabilire autonomamente, in base alle caratteristiche dei campicollegati nelle due tabelle. Occorre specificare al programma Access che il campo Matricoladi Anagrafica ha le caratteristiche adatte per stabilire il tipo di associazione desiderata, ossiache un valore di Matricola identifica un solo record nella tabella Anagrafica.Per farlo, occorre impostare la proprietà Indicizzato del campo Matricola di Anagrafica, conil valore Sì (Duplicati non ammessi): se non sono ammessi duplicati è evidente che un valoredi Matricola identifica uno e un solo record nella tabella Anagrafica.

5 Le maschere

Nel database CollezioneMusicale sono state create tre tabelle e due query usando il formatotabellare standard che organizza i dati in righe e colonne. Può nascere l’esigenza di utilizzare unamaschera video più adatta alla gestione dei dati di un database e che sia più facile da usare perinserire, cancellare, modificare un record di una tabella, presentando sul video dell’utente unrecord per volta.

Creare una maschera.1. Nel riquadro di spostamento evidenziare la tabella o la query con i dati da utilizzare nella

maschera.2. Nella barra multifunzione selezionare la scheda Crea e clic sul pulsante Maschera.

ESERCIZIO GUIDATOAPPLICA

Page 32: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 169© Istituto Italiano Edizioni Atlas

3. Sul video compare direttamente una maschera per la visualizzazione del primo recorddella tabella, o della query, selezionata.

4. Salvare la maschera con un clic sull’icona Salva nella barra di accesso rapido, assegnan-do un nome significativo.

5. Chiudere la maschera con un clic sul pulsante di chiusura sulla destra della barra soprale schede dei documenti.

Access genera una maschera con tutti e i soli dati della tabella o della query selezionata. Se,per esempio, si crea una maschera basata sulla tabella Brani, nella maschera generata sarannoinclusi tutti i campi di questa tabella. Differente è il comportamento del sistema quando sisceglie una tabella che ha il ruolo a uno in un’associazione uno a molti, come avvienecostruendo una maschera basata sui dati di Artisti che è in associazione uno a molti con Brani.In questi casi la maschera generata contiene i dati di entrambe le tabelle.

Una maschera può anche essere creata mediante una Creazione guidata Maschera, attivabileselezionando l’icona analoga al punto 2 della procedura appena descritta.

Questa modalità è più flessibile della precedente e permette di costruire maschere che includonosolo alcuni dei campi di una tabella, e anche campi provenienti da più di una tabella.

La maschera, generata automaticamente in uno dei modi sopradescritti, può essere personalizzata dall’utente, modificandola nel-la sua struttura con le modalità offerte dalla Visualizzazione Layoutdella maschera, come è mostrato nella pagina seguente, oppurecon le modalità offerte dalla Visualizzazione Struttura, come sivedrà nell’ultimo paragrafo di questo capitolo.

Il passaggio da una visualizzazione all’altra si esegue scegliendo lavisualizzazione desiderata con un clic sul pulsante Visualizza nellascheda Home. In alternativa la visualizzazione può essere sceltafacendo clic sull’icona opportuna tra quelle presenti nella partedestra della barra di stato.

Maschera basata sulla tabellaArtisti: dati del quarto record.

Sottomaschera: dati dei trebrani associati all’artista.

Page 33: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS170 © Istituto Italiano Edizioni Atlas

ESERCIZIO GUIDATOAPPLICA

ESEMPIO 2

Maschere con sottomaschere e maschere personalizzate con la Visualizzazione Layout

Una sottomaschera è una maschera all’interno di un’altra. Le sottomaschere sono partico-larmente utili per visualizzare i dati di tabelle o query caratterizzate dall’associazione uno amolti. Abbiamo visto, per esempio, che i dati della tabella Artisti rappresentano il lato a unodell’associazione e i dati della tabella Brani il lato a molti, poiché, nella collezione, per ogniartista ci sono molti brani. La maschera principale e la sottomaschera sono collegate in mododa visualizzare, nella sottomaschera, i soli record correlati al record corrente della mascheraprincipale.

La maschera principale può contenere un numero qualsiasi di sottomaschere, fino a settelivelli di sottomaschere, cioè ci può essere una sottomaschera all’interno della mascheraprincipale e un’altra sottomaschera all’interno della prima e così via. È possibile, per esempio,creare una maschera principale per i clienti, una sottomaschera per gli ordini e un’altrasottomaschera per i dettagli relativi agli ordini.

Si può creare una sottomaschera e collegarla alla maschera esistente, oppure creare diretta-mente una maschera con le sottomaschere desiderate, attraverso il generatore di maschere.

Creare una maschera con sottomaschere.

1. Nella barra multifunzione selezionare la scheda Crea e clic sul pulsante Creazione guida-ta Maschera.

2. Nella finestra che si apre si devono indicare le tabelle e i campi che andranno a formarela nuova maschera. Si scelgano prima i campi della tabella a uno e poi quelli della tabellaa molti; clic sul pulsante Avanti >.

3. Alla richiesta Scegliere come visualizzare i dati, si evidenzi la tabella a uno e si attivil’opzione Maschera con sottomaschere. Clic sul pulsante Avanti >.

4. Alla richiesta Scegliere il layout da applicare alla sottomaschera, si indichi Foglio datie si faccia clic sul pulsante Avanti >.

5. Scegliere un nome significativo per la maschera e selezionare l’opzione di aprire diretta-mente la maschera per visualizzare o inserire informazioni e poi clic sul pulsante Fine.

Creare una maschera con i dati di Brani, con l’esclusione del campo Note, aggiungendoil campo Nome di Artisti e il campo TitoloAlbum della tabella Registrazioni.

In questo caso si usa il generatore per costruire una maschera che non ha sottomaschere, mainclude i dati di più tabelle. Si procede seguendo le indicazioni dell’esercizio precedente escegliendo i dati richiesti dalle tabelle Brani, Artisti e Registrazioni. Al punto 3. della procedurasi accettano le scelte operate dal generatore, ovvero di visualizzare i dati in base a Brani inuna maschera singola, limitandosi a fare clic sul pulsante Avanti >. Si procede nella proce-dura e si sceglie MascheraBraniGrezza come nome da assegnare alla maschera.

La maschera generata è quella nella figura di pagina seguente. Volendo migliorarne l’aspettosi può ricorrere alla Visualizzazione Layout che permette di modificare una maschera in modosemplice e intuitivo.

Page 34: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 171© Istituto Italiano Edizioni Atlas

In questa visualizzazione la strut-tura della tabella è mostrata as-sieme ai dati (la figura mostra,appunto, la maschera in Visualiz-zazione Layout) ed è sufficientefare clic in una casella di testo osu una etichetta per evidenziarla;a questo punto è possibile spo-starla, trascinandola o usando itasti freccia: ↓, →, ↑, ←, eliminarlacon il tasto Canc, e ridimensio-narla spostando il mouse sui bor-di per poi trascinarli.

Usando le funzionalità della Visualizzazione Layout si vuole modificare la struttura dellamaschera in modo che la casella di testo con il nome dell’artista appaia a lato di quella conil codice dell’artista e, allo stesso modo, che il titolo dell’album sia visualizzato di fianco alcodice della registrazione. Si desidera anche ridurre le dimensioni della casella che contieneil genere del brano.

La MascheraBraniGrezza, dopo le modifiche, è stata salvata con il nome Brani ed è mostratanella figura a destra.Come si può osservare nella maschera Bra-ni, oltre ai cambiamenti descritti, sono stateeliminate le etichette Nome e TitoloAlbum,ormai inutili, ed è stato cambiato il conte-nuto di altre etichette per indicare i campidella maschera con nomi ritenuti più adatti(Registrazione al posto di IDRegistrazione,Artista al posto di IDArtista e Codice Branoal posto di IDBrano).

Per cambiare un’etichetta è sufficiente,dopo averla evidenziata, fare un doppioclic su di essa e modificarne il contenuto.Nella figura si nota l’etichetta associata alcampo IDBrano dopo la modifica.Si noti, infine, che la larghezza della casellacon i valori di Posizione è stata aumentataper uniformarla a quelle dei campi adiacenti.

4. Creazione di maschere con Access 2003

CONTENUTI DIGITALI INTEGRATIVI

Page 35: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS172 © Istituto Italiano Edizioni Atlas

6 I report

Per presentare i dati è opportuno ricorrere all’utilizzo di prospetti di stampa che possanofacilitarne la lettura da parte della persona alla quale inviamo i risultati di un’elaborazione.Rispetto alle visualizzazioni su monitor, le stampe possono servire per riflettere con calma suidati, oppure per presentare i dati in modo ordinato o secondo tracciati definiti da normelegislative e fiscali. Per indicare i prospetti di stampa si usa il termine inglese report.Si osservi che la stampa può essere fatta su carta oppure, come accade di frequente, su file PDF.

Progetto 6

Produrre un prospetto di stampa con l’elenco di tutti gli album su CD-ROM.

Associando al report la query Elenco per TipoAlbum, presentata precedentemente, si ottieneil report in figura con l’elenco di tutti gli album su CD-ROM.

1. Nel riquadro di spostamento evidenziare la tabella o la query alla base del report che sivuole creare. Tra le query elencate, si sceglie: Elenco per TipoAlbum.

2. Nella barra multifunzione selezionare la scheda Crea e clic sul pulsante Report.Sul video compare direttamente un’anteprima della prima pagina del report.

3. Facendo clic sul pulsante Visualizza della scheda Home si pas-sa alla Visualizzazione Layout o alla Visualizzazione Struttura delreport o all’anteprima di stampa a video. Dall’anteprima di stampail prospetto è inviato alla stampante facendo clic sul pul-sante Stampa che appare nella barra multifunzione.Il report può essere salvato con un clic sull’icona Salva nellabarra di accesso rapido, assegnandogli un nome significativo.

4. Chiudere il report con un clic sul pulsante di chiusura nellabarra della scheda del report.

ESERCIZIO GUIDATOAPPLICA

Page 36: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 173© Istituto Italiano Edizioni Atlas

Il report, ottenuto in modo automatico utilizzando uno dei modelli standard di Access,oppure con una Creazione guidata Report, può essere successivamente personalizzatodall’utente con modifiche alla sua struttura sia con gli strumenti della Visualizzazione Layout,come è stato spiegato nel precedente paragrafo, sia con i metodi messi a disposizione inVisualizzazione Struttura.

Per visualizzare il report in modalità Struttura si deve fare clic sul pulsante Visualizza nellascheda Home e poi scegliere la visualizzazione desiderata, oppure si può passare da unavisualizzazione all’altra e anche all’Anteprima di stampa facendo clic sull’icona opportunatra quelle visualizzate nella barra di stato a destra.

5. Creazione di report con Access 2003

CONTENUTI DIGITALI INTEGRATIVI

Le etichette dei campi e lecaselle contenenti i valoripossono essere ridimensio-nati o spostati trascinandolicon il mouse.

Si possono cancellare glielementi inseriti durante lacreazione automatica del reportselezionandoli con il mouse epremendo poi il tasto Canc.

La struttura del report è compostada cinque sezioni: Intestazionereport, Intestazione pagina,Corpo, Piè di pagina, Piè direport.

Passando alla Visualizzazione Layout del reportElenco per TipoAlbum si può, per esempio,aumentare la larghezza dell’etichetta conl’intestazione della colonna NumeroBrani.

TEST 4.1 pag. 192 ESERCIZI da 6 a 22 pag. 198 e da 37 a 40 pag. 199�

Page 37: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS174 © Istituto Italiano Edizioni Atlas

7 Raggruppamenti e calcoli in una query

In una query possono essere eseguiti conteggi di righe raggruppate secondo valori uguali di uncampo oppure calcoli sui valori contenuti in campi di tipo numerico: sommatorie dei valori sututte le righe o su gruppi di righe, medie aritmetiche di campi numerici e così via.Per effettuare questi calcoli si utilizzano funzioni predefinite di Access, che si chiamano funzionidi aggregazione, perché restituiscono un valore calcolato su gruppi di righe della tabella.Nell’impostazione della query occorre quindi indicare il campo sul quale effettuare il raggrup-pamento e il campo sul quale effettuare il calcolo.Per esempio, se in una query si vuole ottenere il totale delle fatture raggruppate per cliente, ilraggruppamento deve essere fatto sul codice cliente e il calcolo del totale deve essere fatto sulcampo importo della fattura.

Per eseguire raggruppamenti e calcoli in una query si devono effettuare i seguenti passaggi:

1. Aprire la query in Visualizzazione Struttura.

2. Clic sul pulsante Totali (il pulsante nella scheda Progettazione degli Strumenti querycon il simbolo matematico di sommatoria).

3. Nella riga Formula che compare nel pannello inferiore, clic in corrispondenza del campo sulquale si vuole effettuare il raggruppamento: clic sulla piccola freccia verso il basso e scegliereRaggruppamento.

4. Nella riga Formula clic in corrispondenza del campo sul quale si vuole effettuare il calcolo:clic sulla piccola freccia verso il basso e scegliere la funzione di calcolo (Conteggio, Somma,Media, ecc.).

5. Eseguire la query.

Le funzioni di calcolo disponibili sono:

Somma Totale dei valoriMedia Media dei valoriMin Valore minimoMax Valore massimoConteggio Numero di valori in una colonnaDevSt Deviazione standardVar Varianza dei valoriPrimo Il primo valore dell’elencoUltimo L’ultimo valore dell’elencoEspressione Una funzione di aggregazione generica definita dall’utente

Progetto 7

Nel database CollezioneMusicale costruire una query che, in base alle informazionidella tabella Brani, raggruppi i brani musicali per registrazione e, per ogni registrazio-ne, determini il numero e la durata complessiva dei brani catalogati.

Nella prima figura della pagina seguente è mostrata, sia in visualizzazione struttura che fogliodati, la query BraniPerRegistrazione1 che risolve il problema. La query è sicuramente migliorabilesostituendo al codice registrazione, che appare nella prima colonna, il nome della registra-zione e cambiando i nomi assegnati automaticamente alle ultime due colonne(ConteggioDiIDBrano e SommaDiDurataBrano) con nomi appropriati.

ESEMPIO 2

Page 38: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 175© Istituto Italiano Edizioni Atlas

In particolare, per assegnare il nome desiderato all’intestazione di una colonna, si devescrivere il nome dell’intestazione prima del nome del campo, separati da :.La figura sotto mostra la struttura della query BraniPerRegistrazione2 con le intestazionimodificate e i risultati dell’esecuzione.

In BraniPerRegistrazione2, nella colonna delle durate, i tempi sono espressi in minuti ecentesimi di minuto e, di conseguenza, il valore 50,25 rappresenta la durata di 50 minuti e15 secondi. Questo valore sarebbe decisamente più leggibile se fosse espresso nella forma:50.15 minuti (o meglio 50:15 minuti). Per operare il passaggio da una forma all’altra occorrecostruire nuovi valori partendo dai valori contenuti nelle tabelle del database. Questo argo-mento è trattato nel riquadro dopo il Paragrafo 8 (Formule nelle query e campi calcolati).

Tra le funzioni di calcolo utilizzabili nella riga Formula abbiamo citato l’opzione Espressione chepermette di inserire una funzione di aggregazione definita dall’utente. Mostriamo come usarel’opzione Espressione nel risolvere una semplice variante del problema trattato nell’esempioprecedente: produrre un elenco che, per ogni registrazione, precisi il numero di brani in essacontenuti e la loro durata complessiva, espressa in secondi.

Page 39: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS176 © Istituto Italiano Edizioni Atlas

Dopo avere osservato che la durata di un brano espressa in secondi è esprimibile come:DurataBrano * 60, l’elenco richiesto si ottiene come nel caso di BraniPerRegistrazione2, eseguen-do un Raggruppamento sul campo TitoloAlbum, un Conteggio su Brani.IDBrano e definendo laterza colonna nella griglia della query nel seguente modo: nella riga Formula si sceglie l’opzioneEspressione, e nella riga Campo si scrive:

DurataInSecondi: Somma( DurataBrano * 60 )

I raggruppamenti e le funzioni di aggregazione costituiscono un’estensione delle operazionirelazionali e quindi le precedenti interrogazioni non hanno una corrispondente rappresentazionecome sequenza di operazioni relazionali.

Per ulteriori informazioni ed esempi si suggerisce l’uso della Guida in linea.

8 Criteri avanzati nelle query

Nelle condizioni poste sui campi che contengono date deve essere usato il simbolo # perracchiudere le date di confronto nella riga dei Criteri.

Per esempio, per ottenere l’elenco delle fatture emesse il giorno 10/12/2016, sotto il campocorrispondente alla data della fattura, nella riga Criteri dello schema della query, occorre scrivere

#10/12/2016#.

Si possono anche impostare condizioni che controllano un intervallo di date. Per esempio, perottenere l’elenco delle fatture emesse nel primo trimestre del 2016, si deve porre nella casellaCriteri della data della fattura una delle due condizioni:

> #31/12/2015# And < #01/04/2016#

oppureBetween #01/01/2016# And #31/03/2016#

Nelle condizioni poste sui campi di tipo Testo, si può confrontare il valore di un campo con unmodello di stringa che può contenere i caratteri jolly:

? per indicare un singolo carattere qualsiasi in quella posizione della stringa;* per indicare una sequenza qualsiasi di caratteri in quella posizione della stringa, compresa la

sequenza formata da zero caratteri;[ ] per indicare un qualsiasi singolo carattere tra quelli posti all’interno delle parentesi quadre;! per indicare qualsiasi carattere non incluso nelle parentesi quadre;– per indicare i caratteri di un intervallo. È necessario specificare l’intervallo in ordine crescente.

Per esempio:

xyz* vengono ricercate tutte le stringhe di 3 o più caratteri che iniziano con i caratteri ‘xyz’;*xyz per ricercare tutte le stringhe di 3 o più caratteri che finiscono con i caratteri ‘xyz’;*xyz* per ricercare tutte le stringhe di 3 o più caratteri che contengono i caratteri ‘xyz’;?xyz controlla le stringhe di 4 caratteri che finiscono con xyz.

Quando queste espressioni vengono inserite nella riga dei Criteri dello schema della query, ilprogramma Access aggiunge automaticamente l’operatore Like. Per esempio,

Like “Ros*”

nella riga dei Criteri del campo Nome, ricerca tutti nomi che iniziano per Ros (Rosi, Rossi, Rossini,Rosti, Rosa, ecc.). Analogamente:

Like “R[ai]s*” identifica Raso, Riso, Rasente, Risoluto, ma non Rosoni;Like “R[!i]s?” identifica Raso, Reso, Roso (nomi di 4 caratteri), ma non Ristorante, Riso, Risaia;Like “[A-M]*” identifica tutti i nomi che iniziano con un carattere compreso da A a M.

Page 40: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 177© Istituto Italiano Edizioni Atlas

ESEMPIO 3

I caratteri jolly possono essere utilizzati anche per costruire query parametriche. Per esempio, perricercare tutti i brani che contengono una sequenza di caratteri scelta dall’utente al momentodell’esecuzione della query, si può impostare nella riga Criteri del campo TitoloBrano il seguentecriterio:

Like “*” & [Il titolo deve contenere] & “*”

Se, in risposta alla richiesta del sistema, l’utente digita la sequenza di tre caratteri “are”, vengonoselezionati i due titoli: “Are you wanting a ship” e “You are a liar”.

Per ulteriori informazioni ed esempi si suggerisce l’uso della Guida in linea ricercando: “caratterijolly” oppure “esempi di criteri di query”.

Formule nelle query e campi calcolati

Dati gli articoli di un magazzino, visualizzare, di ogni articolo, il valore complessivo.

Gli articoli a magazzino sono descritti nella tabella Inventario di schema:

Inventario (CodiceArticolo, Descrizione, Quantità, PrezzoUnitario)

Si vuole realizzare un’interrogazione per visualizzare, di ogni articolo, il valore complessivoin magazzino. In pratica si deve calcolare il prodotto tra PrezzoUnitario e Quantità e visualizzarloin una colonna di nome opportuno.Creiamo una nuova query e, in Visualizzazione Struttura, dopo aver aggiunto la tabella Inven-tario, inseriamo nella griglia della query i campi da visualizzare (CodiceArticolo e Descrizione).

Per realizzare una colonna con il valore a magazzino, è sufficiente inserire l’espressione cheproduce il valore cercato in corrispondenza della riga Campo in una nuova posizione della QBE.

Bisogna ricordare che i nomi dei campi, per evitare ambiguità, vanno scritti tra una coppiadi parentesi quadre [ ], che rappresentano il qualificatore dei nomi in Access. In pratica, nellamaggior parte dei casi, le formule sono interpretate correttamente nelle formule ancheomettendo i qualificatori dei nomi che, in tale caso, sono aggiunti dal sistema stesso.L’espressione da digitare è la seguente:

[Quantità] * [PrezzoUnitario]

Alla nuova colonna viene assegnato automaticamente il nome Espr1 e, dopo l’immissionedella formula, il contenuto di Campo è il seguente:

Espr1: [Quantità] * [PrezzoUnitario]

L’esecuzione della query produce la visualizzazione di una tabella con tre colonne di nome:CodiceArticolo, Descrizione ed Espr1. Per migliorare l’output generato è sufficiente modificareil contenuto di Campo della terza colonna, sostituendo a Espr1 un nome appropriato, peresempio, Valore:

Valore: [Quantità] * [PrezzoUnitario]

Per ottenere il medesimo risultato, si può evitare di costruire una query, aggiungendo uncampo calcolato allo schema della tabella Inventario. Quando si definisce un campo di tipoCalcolato bisogna inserire una formula che serve per calcolare il valore del campo in unariga, di nome Espressione, che appare nella scheda Generale che si usa per definire leproprietà del campo.

Page 41: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS178 © Istituto Italiano Edizioni Atlas

ESEMPIO 4

Nelle formule si possono usare le quattro operazioni, l’elevamento a potenza (simbolo ^),l’operazione di modulo (resto della divisione) e un notevole numero di funzioni predefinite.

Per utilizzarle e, più in generale, per scrivere le espressioni, è consigliabile fare uso delGeneratore di espressioni, attivabile facendo clic con il tasto destro nella riga dove si deveinserire la formula e selezionando successivamente l’opzione tra quelle proposte.Con il generatore è possibile costruire espressioni inserendo nomi di campi, operatori efunzioni selezionabili da una vasta scelta.

Trasformare una durata in minuti, espressa come valore decimale, nella forma tradizio-nale minuti:secondi.

Occorre trasformare, per esempio, il valore 4,75 nel formato 4:45. L’espressione di calcoloutilizzata, scritta nella finestra del Generatore di espressioni, è la seguente:

Int(DurataBrano) & “:” & ( DurataBrano – Int(DurataBrano) ) * 60

L’espressione è stata digitata con i nomi dei campi scritti nella sintassi abituale (senza paren-tesi quadre e senza precisare il nome della tabella da cui provengono), per renderne piùsemplice la lettura: Access controlla comunque la correttezza dei nomi usati nella formula, eli racchiude tra parentesi quadre.

Campo DurataSecondi,aggiunto alla tabella Brani,per visualizzare la durata diun brano in secondi.

Campi della tabellaInventario.

Doppio clic sul nomedel campo che si vuoleinserire nella finestradell’espressione.

Formula dicalcolo.

Page 42: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 179© Istituto Italiano Edizioni Atlas

Nell’espressione si fa uso, tra le funzioni matematiche, della funzione Int(), che produce laparte intera di un numero e dell’operatore & che serve a concatenare le stringhe. L’espres-sione è composta da tre sottostringhe: minuti, “:”, secondi.– minuti è la parte intera della durata;– “:” è il carattere di separazione tra minuti e secondi;– secondi è la parte frazionaria della durata: ( Durata – Int(Durata) ), moltiplicata per 60 per

trasformarla in secondi.

Si osservi che, nel valutare l’espressione per il calcolo della durata, Access riesce a concatenarecorrettamente sia valori numerici che valori di tipo testo.

Per evitare errori di digitazione o di sintassi quando si imposta un calcolo, è bene utilizzareil Generatore di espressioni e abituarsi a ricercare, tra le funzioni predefinite di Access, la piùadatta per le specifiche esigenze del calcolo da programmare.

9 Importazione, esportazione e collegamento dati

È possibile trasferire dati tra un database Access e altre applicazioni quali elaboratori di testi, foglidi calcolo, altri database Access o database realizzati con altri DBMS. I trasferimenti possonoavvenire importando dati da un differente formato oppure esportandoli in un differente forma-to, per renderli accessibili a un’altra applicazione. In entrambi i casi vengono creati nuovi archivinei formati appropriati.Per esempio, esportando la tabella Artisti nel formato di Excel, viene generato il foglio Artisti.xlse, importando dati in un database di Access da un foglio Excel, viene creata una tabella con unnome opportuno. Dopo le operazioni di importazione o esportazione esistono due archividistinti sui quali si può operare in modo indipendente. Quindi, per esempio, una variazione nellatabella Artisti del database non influenza il contenuto di Artisti.xls.Invece di importare dati da una sorgente esterna, si possono collegare dati esterni al database.In questo caso non viene creato un nuovo archivio, ma esiste un unico archivio modificabile daentrambe le applicazioni. Le variazioni apportate in un ambiente si riflettono immediatamentenell’altro. Va precisato che, in questo caso, è consentito l’accesso alla tabella collegata permodificare e aggiungere record, ma non per cancellarli.

Operatore & perla concatenazionedi stringhe.

Clic sul nomedella funzione peraprire la guida inlinea, in modalitàcontestuale, conle informazionidettagliate edesempi sullafunzione.

Funzione Int(),che produce laparte intera diun numero.

Scegliendo la funzioneInt, compare unsuggerimento con lasintassi della funzionee un breve commentoche ne illustra lefunzionalità.

Page 43: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS180 © Istituto Italiano Edizioni Atlas

Esportare la tabella Artisti di CollezioneMusicale in differenti formati: come foglio diExcel e in differenti modalità di file di testo.

Per esportare dati da una tabella (o da una query):

1. Nel riquadro di spostamento visualizzare l’elenco delle Tabelle (o delle Query) del databasee scegliere la tabella da esportare (Artisti).

2. Nella scheda Dati esterni della barra multifunzione clic sul pulsante con il tipo di espor-

tazione desiderata, Excel oppure File di testo nel gruppo Esporta.

3. Il programma di esportazione permette di scegliere tra due formati di file di testo: con campiseparati da un delimitatore (si veda Artisti.csv in figura), oppure con campi a larghezza fissa(si veda Artisti.txt in figura) e, in una successiva finestra, richiede di precisare il carattere daadottare come separatore dei campi e il qualificatore di testo. I dati di una tabella o di unaquery possono essere esportati anche in un file di testo formattato, come nel caso diArtisti1.txt in figura. Si noti però che, mentre i dati esportati nelle prime due modalitàpossono essere importati in una tabella di Access (o di un altro DBMS), i dati esportati inmodo formattato non possono servire come sorgente dei dati per successive importazioni.

4. Alla fine della procedura il file di testo viene creato nella directory scelta, con il nome precisato.

La procedura per esportare i dati in Excel richiede di precisare, oltre al formato dei dati, soloil nome del file e della directory nella quale salvare il file esportato.Le figure di questa pagina e della successiva mostrano il risultato di quattro differentiesportazioni di Artisti: con delimitatori, con campi a dimensione fissa, come testo formattato,oltre ad Artisti esportato come foglio dati di Excel.

ESERCIZIO GUIDATOAPPLICA

Page 44: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 181© Istituto Italiano Edizioni Atlas

I file di testo con delimitatori sono normalmente indicati con la sigla CSV (Comma SeparatedValues).

Per importare e collegare dati, dalla scheda Dati esterni della barra multifunzione, occorre fareclic sul pulsante con l’origine dei dati desiderata nel gruppo Importa e collega, per esempiosull’icona con Excel. Si apre una finestra di dialogo nella quale si precisa il nome del documentocon i dati da importare e se i dati debbano essere importati o collegati a una tabella del database.La procedura di importazione prosegue attraverso diverse finestre per definire il nome dellecolonne e del formato dei dati nella tabella Access, con la possibilità di escludere campi dall’im-portazione e di definire la chiave primaria della tabella.

Prima pagina della proceduraper la creazione guidata di uncollegamento tra una tabellaExcel (Artisti.xls) e unatabella di Access.

Page 45: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS182 © Istituto Italiano Edizioni Atlas

Avendo scelto di importare i dati in una tabella collegata di nome ArtistiNew, nel riquadro dispostamento, accanto al nome della tabella collegata appare un’icona che evidenzia il collega-mento al file e l’applicativo che ha originato la tabella.

Al termine delle operazioni di importazione, Access offre l’opzione di salvare i passaggi eseguitiper importare i dati. In questo modo è possibile ripetere l’importazione in modo veloce senzadover utilizzare la procedura di importazione guidata. Questa opzione, che è disponibile ancheper le esportazioni, è molto utile nel caso di importazioni od esportazioni periodiche dei mede-simi dati.

In questi casi l’importazione e l’esportazione di dati richiedono pochi passaggi: si fa clic sulpulsante Importazioni salvate (o Esportazioni salvate) nella scheda Dati esterni della barramultifunzione. Si apre la finestra Gestisci attività dati, mostrata in figura, con l’elenco delleimportazioni (o delle esportazioni) salvate. La procedura scelta viene eseguita facendo clic sulbottone Esegui posto nella parte inferiore sinistra della finestra.

10 Oggetti multimediali in una base di dati

Tra i tipi di dati utilizzabili per un campo di una tabella di Access si può selezionare il tipoOggetto OLE, per memorizzare motivi musicali, filmati, immagini, documenti di Word, fogli diExcel. Gli oggetti OLE possono essere collegati o incorporati.

Un campo di tipo Oggetto OLE viene definito scegliendo il tipo desiderato dall’elenco propostonella colonna Tipo dato nella Visualizzazione Struttura della tabella.

Per inserire un nuovo oggetto in una riga della tabella in corrispondenza del campo di tipoOggetto OLE, occorre aprire la tabella in Visualizzazione Foglio Dati, fare clic con il tasto destronel campo e scegliere Inserisci oggetto: l’oggetto può essere creato con il Lettore multimediale diWindows oppure prelevato da un file contenente un’immagine o un oggetto multimediale giàregistrati su disco.

Successivamente gli oggetti multimediali, inseriti nella tabella, possono essere riprodotti inVisualizzazione Foglio dati, facendo doppio clic sul campo di tipo Oggetto OLE.

Se invece si utilizza una maschera per presentare i dati contenuti nella tabella, occorre faredoppio clic sull’icona che si trova all’interno della maschera e che rappresenta l’oggettomultimediale.

ESERCIZI da 23 a 28 pag. 198 e da 41 a 54 pag. 199-200

Page 46: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 183© Istituto Italiano Edizioni Atlas

11 Aggiornamento dinamico di query e tabelle, viste logiche

Le maschere sono utilizzate per facilitare l’accesso ai dati da parte dell’utente finale. Attraversouna maschera l’utente può modificare, inserire o cancellare le righe delle tabelle su cui lemaschere sono definite.È importante notare che, se la maschera è definita su una query, le modifiche dei dati, eseguiteutilizzando una maschera, aggiornano non solo i dati della query, ma anche le tabelle di base sucui la query è stata definita; viceversa qualsiasi modifica apportata ai dati contenuti nelle tabelledi base aggiorna dinamicamente i dati delle query e anche l’eventuale maschera che presentaall’utente i dati aggiornati.

Nell’interazione tra tabelle, query e maschere ogni cambiamento nei dati di una o più tabelle siriflette sempre sui dati delle query o delle maschere che le utilizzano.

Si noti bene, però, che il trasferimento degli aggiornamenti ai dati di maschere e query verso letabelle avviene solo se le query e/o le maschere non contengono campi ottenuti da raggruppa-menti, funzioni di aggregazione o calcoli. Se in una query (o in una maschera) ci sono dati derivatida una funzione di aggregazione o da calcoli, Access non permette di modificare i dati dellaquery (o della maschera) perché sarebbe impossibile aggiornare di conseguenza i dati nelletabelle alla base della query (o della maschera).

Per esempio, se in una query c’è il campo Totale, basato sui valori delle colonne Quantità e Prezzodi una tabella, definito come: Totale = Quantità * Prezzo, sarebbe impossibile trasferire unavariazione di Totale nelle corrispondenti variazioni di Quantità e Prezzo.

Nei capitoli precedenti sono state introdotte le viste logiche come tabelle virtuali costruitedinamicamente a partire da tabelle reali per estrarre da queste i dati di interesse per l’utente dispecifiche applicazioni. In tal senso le viste sono state definite anche come finestre dinamichesulle tabelle del database, in quanto ogni modifica ai dati sulla tabella primaria si riflette sulla vistae viceversa. Le precedenti osservazioni sull’interazione tra query e tabelle sottostanti ci permet-tono di concludere che una query è, per Access, la concreta rappresentazione di una vista logica.

Query basate su query

Le viste logiche sono state presentate come la visione del database da parte dell’utente. Inquesto contesto la vista logica, cioè la query, permette di mostrare all’utente del database solie tutti i dati che gli servono, senza che si debba preoccupare di informazioni che non sonorilevanti per il proprio lavoro, con notevoli vantaggi in termini di semplicità d’uso dei dati,maggiore sicurezza e riservatezza nella loro gestione.La possibilità di costruire interrogazioni sia su tabelle che su query suggerisce un’ulteriorevisione della query. In questa ottica una query rappresenta uno strumento concettuale persemplificare la costruzione di interrogazioni.Per risolvere alcune interrogazioni, spesso, si avrebbe bisogno di una tabella con i datiorganizzati in un certo modo. Se tale tabella è disponibile il problema è risolto; se la tabellanon c’è, si può costruire, mediante una query, una tabella virtuale con i dati necessari.Questo approccio, spesso utile, è a volte indispensabile per costruire interrogazioni chesarebbero impossibili da realizzare partendo direttamente delle tabelle del database.

Page 47: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS184 © Istituto Italiano Edizioni Atlas

Preparare un elenco dello spazio ancora libero sui CD-R o sui CD-RW della collezionemusicale.

Le informazioni necessarie si trovano nelle tabelle Brani e Registrazioni del database:

Registrazioni (IDRegistrazione, TitoloAlbum, EtichettaAlbum, TipoAlbum, NumeroBrani,DurataMassima, Capacità, Note).

Brani (IDBrano, TitoloBrano, Genere, DurataBrano, Dimensione, Posizione, Note, IDArtista,IDRegistrazione)

Ricordiamo che per le registrazioni su CD scrivibile o su CD riscrivibile nella tabella Registrazionicompare la capacità del supporto e che, per ogni brano inserito nella corrispondente tabella,viene registrato lo spazio occupato. Il problema è semplice da risolvere avendo a disposizioneuna tabella che, per ogni registrazione su CD-R o CD-RW, contiene nel campo SpazioOccupatol’informazione relativa allo spazio complessivamente occupato dai brani di quella registrazione.In tale caso basta costruire un’interrogazione che, per ogni registrazione interessata, calcolila differenza tra il campo Capacità della tabella Registrazioni e il campo SpazioOccupato.

Una tabella virtuale con l’informazione dello spazio complessivamente occupato dai brani,per tutte le registrazioni di un certo tipo, è prodotta dalla query con raggruppamento eformule riportata nella figura precedente.I dati utilizzati nella query provengono dalle due tabelle Brani e Registrazioni: il campoTipoAlbum di Registrazioni serve per selezionare le sole registrazioni collocate sul tipo di CDcercato, mentre i campi IDregistrazione e Dimensione di Brani sono usati per costruire, perogni registrazione selezionata, lo spazio complessivamente occupato dai brani.La query viene salvata con il nome SpazioOccupatoSuCd. Lo spazio libero si può alloracalcolare, a partire dalla tabella Registrazioni e dalla query SpazioOccupatoSuCD.L’interrogazione per calcolare lo spazio libero è mostrata nella figura della pagina seguentedove, nella finestra Zoom, si vede la formula, scritta con il generatore di espressioni, che èinserita nella riga Campo della QBE SpazioLiberoSuCD.

ESEMPIO 5

Page 48: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 185© Istituto Italiano Edizioni Atlas

ESEMPIO 6

Va precisato che non sarebbe stato possibile ottenere l’elenco prodotto da questa interroga-zione direttamente dalle tabelle del database.È impossibile, infatti, aggiungere nella query SpazioOccupatosuCD un altro campo doveinserire una formula che usi, come argomento, il campo con la somma dello spazio occupatodai brani.

12 Esempi di query sul database CollezioneMusicale

Riportiamo, per comodità di lettura, lo schema delle tabelle del database CollezioneMusicale.

Artisti (IDArtista, Nome, Genere, Note)Registrazioni (IDRegistrazione, TitoloAlbum, EtichettaAlbum, TipoAlbum, NumeroBrani,

DurataMassima, Capacità, Note)Brani (IDBrano, TitoloBrano, Genere, DurataBrano, Dimensione, Posizione, Note, IDArtista,

IDRegistrazione).

Elencare i brani eseguiti da un artista il cui nome è scelto al momento dell’interroga-zione. L’elenco deve contenere: titolo e genere del brano, identificatore della registra-zione e posizione nella registrazione.

Tutte le informazioni necessarie sono contenute nelle due tabelle Artisti e Brani tra le qualiè definita un’associazione uno a molti. Per generare le informazioni necessarie si costruisceuna query parametrica che, dopo avere selezionato l’artista scelto, congiunge le due tabelleper abbinare all’artista i brani eseguiti e visualizza i soli campi richiesti. La sequenza dioperazioni relazionali che produce le informazioni richieste è la seguente:

1. σP Artisti Temp1 = Selezione di Artisti per Nome = [Quale Artista?]2. Temp1PK BraniFK Temp2 = Congiunzione di Temp1 e Brani su IDArtista3. ΠL Temp2 Proiezione di Temp2 su TitoloBrano, Brani.Genere, IDRegistrazione,

Posizione.

Page 49: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS186 © Istituto Italiano Edizioni Atlas

Per realizzare questa interrogazione in Access bisogna inserire nella QBE le due tabelle Artistie Brani. I campi della griglia della query devono essere compilati nel seguente modo:

Elencare i brani contenuti in una registrazione di cui è noto il nome, con l’artista cheesegue il brano. L’elenco deve contenere: titolo e genere musicale del brano, oltre alnome dell’artista che lo esegue.

Le informazioni necessarie sono distribuite nelle tabelle Artisti, Brani e Registrazioni tra lequali sono definite due associazioni uno a molti. Per generare le informazioni richieste,bisogna selezionare la riga di Registrazioni che corrisponde a un dato titolo e, successiva-mente, congiungerla con le righe di Brani che hanno lo stesso IDRegistrazione. Le righe cosìcostruite vengono poi congiunte con la tabella Artisti per affiancare a ogni brano le informa-zioni dell’artista che lo esegue. Una proiezione finale visualizza i soli campi richiesti. Lasequenza di operazioni relazionali necessarie è la seguente:

1. σP Registrazioni Temp1 = Selezione di Registrazioni per TitoloAlbum = [Quale Album?]2. Temp1PK BraniFK Temp2 = Congiunzione di Temp1 e Brani su IDRegistrazione3. Temp2FK ArtistiPK Temp3 = Congiunzione di Temp2 e Artisti su IDArtista4. ΠL Temp3 Proiezione di Temp3 su TitoloBrano, Brani.Genere, Nome.

Per realizzare questa interrogazione in Access bisogna inserire nella QBE le tre tabelle Artisti,Brani e Registrazioni. I campi della griglia della query devono essere compilati nel seguentemodo:

Progetto 14

Elencare i brani di genere musicale differente da quello praticato abitualmente dall’ar-tista che lo esegue. L’elenco deve contenere: titolo e genere musicale del brano, nomee genere musicale praticato dall’artista che lo esegue.

Le informazioni necessarie sono tutte contenute nelle due tabelle Artisti e Brani. La congiun-zione di queste tabelle sul campo IDArtista produce una tabella che affianca alle informazionidi ogni brano tutte le informazioni sull’artista che lo esegue.Bisogna poi selezionare le sole righe con valore differente nei campi Genere di Artisti e Branie, quindi, proiettare il risultato sui campi richiesti.

1. ArtistiPK BraniFK Temp1 = Congiunzione di Artisti e Brani su IDArtista2. σP Temp1 Temp2 = Selezione di Temp1 per Artisti.Genere <> Brani.Genere3. ΠL Temp2 Proiezione di Temp2 su TitoloBrano, Brani.Genere, Nome,

Artisti.Genere.

ESEMPIO 7

ESEMPIO 8

Page 50: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 187© Istituto Italiano Edizioni Atlas

Per realizzare questa interrogazione in Access bisogna inserire nella QBE le due tabelle Artistie Brani. I campi della griglia della query devono essere compilati nel seguente modo:

Personalizzazione di maschere in Visualizzazione Struttura

Nei paragrafi precedenti abbiamo imparato a costruire maschere con il generatore di ma-schere. Non sempre il risultato prodotto dai generatori soddisfa appieno le esigenze del-l’utente e si desidera modificare la struttura della maschera, sia per intervenire sul formatodi presentazione dei dati, sia per poter inserire o eliminare alcuni dati dalla maschera. Per farequesto Access, nella visualizzazione Layout e nella visualizzazione Struttura, mette a dispo-sizione un insieme di strumenti utilizzabili per la modifica della struttura di una maschera. Lavisualizzazione Layout consente di modificare una maschera mentre è in esecuzione, per cuiè immediato controllare l’effetto dei cambiamenti apportati alla maschera. La visualizzazioneStruttura, che opera mentre la maschera non è in esecuzione, permette però di modificarela struttura della maschera in modo più dettagliato, perché agisce su tutte le parti checompongono la maschera, comprese le intestazioni e i piè di pagina.

Consideriamo la maschera Brani ottenuta con il generatore di maschere, a partire dallatabella Brani, con i soli campi IDBrano, TitoloBrano, Genere, DurataBrano, IDArtista.

Icone per inserirenella mascheraelementi grafici(controlli) utilialla suapersonalizzazione.

Etichetta Casella di testo

Maschera inVisualizzazionestruttura.

Page 51: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS188 © Istituto Italiano Edizioni Atlas

I controlli sono visualizzati direttamente nella scheda Progettazione della barra multifunzioneoppure, se la dimensione della barra è ridotta, sono attivabili facendo clic sul pulsanteControlli come è mostrato nella figura della pagina precedente.Si osservi che, per ciascun campo, l’area denominata Casella di testo, dove sono visualizzatii valori estratti dal database, contiene il nome del campo trattato, mentre l’area di nomeEtichetta contiene la descrizione del campo; il generatore di maschere attribuisce il medesi-mo identificatore sia all’etichetta che alla casella di testo.

Si vogliono apportare alla maschera le seguenti modifiche:1. Abbassare l’etichetta e la casella di testo abbinate a IDArtista per fare spazio, nella maschera,

a nuovi controlli.2. Inserire un nuovo controllo per visualizzare il campo Posizione non ancora inserito nella

maschera.3. Inserire un nuovo controllo nel quale si visualizza la durata del brano arrotondata al minuto.4. Aggiungere una casella combinata per inserire il codice dell’artista che esegue il brano

scegliendolo da un elenco di nomi degli artisti, estratto dalla tabella Artisti.

1. Spostare e ridimensionare i controlli

Per selezionare un controllo, per esempio una casella di testo, clic su di esso. Per selezionarepiù controlli, tenere premuto sulla tastiera il tasto Shift (Maiuscolo) quando si fa clic su ognicontrollo.Per cambiare le dimensioni della casella di testo, clic sulla casella e poi trascinare il puntatoredel mouse su uno dei quadratini colorati del bordo dellacasella (il mouse assume la forma della doppia freccia).

Dopo aver selezionato un controllo, portando il mouse sul suo bordo colorato, il puntatoreassume la forma di una freccia con quattro punte ad indicare che il controllo può esseretrascinato in ogni direzione: è infatti possibile spostarecontemporaneamente casella di testo ed etichetta di descri-zione trascinandole col mouse.

In alternativa lo spostamento si può eseguire con i tasti freccia: ↓, →, ↑, ←.Se il mouse è posizionato sul piccolo quadrato grigio nell’angolo sinistro in alto della caselladi testo (o della etichetta), il puntatore si trasforma comesopra indicato ed è possibile spostare per trascinamentosolo la casella di testo (o l’etichetta).

Se il quadrato grigio in alto a sinistra non viene visualizzato: in Visualizzazione Struttura, nellascheda Disponi di Strumenti struttura maschera, clic su Rimuovi layout dopo aver sele-zionato il controllo o un gruppo di controlli.

2. Inserire un nuovo controllo

Clic sul pulsante Aggiungi campi esistenti nellascheda Progettazione per visualizzare l’elenco ditutti i campi nel record di origine. Per creare unacasella di testo in cui vengono visualizzati i dati di un campo,clic su una voce dell’elenco (Posizione) e trascinarla nellaposizione desiderata all’interno della maschera.

Page 52: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 189© Istituto Italiano Edizioni Atlas

3. Aggiungere un controllo con un campo calcolato

Utilizzando i pulsanti dei diversi controlli nella scheda Pro-gettazione (o facendo clic sul pulsante Controlli), è possibileaggiungere controlli, etichette e pulsanti di comando. Sele-zionare tra i controlli una Casella di testo facendo clic sul-l’icona . Portare il puntatore del mouse nella posizionedesiderata della maschera per dimensionare la casella di te-sto secondo le modalità descritte al precedente punto 1 epoi, dopo avere evidenziato la sola etichetta del controllo conun clic, toglierla dalla maschera premendo il tasto Canc.Dopo aver selezionato la casella di testo, clic sul pulsanteFinestra delle proprietà della barra multifunzione (oppurepremere il tasto F4). Nella finestra che si apre, le proprietàdella scheda Formato permettono di modificare qualsiasicaratteristica della presentazione dei dati del controllo, men-tre le proprietà della scheda Dati definiscono l’origine deivalori che vengono visualizzati.

È opportuno che la formula che definisce il valore da visua-lizzare nel controllo sia scritta con il Generatore di espres-sioni, attivato facendo clic sui tre puntini nella riga Originecontrollo. Alla proprietà Bloccato è associato il valore Sì, percui il contenuto della casella non sarà modificabile.

Page 53: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS190 © Istituto Italiano Edizioni Atlas

4. Aggiungere una casella combinata

Per inserire una casella combinata nella maschera si fa clic sul pulsante Controlli, assicuran-dosi che lo strumento Usa creazioni guidate Controllo sia selezionato. A questo punto sideve fare clic sul controllo che si desidera creare ( per la Casella combinata) e un altro clicnel punto della maschera dove si vuole inserire il controllo desiderato. La successiva Crea-zione guidata Casella combinata permette di definire il valore IDArtista in base al valore diNome visualizzato in un’apposita casella.

Tra i controlli è disponibile anche uno strumento per la costruzione di sottomascheremediante una Creazione guidata Sottomaschera. Supponiamo, per esempio, di voler rea-lizzare una sottomaschera per visualizzare tutti i dati dell’artista associato al brano; bisognaallora fare clic, tra i controlli, sull’icona Sottomaschera e con il mouse tracciare sullamaschera l’area dove deve essere collocata la sottomaschera. La successiva Creazione gui-data Sottomaschera permette di scegliere la sorgente dei dati della sottomaschera e distabilire l’associazione tra un dato della maschera e la sottomaschera.

Le modifiche da apportare alla maschera sono terminate. La sua visualizzazione rivela peròche l’ordine di tabulazione (cioè la sequenza di campi toccati dal cursore quando si premeil tasto di tabulazione) non rispetta la disposizione delle caselle sulla maschera, in quanto lecaselle inserite con gli ultimi aggiornamenti sono attivate dopo le altre, indipendentementedalla loro collocazione nella maschera. L’ordine di tabulazione può essere modifi-cato, con la maschera in Visualizzazione Struttura, facendo clic sul pulsante Ordinedi tabulazione della scheda Progettazione, per visualizzare la finestra di dialogoin figura.

Page 54: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 191© Istituto Italiano Edizioni Atlas

6. Pubblicazione dei dati sul Web

CONTENUTI DIGITALI INTEGRATIVI

Nella finestra, trascinando i nomi nell’elenco delle caselle, si può definire un ordine ditabulazione personalizzato.È possibile anche modificare l’aspetto di una maschera o di una sottomaschera, comprese lesue dimensioni e lo spazio riservato ai dati, modificando la scheda Formato delle proprietàdella maschera.Per selezionare una maschera (o sottomaschera) si deve fare clic nel quadratino grigioall’incrocio tra i righelli orizzontale e verticale della maschera. Occorre poi fare clic sulpulsante Finestra delle Proprietà nella scheda Progettazione (oppure premere il tasto F4).Per ulteriori informazioni ed esempi si suggerisce l’uso della Guida in linea.

TEST 4.2 pag. 194 ESERCIZI da 29 a 30 pag. 198 e da 55 a 59 pag. 200-201�

Page 55: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS192 © Istituto Italiano Edizioni Atlas

Verifica delle conoscenze

Soluzioni ai quesiti di autoverifica p. 511

TEST 4.1 - Access

1. Associa a ognuno degli oggetti trattati da Access la corrispondente definizione:a. Tabella 1. Lo strumento per estrarre i dati secondo i criteri scelti dall’utente.b. Query 2. Oggetto per presentare i dati su elenchi cartacei.c. Maschera 3. Lo schema in base al quale sono organizzati i dati in Access.d. Report 4. Lo strumento per mostrare e permettere l’aggiornamento dei dati

mediante finestre.

2. Per definire una tabella bisogna descrivere la struttura della tabella specificando obbligatoriamenteper ogni colonna:

a. Il nome della colonna

b. Se i dati della colonna devono essere indicizzati

c. La relazione tra la chiave primaria e i campi di altre tabelle

d. Il tipo di dato

3. Abbinare a ogni tipo di dato la corretta dimensione in byte scegliendo tra quelle elencate alla finedella domanda:a. Intero lungob. Precisione singolac. Precisione doppiad. Numerazione Automatica

1 byte, 2 byte, 4 byte, 8 byte

4. Per definire una nuova tabella, dopo aver selezionato la scheda Crea nella barra multifunzione, qualipulsanti si possono scegliere?a. Tabellab. Struttura queryc. Struttura tabellad. Creazione guidata Query

Nelle domande successive si farà riferimento a un database con le due tabelle di schema:

Anagrafica (Codice, Nome, Cognome, Indirizzo)

Movimenti (Numero, Causale, Data, Importo, Codice)Tra le tabelle Anagrafica e Movimenti è stata definita un’associazione uno a molti mediante il campo

Codice che è chiave primaria di Anagrafica e chiave esterna di Movimenti. Nella tabella Movimenti il

campo Causale permette di distinguere i movimenti tra: versamenti (“Vers”), prelievi (“Prel”), pagamento

stipendi (“Stip”) e pagamento assegni (“Asse”).

5. Quale tra le seguenti è la modalità per rendere più semplice e affidabile l’inserimento della causale diun movimento?a. Abbinare al campo una casella di riepilogo che permetta di introdurre il valore di causale sce-

gliendolo da un elenco.b. Inserire i dati con estrema attenzione.c. Inserire i valori possibili per la causale nella colonna Descrizione del campo.d. Elencare i record introdotti e controllarli dopo averli inseriti.

Page 56: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 193© Istituto Italiano Edizioni Atlas

6. Se tra le tabelle Anagrafica e Movimenti è stata impostata l’integrità referenziale con eliminazionedei record correlati a catena e si vuole eliminare una persona dalla tabella Anagrafica:a. Bisogna modificare le proprietà dell’associazione ed eliminare l’integrità referenziale.b. L’operazione di cancellazione del record anagrafico viene eseguita solo se non ci sono movimenti

collegati.c. L’operazione di cancellazione di un record nella tabella a uno non è mai ammessa.d. La cancellazione del record anagrafico viene eseguita, ma vengono cancellati tutti i movimenti

collegati.

7. Associa a ogni riga della griglia della finestra QBE la descrizione del suo contenuto:a. Campo 1. Indicazione se il campo deve essere visualizzato nella tabella risultato.b. Ordinamento 2. Valore per i criteri di selezione.c. Mostra 3. Nome della colonna da presentare nella tabella risultato.d. Criteri 4. Indicazione se il campo è chiave di ordinamento crescente o decrescente.

8. A quale operazione relazionale corrisponde la seguente query su Tabella?

Campo: Tabella.* Campo1

Tabella: Tabella Tabella

Ordinamento:

Mostra:

Criteri: = valore

Oppure:

a. La proiezione di Tabella su Campo1.b. Nessuna, viene visualizzata l’intera tabella.c. La selezione di Tabella per Campo1 = valore.d. Errore: Tabella.* non è un nome legale per Campo.

9. Per produrre l’elenco dei movimenti di un soggetto di cui si conosce il codice in Anagrafica, dopo averinserito le due tabelle Anagrafica e Movimenti sulla finestra della QBE:a. Bisogna trascinare il campo Codice di Anagrafica nella griglia per poter selezionare il soggetto

interessato e quindi tutti i campi di Anagrafica e Movimenti necessari.b. Bisogna trascinare tutti i campi di Anagrafica e di Movimenti.c. Bisogna trascinare tutti i campi di Movimenti e selezionare il codice voluto nella riga Criteri.d. Bisogna trascinare tutti i campi di Anagrafica e selezionare il codice voluto, al resto provvede il

sistema.

10. Quale elenco viene prodotto dalla seguente interrogazione?

Campo: Nome Cognome Indirizzo

Tabella: Anagrafica Anagrafica Anagrafica

Ordinamento: Crescente

Mostra:

Criteri: =“Firenze”

Oppure:

a. L’elenco ordinato per cognome delle persone di Firenze in anagrafica con nome, cognome e indirizzo.b. L’elenco ordinato per cognome delle persone in anagrafica con nome, cognome e indirizzo.c. L’elenco delle persone in anagrafica, della città scelta, con nome e cognome.d. L’elenco delle persone di Firenze in anagrafica con nome, cognome e indirizzo.

Page 57: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS194 © Istituto Italiano Edizioni Atlas

11. È possibile costruire un’associazione uno a uno tra Anagrafica e Movimenti?a. Sì, è sufficiente attribuire alla proprietà Indicizzato del campo Codice di Movimenti il valore

Sì (duplicati non ammessi) ma in tale caso per ogni anagrafica si potrà introdurre un solo movimento.b. Sì, basta selezionare uno a uno nella maschera Modifica relazioni.c. No, l’associazione tra Anagrafica e Movimenti è uno a molti.d. Sì, è sufficiente attribuire alla proprietà Indicizzato del campo Codice di Movimenti il valore

Sì (duplicati ammessi).

12. Quale elenco viene prodotto dalla seguente interrogazione?

Campo: Nome Cognome Numero Importo

Tabella: Anagrafica Anagrafica Movimenti Movimenti

Ordinamento:

Mostra:

Criteri: Is Null

Oppure: Is Null

a. Nome e Cognome delle persone in anagrafica alle quali non sono associati movimenti e che han-no uno o più movimenti senza importo, a condizione che il join tra le tabelle sia un join esternoopportuno.

b. Nome e Cognome delle persone in anagrafica alle quali non sono associati movimenti o che han-no uno o più movimenti senza importo, a condizione che il join tra le tabelle sia un join esternoopportuno.

c. Nome e Cognome delle persone in anagrafica alle quali non sono associati movimenti o che han-no uno o più movimenti con importo a zero, a condizione che il join tra le tabelle sia un joinesterno opportuno.

d. Nome e Cognome delle persone in anagrafica alle quali non sono associati movimenti e che han-no uno o più movimenti con importo a zero, a condizione che il join tra le tabelle sia un joinesterno opportuno.

13. Le sottomaschere sono particolarmente utili per visualizzare i dati di tabelle tra le quali esiste:a. Una relazione uno a molti (la maschera principale per i dati della tabella a uno).b. Nessuna relazione.c. Una relazione molti a molti.d. Una relazione molti a uno (la maschera principale per i dati della tabella a molti).

TEST 4.2 - Operazioni avanzate sul database

1. Quale elenco viene prodotto dalla seguente interrogazione?

Campo: Nome Cognome Causale Importo Importo

Tabella: Anagrafica Anagrafica Movimenti Movimenti Movimenti

Formula: Raggruppamento Raggruppamento Raggruppamento Conteggio Somma

Ordinamento:

Mostra:

Criteri: “Giuseppe” “Garinei” “Vers”

Oppure:

a. Una sola riga con numero e somma dei versamenti di Giuseppe Garinei.b. L’elenco dei versamenti di Giuseppe Garinei completato con numero e somma degli importi.c. L’elenco dei versamenti raggruppati per nome e cognome.d. L’elenco dei versamenti raggruppati per causale.

Page 58: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 195© Istituto Italiano Edizioni Atlas

2. Quale elenco viene prodotto dalla seguente interrogazione?

Campo: Nome Cognome Data Importo Causale

Tabella: Anagrafica Anagrafica Movimenti Movimenti Movimenti

Ordinamento:

Mostra:

Criteri: Like “A*” “Prel”

Oppure:

a. L’elenco dei prelievi delle persone con cognome che inizia per A con: nome, data e importo.b. L’elenco dei prelievi delle persone con cognome che inizia per A con: cognome, data e importo.c. L’elenco dei prelievi delle persone con cognome che inizia per A con: nome, cognome, data, im-

porto e causale.d. L’elenco dei prelievi delle persone con cognome che inizia per A con: nome, cognome, data e

importo.

3. Quale elenco viene prodotto dalla seguente interrogazione?

Campo: Nome Cognome Data Causale Espr1:[Importo]*1,1

Tabella: Anagrafica Anagrafica Movimenti Movimenti

Ordinamento:

Mostra:

Criteri: “Mario” “Rossi” >01-01-2012 =”Stip”

Oppure:

a. L’elenco dei movimenti di Mario Rossi con data, importo e causale, aumentati del 10%.b. L’elenco degli stipendi di Mario Rossi, posteriori al 2011, con data, importo e causale.c. Gli stipendi di Mario Rossi, posteriori al 2011, incrementati del 10%, con data e nuovo importo.d. L’elenco dei prelievi di Mario Rossi effettuati nel 2012, incrementati del 10%.

4. Quale delle seguenti affermazioni sono vere (V) e quali sono false (F)?

a. Non è possibile stabilire legami tra una tabella di Excel e una di Access

b. Una tabella Excel può essere importata in Access

c. Una tabella di Excel può essere solo visualizzata da Access con un collegamento

d. Una tabella di Excel può essere vista e modificata da Access con un collegamento

5. Se in una maschera basata su una query si cerca di modificare il valore contenuto nel campo Importo:

a. Non succede nulla: la maschera serve solo a visualizzare i dati prodotti dalla query.b. Viene variato il corrispondente valore nella query senza ulteriori effetti sulla tabella originale.c. La variazione si trasmette al valore del campo Importo di Movimenti.d. Il sistema non permette di modificare il valore di una casella in una maschera.

6. Per identificare il numero medio di movimenti effettuato dai soggetti di anagrafica:

a. Non c’è modo di saperlo con le query.b. Basta costruire un report con l’elenco dei movimenti per cliente e fare un calcolo.c. Basta costruire una query con raggruppamento basata sulla tabella Movimenti e usare nella riga

delle formule le funzioni di aggregazione media e conteggio.d. Bisogna costruire una query Q basata su un’altra query P. P deve essere costruita in modo da conte-

nere codice e numero di movimenti effettuati per tutti i soggetti di anagrafica.

Page 59: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS196 © Istituto Italiano Edizioni Atlas

7. Quale elenco viene prodotto dalla seguente interrogazione?

Campo: Nome Cognome Data Importo Causale

Tabella: Anagrafica Anagrafica Movimenti Movimenti Movimenti

Ordinamento:

Mostra:

Criteri: >5000 “Vers”

Oppure:

a. L’elenco dei movimenti di importo superiore a 5000, con nome, cognome, data e importo.

b. L’elenco dei versamenti, di importo superiore a 5000, con nome, cognome, data e importo.

c. L’elenco dei versamenti, di importo superiore a 5000, con nome, cognome, data, importo e causale.

d. L’elenco dei versamenti con nome, cognome, data e importo.

8. Quale elenco viene prodotto dalla seguente interrogazione?

Campo: Nome Cognome Indirizzo

Tabella: Anagrafica Anagrafica Anagrafica

Ordinamento:

Mostra:

Criteri: [Città]

Oppure:

a. L’elenco delle persone in anagrafica con nome cognome e indirizzo.

b. L’elenco delle persone in anagrafica con nome cognome.

c. L’elenco delle persone in anagrafica della città scelta con nome e cognome.

d. L’elenco delle persone in anagrafica della città scelta con nome e cognome e indirizzo.

9. Quale elenco viene prodotto dalla seguente interrogazione?

Campo: Nome Cognome Data Importo Causale

Tabella: Anagrafica Anagrafica Movimenti Movimenti Movimenti

Ordinamento:

Mostra:

Criteri: “Giacomo” “Arcangeli”

Oppure:

a. L’elenco dei movimenti di Giacomo Arcangeli, con data, importo e causale, ordinati per data.

b. L’elenco dei movimenti di Giacomo Arcangeli, con data, importo e causale.

c. L’elenco dei versamenti di Giacomo Arcangeli, con data, importo e causale.

d. L’elenco dei versamenti di Giacomo Arcangeli, con data, importo e causale, ordinati per data.

10. Gli elementi grafici che compongono la struttura di una maschera vengono detti:

a. Controlli

b. Caselle di testo

c. Etichette

d. Strumenti

Page 60: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 197© Istituto Italiano Edizioni Atlas

SVOLGIVerifica delle abilità

ESERCIZI E PROBLEMI

Negli esercizi seguenti si fa riferimento a un database per gli articoli a magazzino formato da tre tabelle.

In una prima tabella sono registrati gli articoli di magazzino:

Tabella Campo Chiave Formato

Articoli CodiceArticolo Primaria Numerico (Numerazione Automatica)

DescrizioneArticolo Carattere (30)

PrezzoAcquisto Numerico (Precisione doppia)

PrezzoVendita Numerico (Precisione doppia)

Disponibilità Numerico (Intero)

ScortaMinima Numerico (Intero)

QtàDiRiordino Numerico (Intero)

CodiceIVA Esterna Carattere (2)

Le aliquote IVA sono archiviate in una tabella del tipo:

Tabella Campo Chiave Formato

Aliquote CodiceIVA Primaria Carattere (2)

Descrizione Carattere (20)

AliquotaIVA Numerico (Intero)

Le vendite sono registrate in una terza tabella con la seguente struttura:

Tabella Campo Chiave Formato

Vendite IDVendita Primaria Numerico (Numerazione Automatica)

CodiceArticolo Esterna Numerico (Intero lungo)

DataVendita Data/ora

QtàVenduta Numerico (Intero)

CREAZIONE DEL DATABASE E DELLE TABELLE

1. Definire tali tabelle in Access.

2. Caricare almeno cinque record per tabella.

3. Rendere obbligatoria l’immissione della descrizione dell’articolo nella tabella Articoli.

4. Definire un valore di default per il CodiceIVA nella tabella Articoli.

5. Definire le relazioni tra le tabelle.

Page 61: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS198 © Istituto Italiano Edizioni Atlas

QUERY, MASCHERE E REPORT

6. Elencare tutti i dati della tabella Articoli.

7. Elencare gli articoli con CodiceArticolo e DescrizioneArticolo.

8. Elencare gli articoli con CodiceArticolo, DescrizioneArticolo, PrezzoAcquisto e PrezzoVendita.

9. Elencare gli articoli con CodiceArticolo, DescrizioneArticolo e CodiceIVA.

10. Elencare tutti i dati della tabella Aliquote.

11. Elencare tutti i dati della tabella Vendite.

12. Elencare tutti i dati della tabella Vendite ordinati per DataVendita e per CodiceArticolo.

13. Elencare gli articoli indicando il CodiceArticolo, la DescrizioneArticolo e l’AliquotaIVA a cui è soggetto.

14. Ordinare l’elenco precedente per AliquotaIVA.

15. Ordinare l’elenco precedente per AliquotaIVA e DescrizioneArticolo.

16. Elencare gli articoli ordinati per descrizione con DescrizioneArticolo, PrezzoVendita e AliquotaIVA.

17. Elencare gli articoli, con le quantità vendute e le date di vendita.

18. Ordinare l’elenco precedente per CodiceArticolo e per data di vendita.

19. Elencare gli articoli che non sono stati venduti.

20. Realizzare una maschera associata alla tabella delle aliquote IVA.

21. Costruire una maschera con sottomaschera per visualizzare gli articoli e le vendite associate.

22. Elencare i dati delle vendite in un report.

OPERAZIONI AVANZATE SUL DATABASE

23. Totale delle quantità vendute per CodiceArticolo.

24. Totale delle quantità vendute per AliquotaIVA.

25. Totale degli importi del venduto per AliquotaIVA.

26. Elencare i dati degli articoli che nella descrizione contengono la parola “vite”.

27. Elencare le vendite del secondo trimestre dell’anno in corso.

28. Esportare in Excel la tabella delle vendite.

VISTE LOGICHE E PERSONALIZZAZIONE DELLE MASCHERE

29. Trovare l’importo del venduto in un certo periodo e il numero di articoli che hanno generato vendite.

30. Costruire una maschera associata alle vendite con una casella combinata per immettere il codicearticolo mediante la descrizione dell’articolo e una casella dove si evidenzia il prezzo IVA compresa.

Page 62: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 199© Istituto Italiano Edizioni Atlas

Negli esercizi seguenti si fa riferimento al problema della registrazione dei voti scolastici. Gli studenti di

una classe compaiono nel registro di classe secondo lo schema:

Studenti (CodiceStudente, Cognome, Nome, Genere).

I voti di Informatica sono registrati con il seguente schema:

Voti (CodiceStudente, DataVerifica, Voto).

CREAZIONE DEL DATABASE E DELLE TABELLE

31. Definire in Access la struttura della tabella per archiviare i dati del registro di classe.

32. Inserire nella tabella il codice, il cognome, il nome e il genere di 15 studenti.

33. Definire la struttura della tabella per registrare i voti degli studenti.

34. Definire la proprietà Valido se per il campo Genere e per il campo Voto.

35. Tenuto conto che l’associazione tra le tabelle Studenti e Voti è di tipo uno a molti, definire la relazionetra la tabella dei voti e la tabella degli studenti, attivando l’integrità referenziale.

36. Verificare il corretto funzionamento dell’integrità referenziale cercando di inserire un voto di unostudente inesistente oppure di eliminare uno studente (avente voti associati) dal registro.

QUERY, MASCHERE E REPORT

37. Trovare gli studenti che non hanno ricevuto voti.

38. Definire la maschera associata alla tabella dei voti.

39. Utilizzare la maschera del problema 38 per inserire almeno 2 votazioni per ogni studente.

40. Preparare un report che elenchi per ciascuno studente i voti in ordine di data.

OPERAZIONI AVANZATE SUL DATABASE

41. Contare i voti di tutta la classe.

42. Contare i voti per ciascuno studente.

43. Contare il numero dei maschi e delle femmine.

44. Contare quanti maschi sono stati valutati prima di una data prefissata.

45. Calcolare quante femmine sono state valutate prima di una data prefissata.

46. Calcolare la media di tutti i voti.

47. Trovare la media dei voti di uno studente prefissato.

48. Trovare la media dei voti di ciascuno studente.

49. Trovare la media dei voti delle studentesse.

50. Trovare la media dei voti degli studenti maschi.

Page 63: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS200 © Istituto Italiano Edizioni Atlas

51. Trovare la media dei voti degli studenti il cui cognome inizia con una lettera scelta dall’utente almomento dell’esecuzione della query.

52. Dopo avere preparato un file di testo con i voti degli studenti, un record per riga, avendo cura diseparare i campi con “;”, importarli nella tabella dei voti.

53. Si deve definire una base di dati per la gestione degli abbonamenti allo stadio per una stagionecalcistica. La base di dati deve permettere di conoscere le generalità di ogni abbonato e di tenereaggiornati i posti distinguendo tra quelli per cui è stato fatto l’abbonamento e quelli ancora liberi.Inoltre i posti sono divisi per settore e in base al settore cambia il costo dell’abbonamento.Descrivere l’analisi del problema individuando entità, attributi e associazioni; disegnare il modello E/Re derivare le tabelle.Sviluppare con Access le seguenti operazioni:� definizione della maschera di aggiornamento degli abbonati;� definizione della maschera di aggiornamento del settore;� elenco in ordine alfabetico degli abbonati;� indicazione per ogni posto a sedere se libero o occupato;� report dei posti liberi e dei posti occupati suddivisi per settore;� report degli incassi per gli abbonamenti suddivisi per settore.

54. Un’azienda opera in diverse regioni del Paese, in ognuna delle quali ha molti uffici di rappresentanza.Ciascuno di questi uffici può vendere più di un prodotto tra quelli offerti dall’azienda. Si vuole costrui-re un database per controllare la distribuzione regionale delle vendite.Descrivere l’analisi del problema individuando entità, attributi e associazioni; disegnare il modello E/Re derivare le tabelle.Sviluppare in Access le operazioni per:� aggiornare l’archivio dei prodotti;� aggiornare l’archivio delle vendite;� elencare i pezzi e il relativo incasso raggruppati per prodotto;� elencare le quantità vendute dei prodotti raggruppate per data;� elencare i prodotti che non sono mai stati venduti;� determinare il valore totale delle vendite suddiviso per ufficio di rappresentanza.

VISTE LOGICHE E PERSONALIZZAZIONE DELLE MASCHERE

55. Trovare la media dei voti più alta tra le medie degli studenti maschi.

56. Costruire una maschera per l’immissione dell’elenco degli studenti. Successivamente personalizzarlacon una casella di riepilogo per l’inserimento del campo Genere.

57. Aggiungere alla maschera dell’esercizio precedente una sottomaschera collegata per l’inserimentodei voti degli studenti.

58. Creare un database per rappresentare gli esami sostenuti dagli studenti di una università.Il database è formato da quattro tabelle con i dati degli studenti iscritti, dei corsi offerti, con l’indica-zione della facoltà che li ha attivati, delle facoltà presenti nell’università e degli esami sostenuti daglistudenti:

Facoltà (CodFacoltà, NomeFacoltà, Indirizzo)Studenti (Matricola, Cognome, Nome, Indirizzo, Telefono, CodFacoltà)Corsi (CodCorso, NomeCorso, Crediti, CodFacoltà)Esami (ID, Matricola, CodCorso, Data, Voto)

Page 64: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 201© Istituto Italiano Edizioni Atlas

La tabella Studenti, con chiave Matricola, raccoglie i dati anagrafici degli studenti dell’università,tramite la chiave esterna CodFacoltà, permette di sapere a quale facoltà lo studente è iscritto.La tabella Corsi, con chiave CodCorso, raccoglie le informazioni sui corsi offerti. Ogni corso è caratte-rizzato da un certo numero di crediti ed è attivato da una facoltà, identificata mediante la chiaveesterna CodFacoltà. Uno studente per laurearsi deve conseguire un certo numero di crediti: 180 perla laurea di primo livello, conseguita la quale si può iscrivere alle lauree specialistiche. I corsi dellelauree specialistiche richiedono altri 120 crediti. Il valore del numero di crediti dipende dal corso.La tabella Facoltà con chiave CodFacoltà contiene la descrizione e l’indirizzo della facoltà.La tabella Esami, con chiave ID, serve a registrare i voti degli studenti. ID è un progressivo assegnatoautomaticamente per ogni esame registrato. Nella tabella Esami sono registrati: lo studente che hasostenuto l’esame, identificato con la chiave esterna Matricola, il corso oggetto della prova, ricono-sciuto dalla chiave esterna CodCorso, oltre alla data dell’esame e al voto conseguito. Il voto puòassumere qualsiasi valore tra 1 e 30. Un esame si intende superato se il voto è maggiore o uguale a 18.

Creare il database e le tabelle e inserire alcuni dati di prova. Sviluppare in Access le operazioni per:

� aggiornare le quattro tabelle mediante maschere;

� costruire le interrogazioni (specificando la sequenza di operazioni relazionali utilizzate), in grado difornire le seguenti informazioni:

- Elenco degli studenti che hanno superato un certo esame.

- Elenco degli studenti che hanno sostenuto un certo esame.

- Elenco degli studenti iscritti a facoltà collocate in città diverse da quella di residenza, precisandocittà di residenza, facoltà e città sede della facoltà.

- Elenco degli esami superati in un certo periodo, suddivisi per corso. L’elenco deve contenerematricola, nome e cognome dello studente, descrizione del corso, data e voto.

- Media dei voti degli esami superati da un dato studente.

- Cognome e nome degli studenti con media superiore a un voto prefissato.

- Descrizione dei corsi per i quali la media degli esami superati è maggiore di 24.

- Elenco degli studenti (con matricola, cognome e nome) che hanno superato almeno 10 esami.

- Elenco degli studenti che non hanno sostenuto esami in un certo periodo.

59. Si vuole organizzare un database per la registrazione e il controllo delle assenze degli alunni di unascuola. Descrivere l’analisi del problema individuando entità, attributi e associazioni; disegnare ilmodello E/R e derivare le tabelle.

Sviluppare in Access le operazioni per:

� aggiornare l’archivio degli alunni;

� permettere l’inserimento e la modifica delle assenze di ogni alunno con l’indicazione della durata edel motivo dell’assenza;

� ottenere, a fine periodo, il conteggio dei giorni di assenza per alunno, ordinato per alunno;

� individuare gli alunni con maggior numero di assenze;

� ottenere la lista degli alunni sempre presenti;

� inviare una breve comunicazione alla famiglia per gli alunni che hanno fatto più di un numeroprefissato di assenze;

� ottenere il conteggio dei giorni di assenza per motivazione;

� ottenere la media generale dei giorni di assenza nella scuola;

� calcolare la media dei giorni di assenza suddivisa per maschi e per femmine;

� calcolare la media dei giorni di assenza suddivisa per classe.

Page 65: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS202 © Istituto Italiano Edizioni Atlas

ACCESS

Access is a designed relational DBMS for the Microsoft Windows environment. Access providesthe user with a graphical interface to create tables, queries and it also allows the creation of formsand reports. For this reason we can define Access as an applications generator. The typical Accessdata engine for PC application is the Jet engine that stores all necessary data: tables, indexes,queries and so on in a single (.accdb) file. Indexes are based on the ISAM (Index Sequential AccessMethod) organization. (See Chapter 1, Par. 4: Organizzazione a Indici”). The Access product canalso be installed with a more powerful data engine which is compatible with the Microsoft SQLServer product. In this way it is possible to develop applications running on a PC Windowsplatform or on a clusters of multiprocessor servers operating under control of an operatingsystem of the Microsoft Windows Server family.

Customized database applications can be developed with Access by means of Access macrolanguage or the Visual Basic programming language. Access has also many programs, calledWizard, that help in the development of applications and in writing queries interacting with theuser by sessions of dialog boxes. Access greatly simplifies the implementation of a relationaldatabase due to the graphical approach in the definition of the database tables and adopting theQBE methodology in writing queries to extract data from the database.

Access QBE

Query By Example is a visual method for accessing data in a database through the use ofgraphical query templates. To show how to create a QBE query with Access let us consider theCustomers and Purchases tables with the following schema:

Customers ( CustomerID, Cname, Surname, SSN, Address, Town, ZIP )

Purchases ( ID, PurchaseDate, Article, UnitPrice, Qty, CustomerID )

The table Customers stores the information of the customers who made the purchases recordedin the table Purchases. Customers and Purchases are associated in a 1:N relationship that has beenmodelled with the foreign key Purchases.CustomerID associated with the primary key of the tableCustomers.

We want to query the database to extract the purchases made by customers who live in Londonand, for every purchase, we want to know the name of the article, the date of the purchase andthe total amount of the purchase, i.e. the product of UnitPrice and Qty.

Page 66: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 203© Istituto Italiano Edizioni Atlas

To extract the requested data with an Access QBE we choose the Create tab in the ribbon andthen, in the query group, we click the button Query Design. In the Show Table dialog box, inthe Tables tab, we double click Customers and Purchases and then we close the Show Tabledialog box. The Customers and Purchases tables appear in the graphical window of the query.Note the line connecting the CustomerID field in the Customers table with the CustomerID fieldin the Purchases table showing the relationship between the two tables and the execution of ajoin operation between them.The Access QBE is a graphical tool and with the mouse we select and drag objects in the QBEgrid to define an example of the data we want to include in the record. We fill the grid as shownin the figure. The Town field has been included in the grid to select the customers who live inLondon but it is not to be displayed and, in the line Show of the Town field, the mark has beendeselected. Note in the fourth column of the QBE grid the way to display the total amount of thepurchase: Total: [UnitPrice]*[Qty]. The requested data will be displayed in a table with threecolumns labeled as: Article, PurchaseDate and Total.

GLOSSARY

AccessRelational DBMS for the Microsoft Windows environment to develop database applicationsusing the following objects: tables, queries, forms, reports, pages, macros and modules.

Backstage viewIt contains commands and information of general use, such as commands to create, open,close, save and delete a database. The content of the Backstage view is the set of commandsof the File tab of the Ribbon.

FormsForms allow the user to view and edit (insert, delete, modify) data in graphical windows ina customized way.

MacrosSequences of actions each of which performs a specific Access operation such as opening adatabase or executing a query. Macros free users from repetitive tasks because with a singlecommand you perform many actions.

ModulesProcedures written in Visual Basic that are stored in the database.

Navigation paneThe pane on the left side of the Access window. The Navigation pane is used to organize andaccess the different objects in the database.

PagesPages are used to display the data stored in an Access database in Web format.

QBE (Query By Example)A visual method for accessing data in a database through the use of graphical query templates.

QueriesQueries allow to extract data from the database according to the criteria set by the user and,with some limitations, to add and change data in the database.

Page 67: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS204 © Istituto Italiano Edizioni Atlas

GLOSSARY

Quick Access Toolbar (QAT)The bar placed in the upper left of the Access Windows that allows the immediate executionof commands with a single click. The default commands in the QAT are: Save, Undo and Redobut it is possible to customize the bar to include frequently used commands.

ReportsReports are used to present data in the database in a well ordered way, in a customizedprinted format.

RibbonA set of tabs. Every tab groups buttons to execute logically related commands.

Status barA bar that can be optionally displayed and is placed at the bottom of the window. In theStatus bar are displayed status information, hints, property and buttons for windows switchingand zoom.

TablesData are stored in tables that are organized in rows (records in Access terminology) andcolumns (fields in Access terminology).

ACRONYMS

BIT Binary Digit

CSV Comma Separeted Values

DB DataBase

DBMS DataBase Management System

E/R Entity Relationship

ISAM Index Sequential Access Method

FK Foreign Key

OLE Object Linking and Embedding

PK Primary Key

PPK Partial Primary Key

QAT Quick Access Toolbar

QBE Query By Example

RDBMS Relational DataBase Management System

SQL Structured Query Language

VBA Visual Basic for Applications

Page 68: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS 205© Istituto Italiano Edizioni Atlas

QUIZ

Answer key on page 512

The following questions will address the Customers and Purchases tables with the following schema:

Customers (CustomerID, CName, Surname, SSN, Address, Town, ZIP)Purchases (ID, PurchaseDate, Article, UnitPrice, Qty, CustomerID)

1. Which of the following statements is correct with respect to the Customers, Purchases tableswhen referential integrity has been enforced with the Cascade Update Related Fields optionselected?

a. It is not possible to delete a record in the Customers table.b. Changing the value of a CustomerID field in Customers table will result in the same change in

the related CustomerID field in Purchases table.c. It is not possible to delete a record in the Purchases table.d. It is not possible to change the value of a CustomerID field in the Purchases table.

2. Which of the following statements is correct with respect to the query in the QBE grid? Field: CName Surname SSN Address Town

Table: Customers Customers Customers Customers Customers

Sort:

Show:

Criteria:

Or:

a. The query is an example of selection operation on the Customers table.b. The query is a projection operation over the CustomerID and ZIP attributes of the Customers

table.c. The query is a projection operation over some attributes of the Customers table.d. The query is illegal.

3. Which output will be generated by the query in the QBE grid? Field: CName Surname SSN UnitPrice

Table: Customers Customers Customers Purchases

Sort:

Show:

Criteria: >200

Or:

a. CName, Surname, SSN of the customers who bought one or more articles with UnitPrice > 200.b. CName, Surname, SSN of the customers who bought one article with UnitPrice > 200.c. CName, Surname, SSN, UnitPrice of the customers who bought more articles with UnitPrice > 200.d. CName, Surname, SSN, UnitPrice of the customers who bought one article with UnitPrice > 200.

Page 69: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

4. ACCESS206 © Istituto Italiano Edizioni Atlas

QUIZ

4. Which output will be generated by the query in the QBE grid? Field: CustomerID CName Surname ID

Table: Customers Customers Customers Purchases

Total: Group by Group by Group by Count

Sort:

Show:

Criteria: >=10

Or:

a. CName and Surname of the customers who did more than 10 purchases, sorted by CNameand Surname.

b. CustomerID, CName and Surname of the customers who did at least 10 purchases.c. CName and Surname of the customers who did at least 10 purchases.d. CustomerID, CName and Surname of the customers who did at least 10 purchases sorted by

CustomerID.

5. Forms are constructed as a collection of graphical objects called:

a. Graphical toolsb. Labelsc. Text boxd. Controls

Page 70: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

Conoscenze

Caratteristiche generali di un linguaggioper basi di dati.Parole chiave e sintassi del linguaggio SQL.Codifica delle operazioni relazionali.

Abilità

Applicare i principi del modello relazionale.Utilizzare i comandi del linguaggio SQL perla definizione delle tabelle, le operazioni dimanipolazione dei dati e le interrogazioni.Utilizzare funzioni e clausole per calcoli,raggruppamenti, ordinamenti e ricercheavanzate.Codificare le viste.Utilizzare i comandi per la sicurezza.

Che cosa imparerai in questo capitolo

Contenuti

Caratteristiche generali del linguaggioIdentificatori e tipi di datiLa definizione delle tabelleI comandi per la manipolazione dei datiIl comando SelectLe operazioni relazionaliLe funzioni di aggregazioneOrdinamenti e raggruppamentiLe condizioni di ricercaInterrogazioni annidateLe viste logicheI comandi per la sicurezza

5Il linguaggioSQL

Page 71: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL208 © Istituto Italiano Edizioni Atlas

1 Introduzione

Il linguaggio SQL (Structured Query Language) è nato con lo scopo di poter eseguire con facilità:

� la definizione e la creazione di un database relazionale;

� le diverse operazioni di gestione dei dati, quali l’inserimento, la cancellazione e la variazione deirecord di un archivio;

� l’interrogazione del database a scopo informativo.

Il linguaggio è basato su costrutti semplici e facili da imparare. Le sue caratteristiche, infine, sonostandardizzate in modo che un utente, cambiando DBMS, non debba apprendere un nuovolinguaggio per usare la base di dati.

Le interrogazioni che si costruiscono con SQL sono un’estensione di quelle che si realizzano consequenze di operazioni relazionali, in quanto con SQL è possibile, come nelle query di Access,effettuare calcoli, raggruppamenti e ordinamenti.Come abbiamo visto nel precedente capitolo, Access permette di costruire una query in modalitàQBE e di visualizzarne il corrispondente codice SQL. È anche possibile costruire l’interrogazionein SQL e, passando alla Visualizzazione Struttura, esaminare la versione QBE della query. Perimparare il linguaggio è molto utile passare da una modalità all’altra e osservare come una frasedi SQL viene rappresentata in QBE oppure come una query QBE, di cui si conoscono gli effetti,viene tradotta in SQL.

La conoscenza di SQL è di grande importanza anche nello sviluppo di applicazioni direttamentecon Access in modalità QBE per le seguenti ragioni:

� ci sono interrogazioni che non si riescono a sviluppare con le QBE di Access;

� come si vedrà più avanti nel capitolo, per scrivere interrogazioni annidate in modalità QBEbisogna inserire un comando SQL nella riga dei criteri;

� per inserire in una maschera una casella combinata che permetta la scelta da un elenco di datiestratti da una tabella, bisogna scrivere un’interrogazione SQL da inserire tra le proprietà dellacasella;

� scritta un’interrogazione in modalità QBE e dovendola modificare, è spesso più facile e rapidomodificare il codice SQL dell’interrogazione che la versione QBE originale.

Nel seguito del capitolo faremo riferimento al seguente database di esempio.

Un’azienda è articolata in un certo numero di dipartimenti. I dipendenti sono assegnati aidiversi dipartimenti che hanno a capo un manager responsabile della gestione.

Le entità individuate sono:

� Impiegato con le informazioni sui dipendenti: un codice identificativo (chiave primaria), nome,cognome, residenza e stipendio. Stipendio e codice identificativo sono attributi di tipo nume-rico, gli altri sono di tipo carattere.

� Dipartimento con le informazioni sui dipartimenti: un codice che individua il dipartimento (lachiave primaria), il nome del dipartimento e il suo indirizzo. Tutti gli attributi sono di tipocarattere.

Tra Impiegato e Dipartimento si individuano le due associazioni Comprendere e Coordinare comeè mostrato nel diagramma E/R in figura.

Page 72: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 209© Istituto Italiano Edizioni Atlas

Modello E/R

Il passaggio dal modello concettuale al modello relazionale porta al seguente schema di databasedove, come al solito, gli attributi sottolineati rappresentano le chiavi primarie, mentre le chiaviesterne sono indicate in corsivo.

Impiegati (ID, Nome, Cognome, Residenza, Stipendio, Dipartimento)Dipartimenti (Codice, Descrizione, Sede, Manager)

Nella seguente figura sono mostrate le tabelle Impiegati e Dipartimenti con alcuni dati di esempio.

1 Coordinare NImpiegato

ID {PK}NomeCognomeResidenzaStipendio

Dipartimento

Codice {PK}DescrizioneSede

N Comprendere 1

L’impiegato con ID = 6 lavoranel dipartimento Magazzino,diretto da Margherita Colombi.

Margherita Colombi (ID=10)è a capo sia del Magazzinoche della Produzione.

L’impiegato con ID = 5 non èassegnato ad alcun dipartimento.Si tratta di un dipendenteappena assunto e non ancoraassegnato ad alcun dipartimento.

Comprendere è un’associazione unoa molti tra Dipartimento e Impiega-to: un impiegato è compreso in unsolo dipartimento, un dipartimento ècomposto da molti impiegati.

Lettura del modelloOgni impiegato deve essere com-preso in un solo dipartimento; ognidipartimento può comprendere unoo più impiegati.

Partecipazione facoltativa perDipartimento, nell’ipotesi checi siano dipartimenti senzadipendenti assegnati.

Coordinare mette in re-lazione un dipartimentocon il dipendente che lodirige. È un’associazioneuno a molti perché undipendente può essere acapo di più di un diparti-mento, mentre un dipar-timento ha un solo ma-nager.

Lettura del modelloOgni impiegato può coordinare unoo più dipartimenti; ogni dipartimen-to deve essere coordinato da un soloimpiegato.

Partecipazionefacoltativa di Impiegatoin quanto solo alcunidipendenti sonomanager.

Dipartimento contiene il codice del dipartimento diappartenenza di un dipendente e modella l’asso-ciazione uno a molti Comprendere e Impiegato.

Manager rappresenta l’as-sociazione Coordinare econtiene il valore della chia-ve primaria del dipendenteche dirige il dipartimento.

Page 73: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL210 © Istituto Italiano Edizioni Atlas

2 Caratteristiche generali del linguaggio SQL

Il linguaggio SQL è un linguaggio non procedurale che è diventato uno standard tra i linguaggiper la gestione di database relazionali.

La natura non-procedurale (o dichiarativa) del linguaggio SQL è stata già sottolineata nelCapitolo 1: con SQL l’interrogazione al database si esegue precisando solamente dove stanno idati e cosa si vuole ottenere, cioè definendo solo quali sono l’input e l’output desiderato.

Dopo una prima versione introdotta da IBM alla fine degli anni ’70 per un prototipo di ricercadenominato System R, negli anni ’80 fu adottato con il nome attuale come linguaggio per isoftware DBMS prodotti dalla IBM (DB2 e SQL/DS).

Nel 1986 l’ANSI (American National Standards Institute) pubblicò il primo standard del linguag-gio SQL, al quale seguì lo standard dell’ISO (International Standards Organization) pubblicato nel1987. Successivamente le specifiche del linguaggio vennero precisate e ampliate: gli aggiorna-menti degli standard portarono alla versione, detta SQL2, pubblicata nel 1992 da ISO (ISO 9075)e alla successiva, indicata come SQL3, pubblicata nel 1999 da ISO come ISO 9075-2.

Oggi il linguaggio SQL viene usato in tutti i prodotti DBMS come linguaggio di comandi perl’utente della base di dati (ricordiamo Oracle, MySQL, SQLServer, Access).

Le diverse versioni del linguaggio SQL sono in genere aderenti agli standard internazionali, maci sono sicuramente delle differenze che possono essere individuate attraverso la documentazio-ne fornita con gli specifici software.

Le parole-chiave che costituiscono i comandi del linguaggio SQL possono essere usate in modointerattivo, scrivendole direttamente sulla tastiera nel momento in cui si vogliono attivare. Tutta-via in molti ambienti i comandi possono essere inviati al sistema attraverso un’interfaccia grafica,che utilizza menu, finestre e icone per guidare l’utente nella costruzione dell’istruzione SQL.

La terminologia del linguaggio SQL è analoga a quella di Access dove un database è costituitoda tabelle, che rappresentano le relazioni; gli attributi sono le colonne della tabella e i recordsono le righe della tabella.

Il linguaggio SQL consente all’utente di:

� Definire il database, la struttura delle tabelle che lo compongono, gli indici, le associazioni trale tabelle e le viste logiche. Un elenco di comandi SQL che assolvono a funzioni di DataDefinition Language (DDL) è presentato nel Paragrafo 4.

� Modificare i dati contenuti nel database, con le operazioni di inserimento, variazione e cancel-lazione, ed effettuare le interrogazioni. I comandi Insert, Update, Delete e Select, che apparten-gono al Data Manipulation Language (DML) di SQL, sono discussi nei Paragrafi 5 e 6.

� Definire gli utenti e controllare gli accessi al database. I comandi Grant e Revoke, che apparten-gono alle funzioni di Data Control Language (DCL) di SQL, sono presentati nel Paragrafo 13.

� Gestire e controllare le transazioni con un sottoinsieme del linguaggio che prende il nome diTransaction Control Language (TCL). I comandi Commit e Rollback, che sono stati introdottinel Capitolo 1, saranno approfonditi nel Capitolo 6, con esempi relativi al software MySQL.

Il linguaggio SQL fornisce inoltre gli opportuni comandi per definire in modo facile i tabulati diuscita dei risultati (report), per recuperare i dati quando accade un’interruzione del programma,un guasto nei supporti magnetici o un malfunzionamento del sistema, per definire le viste degliutenti sul database, per garantire la sicurezza dei dati nei confronti degli accessi di più utenti.

Page 74: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 211© Istituto Italiano Edizioni Atlas

3 Identificatori e tipi di dati

Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e diconfronto (+ - / * = < >), più altri caratteri che assumono particolari significati nella sintassi delleistruzioni e che verranno descritti nel seguito.

Gli identificatori (nomi di tabelle e di attributi) sono costituiti da sequenze di caratteri dilunghezza massima uguale a 18 caratteri: devono iniziare con una lettera e possono anchecontenere il carattere _.

Il nome di un attributo, ovvero di una colonna di una tabella, è identificato per mezzo dellanotazione abituale:

NomeTabella.NomeAttributo

nella quale il nome della tabella e il nome dell’attributo vengono separati da un punto. Il nomedella tabella può essere omesso se non ci sono ambiguità nell’identificazione dell’attributo.

Nella dichiarazione della struttura di una tabella occorre specificare il tipo dei dati scelto per gliattributi.I tipi standard del linguaggio SQL sono:

BOOLEAN Valore logico True, False

CHARACTER(n) Stringa di lunghezza n n da 1 a 15000

DATE Data nella forma MM/GG/AA

TIME Ora nella forma HH:MM

INTEGER(p) Numero intero con precisione p p da 1 a 45

SMALLINT Numero intero con precisione 5 da -32768 a 32767

INTEGER Numero intero con precisione 10 da -2.147.483.648 a 2.147.483.647

DECIMAL(p,s) Numero decimale con precisione p da 1 a 45 e s da 0 a pp e s cifre decimali

REAL Numero reale con mantissa valore 0 oppure valoredi precisione 7 assoluto da 1E-38 a 1E+38

FLOAT (o DOUBLE Numero reale con mantissa valore 0 oppure valorePRECISION) di precisione 15 assoluto da 1E-308 a 1E+308

FLOAT(p) Numero reale con mantissa p da 1 a 45di precisione p

Per i dati numerici la precisione p indica il numero massimo di cifre che il numero può contenere,esclusi il segno e il punto decimale.Per i numeri decimali il valore s indica il numero di cifre che seguono il punto decimale.I dati numerici floating point sono memorizzati in forma esponenziale; la precisione riguarda solole cifre della mantissa e indica il numero di cifre significative del dato.La parola NUMERIC può essere usata al posto di DECIMAL.La parola CHARACTER è equivalente a CHARACTER(1), e può essere abbreviata con CHAR.DECIMAL è equivalente a DECIMAL(15,0).

Altre abbreviazioni sono:

� CHAR(n) invece di CHARACTER(n);

� INT(p) invece di INTEGER(p);

� DEC(p,s) invece di DECIMAL(p,s).

Page 75: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL212 © Istituto Italiano Edizioni Atlas

Occorre osservare che alcune versioni di SQL in specifici ambienti DBMS differiscono dallostandard nell’indicazione dei tipi di dati. Le stesse considerazioni valgono anche per le successiveistruzioni del linguaggio: in diverse versioni del linguaggio SQL ci possono essere varianti nellasintassi e nei termini utilizzati. Per risolvere questi problemi è opportuno sempre controllare gliesempi presentati nei manuali per l’utente o nell’help in linea del linguaggio.Le costanti stringa sono delimitate dai caratteri ' o ". Il delimitatore standard è l’apice '.Nelle colonne della tabella gli attributi che hanno un valore non disponibile, o non definito,assumono il valore Null. Il valore Null non è mai uguale a nessun altro valore: è diverso dal valorezero per i dati numerici e dalla stringa vuota (") per i dati alfanumerici.Negli ordinamenti il valore Null compare, di norma, all’inizio delle sequenze crescenti e alla finedelle sequenze decrescenti.Le costanti numeriche possono avere o non avere il segno + oppure –. Nei numeri decimali laparte intera è separata dalle cifre decimali attraverso il punto. I numeri in floating point possonoessere rappresentati in forma esponenziale, per esempio –1.2E+7.Nelle operazioni di confronto i numeri sono controllati in accordo con il loro valore algebrico,mentre le stringhe sono confrontate carattere per carattere a partire da sinistra secondo il lorovalore lessicale, cioè secondo il codice ASCII e ignorando la differenza tra caratteri maiuscoli eminuscoli (non case-sensitive). Nelle scrittura delle condizioni possono essere usati gli operatoriNOT, AND e OR.Tutti i risultati di confronti numerici o stringa che riguardano attributi con valore Null sonoconsiderati sconosciuti, perché Null non è uguale, maggiore o minore di nessun altro valore.Il linguaggio SQL può solo controllare la presenza o l’assenza di Null in una colonna.

4 Comandi DDL di SQL: la definizione delle tabelle

Le tabelle vengono definite con il comando CREATE TABLE, seguito dal nome della tabellaseguito, tra parentesi, dall’elenco degli attributi. Per ogni attributo occorre specificare il nome eil tipo di dato. Gli attributi possono essere qualificati mediante diverse clausole che permettonodi definire: la chiave primaria, le chiavi esterne, l’obbligatorietà e il valore di default di un campo.

Creazione delle tabelle Impiegati e Dipartimenti.

CREATE TABLE Impiegati(ID smallint primary key,Nome char(20) not null,Cognome char(30) not null,Residenza char(20) default '*** Manca Residenza',Stipendio decimal(9,2),Dipartimento char(5) references Dipartimenti(Codice),UNIQUE(Cognome, Nome, Dipartimento));

ESEMPIO 1

Ogni comandoSQL termina conil punto e virgola.

Vieta la presenza di valori duplicati inuna colonna o in un insieme dicolonne: non ci possono essere duedipendenti con identico nome ecognome nello stesso dipartimento.

Dipartimento è chiaveesterna associata a Codice.Crea un vincolo di integritàreferenziale con Dipartimenti.

ID è chiave primariadella tabella.

Campi obbligatori: nonsono ammessi valori nulliin Nome e Cognome.

Il valore da attribuire aResidenza in caso divalore nullo.

Page 76: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 213© Istituto Italiano Edizioni Atlas

Le clausole PRIMARY KEY e REFERENCES possono essere inserite, come la clausola UNIQUE,in righe isolate: questa caratteristica permette di dichiarare chiavi primarie o chiavi esterneformate da più campi. Nella definizione di una chiave esterna si può anche precisare cosadeve fare il DBMS nel caso di cancellazione di una riga nella tabella collegata o di variazionedel valore della chiave primaria associata alla chiave esterna. Un esempio è mostrato nelseguente comando per creare la tabella Dipartimenti.

CREATE TABLE Dipartimenti(Codice char(5),Descrizione char(20) not null,Sede char(20),Manager smallint,Primary Key (Codice),Unique (Descrizione),Foreign Key (Manager) references Impiegati(ID)

On Delete set nullOn Update cascade

);

Secondo la precedente dichiarazione, se nella tabella Impiegati si cancella il record conID=10, cioè il record di Margherita Colombi, il campo Manager dei record di Dipartimenti convalore 10 (cioè i dipartimenti Magazzino e Produzione) assume il valore nullo. Se a MargheritaColombi viene assegnato un nuovo valore di ID esso viene attribuito anche al campo Managernelle righe dei dipartimenti Magazzino e Produzione.

Foreign Key (Manager) references Impiegati(ID)On Delete no action

On Update no action

Foreign Key (Manager) references Impiegati(ID)

Foreign Key (Manager) references Impiegati(ID)

On Delete cascade

On Update cascade

La struttura di una tabella può essere modificata in un secondo tempo con il comando ALTERTABLE, per aggiungere una nuova colonna (ADD) a quelle già esistenti, oppure per togliereuna colonna (DROP).

Esempio

ALTER TABLE ImpiegatiADD Nascita date;

ALTER TABLE ImpiegatiDROP Residenza;

Codice è chiave primaria della tabella.

Nella colonna Descrizione non ci possonoessere valori duplicati. Descrizione identificaunivocamente una riga della tabella.

La cancellazione di una riga di Impiegatiimplica che i valori di Manager associatiall’ID di quella riga assumano valore nullo.

L’aggiornamento di un ID associato a Managersi riflette a catena sui valori di Manager.

Manager è chiave esterna associataal campo ID della tabella Impiegati.

Dichiarazione di default: le duedichiarazioni si equivalgono.

Impedisce di cancellare un record diImpiegati correlato alla chiave esternadi Dipartimenti o di modificare il valoredella chiave primaria di un record diImpiegati (ID) se tale valore comparenel campo Manager di Dipartimenti.

Equivale alle opzioni Access: Eliminarecord correlati a catena, Aggiornacampi collegati a catena che sipossono operare nella definizionedelle associazioni tra tabelle.

Inserisce in Impiegati una nuova colonna di nomeNascita per registrare la data di nascita del dipendente.

Elimina da Impiegati la colonna di nome Residenza: ilcomando elimina anche i dati contenuti nella colonna.

Page 77: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL214 © Istituto Italiano Edizioni Atlas

L’istruzione CREATE INDEX viene utilizzata per creare un nuovo indice su una tabella esisten-te, indicando il nome della tabella e il nome dell’attributo o degli attributi ai quali associarel’indice. Se non si vuole che ci siano valori duplicati per l’attributo associato all’indice, occorreusare la clausola UNIQUE. Una tabella o un indice possono essere eliminati con il comandoDROP, seguito dal nome della tabella o dell’indice.

Esempio

CREATE UNIQUE INDEX IndiceImpiegatiON Impiegati(Cognome, Nome);

DROP INDEX IndiceImpiegati ON Impiegati;

DROP TABLE Impiegati;

I comandi illustrati rappresentano la parte del linguaggio SQL che fa riferimento alla catego-ria dei comandi definiti con la sigla DDL (Data Definition Language), cioè il linguaggio checonsente di implementare il modello logico dei dati sulle memorie di massa del computer.Occorre osservare che nelle versioni moderne dei prodotti DBMS le operazioni di creazione ditabelle e di indici, oltre che di modifica alla struttura della tabella o di cancellazione di tabellee indici, vengono effettuate, come in Access, attraverso un’interfaccia interattiva che facilita illavoro dell’utente, il quale può anche non conoscere la sintassi dei comandi sopra illustrati.

5 I comandi per la manipolazione dei dati

I valori degli attributi nelle righe della tabella possono essere inseriti, aggiornati o cancellatirispettivamente con i comandi INSERT, UPDATE e DELETE.È importante notare che nei comandi Update e Delete compare la clausola Where per effetto dellaquale è possibile operare su molte righe, anziché su una sola riga per volta: basta indicare dopoWhere una condizione che deve essere verificata dalle righe che si vogliono modificare o cancellare.

Eseguire operazioni di manipolazione sulla tabella Impiegati.

INSERT INTO Impiegati(ID, Nome, Cognome, Residenza, Stipendio, Dipartimento)VALUES(20, 'Mario', 'Rossini', 'Caserta', 31500, 'Mag');

UPDATE ImpiegatiSET Dipartimento = 'Prod'WHERE ID = 20;

DELETE FROM ImpiegatiWHERE ID = 20;

UPDATE ImpiegatiSET Stipendio = Stipendio * 1.05WHERE Dipartimento = 'Prod';

ESEMPIO 2

Crea l’indice IndiceImpiegati sui campi Cognome eNome di Impiegati: non ci possono essere dipendenticon lo stesso cognome e lo steso nome.

Cancella l’indice IndiceImpiegati da Impiegati.

Elimina struttura e dati della tabella Impiegati.

Inserimento di una riganella tabella Impiegati.

Assegnamento del dipendente conID=20 al dipartimento Produzione.

Cancellazione del dipendente conID=20 dalla tabella Impiegati.

Aumenta del 5% lo stipendio ai dipendentidel dipartimento Produzione.

Page 78: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 215© Istituto Italiano Edizioni Atlas

DELETE FROM ImpiegatiWHERE Dipartimento = 'R&S';

DELETE FROM Impiegati;

Come già detto a proposito della creazione delle tabelle, nell’uso pratico del linguaggio, leoperazioni di inserimento, così come quelle di modifica e di cancellazione, vengono facilitatemediante l’uso di maschere video che guidano l’utente nelle operazioni di trattamento dei dati,all’interno di un ambiente software basato sull’uso di interfacce grafiche amichevoli.Si pensi, nel caso di Access, all’uso delle maschere e alla possibilità di manipolare dati agendodirettamente sulla Visualizzazione Foglio dati di una tabella.Quindi i comandi di tipo DML (Data Manipulation Language) del linguaggio SQL rimangononascosti all’utente che può effettuare le operazioni di manipolazione senza conoscere la sintassidelle istruzioni.

6 Interrogazioni con SQL: il comando Select

Un’importante caratteristica del linguaggio SQL è la sua capacità di estrarre le informazionidesiderate dal database mediante interrogazioni. Queste funzionalità sono fornite dal comandoSELECT che è semplice da usare e allo stesso tempo molto potente.Il comando Select riflette la natura dichiarativa del linguaggio SQL, e le interrogazioni sulle tabelledel database sono eseguite specificando solo cosa si vuole ottenere, senza doversi preoccuparedi problemi quali: le modalità di rappresentazione dei dati e i percorsi per ritrovarli nelle memoriedi massa.

La struttura base del comando Select è descritta nel seguente schema:

SELECT Elenco di espressioni

FROM Tabelle

WHERE Condizioni ;

Esempio: interrogazioni su una sola tabella.

SELECT Cognome, Nome, ResidenzaFROM ImpiegatiWHERE Dipartimento = 'Prod';

SELECT ID, Cognome, NomeFROM ImpiegatiWHERE Dipartimento = 'Prod' AND Residenza = 'Torino';

ESERCIZI da 1 a 2 pag. 249 e da da 40 a 41 pag. 251

Cancella i dipendenti del dipartimentoRicerca & Sviluppo.

Manca la clausola WHERE: il comando svuota latabella Impiegati dai dati, ma rimane la sua struttura.

Un elenco di espressioni, che coinvolgono lecolonne, da mostrare. * per indicare tutte le colonne.

La tabella, o le tabelle, usate nell’interrogazione.

Una espressione logica che specifica quali righe considerare. Espressionebooleana ottenuta componendo confronti con gli operatori AND OR e NOT.

Cognome, nome e residenza dei dipendentidel dipartimento di codice Prod.

ID, Cognome, Nome deidipendenti che lavorano allaproduzione e risiedono a Torino.

Page 79: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL216 © Istituto Italiano Edizioni Atlas

SELECT *FROM ImpiegatiWHERE Residenza = 'Roma';

Il comando Select possiede i due predicati ALL e DISTINCT. Con il predicato ALL si richiede chenel risultato dell’interrogazione siano incluse tutte le righe, anche se duplicate, che soddisfanoalle condizioni contenute nel comando. Questo predicato è di default ed in genere è omesso.

SELECT * SELECT ALL *FROM Impiegati FROM ImpiegatiWHERE Residenza = 'Milano'; WHERE Residenza = 'Milano';

Se viene specificato il predicato DISTINCT le righe duplicate nella tabella risultante sono ridottea una. Per esempio, se si desidera ottenere l’elenco di tutte le località di residenza dei dipendenti,senza duplicati, si deve usare la clausola DISTINCT prima dell’indicazione dell’attributo.

SELECT DISTINCT Residenza SELECT ResidenzaFROM Impiegati; FROM Impiegati;

Come si è anticipato nel Capitolo 3, i DBMS commerciali, per ragioni di efficienza, non rispettanostrettamente il modello relazionale, che non ammette la presenza di righe duplicate in unatabella. Il predicato DISTINCT fa in modo che un comando Select produca una tabella coerentecon tale modello.

La tabella che si ottiene come risultato dell’interrogazione ha di norma un’intestazione dellecolonne che riporta i nomi degli attributi; se si vuole modificare tale intestazione, occorrerinominare la colonna usando la clausola AS.

SELECT ID AS Matricola, Nome, CognomeFROM Impiegati;

Con il comando SELECT si può richiedere il calcolo di espressioni basate sugli attributi dellatabella; la tabella risultante contiene delle colonne con i risultati del calcolo per ogni riga. Talicolonne possono avere un’intestazione opportuna utilizzando la parola AS. In assenza di ASl’intestazione della colonna con l’espressione viene costruita dal sistema in modo differente aseconda dell’implementazione. Nel caso di Access il nome è Espr1 per la prima espressione, Espr2per la seconda espressione e così via.

Tutti i dati dei dipendenti che abitano a Roma.

I due comandisi equivalgono.

La presenza del predicatoDISTINCT in un comandoSelect impone che una rigasia inclusa nella tabella risul-tante solo se non c’è un’al-tra riga con gli stessi valori.

Elenco degli impiegati con ID, Nomee Cognome, ma usando Matricolacome intestazione della colonna ID.

Page 80: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 217© Istituto Italiano Edizioni Atlas

SELECT Cognome, Nome, Stipendio AS Attuale, Stipendio*1.05 AS NuovoFROM ImpiegatiWHERE Dipartimento = 'Mag';

SELECT Cognome, Nome, Residenza, StipendioFROM ImpiegatiWHERE Stipendio >= 55000;

SELECT Cognome, Nome, Residenza, StipendioFROM ImpiegatiWHERE Stipendio >= [Retribuzione minima?];

Si osservi che per controllare la presenza di valori nulli si deve usare il predicato IS NULL, mentreè errato ricercare tali valori in altro modo, come è mostrato di seguito. Si ricorda, a proposito, cheil dipendente con ID=5 non è assegnato ad alcun dipartimento.

SELECT ID AS Matricola, Cognome, NomeFROM ImpiegatiWHERE Dipartimento IS NULL;

SELECT ID AS Matricola, Cognome, NomeFROM ImpiegatiWHERE Dipartimento = '';

Gli impiegati del magazzino con l’importodello stipendio e quello del nuovostipendio se fosse aumentato del 5%.

Gli importi di Stipendio inImpiegati non sono modificati.

Elenca i dipendenti con retribuzionedi almeno 55000 euro

Interrogazione parametrica: lostipendio minimo è scelto dall’utenteal momento dell’interrogazione.

Per elencare i dipendenti senza dipartimentodi assegnazione, si devono riconoscere lerighe con valori nulli nel campo Dipartimento.

Per scrivere un’interrogazione in SQL nell’ambiente di Access, bisogna creare una nuova queryaccedendo alla Visualizzazione Struttura, e chiudere la finestra di dialogo Mostra tabella senzascegliere alcuna tabella. Poi si deve fare clic sulla scelta che è diventata la proposta del pulsanteVisualizza.

Ricerca una stringa vuota in Dipartimento.

L’interrogazione produce un elenco vuotoperché in Impiegati non ci sono righe con unastringa di caratteri vuota in Dipartimento.

Page 81: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL218 © Istituto Italiano Edizioni Atlas

Appare una finestra come quella in figura che permette di scrivere l’interrogazione desiderata.

Le istruzioni del linguaggio SQL sono a formato libero e terminano con il carattere punto evirgola: un comando SQL può essere scritto liberamente su una o più righe e le parole chiave dellinguaggio possono essere scritte indifferentemente a caratteri maiuscoli o minuscoli.In un comando SQL possono comparire commenti, con la convenzione che si considera uncommento tutto quello che compare in una riga di seguito alla sequenza di caratteri “-- “.Per esempio, i due comandi SELECT mostrati di seguito sono entrambi corretti e sonosintatticamente identici; sono stati anche inseriti: un commento che occupa parte di una riga etre commenti che occupano un’intera riga.

SELECT Matricola, Cognome, Nome -- Esempio di commentoFROM StudentiWHERE Provincia = 'BO';---- Il seguente comando SELECT è identico al precedente--Select Matricola, Cognome, Nome From Studenti Where Provincia = 'BO';

7 Le operazioni relazionali nel linguaggio SQL

Le operazioni fondamentali dell’algebra relazionale sono realizzate in SQL con il comando Select,secondo le diverse forme consentite dalla sintassi del comando. Se si vuole rispettare una delleregole del modello relazionale, che non consente la presenza di righe uguali all’interno dellastessa tabella, basta porre accanto alla parola Select la clausola Distinct: con questa specificazionela tabella ottenuta non conterrà righe duplicate.

� La selezione, che estrae da una relazione solo le righe che soddisfano a una certa condizione,viene realizzata nel linguaggio SQL specificando la condizione di selezione nella clausola Wheredel comando Select.

Esempio

σP Impiegati Selezione di Impiegati per Stipendio < 31000

SELECT *FROM ImpiegatiWHERE Stipendio < 31000;

� L’operazione di proiezione, che permette di ottenere una relazione contenente solo alcuniattributi della relazione di partenza, si realizza scrivendo l’elenco degli attributi richiesti dopola parole Select.

L’elenco con tutti i dati dei dipendenti constipendio minore di 31000 euro, si ottiene conuna selezione sulla tabella Impiegati estraendole righe per le quali: Stipendio < 31000.

Page 82: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 219© Istituto Italiano Edizioni Atlas

Esempio

ΠL Impiegati Proiezione di Impiegati su Cognome, Nome, ID

SELECT Cognome, Nome, IDFROM Impiegati;

� La congiunzione di tabelle. Il comando Select può operare su più tabelle, specificandone inomi, (separati da virgola) nella clausola From e scrivendo la condizione di congiunzione (cioèla condizione che fa corrispondere le righe di una tabella con quelle dell’altra) nella clausolaWhere. Nella quasi totalità dei casi si vogliono costruire degli equi-join, per cui la condizioneda scrivere nella clausola Where consiste nell’uguaglianza tra attributi di due tabelle.

Esempio

ImpiegatiFK DipartimentiPK Congiunzione di Impiegati su Dipartimentoe Dipartimenti su Codice

SELECT *FROM Impiegati, DipartimentiWHERE Dipartimento = Codice;

SELECT *FROM Impiegati, DipartimentiWHERE Impiegati.Dipartimento = Dipartimenti.Codice;

Nella versione di SQL adottata da Access il join viene indicato, in accordo con la terminologiaintrodotta nel Capitolo 3, come inner join. Se la precedente interrogazione viene realizzata conAccess in modalità QBE e, successivamente, si accede alla query in visualizzazione SQL, si legge(una volta ripulito dalle parentesi inutili) il seguente comando:

SELECT Impiegati.*, Dipartimenti.*FROM Dipartimenti INNER JOIN Impiegati ON Dipartimenti.Codice = Impiegati.Dipartimento;

La sintassi adottata da Access è una delle sintassi ammesse fra gli standard di SQL2, mentre ilmodo di costruire le congiunzioni presentato all’inizio del paragrafo è quello dello standard dibase del linguaggio.

Va precisato che Access (come tutti gli SQL che ammettono tale ultima sintassi) accetta ed eseguecorrettamente le interrogazioni costruite secondo lo standard di base. Naturalmente, quando ilcomando Select è costruito direttamente da Access partendo da una QBE, l’interrogazione èrealizzata secondo gli standard tipici dell’implementazione.

L’elenco di tutti i dipendenti con i dati del dipartimento dovelavorano, si ottiene con la congiunzione delle tabelle Impiegati eDipartimenti secondo gli attributi comuni Dipartimento e Codice.

Per maggiore chiarezza, o se cisono attributi con il medesimo nomenelle due tabelle, si usa la dotnotation, specificando oltre al nomedell’attributo anche quello dellatabella alla quale appartengono.

Condizione di uguaglianza tra attributi:esempio di equi-join. Sono combinate solole righe che soddisfano alla condizione.

INNER-JOIN definisce la congiunzione.La condizione di congiunzione è scrittanella stessa clausola FROM dopo ON.

L’elenco di tutti i dipendenti con cognome,nome e matricola, si ottiene con una proiezionedi Impiegati sulle colonne richieste.

Page 83: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL220 © Istituto Italiano Edizioni Atlas

Impiegati JOIN Dipartimenti

Come si è anticipato nel Capitolo 3, gli strumenti per recuperare le informazioni sulle righe chenon hanno corrispondenti nella congiunzione sono i join esterni e, in particolare, il left join cheè presentato a fine paragrafo.

� Interrogazioni in SQLDopo aver visto come si rappresentano nel linguaggio SQL le operazioni fondamentali delmodello relazionale, impariamo a costruire interrogazioni composte da una sequenza di opera-zioni relazionali.

EsempioPer ottenere l’elenco dei dipendenti che lavorano in un dipartimento con sede a Roma, concognome, nome e descrizione del dipartimento, occorre dapprima operare una selezione suDipartimenti per Sede = ‘Roma’; poi si deve effettuare una congiunzione della tabella ottenutacon la tabella Impiegati e, infine, applicare una proiezione sugli attributi Cognome, Nome, Descri-zione sulla nuova tabella risultante.

1. σP Dipartimenti Temp1=Selezione di Dipartimenti per Sede = ‘Roma’2. Temp1PK ImpiegatiFK Temp2=Congiunzione di Temp1 su Codice e Impiegati

su Dipartimento3. ΠL Temp2 Proiezione di Temp2 su Cognome, Nome, Descrizione

SELECT Cognome, Nome, DescrizioneFROM Impiegati, DipartimentiWHERE Dipartimento=Codice AND Sede = 'Roma';

SELECT Impiegati.Cognome, Impiegati.Nome, Dipartimenti.DescrizioneFROM Impiegati, DipartimentiWHERE Impiegati.Dipartimento = Dipartimenti.Codice AND Dipartimenti.Sede = 'Roma';

Per semplificare la scrittura del comando Select è possibile fare ricorso agli alias per il nome dellatabella, specificando dopo il nome originale della tabella la parola AS seguita dal nuovo nome.

Nella congiunzione si può avere perdita di informazioni:mancano i dati del dipendente con ID=5 (manca ildipartimento di assegnazione) e del dipartimento di codicePers (senza dipendenti ad esso assegnati).

Dipartimento=Codice è la clausola di congiunzioneSede=‘Roma’ è la clausola di selezione.

Per evitare ogni ambiguitàsi può precisare il nomedelle tabelle oltre a quellodegli attributi.

Page 84: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 221© Istituto Italiano Edizioni Atlas

Si potrebbe, per esempio, indicare la tabella Impiegati con I e la tabella Dipartimenti con D,limitando il numero di caratteri da digitare, scrivendo così comandi più compatti, più semplici daleggere ma ugualmente significativi.La precedente interrogazione, scritta nelle due diverse sintassi introdotte, è riportata di seguito.

SELECT I.Cognome, I.Nome, D.DescrizioneFROM Impiegati AS I, Dipartimenti AS DWHERE I.Dipartimento = D.Codice AND D.Sede = 'Roma';

SELECT I.Cognome, I.Nome, D.DescrizioneFROM Impiegati I INNER JOIN Dipartimenti D ON I.Dipartimento = D.CodiceWHERE D.Sede = 'Roma';

Risulta evidente la maggior chiarezza dell’ultima interrogazione rispetto alle precedenti: la sin-tassi adottata da Access ha il pregio di separare nettamente la condizione di congiunzione, cheviene espressa nella parte From dell’interrogazione, dalle condizioni di selezione, che sonoespresse nella parte Where della query.Per sopperire alla minor chiarezza delle interrogazioni scritte nella versione base di SQL èopportuno scrivere la parte Where dell’interrogazione su più righe, come nell’esempio preceden-te, riportando prima le condizioni per la congiunzione delle tabelle e poi le condizioni cheesprimono la selezione.

Dagli esempi precedenti si può osservare come nel linguaggio SQL con poche parole di codicesia possibile estrarre da una base di dati tutte le informazioni che si desiderano. Le stesseoperazioni, formulate attraverso le istruzioni di un linguaggio di programmazione tradizionale,richiederebbero un elevato numero di righe di codice, oltre che lunghi processi di ricerca sui filee di confronti tra i campi dei record.

� Il self-join si attua quando si congiunge una tabella con se stessa. Come si è osservato nelCapitolo 3, questa esigenza si presenta nel caso delle associazioni ricorsive, per esempio nel casodi una gerarchia aziendale o della distinta base che descrive oggetti composti da diverse parti.

EsempioMostriamo come si possa realizzare un self-join su una tabella. Si consideri l’associazioneesistente tra l’entità Oggetto di attributi: ID, Descrizione e Qta, e le sue parti (che sono altrioggetti). La tabella che rappresenta gli oggetti e tale associazione ha lo schema sotto riportatoassieme a un’istanza della tabella Oggetti.

Oggetti (ID, Descrizione, Qta, ComponenteDi)

Importante: se si definisce una aliasnella clausola From, non si può usareil nome originale della tabella.

AS è opzionale nellaridenominazione di tabelle.

Il bottone (ID=4 ) è unacomponente della camicia(ID=1 ) e in una camiciaci sono 10 bottoni.

L’oggetto camicia è composto da:1 colletto, 2 maniche, 10 bottoni,1 taschino e altri oggetti.

Page 85: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL222 © Istituto Italiano Edizioni Atlas

Se si vogliono ottenere le informazioni delle diverse parti che compongono un oggetto, peresempio la camicia, bisogna congiungere la tabella Oggetti con se stessa, cioè operare un self-join. Per esprimere la condizione che una riga di Oggetti deve essere abbinata a una riga, sempredi Oggetti, con il valore di ID uguale a quello di ComponenteDi nell’altra, occorre usare gli aliasper il nome della tabella.

L’interrogazione SQL che elenca le parti che compongono la camicia è mostrata in figura assiemealla tabella visualizzata al momento dell’esecuzione della query.

SELECT Parti.Descrizione AS Componente, Parti.Qta, Composto.Descrizione AS ProdottoFROM Oggetti AS Parti, Oggetti AS CompostoWHERE Parti.ComponenteDi = Composto.ID AND Composto.Descrizione = 'Camicia';

� I join esterni: oltre ai join interni il linguaggio SQL permette di costruire dei join che includononella congiunzione anche quelle righe di una delle due tabelle che non hanno corrispondentinell’altra. Si tratta dei join esterni e, come si è già detto, corrispondono alle operazioni di leftjoin, right join, full join dell’algebra relazionale.

Tra i join esterni consideriamo il left join e mostriamo la sua utilità nella soluzione di un tipicoproblema di assenza: elencare i dipartimenti che non hanno dipendenti loro assegnati. Per farlocongiungiamo la tabella Dipartimenti e la tabella Impiegati con un left join.

SELECT Descrizione, Nome, CognomeFROM Dipartimenti D LEFT JOIN Impiegati I ON D.Codice = I.Dipartimento;

SELECT DescrizioneFROM Dipartimenti D LEFT JOIN Impiegati I ON D.Codice = I.DipartimentoWHERE Cognome IS NULL;

AS CompostoAS Parti

La ridenominazione di Oggetti precisail differente ruolo giocato dalla tabellaOggetti nell’associazione ricorsiva.

Il left join include comunque tutte le righe della tabella asinistra (Dipartimenti) anche in mancanza di record associati.La riga del dipartimento Personale è stata completata convalori nulli nei campi Nome e Cognome perché non ci sonodipendenti ad esso assegnati.

I dipartimenti senza impiegati si riconoscono per lapresenza di valori nulli nei campi che provengono daImpiegati. Per il controllo si usa il predicato IS NULL.

TEST 5.1 pag. 247 ESERCIZI da 3 a 12 pag. 249-250 e da 42 a 49 pag. 251�

1. Tipi di join esterni e operazioni insiemistiche

CONTENUTI DIGITALI INTEGRATIVI

Page 86: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 223© Istituto Italiano Edizioni Atlas

8 Le funzioni di aggregazione

Nel comando Select si possono usare funzioni predefinite che agiscono sui valori contenuti ininsiemi di righe di una tabella e che, per questo motivo, si chiamano funzioni di aggregazione.Le funzioni di aggregazione agiscono sui valori di una colonna e restituiscono un solo valorecome, per esempio, il massimo o il minimo dei valori considerati. Le righe considerate perl’aggregazione sono quelle prodotte dall’interrogazione e quindi, in presenza di una clausolaWhere, sono le sole righe che soddisfano la condizione specificata.

� Le funzioni di aggregazione possono comparire solo nelle clausole Select ed Having (che saràspiegata nel riquadro alla fine del prossimo paragrafo).

� La presenza di una funzione di aggregazione nella clausola Select provoca un’intestazione chedipende dall’implementazione di SQL. Nel caso di Access l’intestazione è del tipo EXPR1000,EXPR1001, ecc.

� Funzione COUNT

La funzione COUNT conta il numero di occorrenze selezionate dall’interrogazione. La sintassi dellinguaggio SQL richiede di specificare come argomento della funzione il nome di un attributooppure il carattere * (asterisco). Nel primo caso sono conteggiati i valori non nulli nella colonnaconsiderata; nel secondo caso, la funzione Count(*) calcola il numero di righe nella tabella.

SELECT COUNT (*) FROM Impiegati;

SELECT COUNT (Dipartimento) FROM Impiegati;

SELECT COUNT(*) FROM Impiegati WHERE Residenza = 'Roma';

SELECT COUNT(*), COUNT(*) AS ResidentiRoma FROM Impiegati WHERE Residenza = 'Roma';

� Funzione SUM

La funzione SUM restituisce la somma dei valori contenuti in una colonna, specificata comeargomento della funzione: naturalmente l’attributo utilizzato nel calcolo deve essere di tiponumerico; i valori nulli sono trascurati dalla funzione Sum.

SELECT SUM (Stipendio) FROM Impiegati WHERE Dipartimento = 'Amm';

Conta le righe della tabella Impiegati:Restituisce 12.

Conta il numero dei dipendenti di Impiegati chesono assegnati a un dipartimento. Restituisce11 perché non sono considerati i valori nulli.

Conta il numero dei dipendenti residenti a Roma.Restituisce 2.

Con le funzioni di aggregazione è opportunorinominare le colonne per evitare la presenzadi intestazioni poco significative.

La somma degli stipendi dei dipendentidel dipartimento Amministrazione.Restituisce 90000.

Page 87: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL224 © Istituto Italiano Edizioni Atlas

SELECT SUM (Stipendio) AS StipendiAmm, SUM (Stipendio*1.03) AS NuoviStipendiAmm FROM Impiegati WHERE Dipartimento = 'Amm';

� Funzione AVG

La funzione AVG (dall’inglese average = media), calcola la media dei valori (numerici) contenutiin una colonna di una tabella. L’argomento della funzione può essere un’espressione aritmeticaanziché il nome di un attributo. La media calcolata dalla funzione Avg è la media aritmetica, cioèla somma dei valori diviso il numero dei valori. La funzione Avg non include nel calcolo i valoriNull presenti nella colonna.

SELECT AVG(Stipendio) FROM Impiegati, Dipartimenti WHERE Dipartimento = Codice AND Sede = 'Torino';

� Funzioni MIN e MAX

Le funzioni MIN e MAX restituiscono rispettivamente il valore minimo e il valore massimo traquelli assunti dalla colonna specificata come argomento della funzione; le funzioni Min e Maxconsentono di determinare i valori minimi e massimi anche per campi di tipo carattere. Anche lefunzioni Min e Max ignorano i campi con valore Null e possono avere come argomento un’espres-sione anziché il nome di un attributo.

SELECT MIN(Stipendio), MAX(Stipendio) FROM Impiegati;

SELECT MIN(Cognome), MAX(Cognome) FROM Impiegati;

9 Ordinamenti e raggruppamenti

Nel comando Select si può inserire la clausola ORDER BY per ottenere i risultati di un’interroga-zione ordinati secondo i valori contenuti in una o più colonne, che vengono specificate di seguitoalla clausola Order By. L’indicazione delle colonne da considerare nell’ordinamento avviene pre-cisando il nome della colonna oppure la posizione che essa occupa nella lista che segue la parolaSelect: 1 per la prima posizione, 2 per la seconda, e così via.L’ordinamento può essere crescente (le stringhe dalla A alla Z e i numeri dal minore al maggiore)oppure decrescente (le stringhe dalla Z alla A e i numeri dal maggiore al minore): i due tipi diordinamento sono precisati usando le parole chiave ASC per crescente e DESC per decrescente.L’ordinamento è crescente per default e quindi va specificata la parola Desc solo se si desideral’ordinamento decrescente.

L’ammontare degli stipendi del repartoAmministrazione e il nuovo totale dopoun loro incremento del 3%.

L’argomento di Sum puòessere un’espressione.

Calcola lo stipendio medio deidipendenti che lavorano a Torino.Restituisce 46916,67.

Calcola lo stipendio minimo e massimo dei dipendenti.Restituisce 25000 e 85000.

Primo e ultimo cognome (secondo l’ordine alfabetico) dei dipendenti.Restituisce Bianco e Volpi.

Page 88: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 225© Istituto Italiano Edizioni Atlas

Negli ordinamenti il valore Null compare, di norma, all’inizio delle sequenze crescenti e alla finedelle sequenze decrescenti.La clausola Order By, se presente, deve essere l’ultimo elemento di un comando Select.

Esempio

SELECT Cognome, Nome, ResidenzaFROM ImpiegatiORDER BY Cognome, Nome;

SELECT Cognome, StipendioFROM ImpiegatiORDER BY Stipendio DESC, Cognome;

Si consideri una tabella di fatture che contiene, per ogni fattura, la descrizione del prodotto, ilsuo prezzo unitario e la quantità ordinata.

1 2 3 4

SELECT NomeProdotto, PrezUnit, Qta, PrezUnit*QtaFROM FattureORDER BY 4 DESC;

SELECT NomeProdotto, PrezUnit, Qta, PrezUnit*Qta AS TotaleFROM FattureORDER BY Totale DESC;

SELECT NomeProdotto, PrezUnit, Qta, PrezUnit*Qta AS TotaleFROM FattureORDER BY PrezUnit*Qta DESC;

Con le funzioni di aggregazione si condensano le informazioni di una tabella in un solo valorecome, per esempio, la somma degli stipendi di tutti i dipendenti. Spesso è però utile sintetizzarei valori per classi omogenee, secondo opportuni criteri di raggruppamento, per esempio perprodurre la somme parziali degli stipendi nei diversi dipartimenti.

La clausola GROUP BY ha questo scopo, in quanto permette di raggruppare un insieme di righeaventi lo stesso valore nelle colonne indicate dalla clausola. L’opzione produce una riga di risultatiper ogni raggruppamento. Se nel comando viene inserita una funzione di aggregazione, comeSum o Count, per ciascuna riga della tabella risultante viene prodotto un valore di raggruppa-mento. I valori Null sono raggruppati, ma non vengono valutati da nessuna delle funzioni diaggregazione ad eccezione di Count(*).

SELECT Dipartimento, COUNT(ID) AS Dipendenti, SUM(Stipendio) AS StipendiFROM ImpiegatiGROUP BY Dipartimento;

Elenco alfabetico dei dipendenti per Cognomee, a parità di cognome, per Nome.

Elenco dei dipendenti in ordine decrescente di stipendioe, a parità di stipendio, in ordine (crescente) di cognome.

Elenco ordinato per valoridecrescenti dell’espressione:PrezUnit*Qta (campo 4 dellaclausola Select).Forma sconsigliata perchénon simbolica.

Forma raccomandata con Access.

Forma raccomandata perché simbolica.Non supportata da Access.

Importante: con i raggruppamenti nella clausola Select possono compariresolo i campi presenti in Group By e funzioni di aggregazione.

Elenco dei dipartimenti con la somma deglistupendi e il numero di addetti per dipartimento.

Page 89: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL226 © Istituto Italiano Edizioni Atlas

L’interrogazione è eseguita secondo i due passi indicati in figura.

Se nell’elenco si desidera che compaia, invece del codice, il nome per esteso del dipartimento,bisogna effettuare il raggruppamento sul campo Descrizione della tabella Dipartimenti.

SELECT Descrizione, COUNT(*) AS Dipendenti, SUM(Stipendio) AS StipendiFROM Impiegati, DipartimentiWHERE Impiegati.Dipartimento = Dipartimenti.CodiceGROUP BY Descrizione;

Condizioni sui raggruppamenti

La struttura del comando Select con raggruppamenti può essere ulteriormente ampliata conla clausola HAVING con la quale è possibile sottoporre al controllo di una o più condizionii gruppi creati con la clausola Group by. La condizione scritta dopo Having in genere controllail valore restituito dalle funzioni di aggregazione (Count, Sum, Avg, Min, Max).Si noti che la clausola Having deve essere usata insieme a Group By: dopo che Group By haformato i raggruppamenti di righe, Having serve a visualizzare i soli raggruppamenti chesoddisfano alle condizioni scritte accanto a Having.

SELECT Dipartimento, COUNT(ID) AS Dipendenti, SUM(Stipendio) AS Stipendi FROM Impiegati GROUP BY Dipartimento HAVING COUNT(ID) > 2;

Se l’istruzione Select contiene la clausola Where, i valori vengono raggruppati dopo averoperato la selezione sulle righe che rispettano le condizioni scritte accanto a Where.

SELECT Descrizione, COUNT(ID) AS Dipendenti, SUM(Stipendio) AS Stipendi FROM Dipartimento D INNER JOIN Impiegati I ON D.Codice = I.Dipartimento WHERE Sede = 'Torino' GROUP BY Descrizione HAVING COUNT(ID) > 1;

Le righe sonoraggruppate perdipartimento.

Nell’elenco sono esclusi i dipendentiche non sono inquadrati in alcundipartimento (come il dipendentecon ID =5 dell’esempio) chescompaiono nella congiunzione.

Numero degli addetti e la somma degli stipendiper i dipartimenti con più di 2 dipendenti.

Numero degli addetti e somma degli stipendi peri dipartimenti di Torino con più di 1 addetto.

WHERE:condizionisulle righedelle tabelle.

HAVING: condizioni sui raggruppamenti.

Le funzioni di aggrega-zione sono applicateseparatamente ai singoliraggruppamenti.

2

1

Page 90: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 227© Istituto Italiano Edizioni Atlas

Per realizzare l’ultima interrogazione con Access in modalità QBE bisogna trovare il modo diesprimere nella griglia posta nella parte inferiore della QBE sia le condizioni sui raggruppa-menti (in Having) sia le condizioni sulle righe (clausola Where).Operando come descritto nel Capitolo 4, si fa clic sul pulsante Totali per attivare la rigaFormula nella griglia QBE e si definiscono nei diversi campi raggruppamenti, conteggi,somme in base alle richieste del problema.

Sintetizziamo in un unico quadro le diverse clausole che possono apparire nel comando Select:

SELECT Elenco espressioni da mostrareFROM Tabelle da cui estrarre le righeWHERE Condizioni sulle righe estratteGROUP BY Campi da considerare per i raggruppamentiHAVING Condizioni sui raggruppamentiORDER BY Ordinamenti sulle espressioni elencate nella clausola SELECT

È opportuno fare le seguenti precisazioni:

� Si possono scrivere comandi del tipo: Select Now(); oppure Select 3*4; nei quali comparela sola clausola Select.

� Per estrarre dati da una tabella le uniche clausole che devono comparire obbligatoriamentesono Select e From mentre le altre sono facoltative.

� Le clausole utilizzate devono essere elencate rispettando l’ordine del precedente elenco:Select deve precedere From, ..., Having deve precedere Order by.

� Le interrogazioni che si possono costruire con le operazioni relazionali si esprimono conle sole clausole Select, From e Where.

� Il DBMS esegue il comando elaborando le clausole nel seguente ordine:

From Where Group by Having Select Order by

2. Query di comando e query di servizio in Access

CONTENUTI DIGITALI INTEGRATIVI

Selezionare Dovenel menu a discesadella riga Formula.

1Le condizioni scritte nella rigaCriteri della QBE sonointerpretate come condizionisulle righe: clausola Where.

3

Il segno di spunta nella casellaMostra è deselezionatoautomaticamente.

2

Le condizioni scritte nellariga Criteri della QBEsono interpretate comecondizioni sui raggruppa-menti: clausola Having.

Page 91: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL228 © Istituto Italiano Edizioni Atlas

10 Le condizioni di ricerca

Le condizioni di ricerca sono utilizzate nelle clausole Where e Having per determinare i criteridi selezione rispettivamente delle righe e dei raggruppamenti. Nella scrittura delle condizioni siusano i segni del confronto =, <, >, <>, >=, <=.Una condizione di ricerca è costruita anche mettendo insieme più condizioni legate tra loro congli operatori AND e OR, precedute eventualmente dall’operatore NOT. L’ordine di applicazionedegli operatori è il seguente: NOT viene applicato prima di AND e AND prima di OR.Le condizioni di ricerca si possono esprimere utilizzando anche altri operatori o predicati cherendono più potenti ed espressive le interrogazioni alla base di dati: BETWEEN, IN, IS NULL, LIKE.� BETWEEN controlla se un valore è compreso in un intervallo di valori, inclusi gli estremi. È

possibile specificare, anteponendolo a Between, anche l’operatore logico NOT per valutare lacondizione opposta, cioè per controllare se il valore non rientra nell’intervallo specificato.

� IN controlla se un valore appartiene a un insieme di valori che viene precisato, tra parentesi, diseguito a In. I valori dell’elenco sono separati da una virgola. Anche IN può essere preceduto daNOT per indicare la condizione opposta, cioè la non appartenenza del valore all’insieme dei valori.

� IS NULL è un predicato che serve a controllare la presenza di un valore nullo in una colonna.È importante osservare che l’uso di questo predicato è il solo modo per controllare la presenzadi un valore nullo. È possibile inserire l’operatore di negazione NOT per controllare che un datonon abbia valore nullo: il controllo si esegue con il predicato IS NOT NULL. L’operatore Is vieneutilizzato solo con la parola Null.

Esempio

SELECT Cognome, Nome, ResidenzaFROM ImpiegatiWHERE Stipendio BETWEEN 30000 AND 45000;

WHERE Stipendio>=30000 AND Stipendio<=45000

SELECT *FROM ImpiegatiWHERE Residenza IN ('Torino','Venezia','Palermo');

WHERE Residenza ='Torino' OR Residenza ='Venezia' OR Residenza ='Palermo'

SELECT Cognome, NomeFROM ImpiegatiWHERE Stipendio IS NOT NULL;

� LIKE confronta il valore di un attributo di tipo carattere con un modello di stringa che puòcontenere caratteri jolly (o metacaratteri). Anche in questo caso si può usare l’operatore NOTprima di Like per indicare criteri di ricerca opposti. Per l’uso dell’operatore LIKE nelle interro-gazioni SQL di Access valgono le convenzioni descritte nel capitolo precedente.

I caratteri jolly sono:_ (underline o underscore) per indicare uno e un solo carattere qualsiasi in quella posizione della

stringa, Access, come altre implementazioni di SQL, fa uso di ? al posto di _;% (percento) per indicare una sequenza di zero o più caratteri in quella posizione della stringa. Access, come altre implementazioni di SQL, fa uso di * al posto di %;

Cognome, nome e residenza deidipendenti con retribuzionecompresa tra 30000 e 45000.

Condizione equivalente.

I dati dei dipendenti che risiedonoa: Torino o Venezia o Palermo.

Condizione equivalente.

Cognome e nome dei dipendentidei quali è noto lo stipendio.

Page 92: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 229© Istituto Italiano Edizioni Atlas

Esempi

LIKE ‘xyz%’ Ricerca le stringhe che iniziano con ‘xyz’ e anche i soli caratteri ‘xyz’;

LIKE ‘%xyz’ Ricerca le stringhe che terminano con ‘xyz’ e anche i soli caratteri ‘xyz’;

LIKE ‘%xyz%’ Ricerca le stringhe che contengono ‘xyz’ e anche i soli caratteri ‘xyz’;

LIKE ‘_xyz’ Ricerca le stringhe di 4 caratteri che finiscono con ‘xyz’.

Nome LIKE ‘xyz’ Equivale al confronto: Nome = ‘xyz’

SELECT Cognome, DipartimentoFROM ImpiegatiWHERE Cognome LIKE 'R%';

SELECT Nominativo, Via, CittàFROM RubricaWHERE Nominativo LIKE '_. B%';

Per ricercare uno dei caratteri jolly in una stringa si deve usare uno speciale carattere, dettocarattere escape per qualificare un carattere come carattere da ricercare e non come metacarattere.Il carattere escape viene precisato con la dichiarazione ESCAPE.

Per esempio, per ricercare la presenza del carattere _ nel nome di un dipartimento, si usa laseguente condizione:

LIKE '%$_%' ESCAPE '$'.

Il carattere ‘$’ è il carattere escape e la sequenza ‘$_’ precisa che il carattere _ (underline) è ilcarattere da ricercare nella stringa e non un carattere jolly.

Controlla nominativi con: un carattere iniziale, seguito da unpunto, da uno spazio, dalla lettera B e da zero o piùcaratteri come, per esempio, in: ‘A. Bianchi’ o ‘R. Bassetti’.

Cognome e dipartimento degli impiegaticon cognome che inizia per R.

Chi è il dipendente conlo stipendio massimo?

Le precedenti interrogazioni possonoessere fuse nell’interrogazione annidata:

Noto lo stipendio massimo …

Interrogazioni annidate

� Sottointerrogazioni che restituiscono uno scalare: il linguaggio SQL ha un’interessantecaratteristica secondo la quale si può sostituire a una costante in una clausola Where,l’interrogazione che genera tale costante.

Si costruisce un comando Select che contiene un altro comando Select al proprio interno,realizzando così un’interrogazione annidata. Il comando interno, indicato con il nome disottoquery, deve comparire racchiuso in una coppia di parentesi senza il punto e virgolafinale.

Esempio

SELECT MAX(Stipendio)FROM Impiegati;

SELECT Nome, Cognome, DipartimentoFROM ImpiegatiWHERE Stipendio = 85000;

Page 93: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL230 © Istituto Italiano Edizioni Atlas

SELECT Nome, Cognome, DipartimentoFROM ImpiegatiWHERE Stipendio = (SELECT MAX(Stipendio) FROM Impiegati);

SELECT Cognome, Nome, DipartimentoFROM ImpiegatiWHERE Stipendio = MAX(Stipendio);

SELECT Nome, Cognome, StipendioFROM ImpiegatiWHERE Stipendio < (SELECT AVG(Stipendio) FROM Impiegati);

SELECT Nome, CognomeFROM ImpiegatiWHERE ID = (SELECT Manager FROM Dipartimenti WHERE Descrizione = 'Personale');

SELECT Nome, CognomeFROM Dipartimenti AS D, Impiegati AS IWHERE D.Manager = I.ID AND D.Descrizione = 'Personale';

WHERE Stipendio < (SELECT AVG(Stipendio) FROM Impiegati)

WHERE (SELECT AVG(Stipendio) FROM Impiegati) > Stipendio

� Sottointerrogazioni che restituiscono un elenco di valori: un elenco di valori che com-pare dopo il predicato IN, in una clausola Where, può essere sostituito dalla sottointerro-gazione che lo genera.

Le interrogazioni annidate servono per risolvere i problemidove compaiono confronti con una funzione di aggregazione.Sono indispensabili perché una funzione di aggregazione nonpuò comparire nella clausola From di un comando Select.

Un’unica interrogazione: unsolo punto e virgola finale.

ERRORE: sintassi nonammessa da SQL

Chi sono i dipendenti con lostipendio inferiore alla media?

Il comando Select interno restituisce ilvalore medio degli stipendi che viene usatonell’interrogazione principale per il confrontocon Stipendio nella clausola Where.

Le interrogazioni annidate introducono unamodalità alternativa a quella dell’algebrarelazionale per risolvere problemi. Esempio:Chi è il manager del dipartimento Personale?

Regola: la sottoquery deve comparireal secondo membro nei confronti

Interrogazione secondol’algebra relazionale

Errore

OK

Interrogazione annidata

Page 94: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 231© Istituto Italiano Edizioni Atlas

Esempio

SELECT DISTINCT ManagerFROM Dipartimenti;

SELECT Nome, Cognome, StipendioFROM ImpiegatiWHERE ID IN (10,12,13,14);

SELECT Nome, Cognome, StipendioFROM ImpiegatiWHERE ID IN (SELECT DISTINCT Manager

FROM Dipartimenti);

SELECT Cognome, Nome, StipendioFROM ImpiegatiWHERE ID NOT IN (SELECT DISTINCT Manager FROM Dipartimenti);

L’elenco generato dalla sottoquery può essere controllato, oltre che con i predicati IN e NOTIN, anche con altri predicati (ALL, ANY ed EXISTS) che sono presentati nei Contenuti digitaliintegrativi richiamati alla fine del paragrafo.

� Numero dei valori diversi tra loro in una colonnaSi consideri ora il problema di calcolare da quante differenti città di residenza provengonoi dipendenti del dipartimento Produzione. Nel linguaggio SQL si usa la funzione Count conla clausola Distinct come nel seguente comando:

SELECT COUNT(DISTINCT Residenza)FROM ImpiegatiWHERE Dipartimento = 'Prod';

La clausola Distinct non può essere usata nel formato con l’asterisco Count(*).

Il linguaggio SQL di Access non consente l’uso della clausola Distinct all’interno della funzio-ne Count. Il problema può essere risolto con la seguente interrogazione annidata, inseritadirettamente nella clausola From:

SELECT COUNT(*)FROM (SELECT DISTINCT Residenza

FROM Impiegati WHERE Dipartimento = 'Prod');

� Sottoquery in modalità QBEAccess ammette l’uso delle interrogazioni annidate. Il loro inserimento può essere effettuato,come abbiamo mostrato negli esempi precedenti, scrivendo l’interrogazione direttamentenella finestra SQL delle query. Per inserire una sottoquery in modalità QBE, occorre scriverel’istruzione Select che rappresenta la sottoquery nella riga Criteri della griglia QBE.

Nome, Cognome e Stipendio deidipendenti che sono manager.

Restituisce l’elenco: 10,12,13, 14

Fondendo le due precedenti interrogazionisi ottiene la query annidata a lato.

DISTINCT per evitare che i manager a capodi più di un dipartimento compaiano più volte.

Nome, Cognome e Stipendio deidipendenti che non sono manager.

Restituisce 2

Page 95: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL232 © Istituto Italiano Edizioni Atlas

La sottoquery va scritta all’interno di una coppia di parentesi tonde e, per rendere piùagevole la scrittura del comando, è opportuno usare la finestra di ingrandimento che si aprefacendo clic con il tasto destro del mouse e scegliendo Zoom nel menu di scelta rapida.

Nella figura, che mostra la precedente interrogazione DatiManager in Visualizzazione Strut-tura, si noti la sottoquery che produce l’elenco degli ID dei manager da controllare con ilpredicato IN.

� Query di ricerca dati duplicati in Access

La ricerca di valori duplicati in una colonna di una tabella si può eseguire con una queryprodotta da una creazione guidata. Per generare la query si attiva la Creazione guidataquery (nella scheda Crea, gruppo Query) e, nella finestra Nuova query si sceglie Creazioneguidata Query ricerca duplicati. Il generatore, in successive finestre di dialogo, richiede dispecificare: la tabella e il campo nel quale cercare i valori duplicati e quali altri campi devonoessere visualizzati nell’output generato. Al termine dell’interazione la query è salvata con unnome opportuno ed eseguita automaticamente.Per esempio, la ricerca di valori duplicati nel campo Manager di Dipartimenti può essere utileper identificare i manager responsabili di più di un dipartimento. Nell’autocomposizionebisogna richiedere di cercare nella tabella Dipartimenti i valori duplicati di Manager e, oltreal valore di tale campo, di visualizzare anche quello di Descrizione. Access genera la queryTrova duplicati per Dipartimenti in figura.

Page 96: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 233© Istituto Italiano Edizioni Atlas

11 Le viste logiche

Il linguaggio SQL consente di decidere le modalità con le quali gli utenti possono vedere letabelle del database, creando una finestra, detta view (vista), su alcuni o su tutti i dati contenutiin una o più tabelle. La vista viene identificata con un nome assegnato in fase di creazione conil comando CREATE VIEW. Con le viste è possibile decidere anche che un utente possa avere unavisione solo parziale dei dati registrati nel database, e non possa vedere altri dati: in questo modosi elimina il rischio di modifiche indesiderate su dati che non riguardano il lavoro di un determi-nato utente e nello stesso tempo l’utente non rimane distratto dai dati che sono ininfluenti peril proprio lavoro. L’utente può comunque operare sulla vista con i comandi illustrati nei paragrafiprecedenti, come se fosse una tabella del database. Le viste sono finestre dinamiche sulle tabelledel database, in quanto ogni modifica ai dati sulla tabella primaria è disponibile per l’utenteattraverso la vista. Vale anche l’opposto: ogni modifica sui dati della vista si riflette sui dati dellatabella primaria. Non tutte le viste sono, però, aggiornabili: infatti le viste che contengono risultatidi funzioni di aggregazione non possono essere modificate.La creazione della vista avviene con l’istruzione Select all’interno del comando Create View. Peresempio, per creare una vista di nome ImpiegatiCapi contenente i dati dei manager, si usa ilcomando:

CREATE VIEW ImpiegatiCapi ASSELECT ID, Nome, Cognome, DipartimentoFROM ImpiegatiWHERE ID IN (10,12,13,14);

essendo 10, 12, 13, 14 gli identificativi dei manager.Una vista può essere eliminata con il comando DROP VIEW seguito dal nome assegnato alla vistain fase di creazione. Per esempio, il comando seguente elimina la vista creata con il nome ImpiegatiCapi:

DROP VIEW ImpiegatiCapi;

La versione SQL di Access non prevede il comando Create View, ma le query, salvate con un nomesimbolico, sono, a tutti gli effetti, viste logiche e, come queste, possono essere utilizzate con icomandi Select.

3. Intersezione e differenza con il predicato IN4. I predicati ANY, ALL, EXISTS

CONTENUTI DIGITALI INTEGRATIVI

Il codice SQL dell’interrogazione è il seguente:

Come si vede, la query di ricerca dei dati duplicati utilizza una query annidata per generarel’elenco dei manager che compaiono più di una volta in Dipartimenti. Nell’interrogazioneannidata compare una sottoquery che produce, con un controllo sui raggruppamenti, l’elen-co dei valori duplicati.

ESERCIZI da 13 a 36 pag. 250-251 e da 50 a 72 pag. 252

Page 97: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL234 © Istituto Italiano Edizioni Atlas

Viste logiche con raggruppamenti e controllo delle condizioni

Le viste logiche possono semplificare la progettazione di query complesse. Mostriamo con unesempio come utilizzare le viste logiche per affrontare problemi impossibili da risolvere diver-samente. Costruiamo la vista logica di nome PersonaleDipartimenti che elenca, per ogni diparti-mento, il totale degli stipendi erogati e il numero dei dipendenti che lavorano nel dipartimento:

CREATE VIEW PersonaleDipartimenti ASSELECT Dipartimento AS Dipart, COUNT(*) AS NumDipendenti, SUM(Stipendio) AS TotStipendiFROM ImpiegatiGROUP BY Dipartimento;

Il comando Create View crea una vista logica con tre attributi di nome Dipart, NumDipendenti,TotStipendi con i quali si fa riferimento, nell’ordine, ai tre valori prodotti dalla clausola Selectdell’interrogazione. Partendo dalla vista logica PersonaleDipartimenti si possono costruire leinterrogazioni:

� Dipartimento che spende di più in stipendi

SELECT DipartFROM PersonaleDipartimentiWHERE TotStipendi = (SELECT MAX(TotStipendi)

FROM PersonaleDipartimenti);

� Numero medio di dipendenti per dipartimento

SELECT AVG(NumDipendenti)FROM PersonaleDipartimenti;

Si osservi che non sarebbe stato possibile produrre questi risultati con un’interrogazionebasata sulla tabella Impiegati.

12 Esempi di interrogazioni con uso del linguaggio SQL

Attività sportive studentesche

Le informazioni relative alle attività sportive studentesche devono essere organizzate in unabase di dati. Gli studenti, dei quali si conservano le informazioni anagrafiche, frequentano gliIstituti superiori, e possono partecipare a una o più manifestazioni sportive (specialità sportivediverse, giornate diverse, campionati che durano per mesi o gare di un giorno). Per ogni attivitàsportiva le scuole indicano un professore che svolge la funzione di riferimento e di allenatore:ogni professore segue una sola manifestazione, ma una stessa manifestazione può essereseguita da professori diversi di scuole diverse.Definire il modello del database e rappresentare le seguenti interrogazioni:� Numero degli studenti che partecipano a una determinata manifestazione sportiva.� Elenco anagrafico degli allenatori di un’attività sportiva.� Elenco delle scuole (denominazione) con il numero di studenti che partecipano alle attività sportive.� Elenco delle scuole (con denominazione, indirizzo, telefono) con studenti che partecipano a

una determinata manifestazione sportiva.

ESERCIZI da 37 a 39 pag. 251 e da 73 a 75 pag. 253

ESEMPIO 3

Page 98: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 235© Istituto Italiano Edizioni Atlas

� Elenco dei professori (cognome e nome) e scuole (denominazione) di appartenenza in ordinealfabetico.

� Numero degli studenti partecipanti di una determinata scuola per ciascuna delle manifesta-zioni sportive.

Analisi dei datiLe entità che possono essere individuate nel problema sono:� Istituto, per gli istituti di appartenenza di studenti e professori; suoi attributi sono: codice

dell’istituto (chiave primaria), denominazione, indirizzo, telefono, tutti di tipo carattere.� Studente, per gli studenti delle diverse scuole che partecipano alle manifestazioni, con

attributi: codice dello studente (chiave Primaria), cognome, nome, data di nascita, classe; ilcodice dello studente e la classe sono di tipo numerico, la data di nascita è di tipo datamentre gli altri attributi sono di tipo carattere.

� Professore, per rappresentare i docenti che svolgono le funzioni di allenatore; suoi attributisono: codice del professore, di tipo numerico (PK), cognome e nome di tipo carattere.

� Manifestazione, per le attività sportive, con attributi: codice della manifestazione (PK),descrizione, luogo, data di inizio per i tornei e i campionati o di svolgimento per le garedi una giornata. Tutti gli attributi sono di tipo carattere ad eccezione della data di inizio cheè di tipo data.

Nell’ipotesi che i dati sugli Istituti siano comunque inseriti nel database, anche se non ci sonostudenti o professori che partecipano alle manifestazioni di un determinato anno scolastico,si può disegnare il seguente modello Entità/Associazioni.

Modello E/R

N 1

Frequentare Studente

CodiceStud {PK}CognStudNomeStudDataNascitaClasse

Istituto

CodiceIstituto {PK}DenominazioneIndirizzoTelefono

N

Partecipare

N

1

Impiegare

N1 N

CoordinareManifestazione

CodiceManif {PK}DescrizioneLuogoDataInizio

Professore

CodiceProf {PK}CognProfNomeProf

Associazione molti a uno,perché ci sono piùstudenti di un istituto chepartecipano alle gare euno studente frequentaun solo istituto.

Lettura del modelloOgni istituto può esserefrequentato da uno o piùstudenti, ogni studentedeve frequentare un soloistituto.

Associazione moltia molti perché ognistudente partecipa auna o più manifesta-zioni e a ognimanifestazionepartecipano piùstudenti.

Lettura del modelloOgni studente puòpartecipare a una opiù manifestazioni,ogni manifestazionepuò essere seguitada uno o piùstudenti.

Associazione uno a molti,perché ogni istituto puòavere molti docenti cheseguono le manifestazionisportive e ogni docenteafferisce a un solo istituto.

Lettura del modelloOgni istituto può impiegareuno o più professori, ogniprofessore deve essereimpiegato presso un soloistituto.

Associazione uno a molti perché ogni manifestazionepuò avere più professori coordinatori, provenienti dascuole diverse e c’è il vincolo che ogni professoresegua una sola manifestazione.

Lettura del modelloOgni manifestazione può essere coordinatada uno o più professori, ogni professorepuò coordinare una sola manifestazione.

Page 99: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL236 © Istituto Italiano Edizioni Atlas

Utilizzando le regole di derivazione si passa dal modello concettuale al modello logico, cioèalle tabelle: le associazioni uno a molti si rappresentano introducendo le chiavi esterne nelletabelle Studenti e Professori per indicare l’istituto di appartenenza; nella tabella Professoriviene aggiunta anche un’altra chiave esterna per l’associazione con l’entità Manifestazione;l’associazione molti a molti genera una nuova tabella Iscrizioni che contiene le chiavi primariedi Studenti e Manifestazioni più eventuali attributi dell’associazione, per esempio la data diiscrizione.

Tabelle

Istituti (CodiceIstituto, Denominazione, Indirizzo, Telefono)

Studenti (CodiceStud, CognStud, NomeStud, DataNascita, Classe, CodiceIstituto)

Manifestazioni (CodiceManif, Descrizione, Luogo, DataInizio)

Professori (CodiceProf, CognProf, NomeProf, CodiceIstituto, CodiceManif)

Iscrizioni (ID, CodiceStud, CodiceManif, DataIscrizione).

Le caratteristiche degli attributi delle tabelle sono illustrate nello schema seguente:

Tabella Attributo Chiave Formato Indicizzato

Istituti CodiceIstituto PK Carattere (4) sìDenominazione Carattere (30) sìIndirizzo Carattere (30) noTelefono Carattere (12) no

Studenti CodiceStud PK Numerico (intero) sìCognStud Carattere (30) sìNomeStud Carattere (20) noDataNascita Data/ora noClasse Numerico (byte) noCodiceIstituto FK Carattere (4) sì

Manifestazioni CodiceManif PK Carattere (3) sìDescrizione Carattere (40) sìLuogo Carattere (20) noDataInizio Data/ora no

Professori CodiceProf PK Numerico (intero) sìCognProf Carattere (30) sìNomeProf Carattere (20) noCodiceIstituto FK Carattere (4) sìCodiceManif FK Carattere (3) sì

Iscrizioni ID PK Numerico (autoinc) sìCodiceStud FK Numerico (intero) sìCodiceManif FK Carattere (3) sìDataIscrizione Data/ora no

Interrogazioni

Le costanti utilizzate nelle condizioni di ricerca sono indicate tra parentesi quadre.Nella rappresentazione delle interrogazioni mediante pseudocodifica sono stati inseriti com-menti nei punti dove sono previste operazioni quali ordinamenti, raggruppamenti e calcoliche non sono previste nel modello relazionale e non hanno una forma di rappresentazionestandardizzata.

Page 100: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 237© Istituto Italiano Edizioni Atlas

Numero degli studenti che partecipano a una determinata manifestazione sportiva.

1. σP Manifestazioni Temp1 = Selezione di Manifestazioni per Descrizione = [manifestazione]2. Temp1PK IscrizioniFK Temp2 = Congiunzione di Temp1 e Iscrizioni su CodiceManif3. Conteggio delle righe di Temp2

SELECT COUNT(*) AS NumeroStudentiFROM Manifestazioni, IscrizioniWHERE Manifestazioni.CodiceManif = Iscrizioni.CodiceManif AND Descrizione = [manifestazione da controllare];

Elenco anagrafico degli allenatori di un’attività o manifestazione sportiva.

1. σP Manifestazioni Temp1 = Selezione di Manifestazioni per Descrizione = [manifestazione]2. Temp1PK ProfessoriFK Temp2 = Congiunzione di Temp1 e Professori su CodiceManif3. ΠL Temp2 Proiezione di Temp2 su CognProf, NomeProf Ordinato su CognProf

e NomeProf

SELECT CognProf, NomeProfFROM Manifestazioni, ProfessoriWHERE Manifestazioni.CodiceManif = Professori.CodiceManif AND Descrizione = [manifestazione da controllare]ORDER BY CognProf, NomeProf;

Elenco delle scuole (denominazione) con il numero di studenti che partecipano alle attivitàsportive.

1. IstitutiPK StudentiFK Temp1 = Congiunzione di Istituti e Studenti su CodiceIstituto2. Temp2 = Raggruppamento per Denominazione e Conteggio3. ΠL Temp2 Proiezione di Temp2 su Denominazione, Conteggio

SELECT Denominazione, COUNT (DISTINCT CodiceStud) AS NumeroFROM Studenti, IstitutiWHERE Studenti.CodiceIstituto = Istituti.CodiceIstitutoGROUP BY Denominazione;

Elenco delle scuole (con denominazione, indirizzo, telefono) con studenti che partecipano a unadeterminata manifestazione sportiva.

1. σP Manifestazioni Temp1 = Selezione di Manifestazioni per Descrizione = [manifestazione]2. Temp1PK IscrizioniFK Temp2 = Congiunzione di Temp1 e Iscrizioni su CodiceManif3. Temp2FK StudentiPK Temp3 = Congiunzione di Temp2 e Studenti su CodiceStud4. Temp3FK IstitutiPK Temp4 = Congiunzione di Temp3 e Istituti su CodiceIstituto5. Temp5 = Raggruppamento di Temp4 per Denominazione6. ΠL Temp5 Proiezione di Temp5 su Denominazione, Indirizzo, Telefono

SELECT Denominazione, Indirizzo, TelefonoFROM Manifestazioni, Iscrizioni, Studenti, IstitutiWHERE Manifestazioni.CodiceManif = Iscrizioni.CodiceManif AND

Studenti.CodiceStud = Iscrizioni.CodiceStud ANDStudenti.CodiceIstituto = Istituti.CodiceIstituto ANDDescrizione = [manifestazione da controllare]

GROUP BY Denominazione, Indirizzo, Telefono;

Page 101: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL238 © Istituto Italiano Edizioni Atlas

Elenco alfabetico dei professori (cognome e nome) e scuole (denominazione) di appartenenza.

1. IstitutiPK ProfessoriFK Temp1 = Congiunzione di Istituti e Professori su CodiceIstituto

2. ΠL Temp1 Proiezione di Temp1 su CognProf, NomeProf, Denominazioneordinato su CognProf e NomeProf

SELECT CognProf, NomeProf, DenominazioneFROM Professori, IstitutiWHERE Professori.CodiceIstituto = Istituti.CodiceIstitutoORDER BY CognProf, NomeProf;

Numero degli studenti partecipanti di una determinata scuola per ciascuna delle manifestazio-ni sportive.

1. σP Istituti Temp1 = Selezione di Istituti per Denominazione = [scuola]

2. Temp1PK StudentiFK Temp2 = Congiunzione di Temp1 e Studenti su CodiceIstituto

3. Temp2PK IscrizioniFK Temp3 = Congiunzione di Temp2 e Iscrizioni su CodiceStud

4. Temp3FK ManifestazioniPK Temp4 = Congiunzione di Temp3 e Manifestazioni su CodiceManif

5. Temp5 = Raggruppamento di Temp4 per Descrizione e Conteggio

6. ΠL Temp5 Proiezione di Temp5 su Descrizione, Conteggio

SELECT Descrizione, COUNT(*) AS NumeroFROM Manifestazioni, Iscrizioni, Studenti, IstitutiWHERE Manifestazioni.CodiceManif = Iscrizioni.CodiceManif AND

Studenti.CodiceStud = Iscrizioni.CodiceStud ANDStudenti.CodiceIstituto = Istituti.CodiceIstituto ANDDenominazione = [scuola da controllare]

GROUP BY Descrizione;

Viaggi e vacanze.

Un’agenzia di viaggi intende organizzare in una base di dati tutte le informazioni riguardantila sua attività: i viaggi o vacanze, le organizzazioni turistiche o tour operator, i clienti dei propriservizi, le nazioni o località o città che sono destinazione dei viaggi/vacanze.Tutte le attività proposte ai clienti sono dei pacchetti: ciascuno di essi si riferisce a un’organiz-zazione turistica, e riguardano una precisa zona del mondo o nazione o città. Ci possono essereofferte di viaggi con la stessa destinazione da parte di organizzazioni diverse.Per esempio ci può essere una crociera nel Mediterraneo proposta dall’organizzazione turistica A,oppure un soggiorno di una settimana a Vienna offerta dall’organizzazione turistica B.Di ogni pacchetto offerto occorre conoscere modalità e prezzi; di ogni località o nazione èopportuno tenere memorizzate informazioni su condizioni climatiche, moneta, ecc.Un cliente può naturalmente acquistare in date diverse molti viaggi o vacanze.Definire il modello del database e rappresentare le seguenti interrogazioni:� Elenco dei viaggi/vacanza con prezzo inferiore a un prezzo prefissato.� Elenco dei soggiorni con prezzo in una località prefissata.� Elenco dei clienti, con nome e indirizzo, che hanno fatto un viaggio con una determinata

destinazione.� Numero dei pacchetti offerti da un’organizzazione turistica prefissata.� Elenco di tutte le nazioni o località con il numero di pacchetti che si riferiscono ad esse.

ESERCIZIO GUIDATOAPPLICA

Page 102: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 239© Istituto Italiano Edizioni Atlas

Analisi dei dati

Le entità che possono essere individuate nel problema sono:

� Nazione, per rappresentare gli stati o le località che sono destinazioni dei pacchetti divacanze; attributi di Nazione sono: il codice della nazione o località, denominazione piùdettagliata.

� Organizzazione, per le società di turismo che offrono i viaggi e i soggiorni di vacanze, conattributi: codice dell’organizzazione, nome, telefono.

� Cliente, per l’anagrafica dei clienti dell’agenzia di viaggi; attributi di Cliente sono: codice delcliente, cognome e nome, indirizzo, telefono.

� Pacchetto, per rappresentare i pacchetti di viaggio o soggiorno, con attributi: codice delpacchetto, descrizione, modalità, prezzo.

Modello E/R

1 N

Offrire Organizzazione

CodiceOrg {PK}NomeOrgTelefonoOrg

Pacchetto

CodicePac {PK}DescrizioneModalitàPrezzo

Cliente

CodiceCli {PK}CognomeNomeIndirizzoTelefono

N N

Acquistare

Nazione

CodiceNaz {PK}DenominazioneMonetaClima

Esseredestinazione

N

1

Utilizzando le regole di derivazione si passa dal modello concettuale al modello logico, cioèalle tabelle: le associazioni uno a molti si rappresentano introducendo le chiavi esterne nellatabella Pacchetti per indicare l’organizzazione proponente e la nazione o località di destina-zione.

L’associazione molti a molti genera una nuova tabella Acquisti. Essa ha come chiave unnumero progressivo di registrazione e contiene le chiavi di Pacchetti e Clienti più eventualiattributi dell’associazione, per esempio la data in cui il cliente ha acquistato il pacchetto.

Associazione uno a molti, perchéun’organizzazione può offrire moltipacchetti, ma ogni pacchetto deveessere inteso come offerto da unaprecisa organizzazione.

Associazione molti a molti, perchéun cliente può acquistare, in datediverse, più viaggi e lo stessopacchetto viene acquistato da piùclienti.

Lettura del modelloOgni organizzazione può offrire uno o piùpacchetti, ogni pacchetto deve essereofferto da una sola organizzazione.

Associazione uno a moltiperché ci possono essere piùviaggi che hanno comedestinazione una certa nazione.

Lettura del modelloOgni pacchetto può essereacquistato da uno o più clienti,ogni cliente può acquistareuno o più pacchetti.

Lettura del modelloOgni nazione può esseredestinazione di uno o piùpacchetti, ogni pacchettodeve avere destinazione inuna sola nazione.

Page 103: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL240 © Istituto Italiano Edizioni Atlas

Tabelle

Nazioni (CodiceNaz, Denominazione, Moneta, Clima)

Clienti (CodiceCli, Cognome, Nome, Indirizzo, Telefono)

Organizzazioni (CodiceOrg, NomeOrg, TelefonoOrg)

Pacchetti (CodicePac, Descrizione, Modalità, Prezzo, CodiceNaz, CodiceOrg)

Acquisti (NumReg, CodiceCli, CodicePac, DataAcquisto)

Lo schema seguente illustra le caratteristiche degli attributi delle tabelle.

Tabella Attributo Chiave Formato Indicizzato

Nazioni CodiceNaz PK Carattere (3) sìDenominazione Carattere (20) sìMoneta Carattere (15) noClima Carattere (30) no

Clienti CodiceCli PK Numerico (intero) sìCognome Carattere (30) sìNome Carattere (20) noIndirizzo Carattere (25) noTelefono Carattere (12) sì

Organizzazioni CodiceOrg PK Carattere (4) sìNomeOrg Carattere (30) sìTelefonoOrg Carattere (12) no

Pacchetti CodicePac PK Carattere (5) sìDescrizione Carattere (50) sìModalità Carattere (40) noPrezzo Numerico (2 decimali) noCodiceNaz FK Carattere (3) sìCodiceOrg FK Carattere (4) sì

Acquisti NumReg PK Numerico (autoinc) sìCodiceCli FK Numerico (intero) sìCodicePac FK Carattere (5) sìDataAcquisto Data/ora no

Interrogazioni

Elenco dei viaggi/vacanza con prezzo inferiore a un prezzo prefissato.

1. σP Pacchetti Selezione di Pacchetti per Prezzo < [prezzo massimo]

SELECT *FROM PacchettiWHERE Prezzo < [prezzo massimo];

Elenco dei soggiorni con prezzo in una località prefissata.

1. σP Nazioni Temp1 = Selezione di Nazioni per Denominazione = [località]

2. Temp1PK PacchettiFK Temp2 = Congiunzione di Temp1 e Pacchetti su CodiceNaz

3. ΠL Temp2 Proiezione di Temp2 su Descrizione, Modalità, Prezzo

Page 104: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 241© Istituto Italiano Edizioni Atlas

SELECT Descrizione, Modalità, PrezzoFROM Nazioni, PacchettiWHERE Nazioni.CodiceNaz = Pacchetti.CodiceNaz AND

Denominazione = [località prefissata];

Elenco dei clienti, con cognome, nome e indirizzo, che hanno fatto un viaggio con una deter-minata destinazione.

1. σP Nazioni Temp1 = Selezione di Nazioni per Denominazione = [località]

2. Temp1PK PacchettiFK Temp2 = Congiunzione di Temp1 e Pacchetti su CodiceNaz

3. Temp2PK AcquistiFK Temp3 = Congiunzione di Temp2 e Acquisti su CodicePac

4. Temp3FK ClientiPK Temp4 = Congiunzione di Temp3 e Clienti su CodiceCli

5. ΠL Temp4 Proiezione di Temp4 su Cognome, Nome, Indirizzo

SELECT Cognome, Nome, IndirizzoFROM Nazioni, Pacchetti, Acquisti, ClientiWHERE Nazioni.CodiceNaz = Pacchetti.CodiceNaz AND

Pacchetti.CodicePac = Acquisti.CodicePac ANDAcquisti.CodiceCli = Clienti.CodiceCli ANDDenominazione = [località da controllare];

Numero dei pacchetti offerti da un’organizzazione turistica prefissata.

1. σP Organizzazioni Temp1 = Selezione di Organizzazioni per NomeOrg = [organizzazione]2. Temp1PK PacchettiFK Temp2 = Congiunzione di Temp1 e Pacchetti su CodiceOrg3. ΠL Temp2 Proiezione di Temp2 su Conteggio

SELECT COUNT(*) AS NumeroFROM Pacchetti, OrganizzazioniWHERE Pacchetti.CodiceOrg = Organizzazioni.CodiceOrg AND

NomeOrg = [organizzazione da controllare];

Elenco di tutte le nazioni o località con il numero di pacchetti che si riferiscono ad esse.

1. NazioniPK PacchettiFK Temp1 = Congiunzione di Nazioni e Pacchetti su CodiceNaz2. Temp2 = Raggruppamento di Temp1 per Denominazione e Conteggio3. ΠL Temp2 Proiezione di Temp2 su Denominazione, Conteggio

SELECT Denominazione, COUNT(*) AS NumeroFROM Nazioni, PacchettiWHERE Nazioni.CodiceNaz = Pacchetti.CodiceNazGROUP BY Denominazione;

Esempio con query annidate e condizioni sui raggruppamenti

Rappresentanti e fatture ai clienti

Si vogliono organizzare le informazioni relative ai clienti, ai loro rappresentanti e alle fattureemesse. Ogni rappresentante ha tanti clienti, mentre a un cliente corrisponde un solo rappre-sentante. Per semplicità si supponga di registrare solo la data e l’importo totale di ogni fattura,senza specificare le righe di dettaglio sugli articoli venduti.

ESERCIZIO GUIDATOAPPLICA

Page 105: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL242 © Istituto Italiano Edizioni Atlas

Definire il modello del database e rappresentare le seguenti interrogazioni:

� Elenco dei clienti di un rappresentante.

� Numero dei clienti affidati a un determinato rappresentante.

� Cognome e nome del rappresentante di un determinato cliente.

� Elenco delle fatture di un codice cliente prefissato, in ordine di data.

� Fatturato raggruppato per codice rappresentante.

� Numero delle fatture emesse raggruppate per codice rappresentante.

� Nome del cliente e data di emissione per la fattura con importo massimo.

� Nome del rappresentante corrispondente alla fattura con importo massimo.

� Codice e nome dei clienti per i quali il fatturato totale è superiore a un valore prefissato.

� Codice e nome dei rappresentanti per i quali il numero delle fatture è superiore a un numeroprefissato.

Analisi dei dati

Le entità che possono essere individuate nel problema sono:

� Cliente, per i clienti ai quali vengono emesse le fatture; attributi di Cliente sono: codice delcliente, ragione sociale, indirizzo, telefono, partita IVA.

� Rappresentante, per gli agenti ai quali sono assegnati i clienti; suoi attributi sono: codice delrappresentante, cognome, nome, zona assegnata.

� Fattura, per le vendite effettuate dai rappresentanti; i suoi attributi sono: numero dellafattura, data di emissione, importo.

Modello E/R

Utilizzando le regole di derivazione si passa dal modello concettuale alle tabelle, introducen-do le chiavi esterne per rappresentare le associazioni uno a molti.

Tabelle

Rappresentanti (CodiceRap, CognomeRap, NomeRap, Zona)Clienti (CodiceCli, RagioneSociale, Indirizzo, Telefono, PartitaIVA, CodiceRap)Fatture (NumeroFatt, DataFatt, Importo, CodiceCli)

N 1

RicevereFattura

NumeroFatt {PK}DataFattImporto

Cliente

CodiceCli {PK}RagioneSocialeIndirizzoTelefonoPartitaIVA

Rappresentante

CodiceRap {PK}CognomeRapNomeRapZona

N 1

Visitare

Associazione uno a molti perché ognirappresentante ha tanti clienti, mentre a uncliente corrisponde un solo rappresentante.

Associazione uno a molti, perché per lo stessocliente possono essere emesse molte fatture, maciascuna fattura è ricevuta da un solo cliente.

Lettura del modelloOgni cliente può ricevere una opiù fatture, ogni fattura deveessere ricevuta da un solo cliente.

Lettura del modelloOgni rappresentante può visitare unoo più clienti, ogni cliente deve esserevisitato da un solo rappresentante.

Page 106: QUIZ - profcuccu.altervista.orgprofcuccu.altervista.org/4/DB/esercizi_guidatiAccess.pdf · viene presentato l’ambiente software Microsoft Access (versione 2013). Le differenze,

5. IL LINGUAGGIO SQL 243© Istituto Italiano Edizioni Atlas

Le caratteristiche degli attributi delle tabelle sono illustrate nello schema seguente:

Tabella Attributo Chiave Formato Indicizzato

Rappresentanti CodiceRap PK Carattere (4) sìCognomeRap Carattere (30) sìNomeRap Carattere (20) noZona Numerico (intero) no

Clienti CodiceCli PK Carattere (5) sìRagioneSociale Carattere (40) sìIndirizzo Carattere (30) noTelefono Carattere (12) noPartitaIVA Carattere (11) noCodiceRap FK Carattere (4) sì

Fatture NumeroFatt PK Numerico (autoinc) sìDataFatt Data/ora noImporto Numerico (2 decimali) noCodiceCli FK Carattere (5) sì

Interrogazioni

Elenco dei clienti di un rappresentante.

1. σP Rappresentanti Temp1 = Selezione di Rappresentanti per CognomeRap = [cognome]

2. Temp1PK ClientiFK Temp2 = Congiunzione di Temp1 e Clienti su CodiceRap

3. ΠL Temp2 Proiezione di Temp2 su RagioneSociale, Indirizzo, Telefono

SELECT RagioneSociale, Indirizzo, TelefonoFROM Clienti, RappresentantiWHERE Clienti.CodiceRap = Rappresentanti.CodiceRap AND

CognomeRap = [rappresentante da controllare];

Numero dei clienti affidati a un determinato rappresentante.

1. σP Rappresentanti Temp1 = Selezione di Rappresentanti per CognomeRap = [cognome]

2. Temp1PK ClientiFK Temp2 = Congiunzione di Temp1 e Clienti su CodiceRap

3. Conteggio delle righe di Temp2

SELECT COUNT(*) AS NumeroClientiFROM Clienti, RappresentantiWHERE Clienti.CodiceRap = Rappresentanti.CodiceRap AND

CognomeRap = [rappresentante da controllare];

Cognome e nome del rappresentante di un determinato cliente.

1. σP Clienti Temp1 = Selezione di Clienti per RagioneSociale = [cliente]

2. Temp1FK RappresentantiPK Temp2 = Congiunzione di Temp1 e Rappresentanti su CodiceRap

3. ΠL Temp2 Proiezione di Temp2 su CognomeRap, NomeRap

SELECT CognomeRap, NomeRapFROM Clienti, RappresentantiWHERE Clienti.CodiceRap = Rappresentanti.CodiceRap AND

RagioneSociale = [cliente da controllare];