domenica 24 maggio 2009

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.