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) );

INTERROGAZIONI IN LINGUAGGIO SQL

1)SELECT NUMERO_ESEMPLARI
FROM PIANTE
WHERE PIANTE.NOME = 'nome_pianta'

2)SELECT PIANTE.NOME
FROM PIANTE
WHERE STAGIONE_FIORITURA = 'nome_stagione'

3)SELECT CLIENTI.NOME, CLIENTI.TELEFONO
FROM CLIENTI, ATTIVITA_ESTERNE, RICHIESTA
WHERE CLIENTI.IDC = (
SELECT RICHIESTA.IDL
FROM RICHIESTA, ATTIVITA_ESTERNE
WHERE ATTIVITA_ESTERNE.NOME = 'nome_intervento'
AND ATTIVITA_ESTERNE.IDA = RICHIESTA.IDA
AND ANNO_PRENOTAZIONE = 'anno_richiesta_intervento')

4)SELECT PERSONALE.NOME, COUNT (NUMERO_ESEMPLARI)
FROM PERSONALE, PIANTE
GROUP BY NUMERO_ESEMPLARI
HAVING PERSONALE.NOME = 'nome_agronomo'
AND PIANTE.IDPE = PERSONALE.IDPE

5)SELECT PIANTE.NOME, SPECIE.INFO, PIANTE.NUMERO_ESEMPLARI, MIN(PREZZO)
FROM PERSONALE, PIANTE
GROUP BY PREZZO
HAVING SPECIE.TIPO = “interno” AND PIANTE:IDS = SPECIE.IDS
6)SELECT ATTIVITA_ESTERNE.NOME, CLIENTI.NOME, TELEFONO
FROM CLIENTI, RICHIESTA, ATTIVITA_ESTERNE
WHERE EVASIONE = “non evaso”
AND ATTIVITA_ESTERNE.IDA = RICHIESTA.IDA
AND RICHIESTA.IDC = CLIENTI.IDC

SITO DI PRESENTAZIONE


<HTML>
<HEAD>
<TITLE>
Vivaio e dintorni
</TITLE>
</HEAD>

<BODY>
<P>
Il nostro vivaio offe diverse specie de diverse tipologie di piante, di seguito alcune foto rappresentative
</P> <BR> <BR>

<DIV>
<IMG SRC = “FOTO1”>
</DIV>
<DIV>
<IMG SRC = “FOTO2”>
</DIV>
<DIV>
<IMG SRC = “FOTO3”>
</DIV> <BR> <BR>

<P>
Inoltre offriamo molti servizi come potatura e trattamento del vostro giardino
</P> <BR>

<DIV>
Rose = 4 $ <BR>
Ciclamini = 7 $ <BR>
Potatura = 30 $ a ora <BR>
Manutenzione giardino = 50 $ a ora
</DIV>
</BODY>
</HTML>

venerdì 22 maggio 2009

Ragionando sulla traccia

Dopo un'attenta e ripetuta lettura del testo del problema, si ritiene che i concetti attorno ai quali verrà sviluppato il DataBase possono essere così sintetizzati:
  1. Atleti
  2. Squadre
  3. Gare
  4. Fasi
Tra gli ulteriori concetti che emergono dalla lettura del testo e delle query possiamo notare:
  1. Istituti
  2. Calendari
  3. Sedi
  4. Punteggi
I quesiti che potrebbero richiedere una risposta e che potrebbero diventare specifiche, ipotesi aggiuntive o vincoli sono:
  1. Come avviene una gara? Attribuzione di tempo e di prove da sostenere
  2. In cosa consiste una gara? una serie di prove basate su : test, quiz, relazione, progetto, trattamento di un argomento
  3. In cosa consistono le fasi? una serie di gare; tali gare si possono ripetere in ogni fase?
  4. In cosa consiste il calendario? la programmazione delle gare nelle varie fasi in termini di: data, orario, tipo di gara, luogo dove avverrà la gara, squadre che parteciperanno alla gara
  5. Come gestire e distinguere le gare per squadre e le gare per singoli? un'ipotesi potrebbe essere quella di considerare anche i singoli come squadra, aggiungendo ad esempio un attributo: numero componenti della squadra
  6. come gestire i record? Un'ipotesi potrebbe essere quella di utilizzare un attributo che memorizzi il record prima di una gara.
Fatte queste premesse, ed evidenziati quelli che sono gli aspetti fondamentali del problema, si procederà con la formalizzazione di quanto appuntato. Verranno quindi individuate le Entità e le Associazioni, verranno motivate le scelte, e verranno descritte in termini di attributi.

Entità
Le entità individuate potrebbero essere le seguenti
  1. Atleti: contiene tutte le informazioni relative all'anagrafica degli atleti con aggiunto l'attributo età
  2. Squadre: come già anticipato, ipotizzeremo che le squadre possano essere composte anche da un unico atleta e si ipotizzerà la presenza di un attributo: Numero di Componenti. In questo modo anche gli atleti che parteciperanno alle gare saranno assimilati ad una squadra
  3. Fasi: sarà caratterizzata da: luogo data inizio descrizione della fase
  4. Gare: verranno descritte ed identificate, come già detto verrà aggiunto un attributo: Punteggio Record
  5. Istituti: contiene tutte le informazioni anagrafiche degli istituti che partecipano alle competizioni comprese le informazioni geografiche: città provincia regione stato, considerando che i paesi internazionali potrebbero non avere tutti la stessa organizzazione geografica verrà preso il dettaglio di quella italiana prevedendo l'attribuzione di valori NULL.
  6. Si potrebbe anche ipotizzare l'entità prove da associare ad ogni gara, ma di questo non viene fatto esplicito riferimento
Associazioni

Le possibili associazioni potrebbero essere:
  1. Calendario: di tipo ternaria che lega le entità: Gare, Squadre,Fasi, con gli attributi: data, orario che ne individuano l'evento
  2. Appartenere: di tipo binario che lega le entità Atleti Squadre
  3. Provenire: di tipo binario che lega le entità Atleti Scuole
A questo punto si procederà con la descrizione dettagliata delle Associazioni e delle Entità individuate in termini di Attributi

Prima di procedere vi suggerisco di verificare se lo schema individuato soddisfa le specifiche richieste delle query


analisi su traccia di maturità 2007/08

21/05/09

Abrescia Dario
Cosenza Ivan
Lasorsa Ivan
Monguzzi Andrea
Ranieri Angelo

Anno 2007/2008 (traccia sulle olimpiadi di informatica)

ANALISI:
I concetti significativi rilevati dopo l'analisi sono:

-Atleti
-Gare
-Squadre
-Fasi
-Sedi
-Punteggio
-Calendario
-Punteggi record

Le entità emergenti dopo un'attenta analisi sono:

-Atleti
-Gare
-Squadre

Dopo un'approfondita lettura del testo si è optato per un legame N a N tra le entità "Atleti" e "Gare"
in modo da rappresentare il concetto di calendario. Quest'ultimo è più indicato a favorire una corretta
panoramica degli atleti, delle gare a cui hanno partecipato e dei punteggi ottenuti.

Si vuole inoltre ipotizzare l'entità "Squadre" che comunque non risulta obbligatoria per la partecipazione alle gare
dei singoli atleti.

Si ipotizzando le seguenti relazioni:

-partecipazione
-raggruppamento

Dalla lettura del testo si evince che gli atleti potranno partecipare alle gare sia singolarmente che in gruppo.
Si può ipotizzare che gli atleti ed eventualmente le rispettive squadre parteciperanno ad almeno una gara.

Ipotesi aggiuntive:

-le fasi del torneo sono attributi dell'entità gare e potranno assumere solo i valori "scolastica", "regionale", "nazionale",
"internazionale".
-per evitare situazioni di ridondanza "punteggio" sarà attributo della relazione partecipazione.
-per stabilire l'effetiva età dei partecipanti verrà probabilmente memorizzata la corrispondente data di nascita.

venerdì 15 maggio 2009

Traccia Maturità A.S. 2006/07

Un negozio on line chiede che sia progettato e realizzato un database per l’organizzazione e la gestione di un portale per la vendita di libri su Internet.

Il negozio richiede che:

• il Catalogo dei libri sia organizzato per:

− Reparti (in ordine alfabetico: architettura e urbanistica, arte, classici greci e latini, cucina e casa, diritto, economia e management, fantascienza e fantasy, filosofia, fumetti, ...)

• ciascun Reparto sia organizzato in libri:

− “Da non perdere” caratterizzati da uno sconto del 20% sul prezzo di copertina

− “I più venduti” caratterizzati dal maggior numero di copie vendute negli ultimi 30 giorni

− “Ultimi arrivi” caratterizzati dai titoli aggiunti negli ultimi 30 giorni

− “Offerte speciali” caratterizzate da uno sconto del 25% sul prezzo di copertina

− “Remainders” caratterizzati da uno sconto del 50% sul prezzo di copertina

• ciascun libro in negozio sia archiviato con le seguenti ulteriori informazioni:

− titolo, autore, prezzo di copertina, sconto (eventuale), dati (numero di pagine, rilegato, ...), anno di pubblicazione, editore, collana, immagine (foto della copertina), data di archiviazione

• gli utenti abilitati all’acquisto on line siano registrati con i seguenti dati:

− nome e cognome, indirizzo, codice di avviamento postale, città, nazione, telefono, fax, e-mail, password, numero di carta di credito, tipo di carta di credito (Visa, CartaSi, Mastercard, ...), data di scadenza della carta di credito

• gli utenti possano chiedere, in fase di acquisto, che il negozio emetta fattura

• il Carrello Acquisti sia organizzato come segue:

− numero di copie acquistate, titolo, autore, prezzo, disponibilità (giorni, settimane, ...), togli dal carrello (casella di spunta)

• il riepilogo degli ordini sia organizzato come segue:

− data dell’ordine, numero d’ordine

− dettagli dell’ordine (riferimento articolo, quantità, titolo, prezzo di copertina, prezzo scontato, stato dell’ordine, evasione prevista dalla data dell’ordine).


Il candidato, dopo aver fatto le eventuali ipotesi aggiuntive:

a. Fornisca:

1. lo schema concettuale e lo schema logico del database

2. la definizione delle relazioni in linguaggio SQL.

b. Implementi le seguenti query:

1. Ricerca per Reparto: scelto un Reparto, il numero di libri “Da non perdere” ed il numero di libri “I più venduti” con i relativi dettagli

2. Ordini: gli ordini in corso, con dettagli, di un dato utente.

c. Scriva in un linguaggio lato server, il codice di almeno una delle seguenti pagine del portale:

1. con accesso libero, la pagina utile a visualizzare i Reparti e, per ciascun reparto, la pagina che implementa la query n. 1;

2. con accesso riservato agli utenti registrati, la composizione degli ordini in corso.

Analisi e ipotesi aggiuntive

Viene richiesto di progettare e realizzare un database che contenga le informazioni necessarie per la vendita on line di libri a utenti registrati.

Libri e Utenti risultano quindi le entità principali del sistema informatico che si andrà a realizzare.


per i libri sono richiesti:

  • suddivisione in reparti (architettura e urbanistica, arte, classici greci e latini ...) .
    Pur se non esplicitamente evidenziato risulta plausibile ipotizzare che un libro faccia parte di un solo reparto

  • ulteriore suddivisione dei Reparti in Categorie, nel testo viene utilizzato il termine "libri" che sostituiamo con "categoria", in alternativa, potremmo utilizzare anche il termine "segnalati" per evitare ambiguità, ("Da non perdere", "I più venduti" ...); ogni segnalazione o categoria ha una caratterizzazione che può riguardare la tipologia di sconto proposto, il numero di copie vendute o la data di pubblicazione e inserimento in catalogo.
    Anche in questo caso non viene esplicitamente definito il fatto che un libro possa appartenere a una sola o a più categorie, equivalentemente, non viene esplicitato se ad uno stesso libro possano essere applicate segnalazioni differenti ; nella nostra proposta daremo la possibilità di inserire un libro in più di una categoria (possa ricevere più segnalazioni) pensando che, per esempio, un libro possa appartenere contemporaneamente alla categoria "Da non perdere" e "I più venduti"

  • per ogni libro vengono inoltre definite in modo preciso le caratteristiche che dovranno essere inserite nella base di dati
    In particolare analizziamo:

    • lo sconto che ipotizziamo non strettamente legato alla categoria ( o segnalazione) di appartenenza

    • una serie di dati non particolarmente strutturati (numero di pagine, tipo di rilegatura ...) che rappresentiamo in un unico attributo generico testuale sul quale non sarà prevista nessuna operazione particolare. In caso contrario, i dati andrebbero distribuiti su campi separati

    • le fotografie delle copertine dei libri saranno memorizzate in file esterni al database all'interno del quale sarà inserito un riferimento a tali file.


Anche per gli utenti vengono definite in modo preciso le caratteristiche che dovranno essere inserite nella base di dati.

  • Nessuna caratteristica pone particolari problemi di gestione. Ci sentiamo solo in dovere di precisare che il numero di carta di credito di ogni utente è un dato estremamente sensibile che andrebbe trattato con opportune procedure che ne garantiscano la sicurezza (tale problema esula però dalle richieste formulate nel testo)

Ad ogni utente, ad ogni nuovo accesso al negozio on line, sarà assegnato un carrello acquisti virtuale nel quale inserire i libri selezionati che potranno poi essere confermati (tutti, o in parte) per dar luogo a un ordine di acquisto.

Ulteriori ipotesi

Nella definizione del carrello acquisti il testo parla di "disponibilità" (giorni, settimane ...), tale dato verrà fornito per ogni singolo libro nel database

Descrizione Entità Associazioni

Descrizione delle Entità e delle Associazioni identificate l'Analisi della Traccia e le ipotesi aggiuntive formulate.

Commento al diagramma:

Entità REPARTO
Descrizione: rappresenta la suddivisione in reparti del catalogo della libreria.
Codice reparto è attributo chiave, Nome reparto è la descrizione (architettura e urbanistica, arte …)

Entità CATEGORIA
Descrizione: rappresenta le categorie a cui appartengono i libri.
Codice categoria è attributo chiave, Descrizione è la descrizione della categoria (“Da non perdere”, “I più venduti” …) Note permette di inserire un commento (“Sconto del 20%” …)

Entità LIBRO
Descrizione: rappresenta i libri presenti nel catalogo.
Codice libro è attributo chiave, Dati è un attributo che raggruppa informazioni varie (numero di pagine, tipo di rilegatura ...), Disponibilità è un attributo testuale utilizzato in fase di ordine; gli altri attributi sono di chiara interpretazione.

Associazione Catalogato
Descrizione: associa un libro ad un reparto.

Associazione Appartiene
Descrizione: associa un libro a varie categorie.

Entità UTENTE
Descrizione: rappresenta gli utenti registrati che possono effettuare acquisti.
Codice utente è attributo chiave, l’attributo Indirizzo è composto da città, via, numero civico ecc., gli altri attributi sono di chiara interpretazione.

Entità ORDINE
Descrizione: rappresenta gli ordini di acquisto effettuati dagli utenti.
Numero Ordine è attributo chiave, l’attributo Stato indica se l’ordine è evaso o da evadere, l’attributo Richiesta Fattura indica se l’utente ha richiesto fattura in fase di emissione d’ordine.

Associazione Incluso nel carrello
Descrizione: associa i libri agli utenti e rappresenta il carrello acquisti che l’utente “riempie” ogni volta che accede al sito del negozio virtuale.
Numero Copie è un attributo dell’associazione e rappresenta il numero di copie di un certo libro che l’utente ha inserito nel carrello, l’attributo Eliminato è utilizzato per eliminare il libro dal carrello ed evitare così di inserirlo nell’ordine.

Associazione Effettua
Descrizione: associa un utente ai suoi ordini d’acquisto.

L’associazione E’ incluso
Descrizione: associa un libro ad un ordine.
L’attributo Numero Copie indica il numero di copie di un libro inserite in un ordine.

Possibile Schema E/R 2006/07

Schema ER


Lettura del diagramma

Ad una CATEGORIA possono appartenere uno o più LIBRI.
Un LIBRO appartiene a una o più CATEGORIE (oppure un LIBRO può essere più volte SUGGERITO.

In un REPARTO possono essere catalogati uno o più LIBRI.
Un LIBRO è catalogato in un solo REPARTO.

Un LIBRO può essere incluso nel carrello di uno o più UTENTI.
Un UTENTE può includere nel suo carrello uno o più LIBRI.

Un UTENTE può effettuare uno o più ORDINI.
Un ORDINE è effettuato da un solo UTENTE.

Un LIBRO può essere incluso in uno o più ORDINI.
Un ORDINE include uno o più LIBRI.

Schema Logico 2006/07

Per la realizzazione del database utilizziamo il modello relazionale e attraverso le regole di derivazione passiamo dallo schema concettuale proposto al seguente schema relazionale:


Query SQL

  1. Ricerca per Reparto: scelto un Reparto, il numero di libri “Da non perdere” ed il numero di libri “I più venduti” con i relativi dettagli


Ipotizziamo che la scelta del reparto avvenga tramite il nome (R_nome). Sono necessarie 4 tabelle: LIBRO, REPARTO, CATEGORIA, APPARTIENE

Con questa prima interrogazione otteniamo il numero di libri “Da non perdere” di un determinato reparto:


SELECT count(*) AS [Numero_Libri]

FROM Libro, Reparto, Categoria, Appartiene

WHERE (

L_Reparto=R_codice

AND

C_codice=A_Categoria

AND

A_Libro=L_codice

AND

R_nome=[Nome del reparto]

AND

C_descrizione="Da non perdere"

);

(analogo discorso per i libri “I più venduti”)


Per ottenere il dettaglio dei libri (in questo caso presentiamo solo autore e titolo:

SELECT L_autore, L_titolo

FROM Libro, Reparto, Categoria, Appartiene

WHERE (

L_Reparto=R_codice

AND

C_codice=A_Categoria

AND

A_Libro=L_codice

AND

R_nome=[Nome del reparto]

AND

C_descrizione="Da non perdere"

);

(analogo discorso per i libri “I più venduti”)


  1. Ordini: gli ordini in corso, con dettagli, di un dato utente,
  • con accesso riservato agli utenti registrati, la composizione degli ordini in corso.

L’accesso è riservato agli utenti registrati che quindi possono consultare solo i propri ordini, ipotizziamo quindi che durante la fase di login venga memorizzato il codice utente (COD_UTENTE), l’attributo O_stato della tabella Ordini è utilizzato per individuare gli ordini in corso.


SELECT O_numero AS [N. Odine], L_autore AS [Autore], L_titolo AS [Titolo], I_numero_copie AS [copie]

FROM Ordine, Incluso, Libro

WHERE (

I_Ordine=O_numero

AND

I_Libro=L_codice

AND

O_Utente=COD_UTENTE

AND

O_stato="in corso"

);



Script PHP



Architettura Hardware e Software

Per poter gestire la base di dati si può ipotizzare un’applicazione software che permetta di interagire con la base di dati per l’inserimento, modifica ed eliminazione delle informazioni oltre alle varie procedure di interrogazione.
Dal punto di vista Hardware si potrebbe ipotizzare una singola postazione di lavoro (Personal Computer) in cui ospitare il database ed il programma di gestione.
Nel caso di realtà di dimensioni maggiori si potrebbe ipotizzare una rete locale (Rete di PC) in cui un nodo avrà la funzione di server database e gli altri di client.
Per il database si potrebbe utilizzare un DBMS (esempio MySQL) in grado di erogare il servizio anche via LAN. L’applicazione per la gestione e interrogazione dei dati potrebbe essere scritta in linguaggio ad alto livello (es. PHP) in cui incapsulare le istruzioni SQL per l’interazione con la base di dati.

Sito Web

Il negozio on line deve ovviamente essere accessibile via web per la consultazione del catalogo e l’effettuazione degli ordini da parte degli utenti registrati.
Oltre al linguaggio HTML necessario per la realizzazione delle pagine del sito è necessario utilizzare un linguaggio di scripting lato server (es. PHP, ASP, ASP.NET) per poter interagire con il database, recuperare le informazioni e realizzare pagine dinamiche.
Le pagine che formano il sito devono essere memorizzate su un server collegato ad internet che potrebbe essere di proprietà del negozio oppure ospitato da un fornitore di servizi esterno.
Sul server deve essere in esecuzione un'applicazione Web Server (es. IIS, Apache) ed un motore in grado di eseguire i comandi del linguaggio di programmazione lato server utilizzato oltre ad un server SQL per l’interazione con il database.
Le pagine possono essere consultate da un qualsiasi computer collegato ad internet e dotato di un browser (es. Internet Explorer, Firefox, Safari)

Portale

Per la realizzazione del portale è necessario costruire pagine web dinamiche con programmazione lato server; negli esempi proposti si è scelto MYSQL come DBMS e PHP come linguaggio per gli script.
1.con accesso libero, la pagina utile a visualizzare i Reparti e, per ciascun reparto, la pagina che implementa la query n. 1;

La soluzione prevede due pagine, la prima (reparti.php) interroga il database e visualizza tutti i Reparti creando una serie di link alla seconda pagina (totale_libri.php) ognuno dei quali passa come parametro il reparto selezionato; la seconda pagina recupera il parametro che utilizza per l’interrogazione della query 1.

Pagine HTML



Si è scelto di utilizzare il metodo POST per ragioni di sicurezza poiché i dati scambiati fra le pagine contengono la password dell’utente

Schema Relazionale creato con i comandi SQL

CREATE TABLE REPARTO
(
R_codice CHAR(20),
R_nome CHAR(50) NOT NULL,
PRIMARY KEY(R_Codice)
)

CREATE TABLE CATEGORIA
(
C_codice CHAR(20),
C_descrizione CHAR(50) NOT NULL,
C_note CHAR(80),
PRIMARY KEY(C_Codice)
)

CREATE TABLE LIBRO
(
L_codice CHAR(13),
L_autore CHAR(30),
L_titolo CHAR(50) NOT NULL,
L_prezzo MONEY NOT NULL,
L_sconto INTEGER,
L_dati CHAR(100),
L_anno_pubblicazione INTEGER,
L_collana CHAR(30),
L_immagine CHAR(30),
L_data_archiviazione DATE,
L_disponibilita CHAR(20),
L_Reparto CHAR(20),
PRIMARY KEY(L_Codice),
FOREIGN KEY (L_Reparto) REFERENCES REPARTO (R_codice)
)

CREATE TABLE APPARTIENE
(
A_Categoria CHAR(20),
A_Libro CHAR(13),
FOREIGN KEY (A_Categoria) REFERENCES CATEGORIA (C_codice),
FOREIGN KEY (A_Libro) REFERENCES LIBRO (L_codice)
)


CREATE TABLE UTENTE
(
U_codice CHAR(20),
U_cognome CHAR(30) NOT NULL,
U_nome CHAR(30) NOT NULL,
U_indirizzo CHAR(60) NOT NULL,
U_e_mail CHAR(30) NOT NULL,
U_password CHAR(12) NOT NULL,
U_numero_carta CHAR(30) NOT NULL,
U_tipo_carta CHAR(30) NOT NULL,
U_data_scadenza_carta DATE,
PRIMARY KEY(U_Codice)
)

CREATE TABLE INCARRELLO
(
Car_Libro CHAR(13),
Car_Utente CHAR(20),
Car_numero_copie INTEGER,
Car_eliminato BIT,
FOREIGN KEY (Car_Libro) REFERENCES LIBRO (L_codice),
FOREIGN KEY (Car_Utente) REFERENCES UTENTE (U_codice)
)

CREATE TABLE ORDINE
(
O_numero INTEGER,
O_data DATE NOT NULL,
O_stato CHAR(10),
O_data_evasione DATE,
O_fattura BIT,
O_Utente CHAR(20),
PRIMARY KEY(O_numero),
FOREIGN KEY (O_Utente) REFERENCES UTENTE (U_codice)
)

CREATE TABLE INCLUSO
(
I_Libro CHAR(13),
I_Ordine INTEGER,
I_numero_copie INTEGER,
FOREIGN KEY (I_Libro) REFERENCES LIBRO (L_codice),
FOREIGN KEY (I_Ordine) REFERENCES Ordine (O_numero)
)

mercoledì 13 maggio 2009

Interpretazione del Testo A.S. 2007/08

POSSIBILI FRASI E TERMINI SIGNIFICATIVI EMERSI DALLA LETTURA DEL TESTO

In occasioni delle Olimpiadi Internazionali di Informatica 2008, la società organizzatrice desidera realizzare un sistema informatico per la gestione delle gare e degli “atleti”.
La base di dati deve consentire la memorizzazione delle informazioni
  • degli atleti, che possono partecipare alle gare sia singolarmente sia raggruppati in squadre
  • delle gare nelle varie fasi
  • delle sedi di gara
Le Olimpiadi prevedono una fase scolastica (in ciascun istituto scolastico partecipante), una fase regionale, una finale nazionale e la gara internazionale che designerà il vincitore e la squadra vincitrice.

Il candidato, fatte le opportune ipotesi aggiuntive, realizzi:
  1. un’analisi della realtà di riferimento individuando le possibili soluzioni e scelga quella che a suo motivato giudizio è la più idonea a rispondere alle specifiche indicate
  2. uno schema concettuale della base di dati
  3. uno schema logico della base di dati
  4. la definizione delle relazioni della base di dati in linguaggio SQL
  5. le seguenti interrogazioni espresse in linguaggio SQL:
  • stampare l’elenco degli atleti raggruppati per squadre per ogni singola fase
  • dato il nome di un atleta stampare i risultati ottenuti nelle diverse gare alle quali ha partecipato
  • stampare il calendario delle gare
  • stampare una scheda informativa (cognome, nome, istituto scolastico di provenienza, nazionalità) del vincitore e della squadra vincitrice
  • stampare la classifica per ciascuna gara (a parità di punteggio vengono privilegiati gli atleti più giovani)
  • aggiornare, per ciascuna fase (scolastica-regionale-nazionale-internazionale) gli eventuali punteggi record
  • calcolare il punteggio medio ottenuto durante la prima selezione, per ciascun istituto scolastico
  • stampare per ciascuna squadra il numero di “atleti” partecipanti e l’età media
  1. l’interfaccia utente che il candidato intende proporre per interagire con la base di dati e codificare in un linguaggio di programmazione a scelta un segmento significativo del progetto realizzato.
  2. un sito Internet che presenti al pubblico le classifiche delle diverse gare.

Maturità A.S. 2007/08

In occasioni delle Olimpiadi Internazionali di Informatica 2008, la società organizzatrice desidera realizzare un sistema informatico per la gestione delle gare e degli “atleti”.
La base di dati deve consentire la memorizzazione delle informazioni
  • degli atleti, che possono partecipare alle gare sia singolarmente sia raggruppati in squadre
  • delle gare nelle varie fasi
  • delle sedi di gara
Le Olimpiadi prevedono una fase scolastica (in ciascun istituto scolastico partecipante), una fase
regionale, una finale nazionale e la gara internazionale che designerà il vincitore e la squadra vincitrice.
Il candidato, fatte le opportune ipotesi aggiuntive, realizzi:
  1. un’analisi della realtà di riferimento individuando le possibili soluzioni e scelga quella che a suo
  2. motivato giudizio è la più idonea a rispondere alle specifiche indicate
  3. uno schema concettuale della base di dati
  4. uno schema logico della base di dati
  5. la definizione delle relazioni della base di dati in linguaggio SQL
  6. le seguenti interrogazioni espresse in linguaggio SQL:
  • stampare l’elenco degli atleti raggruppati per squadre per ogni singola fase
  • dato il nome di un atleta stampare i risultati ottenuti nelle diverse gare alle quali ha partecipato
  • stampare il calendario delle gare
  • stampare una scheda informativa (cognome, nome, istituto scolastico di provenienza, nazionalità) del vincitore e della squadra vincitrice
  • stampare la classifica per ciascuna gara (a parità di punteggio vengono privilegiati gli atleti più giovani)
  • aggiornare, per ciascuna fase (scolastica-regionale-nazionale-internazionale) gli eventuali punteggi record
  • calcolare il punteggio medio ottenuto durante la prima selezione, per ciascun istituto scolastico
  • stampare per ciascuna squadra il numero di “atleti” partecipanti e l’età media
  1. l’interfaccia utente che il candidato intende proporre per interagire con la base di dati e codificare in un linguaggio di programmazione a scelta un segmento significativo del progetto realizzato.
  2. un sito Internet che presenti al pubblico le classifiche delle diverse gare.

martedì 12 maggio 2009

Come Procedere

  1. Creare un Post Etichettato Tracce
  2. Inserite il titolo della traccia secondo le seguenti specifiche:
  • Anno Scolastico
  • Progetto: Sirio, Mercurio, Abacus, Diurno/Serale, ecc.
  1. Inserire la traccia nel Post appena creato ed Etichettato Tracce
  2. Procedere con l'inserimento dell'Indice e dei Link come descritto nel Posy Etichettato Tracce
  3. Evidenziare con colore di sfondo differente le Frasi Significative e create un nuovo Post con la traccia ed il testo evidenziato Etichettandolo Analisi, aggiungete il vostro nome nel Post
  4. Inserite le frasi Evidenziate in un nuovo Post Etichettandolo Analisi, aggiungendo il vostro nome nel Post
  5. Procedete come descritto nell'elencazione e nella descrizione delle entità e delle associazioni individuate, rammentando di motivare le scelte e le decisioni prese.
  6. Rammentate di indicare ambiguità o le molteplici interpretazione che possono essere presenti nel testo.
  7. Rammentate che per testo s'intendono anche le query richieste dalla traccia.
  8. Procedere come descritto nel Post Schema di Analisi

Cosa dovranno contenere i Post Etichettati Traccia


  1. Link alla Traccia

  2. Link all' Analisi

  3. Link allo Schema Concettuale

  4. Link allo Schema Logico

  5. Link alla descrizione ed alla realizzazione degli Script Lato Server (PHP, ASP, ecc)

  6. Link alla descrizione del Sito

  7. Link alla descrizione e realizzazione delle Pagine HTML

Nome o Identificatore della traccia

Cosa dovranno contenere i Post Etichettati Schema di Analisi

Inserimento frasi significative, individuate durante la lettura della traccia
In presenza di situazioni ambigue nelle interpretazioni, descrivete sinteticamente le alternative che individuate e identificatene una, motivandone la scelta

  • Elencazione dei concetti significativi

  • Elencazione delle entità: motivare sinteticamente la scelta

  • Elencazione delle relazioni: motivate sinteticamente la scelta

Elencazione delle specifiche e dei vincoli che intendete applicare

Per una migliore lettura delle tracce e delle soluzioni proposte, linkate tra di essi i singoli Post definendone un'ordine di lettura. Per ogni traccia svolta create un indice delle fasi di progettazione e di realizzazione.

Progetto Pagina HTML

Progetto Sito

Script PHP

Descrizione degli script:
  • Scopo
  • Descrizione delle variabili
  • Codice

Query

Descrizione delle Query:
  • Scopo
  • Descrivere brevemente come estrarre i dati dalle tabelle o come si ha intezione di operare con esse
  • Codice

Schema Logico

Schema Concettuale

Traccia