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