Corso di Laboratorio di Basi di Dati Progetto d`esame: “mercatino di

Transcript

Corso di Laboratorio di Basi di Dati Progetto d`esame: “mercatino di
Corso di Laboratorio di Basi di Dati, A.A. 2007-2008
Progetto “mercatino libri usati”
Corso di Laboratorio di Basi di Dati
Progetto d’esame:“mercatino di libri usati”
Prof. Pierluigi Pierini
Anno accademico 2007-2008
Su proposta degli studenti: Simone Potenza e Francesco Serafini
Premessa
La specifica del problema, data nei paragrafi seguenti, è necessariamente (come in ogni caso
reale) incompleta e presumibilmente in alcuni punti ambigua o contraddittoria. Lo studente deve
immaginare di raffinare e disambiguare la specifica mediante l’interazione con il committente. In
effetti, dovrà fare uno sforzo di valutazione delle possibili alternative, per poi scegliere in maniera
motivata. Le motivazioni delle scelte fatte vanno chiaramente documentate nel progetto e verranno
discusse in sede di revisione.
Specifiche di progetto
Si realizzi una base di dati per la gestione di un sistema di vendita di libri usati.
I libri sono acquistati/venduti da una rete di negozi associati i quali dispongono di eventuali
magazzini, oltre ai locali del negozio stesso, dove conservare i libri in attesa di essere prenotati e/o
venduti.
Ognuno di questi libri è identificato da un codice numerico progressivo univoco. Inoltre per ognuno
di essi registriamo il codice ISBN, il titolo del libro, la materia di appartenenza, l’autore o gli autori,
la casa editrice, l’edizione e il prezzo di copertina. Un libro può essere fornito di supporto/i
multimediali (es. CD, DVD) oppure di fascicoletti ad esso allegati (es. eserciziari, portfolio) , non
vendibili separatamente e di questi bisogna tenerne traccia: se il libro deve esserne provvisto e se
è presente o meno. E’ importante registrare per ogni libro lo stato di usura che determina la
percentuale di sconto applicata sul prezzo di copertina secondo un profilo uniforme valido per tutti i
negozi associati. In più si vuole avere la possibilità di inserire una descrizione che può registrare
altre informazioni riguardo il libro ( es. mancanza di quale supporto, nuove edizioni, segni
particolari ecc).
La ricerca deve mostrare oltre ai libri con chiave di ricerca corrispondente anche i libri “compatibili”
se ce ne sono, cioè che hanno codice ISBN diverso ma titolo e autore uguale a quello cercato, i
quali differiscono solo nella versione.
Si vuole avere la possibilità di conoscere il numero di copie presenti di un determinato libro e la
loro localizzazione, ovvero individuando il negozio/magazzino e lo scaffale dove ciascun libro è
collocato.
Deve inoltre essere possibile raggruppare i libri del database per materia di appartenenza.
Un cliente registrato può proporre un proprio libro per la vendita scegliendo tra due formule che la
rete di negozi propone:
1) vendita del libro al negozio. In questo caso viene riconosciuto un valore pari a una certa
percentuale del valore di copertina in funzione dello stato del libro stesso;
21/11/2007
Pagina 1
Corso di Laboratorio di Basi di Dati, A.A. 2007-2008
Progetto “mercatino libri usati”
2) affidamento del libro. In questo caso, se entro un certo periodo il libro viene effettivamente
venduto, verrà riconosciuto un valore pari ad una percentuale più favorevole rispetto al
caso precedente, altrimenti il libro verrà restituito al proprietario.
Ogni cliente-venditore deve essere registrato identificandolo con un codice univoco progressivo.
Inoltre si registrano il cognome, il nome, l’indirizzo dell’abitazione, uno o più recapiti telefonici (fisso
e mobile).
Il prezzo pagato per un libro deve essere inferiore al prezzo di realizzo, ovvero a quello calcolato
applicando la percentuale di sconto sul prezzo di copertina, secondo lo stato di usura del libro e il
profilo di sconti predeterminato.
Quando un libro viene venduto, deve risultare nel database come non disponibile. Se era un libro
in affidamento, bisogna riconoscere al proprietario il relativo credito che viene accumulato e
saldato nei termini previsti oppure usato per l’acquisto di altri libri in uno dei negozi convenzionati.
Si tiene comunque uno storico dei libri non disponibili in quanto venduti, e dei relativi clienticompratori di tali libri.
In qualsiasi momento si deve poter produrre un resoconto per un cliente che ha messo in vendita
dei libri stampando i dati del cliente, il credito accumulato, la lista dei libri accettati e per ogni libro
si specifica, la formula di vendita o affidamento stabilita, la percentuale di sconto applicata e i dati
del libro.
Si realizzi inoltre una procedura di prenotazione di libri.
Un cliente che vuole prenotare una serie di libri deve essere registrato, successivamente potrà
creare un “carrello” con la lista dei libri che vuole prenotare, ed una data di scadenza, superata la
quale, la prenotazione può essere cancellata.
Il cliente potrà richiedere un riassunto dei libri prenotati con i relativi dettagli, dei costi e della
scadenza della prenotazione.
Un libro prenotato, potrà essere disponibile presso la catena dei negozi, nel qual caso il negozio
presso cui il cliente si è registrato, provvederà a rintracciarlo e a farselo recapitare. Altrimenti, la
prenotazione di quel libro resterà in uno stato di “attesa” finché: un cliente-venditore proporrà in
vendita tale testo o scadrà la prenotazione.
Note
E’ possibile inserire procedure di gestione addizionali che si ritengano utili. Ci sono indubbiamente
molti vincoli che possono essere applicati ai contenuti di questa base di dati: alcuni sono
chiaramente deducibili dalle specifiche date.
L’individuazione dei vincoli e la loro implementazione costituiscono un requisito fondamentale per
lo sviluppo di un progetto realistico, e ne verrà tenuto conto durante la valutazione finale.
Alcune delle funzionalità richieste potrebbero non essere realizzabili con singole query ma
coordinando più query tra loro. Ciò potrebbe essere risolto con l’uso di strumenti più avanzati
come le procedure messe a disposizione dal DBMS, o codice in linguaggio di programmazione (C,
Java, PHP, ecc…) integrato col DBMS.
Non c’è l’obbligo di usare tali strumenti avanzati, che, peraltro, aumenterebbe il valore del progetto.
Nel caso si decida di non utilizzare tali strumenti, è necessario comunque presentare le procedure
sotto forma di pseudocodice, e realizzare le query che si utilizzerebbero al loro interno.
21/11/2007
Pagina 2
Corso di Laboratorio di Basi di Dati, A.A. 2007-2008
Progetto “mercatino libri usati”
Svolgimento del Progetto
Comprende i seguenti punti:
1.
2.
3.
4.
5.
6.
Definizione formale, Analisi e Strutturazione dei requisiti.
Progettazione concettuale utilizzando il modello Entità-Relazione.
Formalizzazione dei vincoli di integrità.
Ristrutturazione ed ottimizzazione dello schema ER.
Traduzione nel modello relazionale.
Implementazione del progetto.
Tutte le fasi del progetto dovranno essere corredate da adeguata documentazione che illustri
quanto viene realizzato e le scelte intraprese. In particolare, dovranno essere necessariamente
inclusi nella documentazione gli schemi ER risultanti dai passi (2) e (4), debitamente commentati, il
modello relazionale della base di dati ottenuto al passo (5), in cui siano messe in evidenza le chiavi
delle varie tabelle e le relazioni tra queste ultime, e tutto il codice SQL usato nell’implementazione,
comprendente gli statement necessari alla creazione della base di dati, alcuni statement che
mostrino esempi di inserimento dati nel DB, e il codice di tutte le query/operazioni richieste.
Per l’implementazione del progetto si suggeriscono i seguenti DBMS open source:
∗
∗
∗
∗
Postgresql [Unix, gratuito]
Interbase [Windows, la versione 6 è gratuita]
Firebird [Windows e Linux, gratuito, basato sulla versione 6 di Interbase]
MySQL [Windows e Linux, gratuito]
L’uso di altri DBMS dovrà essere preventivamente concordato con il docente.
Nota : Access è fortemente sconsigliato.
Opzionalmente, il DB realizzato può essere dotato di un’interfaccia scritta con un linguaggio di
programmazione a scelta (ad es. Java, C++, PHP). Tuttavia, non è richiesto di curare i dettagli
grafici di tale interfaccia.
Ulteriori Informazioni
Questa specifica è disponibile in formato PDF sulla pagina web del corso di Laboratorio Basi di
Dati 2007-2008, all’indirizzo http://www.univaq.it/~luigi.vetrano/labDB. Ulteriori informazioni e
chiarimenti sulle specifiche possono essere richiesti direttamente via email all’indirizzo
[email protected].
Si ricorda che tutti i gruppi di lavoro che intendono sostenere l’esame del corso devono registrarsi
inviando il nominativo dei componenti il gruppo, il progetto scelto, il DBMS, il sistema operativo e,
eventualmente, il linguaggio di programmazione, che si intendono utilizzare, all’indirizzo email
[email protected].
21/11/2007
Pagina 3