A.S. 2002/2003 - SECONDA PROVA - ISTRUZIONE TECNICA
M070 - ESAME DI STATO DI ISTITUTO TECNICO INDUSTRIALE
Indirizzo: INFORMATICA progetto "Abacus"
Tema di: INFORMATICA GENERALE E APPLICAZIONI TECNICO-SCIENTIFICHE
Un vivaio vuole realizzare una base di dati per gestire le sue attività di vendita di piante e le sue attività esterne.
Si vogliono memorizzare, oltre alle informazioni generali sulle diverse specie di piante, anche quelle relative alle
specifiche piante presenti nel vivaio.
Di ogni specie deve essere registrato il nome, un'immagine, una breve descrizione, informazioni relative al modo di
coltivazione e alle caratteristiche dell'esposizione ed infine se si tratta di pianta da interno o da esterno.
Si vogliono inoltre registrare i dati relativi alle piante effettivamente presenti nel vivaio, raggruppate per specie,
eventualmente suddivise in diversi tipi in base al prezzo di vendita. Per ogni specie (o per ogni tipo, se la specie è
suddivisa in tipi), è necessario registrare il numero di esemplari presenti nel vivaio e il costo di ogni esemplare.
Si vogliono inoltre gestire le informazioni relative al personale che lavora nel vivaio (agronomi, operai, amministrativi)
registrando i dati anagrafici, la qualifica e, per gli agronomi, l'anno di assunzione nel vivaio. Ogni singola specie del
vivaio è sotto la responsabilità di un agronomo.
Le attività esterne del vivaio, quali ad esempio la potatura o la manutenzione dei giardini, sono svolte dal personale in
base alla qualifica (in generale ogni lavoratore è in grado di svolgere più di un'attività) e sono caratterizzate da un
codice, da un nome, da un costo orario.
Per le attività esterne si vogliono mantenere tutte le informazioni relative ai clienti che richiedono le attività, in
particolare se si tratta di privati o di aziende, la data di prenotazione e quella di effettuazione dell'intervento richiesto e
se per l'intervento sono necessarie piante del vivaio.
Il candidato consideri la situazione sopra descritta, precisi eventuali ipotesi aggiuntive e realizzi:
• un'analisi della realtà di riferimento che illustri le premesse per i successivi passi della progettazione della base
di dati;
• uno schema concettuale della base di dati;
• uno schema logico della base di dati;
• la definizione delle relazioni della base di dati in linguaggio SQL;
• le seguenti interrogazioni espresse in linguaggio SQL:
1. dato il nome di una pianta, riportare quanti esemplari di quella pianta sono presenti nel vivaio;
2. dato il nome di una stagione, visualizzare il nome delle piante che fioriscono in quella stagione;
3. dato il nome di un intervento esterno, tra quelli previsti dal vivaio, riportare il nome e il telefono dei
soggetti che hanno richiesto quell'intervento nel corso di un determinato anno solare;
4. dato il nome di un agronomo, riportare quanti esemplari di piante sono sotto la sua responsabilità;
5. visualizzare nome, descrizione e quantità di esemplari presenti nel vivaio, della pianta più economica
da interno;
6. riportare nome degli interventi richiesti non ancora evasi con il nome e il telefono del richiedente.
Il candidato sviluppi inoltre, a scelta uno dei seguenti moduli:
• Si vuole realizzare un sito Internet che presenti al pubblico il vivaio illustrandone i prodotti e le diverse attività.
• Si vuole consentire la gestione delle attività esterne del vivaio attraverso una prenotazione on-line da parte dei
clienti. Illustrare le modalità di realizzazione di questa funzione e gli strumenti tecnici adottabili.
Durata massima della prova: 6 ore.
È consentito soltanto l'uso di manuali tecnici e di calcolatrici tascabili non programmabili.
Non è consentito lasciare l'Istituto prima che siano trascorse 3 ore dalla dettatura del tema.
PREMESSA
In botanica le specie delle piante vengono indicate con due nomi (classificazione binomia): il primo è un sostantivo che
indica il genere e il secondo è un sostantivo o un aggettivo che indica la specie vera e propria. Ad esempio:
Rosa Canina, Fagus sylvatica, Veronica Allionii, ...
Le sottospecie, le varietà e le forme (quelli che nella traccia della prova scritta sono i tipi diversi) sono indicati con
sostantivi e/o aggettivi, come ad esempio:
Saxifraga exarata var. moschata, Anemone Hepatica var. machranta major, ...
ANALISI
a) Visione di insieme e carico di lavoro
Assunto quanto sopra esposto nei riguardi del concetto di specie in botanica, la prova d'esame riguarda la realizzazione
di una applicazione basata sui dati di un vivaio, nel quale sono in essere attività di vendita di piante e attività esterne di
varia natura. I dati riferiti al contesto di lavoro in questione sono riferiti:
- alle specie di piante in generale
- alle specie di piante con eventuali tipi indicati presenti all'interno del vivaio
- alle attività esterne che il vivaio offre ai clienti
- alle attività di vendita delle piante
- ai clienti (anagrafica) del vivaio
b) Descrizione del contesto del sistema
L'applicazione informatica che si deve occupare della gestione del vivaio si suppone sia una applicazione ex-novo,
utilizzata da una segretaria del vivaio, ad esempio (personale amministrativo).
c) Ipotesi aggiuntive
Si considerano le piante del vivaio classificate con l'indicazione della specie di appartenenza e del tipo (con l'intesa che
ad una specie possono corrispondere o nessuno, o uno o più tipi).
Si è pensato, nei riguardi del personale del vivaio, di considerare all'interno dello stesso contesto, appunto il
PERSONALE, anche gli agronomi, nonostante il fatto che per questi dipendenti del vivaio sia obbligatorio indicare la
data di assunzione.
Si è pensato di indicare all'interno della base di dati sia le specie di piante che i tipi all'interno delle specie.
Un intervento non evaso ha il campo data_effett uguale a NULL.
d) Vincoli
Il dato riferito alla data di assunzione deve essere specificato solo per gli agronomi.
I clienti si dividono in due categorie, privati e aziende. Le due categorie sono rappresentate da due valori ben precisi di
un campo dell'entità CLIENTE (tipo_cliente).
e) Approfondimenti
Vedi punto c)
f) Scelte implementative
I dati in ingresso dell'applicazione sono:
- dati delle specie di piante
- dati delle piante effettivamente presenti nel vivaio
- dati del personale
- dati sulle attività esterne del vivaio
- dati sui clienti (anagrafica, in effetti).
g) Strumenti Hardware e software
Si ipotizza di utilizzare:
- SQL per le interrogazioni (come indicato esplicitamente nella traccia) e per la progettazione logica del database per
l'indicazione delle relazioni tra le entità
- modello E/R per la progettazione concettuale
- modello relazionale per la progettazione del database
- html per la progettazione del sito
- codice ASP per la parte di programmazione lato server (ultimo punto della traccia).
Dall'analisi della traccia del tema d'esame si evince che la soluzione si basa sulle seguenti entità:
SPECIE_PIANTA per indicare i dati sulla specie della pianta
PIANTA_VIVAIO per indicare i dati delle piante effettivamente presenti nel vivaio
PERSONALE per indicare i dati riferiti al personale del vivaio, con l'indicazione precisa di un campo anno_assunzione
non nullo solo per gli agronomi
ATTIVITA_ESTERNA per i dati riferiti alle attività esterne che il vivaio offre ai suoi clienti
CLIENTE per l'anagrafica dei clienti del vivaio.
Si suppone, come indicato nel testo della traccia, che ogni dipendente sappia effettuare più di una attività all'interno del
vivaio, e quindi una attività esterna può essere effettuata da più di un dipendente.
Per comprendere in che cosa consiste la descrizione di una attività esterna effettuata come intervento presso un cliente,
si consideri il seguente esempio: si supponga che il cliente Overmach spa abbia richiesto in data 14/04/2003 al vivaio in
questione un intervento di sistemazione di 4 pioppi presenti all'interno dell'area cortilizia dell'azienda. Il vivaio
attraverso l'attività di segreteria organizza e manda 3 tecnici (operai) in data 18/04/2003 per effettuare l'intervento
richiesto, che la segreteria del vivaio valuta essere composto dalle attività di potatura, concimazione, eliminazione di
una delle 4 piante troppo vecchia. La situazione è così sintetizzata:
- Nome operai per l'intervento: Rossi, Verdi, Gialli
- Nome delle attività: potatura, (costo orario 15 euro), eliminazione pianta (costo orario 20 euro)
- Data effettuazione intervento: 18/04/2003
- Nome cliente: Overmach spa
- Piante del vivaio utilizzate: nessuna
Pare evidente che un intervento effettivamente svolto dal vivaio per essere codificato necessita di una serie di
informazioni eterogenee che quindi non possono appartenere alla medesima entità: sono presenti informazioni sul
cliente, sui dipendenti e sulle attività esterne che il vivaio è in grado di fornire.
Un primo schema di massima è il seguente:
PIANTA
VIVAIO
SPECIE
PIANTA
DIPENDENTE
CLIENTE
ATTIVITA
ESTERNA
nel quale si evidenziano, in prima istanza, quali sono le entità che descrivono il caso di studio, senza specificare con
precisione quali siano le relazioni e le associazioni tra le entità medesime.
Si evince immediatamente che le entità individuate e i collegamenti che intercorrono tra le stesse non sono sufficienti a
questo livello per descrivere completamente l'attività del vivaio così come è indicata nella traccia.
Dal testo del problema si ottiene che i dati sono legati dalle seguenti relazioni:
- tra l'entità SPECIE_PIANTA e l'entità PIANTA_VIVAIO vi è una relazione 1:N (ad una specie possono
corrispondere una o più piante del vivaio, ad una pianta del vivaio corrisponde una specie)
- tra l'entità PIANTA_VIVAIO e DIPENDENTE intercorre una relazione N:1 (un dipendente agronomo possono
corrispondere più specie del vivaio, fissata una specie questa è riferita ad un agronomo ben preciso, che è un dipendente
del vivaio).
- tra l'entità DIPENDENTE e l'entità ATTIVITA_ESTERNA c'è una relazione N:M (un dipendente può occuparsi di
molte attività esterne, una attività esterna può essere effettuata da più dipendenti)
- tra l'entità CLIENTE e l'entità ATTIVITA_ESTERNA intercorre una relazione N:M (un cliente può richiedere e
ottenere più attività esterne, una attività esterna può essere riferita a più clienti).
Per indicare queste relazioni di tipo "molti a molti" si determina una associazione denominata INTERVENTO che
contiene i campi chiave primaria di DIPENDENTE, di ATTIVITA_ESTERNA e di CLIENTE, oltre che i campi
specifici che sono riferiti all'intervento vero e proprio (data di prenotazione, data effettiva di intervento, se sono
utilizzate piante del vivaio oppure no).
Lo schema E/R e le relazioni che intercorrono tra i dati circolanti all'interno della realtà di studio è il seguente:
SPECIE
PIANTA
PIANTA
VIVAIO
DIPENDENTE
CLIENTE
INTERVENTO
ATTIVITA
ESTERNA
Volendo, infine, rappresentare la situazione degli agronomi i quali hanno un ruolo diverso tra i dipendenti del vivaio per
quanto concerne la loro responsabilità sulle specie di piante del vivaio ("Ogni singola specie del vivaio è sotto la
responsabilità di un agronomo) lo schema E/R diventa il seguente:
ATTIVITA
ESTERNA
INTERVENTO
CLIENTE
DIPENDENTE
IS A
AGRONOMO
PIANTA
VIVAIO
Questa NON E' una relazione, ma è un
modo per rappresentare il fatto che
l'agronomo è un dipendente particolare,
ovvero gli agronomi sono un sottoinsieme
di tutti i dipendenti. Nelle query questo si
traduce in una clausola WHERE o AND
della istruzione SELECT che fa uso del
campo qualifica dell'entità DIPENDENTE
che deve essere uguale ad 'agronomo'.
SPECIE
PIANTA
Le entità presenti nello schema sono descritte nel seguente modo (sottolineato il campo chiave primaria, in corsivo il
campo chiave esterna):
SPECIE_PIANTA (nome_specie, immagine, descrizione, modo_coltivaz, esposizione, collocazione, stagione_fioritura)
Dove:
- nome_specie è chiave primaria ed è una stringa composta sempre da due nomi
- immagine è il campo contenente il percorso per raggiungere un'immagine della specie di pianta
- descrizione è il dato per rappresentare una breve descrizione della pianta
- modo_coltivazione contiene informazioni sul modo di coltivazione della specie
- esposizione riguarda le modalità di esposizione della pianta
- collocazione serve per rappresentare i due dati "da interno" e "da esterno"
- stagione_fioritura con ovvio significato
PIANTA_VIVAIO (codice, specie, tipo, prezzo_vendita, numero_esemplari, costo, codice_agronomo)
Dove:
- codice è la chiave primaria
- specie è la chiave esterna riferita alla specie nell'entità SPECIE
- tipo è un'ulteriore classificazione della pianta
- codice agronomo è chiave esterna verso l'entità DIPENDENTE
gli altri campi hanno ovvio significato.
DIPENDENTE (codice, cognome, nome, qualifica, anno_assunz.)
Dove i campi sono propri di un'anagrafica e il campo anno_assunz assume valori non nulli solo per gli agronomi del
vivaio.
CLIENTE(codice, cognome, nome, indirizzo, citta, telefono, tipo_cliente)
Con ovvi significati dei campi
ATTIVITA_ESTERNA (codice, descrizione, costo_ora)
Con ovvio significato dei campi
INTERVENTO (codice_att, cod_dip, cod_cliente, data_prenotaz, data_effett, piante_vivaio)
Dove:
- la chiave primaria dell'entità è composta ed è indicata dai campi in grassetto
- codice_att è chiave esterna verso ATTIVITA_ESTERNA
- cod_dip è il campo chiave esterna verso l'entità DIPENDENTE
- cod_cliente è campo chiave esterna verso CLIENTE
- data_prenotaz e data_effett sono le date rispettivamente di prenotazione e di effettivo intervento
- piante_vivaio è un campo che contiene i valori 'SI' oppure 'NO' a seconda che siano state utilizzate piante del vivaio
durante l'intervento esterno.
ATTIVITA_ESTERNA(codice, desrizione, costo_ora)
Con ovvio significato dei campi.
Vincoli di integrità
I vincoli di integrità impliciti sono tutte le chiavi primarie individuate e tutte le chiavi esterne individuate.
Vincoli di integrità espliciti sono, ad esempio, il valore NULL nel campo data_assunz. della entità DIPENDENTE per
tutti i dipendenti tranne che per gli agronomi.
Regole di lettura
Una specie di pianta può riferirsi a una o più specie di piante del vivaio, differenti tra loro per il tipo.
Una pianta del vivaio appartiene certamente a una specie.
Ogni pianta del vivaio è riferita ad un agronomo, poichè ogni specie del vivaio è riferita ad un agronomo.
Ogni agronomo può essere il responsabile di una o più specie del vivaio e di conseguenza di una o più piante del vivaio.
Ogni cliente può richiedere una o più attività esterne al vivaio.
Ogni attività esterna può essere richiesta da uno o più clienti.
Un dipendente può effettuare una o più attività esterne, una attività esterna può essere effettuata da uno o più
dipendenti.
Modello logico e relazioni in SQL.
Lo schema logico della base di dati comprende le tabelle (i loro nomi sono quelli delle entità al plurale:
SPECIE_PIANTE, PIANTE_VIVAIO, DIPENDENTI, ATTIVITA_ESTERNE, CLIENTI. Si deve tenere conto che
l'agronomo è un caso particolare di dipendente.
In SQL la definizione delle tabelle e quindi delle relazioni che intercorrono tra le rispettive entità. Si ricorda che i nomi
delle tabelle da indicare nelle CREATE TABLE devono essere i rispettivi plurali delle entità.
CREATE TABLE SPECIE_PIANTE
{
NOME_SPECIE CHAR(25),
IMMAGINE CHAR(30),
DESCRIZIONE CHAR(50),
MODO_COLTIVAZIONE CHAR (50),
ESPOSIZIONE CHAR (10),
COLLOCAZIONE CHAR (20),
STAGIONE_FIORIT CHAR(15),
PRIMARY KEY NOME_SPECIE
};
CRETE TABLE PIANTE_VIVAIO
{
CODICE CHAR (5),
SPECIE CHAR CHAR(25),
TIPO CHAR (15),
PREZZO_VENDITA NUMERIC (3,2) NOT NULL,
NUMERO_ESEMPLARI INTEGER,
COSTO NUMERIC(3,2),
CODICE_AGRONOMO CHAR(5),
FOREIGN KEY (SPECIE) REFERENCES SPECIE_PIANTA (NOME_SPECIE)
FOREIGN KEY (CODICE_AGRONOMO) REFERENCES DIPENDENTI (CODICE)
}
[...]
QUERY
1) Dato il nome di una pianta, riportare quanti esemplari di quella pianta sono presenti nel vivaio
SELECT SUM(NUMERO_ESEMPLARI) AS TOTALE_ESEMPLARI FROM PIANTE_VIVAIO,SPECIE_PIANTA
WHERE SPECIE=NOME_SPECIE
AND SPECIE=[nome_pianta];
2) Dato il nome di una stagione, visualizzare il nome delle piante che fioriscono in quella stagione
SELECT NOME_SPECIE FROM SPECIE_PIANTE
WHERE STAGIONE_FIORIT = [stagione];
3) Dato il nome di un intervento esterno, tra quelli previsti dal vivaio, riportare il nome e il telefono dei soggetti che
hanno richiesto quell'intervento nel corso di un determinato anno solare.
SELECT COGNOME, NOME, TELEFONO FROM CLIENTI, INTERVENTO, ATTIVITA_ESTERNA
WHERE CODICE=COD_CLI
AND DATA_PRENOTAZ BETWEEN '01/01/03' AND '31/12/03'
AND DESCRIZIONE = [intervento];
4) Dato il nome di un agronomo, riportare quanti esemplari di piante sono sotto la sua responsabilità.
Per prima cosa selezioniamo dal database tutti gli esemplari del vivaio che sono sotto la responsabilità di un agronomo
particolare, poi contiamo quanti record ha la tabella così generata.
CREATE VIEW PIANTE_AGRONOMO
AS SELECT SPECIE, TIPO FROM PIANTE_VIVAIO, DIPENDENTI
WHERE CODICE_AGRONOMO=CODICE AND COGNOME=[cognome];
SELECT COUNT (*) AS NUMERO_PIANTE FROM PIANTE_AGRONOMO
5) Visualizzare nome, descrizione e quantità di esemplari presenti nel vivaio, della pianta più economica da interno
SELECT SPECIE, TIPO, NUM FROM PIANTA_VIVAIO, SPECIE_PIANTA
WHERE SPECE=NOME_SPECIE AND COLLOCAZ='interno'
AND COSTO=(SELECT MIN (COSTO) FROM PIANTA_VIVAIO)
6) Riportare il nome degli interventi richiesti non ancora evasi con il nome e il telefono del richiedente.
SELECT DESCRIZIONE, COGNOME, NOME, TELEFONO FROM ATTIVITA_ESTERNA, CLIENTE,
INTERVENTO
WHERE DATA_EFFETT=NULL
AND COD_CLIE=CODICE
SITO
Si pensa di risolvere il punto "Si vuole realizzare un sito Internet che presenti al pubblico il vivaio illustrandone i
prodotti e le diverse attività".
Si ipotizza di utilizzare:
- HTML per la costruzione delle pagine del sito
- ASP per la parte di programmazione lato server del sito
- un server web del tipo IIS
- Internet Explorer per i client di rete
Per fornire lo schema del sito si deve pensare ad uno schema come quello che si dovrebbe costruire per un ipertesto: i
rettangoli rappresentano le pagine del sito, i collegamenti tra i rettangoli sono i link tra le pagine del sito. Lascio al
lettore la soluzione di questa parte.
La parte dinamica del sito è quella che opera l'accesso al database delle immagini delle specie di piante presenti
all'interno del vivaio: l'accesso remoto al database ha come risultato, a seconda della richiesta del cliente, la
visualizzazione lato client di una scheda per ogni specie contenente i dati riferiti alla esposizione, alla stagione di
fioritura, etc. Lo schema di questa parte del sito è il seguente:
FORM di
immissione
richiesta
specie
Pag. HTML
con la scheda
della specie
presente nel
vivaio
Pagina ASP
sul server
che
processa i l
nome della
specie
ricevuto dal
form
Tabella dati
PIANTE
VIVAIO
DATABASE
SERVER
CLIENT
A questo punto si decide di implementare con tecnologia ASP la parte di ricerca on-line delle specie delle piante
presenti nel vivaio.
L'accesso remoto è al database della prova scritta e in particolare alle tabelle PIANTE_VIVAIO E SPECIE.
I file sono richiedi_catalogo.htm e richiedi_pianta.asp