Progetto “eCommerce” Lab. di Basi di Dati - A.A. 2015

Transcript

Progetto “eCommerce” Lab. di Basi di Dati - A.A. 2015
A.A. 2015/2016
Progetto eCommerce
Progetto “eCommerce”
Lab. di Basi di Dati - A.A. 2015-2016
Prof. P. Pierini
Premessa
La specifica informale del problema data nei paragrafi seguenti è, come in ogni caso reale,
incompleta e, in alcuni punti, ambigua o contraddittoria. Lo studente dovrà quindi raffinare e
disambiguare le specifiche simulando l’interazione con il committente. In alcuni casi allo
studente sarà richiesto di valutare diverse possibili alternative, per poi sceglierne una in
maniera motivata. Le motivazioni di tutte le scelte interpretative, progettuali e
implementative andranno sempre chiaramente documentate nel progetto e verranno discusse
in sede di revisione.
Problema
Il progetto prevede la realizzazione della base di dati per la gestione di un sistema di
eCommerce.
Il sistema deve essere in grado di gestire una molteplicità di negozi on-line, ciascuno con un
proprio catalogo di prodotti, e di raccogliere e gestire le richieste di acquisto di utenti
registrati.
Ogni negozio è identificato da un proprio codice e bisogna registrarne la ragione sociale,
inoltre, è specializzato in uno o più settori (e.g. abbigliamento, telefonia, elettronica, etc.).
Ciascun negozio propone un proprio catalogo di prodotti. Ciascun prodotto è identificato da un
codice, un nome, il prezzo e la quantità disponibile in magazzino. Per una più agevole
presentazione in vetrina, i prodotti sono raggruppati per categorie (specifiche per ogni
settore), ad esempio nel caso di prodotti di abbigliamento, avremo abiti per uomo, donna,
bambino, etc.. Le categorie, a loro volta possono essere ripartite in sottocategorie, e.g.
camicie e pantaloni da uomo, camicie e gonne da donna, etc..
La peculiarità del sistema di eCommerce è che permette, oltre alla presentazione delle vetrine
dei negozi su domini registrati ad hoc per ciascuno di essi, anche un'organizzazione tipo centro
commerciale, con una vetrina unica navigabile per tipologia di prodotti (sulla fattispecie di
ebay, amazon, etc.).
I clienti che intendono effettuare un acquisto dovono essere registrati e bisogna conoscerne i
dati anagrafici, i contatti telematici e telefonici e il recapito postale per le spedizioni.
Al momento della registrazione, ad ogni cliente viene assegnato un carrello all'interno del
quale potranno essere depositati i prodotti via via selezionati per l'acquisto, indicandone anche
la quantità desiderata. Un cliente potrà procedere con l'ordine definendo le modalità di
pagamento e spedizione. Sono disponibili diverse opzioni per la spedizione dei prodotti,
ciascuna delle quali prevede un costo diverso (e.g. diversi vettori). Per ciascuna opzione sono
previsti sconti e/o l'azzeramento del costo se il valore dell'ordine supera opportuni valori di
soglia.
Da notare che i prodotti possono essere aggiornati modificandone il prezzo nel corso del tempo
(ad esempio, un prodotto può essere messo in promozione, per un certo periodo, applicando
uno sconto), pertanto è necessario, per ogni ordine, mantenere memoria del costo dei prodotti
selezionati definito al momento dell'acquisto.
Gli utenti del sistema sono: gli amministratori che possono modificare il DB (e.g. possono
configurare un nuovo negozio, assegnare diritti di lettura e scrittura ai responsabili di ciascun
negozio); e i negozianti che, ovviamente in relazione al solo negozio di competenza, possono
aggiornare il catalogo inserendo nuovi prodotti o modificando le proprietà di quelli esistenti.
Laboratorio di Basi di Dati
Prof. P. Pierini
A.A. 2015/2016
Progetto eCommerce
Le operazioni previste sul data base sono le seguenti:
1. Per ogni entità individuata, necessaria in fase di impianto, fornire gli statement di
inserimento, modifica ed eliminazione dei dati corrispondenti. Tenere presente che tali
operazioni potranno essere eseguite dai soli amministratori di sistema.
2. Durante la fase di registrazione, un cliente deve creare il record con il proprio profilo e
il carrello associato.
3. Definire un meccanismo per richiedere ai clienti l'aggiornamento periodico della
propria password (e.g. ogni 60 giorni).
4. Definire la procedura di acquisto permettendo ad un cliente di: creare un ordine
relativo ai prodotti contenuti nel carrello, confermare o variare le quantità di ciascun
prodotto, confermare o variare il recapito per la spedizione, scegliere l'opzione di
spedizione, calcolare il costo complessivo dell'ordine e definire le modalità di
pagamento. E' necessario controllare le quantità dei prodotti disponibili per: rettificare
o annullare l'ordine se i prodotti non sono sufficienti oppure scalare le quantità
richieste dal magazzino al momento della conferma dell'ordine stesso.
5. Permettere ad un cliente di modificare il contenuto del suo carrello: svuotandolo
completamente, eliminando o aggiungendo prodotti e modificandone le relative
quantità.
6. Permettere ad un negoziante di aggiornare il proprio catalogo, bisogna prevedere:
l'aggiunta di nuovi prodotti, l'eliminazione o la modifica di prodotti esistenti. Tenere
presente che un prodotto eliminato da un catalogo non può essere eliminato dal DB per
non perdere i riferimenti di eventuali ordini presenti.
7. Selezionare tutti i prodotti di una data categoria fornendo i nomi e i codici dei negozi
che li vendono, ordinati in base al prezzo.
8. Estendere l'operazione precedente a tutti i prodotti di una data categoria e delle
sottocategorie collegate.
9. Stampare giornalmente per ogni negozio l'elenco degli ordini ricevuti.
10. Stampare giornalmente per ogni negozio l'elenco dei prodotti venduti con l'indicazione
del numero e del ricavato per ogni prodotto ed infine il volume d'affari complessivo.
11. Stampare giornalmente per ogni negozio, l'elenco dei prodotti la cui quantità residua in
magazzino e' inferiore ad una soglia prestabilita.
12. Calcolare giornalmente una statistica degli acquisti fatti, indicando il cliente, la cifra
complessiva spesa e i prodotti acquistati ripartiti per i vari negozi.
13. Per ogni cliente calcolare il prodotto acquistato con maggiore frequenza dal momento
della registrazione
14. Per ogni cliente calcolare la spesa per ciascun negozio dove ha effettuato acquisti dal
momento della registrazione elencando i negozi in ordine decrescente di spesa.
15. Individuare tra tutti i clienti, quello il cui carrello contiene il maggior numero di
prodotti.
16. Individuare tra tutti i clienti, quello il cui carrello contiene prodotti per un
corrispettivo di spesa più alto
17. Calcolare per ogni cliente la frequenza media con cui effettua acquisti
Si prevede di gestire circa 200 negozi virtuali operanti in una decina di settori diversi con una
media di circa 1000 prodotti ciascuno divisi in una cinquantina tra categorie e sottocategorie
per ogni settore specifico. Si prevede un flusso di 4.000.000 di clienti e circa 1 acquisto al mese
per ognuno. Nei carrelli si rileva una presenza media di 3 prodotti. Sono disponibili 5
spedizionieri.
Individuare le regole di vincolo e di derivazione che possono essere applicate ai contenuti di
questa base di dati. 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.
Laboratorio di Basi di Dati
Prof. P. Pierini
A.A. 2015/2016
Progetto eCommerce
Alcune delle funzionalità richieste potrebbero non essere realizzabili con singole query, ma
richiedere l’uso di strumenti più avanzati messi a disposizione dal DBMS, come le procedure
e/o i trigger.
Progetto
Lo sviluppo del progetto comprende i seguenti punti:
1. Progettazione concettuale consistente in:
a. Definizione formale, analisi e strutturazione dei requisiti.
b. Modellazione dello schema concettuale utilizzando il modello ER.
c. Formalizzazione delle regole di vincolo e di derivazione.
2. Progettazione logica consistente in:
a. Ristrutturazione ed ottimizzazione dello schema ER.
b. Analisi dei volumi e degli accessi.
c. Traduzione nel modello relazionale.
3. Implementazione del progetto.
a. Sviluppo del codice SQL
b. Implementazione di un’interfaccia grafica web-oriented (opzionale)
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 (1) e (2), debitamente
commentati, il modello relazionale della base di dati ottenuto al passo (2c), 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 può usare un qualunque DBMS, le seguenti sono alcune
scelte possibili:
- Oracle [Windows e Unix, commerciale]
- MS SQL Server [Windows, commerciale]
- DB2 [Windows e Unix, commerciale]
- Postgresql [Linux, gratuito]
- Interbase [Windows e Linux, la versione 6 è gratuita]
- Firebird [Windows e Linux, gratuito, basato sulla versione 6 di Interbase]
- MySQL [Windows e Linux, gratuito]
Nota: MSAccess è fortemente sconsigliato.
Il DB realizzato può essere dotato di un’interfaccia grafica scritta con un linguaggio di
programmazione a scelta (ad. Es. Java, PHP). La valutazione NON terrà conto delle
caratteristiche estetiche della grafica di interfaccia bensì dei criteri di interazione tra DBMS e
linguaggio di programmazione.
Informazioni
Questa specifica è disponibile in formato PDF sulla pagina web del corso di Laboratorio di Basi
di Dati, all’indirizzo http://www.di.univaq.it/pierluigi.pierini/. Ulteriori informazioni e
chiarimenti sulle specifiche possono essere richiesti direttamente via email all’indirizzo
[email protected].
Si ricorda che i progetti vanno svolti singolarmente o in piccoli gruppi (fino a 3 persone).
Tutti coloro che intendono sostenere l’esame di Laboratorio di Basi di Dati dovranno inviare
l’elaborato del progetto, in formato PDF, via email all’indirizzo [email protected],
rispettando le scadenze di volta in volta indicate per ogni appello. In fase di discussione del
progetto, si potrà presentare l’implementazione di una interfaccia grafica.
Laboratorio di Basi di Dati
Prof. P. Pierini