venerdì 26 giugno 2009

Traccia di Maturità - Esame di Stato 2009

Una società telefonica desidera dotarsi di un sistema informativo che consenta ai propri tecnici l’accesso on line ad una rubrica anagrafica dei contatti, in modo che ciascun componente del gruppo possa consultare in ogni momento le informazioni in essa contenute e All’occorenza aggiornarle (inserire nuovi contatti, modificare o eliminare contatti esistenti).

L’Amministratore del sistema informativo dovrà ampliare il portale al quale accedono abitualmente i membri del gruppo aggiungendo questa nuova funzione: ogni componente dovrà essere autenticato dal sistema in uso mediante inserimento di credenziali (username e password) in modo da garantire un accesso sicuro alle informazioni per cui è autorizzato; le informazioni sono condivise tra più utenti del gruppo di lavoro.

Al fine di produrre periodicamente delle statistiche per ottimizzare il lavoro del gruppo si deve tenere traccia di ogni accesso al sistema, registrandone le informazioni essenziali (identificatore utente, data e ora di accesso, data e ora di fine sessione, …) e le operazioni (consultazioni/aggiornamenti della rubrica dei contati) svolte da ciascun utente autenticato; nel caso di operazioni di aggiornamento è opportuno mantenere anche lo stato della rubrica prima della variazione fino a che l’Amministratore del sistema validerà le modifiche e le renderà pubbliche.

Il candidato, fatte le opportune ipotesi aggiuntive:

1. Produca un’analisi della realtà di riferimento ponendo attenzione sugli aspetti riguardanti la sicurezza del sistema informativo

2. Progetti uno schema concettuale e il corrispondente schema logico del database

3. Realizzi la definizione delle relazioni in linguaggio SQL e le seguenti interrogazioni espresse in linguaggio SQL :

- Visualizzare l’elenco, in ordine alfabetico per denominazione, dei contatti di una determinata provincia
- Elencare, in ordine temporale, gli accessi effettuati da un membro del gruppo
- Calcolare e visualizzare il numero medio giornaliero di accessi in un determinato periodo di tempo
- Calcolare e visualizzare il numero totale di nuovi contatti inseriti, per ogni componente del gruppo
- Elencare le operazioni effettuate in un determinato giorno da ogni utente del gruppo di lavoro
- Visualizzare le informazioni del contato più consultato nell’arco di una settimana

4. Proponga una soluzione per l’amministrazione via web del sistema e codifichi in un linguaggio di programmazione a scelta un segmento significativo del progetto realizzato.

sabato 30 maggio 2009

Quesiti prova

  • Come distinguere una pianta presente nel vivaio da una pianta non presente, ma descritta?
  • Si rileva un uso ambiguo del termine specie, utilizzato a volte per indicare un raggruppamento di piante ed altre volte per indicare una specifica pianta.
  • Qual'è la differenza tra specie e pianta?
Specie: raggruppamento di piante con caratteristiche comuni.
Pianta: l'attributo descrizione sarà utilizzato per descrivere sia le specie che le piante.
Nel primo caso servirà a raccogliere tutti gli elementi comuni ad un insieme di
piante (specie), mentre nel secondo caso servirà a caratterizzare la specifica
pianta.
  • Come si intende memorizzare l'immagine della pianta? Possiamo supporre di utilizzare un link collegato all'immagine della pianta.
  • Come organizzare le: "informazioni relative al modo di coltivazione e alle caratteristiche dell'esposizione"? Non essendoci nel testo richieste esplicite di ricerche sulle suddette informazioni si ritiene di poter considerare tale descrizione contenuta all'interno di un'area di testo.
  • Come avviene la gestione del personale? Le differenze presenti tra le categorie previste per il personale sono quelle relative agli agronomi, per i quali sono richieste delle informazioni aggiuntive come l'anno di assunzione e le specie gestite.
  • Come si lega il personale alle attività esterne?
  • Come distinguere un'azienda da un privato?

domenica 24 maggio 2009

TRACCIA

ESAME DI STATO ANNO 2003

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, informazione 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 esemplare 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 sulla base di dati;
uno schema logico sulla 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 nel 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 online da parte dei clienti. Illustrare le modalità di realizzazione di questa funzione e gli strumenti tecnici adottabili.

ANALISI

Dopo aver letto la traccia e dopo aver fatto gli opportuni ragionamenti ho individuato le 5 entità fondamentali per la realizzazione del progetto:
Specie_esistenti che mi servirà per raggruppare tutte le specie di piante esistenti nel mondo alle quali attribuirò un nome, un'immagine (link), una breve descrizione, eventuali informazioni sulla coltivazione, ho ipotizzato inoltre che una specie può contenere piante o solo da interno o solo da esterno;
Piante_vivaio che utilizzo per memorizzare tutte le piante presenti nel vivaio suddivise per nome, tipo, prezzo, stagione_fioritura e numero di esemplari presenti;
Personale che conterrà tutti i dati relativi ai dipendenti del vivaio (compresi gli agronomi) suddivisi per nome, cognome, data di nascita, qualifica, anno di assunzione;
Attività_esterne che verrà utilizzata per tracciare tutte le attività esterne al vivaio che possono essere effettuate, divise per nome, codice, costo;
Clienti, ho ipotizzato che il cliente debba esistere nel momento in cui effettua una richiesta di intervento quindi in questa entità sarà presente: tipo di utente (se privato o azienda), nome, telefono, giorno_prenotazione, mese_prenotazione, anno_prenotazione (così suddivisi per comodità di query), data di effettuzione dell'intervento.

SCHEMA CONCETTUALE

SCHEMA LOGICO

DEFINIZIONE RELAZIONI IN SQL

CREATE TABLE SPECIE ( IDS integer auto increment,
NOME varchar (10) not null,
LINK_IMMAGINE varchar (50),
INFO varchar (50),
PRIMARY_KEY (IDS) );

CREATE TABLE PIANTE ( IDP integer auto increment,
NOME varchar (10) not null,
TIPO varchar (10) not null,
PREZZO integer not null,
STAGIONE_FIORITURA varchar (10) not null,
NUMERO_ESEMPLARI integer not null,
IDS integer not null,
IDPE integer not null,
PRIMARY_KEY (IDP),
FOREIGN KEY (IDS) references SPECIE (IDS),
FOREIGN KEY (IDPE) references SPECIE (IDPE) );

CREATE TABLE CLIENTI ( IDC integer auto increment,
TIPO varchar (10) not null,
NOME varchar (10) not null,
TELEFONO varchar (10) not null,
GIORNO_PRENOTAZIONE integer not null,
MESE_PRENOTAZIONE varchar (10) not null,
ANNO_PRENOTAZIONE integer not null,
DATA_INTERVENTO varchar (10),
EVASIONE varchar (10) not null,
PRIMARY_KEY (IDC) );

CREATE TABLE PERSONALE ( IDPE integer auto increment,
NOME varchar (10) not null,
COGNOME varchar (10) not null,
DATA_NASCITA varchar (10) not null,
QUALIFICA varchar (10) not null,
ANNO_ASSUNZIONE integer not null,
PRIMATY_KEY (IDPE) );

CREATE TABLE ATTIVITA ESTERNE ( IDA integer auto increment,
NOME varchar (10) not null,
CODICE varchar (10) not null,
COSTO integer not null,
PRIMARY_KEY (IDA) );

CREATE TABLE RICHIEDE ( IDC integer not null,
IDP integer not null,
FOREIGN KEY (IDC) references CLIENTI (IDC),
FOREIGN KEY (IDP) references PIANTE (IDP) );



CREATE TABLE SVOLGE ( IDA integer not null,
IDPE integer not null,
FOREIGN KEY (IDA) references ATTIVITA ESTERNE (IDA),
FOREIGN KEY (IDPE) references PERSONALI (IDPE) );

CREATE TABLE RICHIESTA ( IDC integer not null,
IDA integer not null,
FOREIGN KEY (IDC) references CLIENTI (IDC),
FOREIGN KEY (IDA) references ATTIVITA ESTERNE (IDA) );