La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Progetto di base di dati per un sito di ecommerce Paolo Oltramonti.

Presentazioni simili


Presentazione sul tema: "Progetto di base di dati per un sito di ecommerce Paolo Oltramonti."— Transcript della presentazione:

1 Progetto di base di dati per un sito di ecommerce Paolo Oltramonti

2 Requisiti espressi in linguaggio naturale Si vuole realizzare una base di dati per una società che opera nel settore del commercio elettronico B2C. La necessità è quella di creare un sito adatto a svolgere lattività. Il sito effettuerà vendite nel solo territorio italiano. Il sito dovrà svolgere principalmente 3 funzioni: 1.Mostrare i prodotti al cliente 2.Permettere al cliente di navigare il catalogo nel quale sono organizzati i prodotti 3.Permettere al cliente di acquistare i prodotti presenti nel catalogo (sottomettere un ordine) Il flusso standard sarà relativamente semplice: 1.Atterrare in una Home Page dove saranno presentati i prodotti che si vogliono mettere in evidenza 2.Accedere alle categorie di prodotti 3.Accedere allle schede di dettaglio dei prodotti 4.Inserire i prodotti desiderati nel carrello 5.Mostrare il resoconto dei prodotti nel carrello con i prezzi ed il totale in evidenza 6.Selezionare il tipo di spedizione ed il metodo di pagamento 7.Sottomettere lordine I prodotti saranno organizzati in categorie. Ogni categoria avrà un nome, unicona ed una descrizione. Le categorie saranno organizzate in cataloghi in modo da poter avere diverse versioni del sito riservate a determinate tipologie di clienti. Per identificare un catalogo sarà sufficiente avere un nome ed una descrizione. Ogni prodotto sarà identificato da un codice e avrà un nome, una descrizione breve, una descrizione dettagliata, un immagine per la pagina di categoria, unimmagine per la scheda di dettaglio, una galleria dimmagini opzionale, un prezzo, un peso ed un costo. Ogni prodotto potrà essere fisicamente disponibile in uno o più magazzini. Ogni cliente dovrà essere identificato da uno username, una password, un indirizzo e le informazioni necessarie per levasione dellordine (indirizzo di spedizione/fatturazione + uno o più numeri di telefono utili al corriere per la consegna). Ogni cliente potrà avere una rubrica di indirizzi di spedizione ai quali assegnare degli pseudonimi per riconoscerli. Per ogni ordine dovranno essere tracciate le seguenti informazioni: data inserimento ordine, cliente, prodotti, metodo di spedizione, metodo di pagamento, indirizzo di spedizione e stato dellordine. Per lordine dovrà essere tracciato anche lavanzamento che consiste nelle fasi di: ordine confermato da parte del cliente, ordine spedito da parte dellazienda, ordine pagato da parte del cliente, contabilizzazione dellordine che chiude il ciclo di un ordine. Ovviamente un ordine può anche essere annullato in determinati casi particolari. Inizialmente saranno disponibili 3 metodi di pagamento: contrassegno, carta di credito e PayPal. Dei quali dovremo tracciare le seguenti informazioni: data pagamento, importo pagamento ed ordine associato al pagamento. Inizialmente saranno disponibili 2 tipi di spedizione: Corriere e corriere espresso. Dei quali dovremo tracciare le seguenti informazioni: data di spedizione, ordine associato. Le spese di spedizione dipendono dal metodo di spedizione selezionato. Requisiti

3 Requisiti espressi in linguaggio naturale Operazioni previste sulla base di dati 1. CLIENTI: (a) Inserimento dati cliente. (b) Cancellazione dati cliente. (c) Aggiornamento dati cliente. 2. PRODOTTO – CATEGORIA - CATALOGO: (a) Aggiunta prodotto/categoria/catalogo. (b) Cancellazione prodotto/categoria/catalogo. (c) Aggiornamento prodotto/categoria/catalogo. 3. VETRINA: (a) Inserimento prodotto in vetrina. (b) Cancellazione prodotto in vetrina. (c) Aggiornamento prodotto in vetrina. 4. PAGAMENTO: (a) Inserimento nuovo pagamento. (b) Cancellazione pagamento. (c) Aggiornamento pagamento. 5. TIPOLOGIE PAGAMENTO: (a) Inserimento nuove tipologie di pagamento. (b) Cancellazione tipologia di pagamento. (c) Aggiornamento tipologia di pagamento. 6. SPEDIZIONE: (a) Inserimento nuova spedizione. (b) Cancellazione spedizione. (c) Aggiornamento spedizione. 7. TIPOLOGIE SPEDIZIONE: (a) Inserimento nuove tipologie di spedizione. (b) Cancellazione tipologia di spedizione. (c) Aggiornamento tipologia di spedizione. 8. ORDINE: (a) Inserimento nuovo ordine. (b) Cancellazione ordine. (c) Aggiornamento ordine. 9. MAGAZZINO: (a) Inserimento nuovo magazzino. (b) Cancellazione magazzino. (c) Aggiornamento magazzino. (d) Aggiornamento scorte a magazzino 10. ALTRE PROCEDURE: (a) Dato un cliente restituire tutti gli ordini effettuati (b) Restituire tutti gli ordini effettuati e non ancora spediti. (c) Restituire tutti gli ordini effettuati e non ancora pagati (d) Restituire tutti gli ordini effettuati in un determinato intervallo di date (e) Restituire tutti i prodotti presenti nella vetrina (f) Restituire tutti i prodotti presenti in una categoria (g) Restituire tutte le categorie presenti in un catalogo (h) Restituire i prodotti associati ad un ordine (i) Restituire tutte le informazioni associate ad un ordine (j) Restituire tutti i dati associati ad un cliente (k) Restituire il fatturato giornaliero/mensile/annuale Requisiti

4 Glossario dei termini TermineDescrizioneSinonimiCollegamenti ProdottoOggetto fisico che si può acquistare nel sitoOrdine, Categoria, Home page ClientePersona che effettua almeno un ordine nel sitoOrdine CatalogoCatalogo nel quale sono organizzate delle categorie che contengono prodotti Categoria Categoria nella quale sono organizzati prodotti dello stesso tipoProdotto, Catalogo OrdineInsieme di tutte le informazioni relative ad un acquisto da parte di un cliente Prodotto, cliente, pagamento, spedizione Home pagePagina nella quale si visualizzano dei prodotti che si vogliono mettere in evidenza VetrinaProdotti PagamentoPagamento relativo ad un acquisto. Può essere fatto in 3 modi: Carta di credito, contrassegno o PayPal Ordine SpedizioneSpedizione della merce acquistata. Può essere fatto in 2 modi: Corriere standard o corriere espresso Ordine MagazzinoMagazzino nel quale saranno dispinibili i prodotti vendutiProdotto Requisiti

5 Strutturazione dei requisiti FRASI DI CARATTERE GENERALE Si vuole realizzare una base di dati per una società che opera nel settore del commercio elettronico. La necessità è quella di creare un sito adatto a svolgere lattività. Il sito effettuerà vendite nel solo territorio italiano. FRASI RELATIVE AI PRODOTTI Il sito dovrà svolgere principalmente 3 funzioni: –Mostrare i prodotti al cliente –Permettere al cliente di navigare il catalogo nel quale sono organizzati i prodotti –Permettere al cliente di acquistare i prodotti presenti nel catalogo (sottomettere un ordine) Il flusso standard sarà relativamente semplice: –Atterrare in una Home Page dove saranno presentati i prodotti che si vogliono mettere in evidenza –Accedere alle categorie di prodotti –Accedere allle schede di dettaglio dei prodotti –Inserire i prodotti desiderati nel carrello –Mostrare il resoconto dei prodotti nel carrello con i prezzi ed il totale in evidenza I prodotti saranno organizzati in categorie. Ogni prodotto sarà identificato da un codice e avrà un nome, una descrizione breve, una descrizione dettagliata, unimmagine per la pagina di categoria, unimmagine per la scheda di dettaglio, una galleria dimmagini opzionale, un prezzo, un peso ed un costo. Per ogni ordine le informazioni dovranno essere tracciate le seguenti informazioni: data inserimento ordine, cliente, prodotti, metodo di spedizione, metodo di pagamento, indirizzo di spedizione e stato dellordine. Ogni prodotto potrà essere fisicamente disponibile in uno o più magazzini FRASI RELATIVE AGLI ORDINI Per ogni ordine dovranno essere tracciate le seguenti informazioni: data inserimento ordine, cliente, prodotti, metodo di spedizione, metodo di pagamento, indirizzo di spedizione e stato dellordine. Per lordine dovrà essere tracciato anche lavanzamento che consiste nelle fasi di: ordine confermato da parte del cliente, ordine spedito da parte dellazienda, ordine pagato da parte del cliente, contabilizzazione dellordine che chiude il ciclo di un ordine. Ovviamente un ordine può anche essere annullato in determinati casi particolari. FRASI RELATIVE AI CATALOGHI Il sito dovrà svolgere principalmente 3 funzioni: –Permettere al cliente di navigare il catalogo nel quale sono organizzati i prodotti –Permettere al cliente di acquistarei prodotti presenti nel catalogo (sottomettere un ordine) Le categorie saranno organizzate in cataloghi in modo da poter avere diverse versioni del sito riservate a determinate tipologie di clienti. Per identificare un catalogo sarà sufficiente avere un nome ed una descrizione. Requisiti

6 Strutturazione dei requisiti FRASI RELATIVE ALLE CATEGORIE Il flusso standard sarà relativamente semplice: –... –Accedere alle categorie di prodotti –... I prodotti saranno organizzati in categorie. Ogni categoria avrà un nome, unicona ed una descrizione. Le categorie saranno organizzate in cataloghi in modo da poter avere diverse versioni del sito riservate a determinate tipologie di clienti. FRASI RELATIVE AI CLIENTI Il sito dovrà svolgere principalmente 3 funzioni: –Mostrare i prodotti al cliente –... Ogni cliente dovrà essere identificato da uno username, una password, un indirizzo e le informazioni necessarie per levasione dellordine (indirizzo di spedizione/fatturazione + uno o più numeri di telefono utili al corriere per la consegna). Per ogni ordine le informazioni dovranno essere tracciate le seguenti informazioni: canale di vendita, data inserimento ordine, cliente, prodotti, metodo di spedizione, metodo di pagamento, indirizzo di spedizione e stato dellordine. Ogni cliente potrà avere una rubrica di indirizzi di spedizione ai quali assegnare degli pseudonimi per riconoscerli. FRASI RELATIVE ALLHOME PAGE Il flusso standard sarà relativamente semplice: –Atterrare in una Home Page dove saranno presentati i prodotti che si vogliono mettere in evidenza FRASI RELATIVE AL PAGAMENTO Selezionare il tipo di spedizione ed il metodo di pagamento Per ogni ordine le informazioni dovranno essere tracciate le seguenti informazioni: canale di vendita, data inserimento ordine, cliente, prodotti, metodo di spedizione, metodo di pagamento, indirizzo di spedizione e stato dellordine. Inizialmente saranno disponibili 3 metodi di pagamento: contrassegno, carta di credito e PayPal. Dei quali dovremo tracciare le seguenti informazioni: data pagamento, importo pagamento, ordine associato al pagamento. FRASI RELATIVE ALLA SPEDIZIONE Selezionare il tipo di spedizione ed il metodo di pagamento Per ogni ordine le informazioni dovranno essere tracciate le seguenti informazioni: canale di vendita, data inserimento ordine, cliente, prodotti, metodo di spedizione, metodo di pagamento, indirizzo di spedizione e stato dellordine. Inizialmente saranno disponibili 2 tipi di spedizione: Corriere e corriere espresso. Dei quali dovremo tracciare le seguenti informazioni: data di spedizione, ordine associato Le spese di spedizione dipendono dal metodo di spedizione selezionato. Requisiti

7 Diagramma E-R Per realizzare lo schema viene utilizzata una strategia di tipo misto; si parte da uno schema embrionale, espandendolo a macchia dolio fino allo schema finale Le entità principali: Cliente Ordine Prodotto Le relazioni principali: Acquisto Composizione Progettazione concettuale

8 Approfondimento dellentità cliente Ogni cliente oltre al proprio indirizzo principale può memorizzare una rubrica di indirizzi di spedizione utili allevasione dei suoi ordini. Si definisce quindi la nuova entità Rubrica indirizzi: Una rubrica di indirizzi di spedizione è associata ad ogni cliente. Il cliente sceglierà lindirizzo di spedizione al quale spedire lordine dalla rubrica degli indirizzi Progettazione concettuale

9 Approfondimento dellentità prodotto Ogni prodotto risiederà fisicamente in uno o più magazzini in modo da gestire la disponibilità dei prodotti a sistema. Viene quindi definita lentità Magazzino: Un magazzino sarà identificato e avrà al suo interno dei prodotti che contribuiranno a garantire la disponibilità di essi nel sito Progettazione concettuale

10 Approfondimento dellentità prodotto La visualizzazione e categorizzazione dei prodotti ci porta a definire 3 ulteriori entità e 3 ulteriori relazioni: Vetrina: un prodotto può essere messo in evidenza in una vetrina (una vetrina per esempio può essere lhome page) Categoria: un prodotto appartiene ad una categoria nella quale sarà visualizzato. Catalogo: ad un catalogo possono essere associate delle categorie in modo da poter differenziare le offerte e mostrare set di prodotti dedicati Progettazione concettuale

11 Approfondimento dellentità ordine Lo stato di un ordine può essere confermato (ordine inserito da parte del cliente), spedito (ordine spedito al cliente), pagato (ordine pagato da parte del cliente), contabilizzato (ordine confermato, pagato e consegnato al cliente – ordine concluso) o annullato (ordine annullato da parte del cliente o del negozio) La generalizzazione è totale ed esclusiva. Progettazione concettuale

12 Approfondimento dellentità ordine Un ordine dopo la sua immissione a sistema, per poter essere considerato chiuso, deve completare due ulteriori attività che ci portano a definire due nuove entità: Pagamento: Perchè un ordine sia accettato dal sistema ed evaso, deve essere stato autorizzato il pagamento da parte del cliente. Spedizione: Un ordine deve essere spedito al cliente che ha effettuato lordine allindirizzo indicato dal cliente Progettazione concettuale

13 Approfondimento delle entità spedizione e pagamento La spedizione di un ordine può essere effettuata con corriere o con corriere espresso. La generalizzazione è totale ed esclusiva. Un ordine può essere pagato con contrassegno, carta di credito o PayPal. Anche in questo caso la generalizzazione è totale ed esclusiva. Progettazione concettuale

14 Schema E-R finale Progettazione concettuale

15 Analisi delle entità CLIENTE IDClienteÈ il codice univoco che viene associato al cliente nel momento della registrazione; identifica qualsiasi cliente del sito; è candidato ad essere chiave primaria dellentità cliente UsernameÈ lo pseudonimo del cliente per accedere al sito PasswordÈ la password che il cliente deve inserire per accedere al sito Indirizzo del cliente Indirizzo di fatturazione Indirizzo al quale fatturare lordine. Attributo composto TelefonoNumeri di telefono del cliente. Attributo multivalore RUBRICA INDIRIZZI DI SPEDIZIONE IDIndirizzoÈ il codice univoco che viene associato allindirizzo nel momento della sua creazione; identifica qualsiasi indirizzo; è candidato ad essere chiave primaria dellentità rubrica indirizzi di spedizione Alias indirizzo di spedizione È lo pseudonimo assegnato dal cliente allindirizzo di spedizione per essere intuitivo (esempio: casa, ufficio, mamma) Indirizzo di spedizione Indirizzo al quale spedire la merce al cliente. Attributo composto Progettazione concettuale

16 Analisi delle entità ORDINE IDOrdineÈ il codice univoco che identifica lordine; è candidato ad essere la chiave primaria dellentità ordine Data di inserimento Data in cui lordine viene inserito dal cliente SPEDITO Nessun attributo PAGATO Nessun attributo CONTABILIZZATO Nessun attributo ANNULLATO Nessun attributo CONFERMATO Nessun attributo Progettazione concettuale

17 Analisi delle entità CORRIERE Spese di spedizione Sono le spese di spedizione associate al metodo di spedizione corriere SPEDIZIONE IDSpedizioneÈ il codice univoco che identifica la spedizione; Sarà riportato nel documento di spedizione; è candidato ad essere chiave primaria dellentità Spedizione Data di spedizione E la data in cui viene effettivamente spedito lordine CORRIERE ESPRESSO Spese di spedizione Sono le spese di spedizione associate al metodo di spedizione corriere espresso Progettazione concettuale

18 Analisi delle entità CONTRASSEGNO Nessun attributo PAGAMENTO IDPagamentoÈ il codice univoco associato al pagamento; è candidato ad essere chiave primaria dellentità Pagamento Data di pagamento E la data in cui viene effettivamente effettuata la transazione Importo pagamento E limporto del pagamento CARTA DI CREDITO Nessun attributo PAYPAL Nessun attributo Progettazione concettuale

19 Analisi delle entità PRODOTTO IDProdottoÈ il codice univoco identifica un prodotto; è candidato ad essere chiave primaria dellentità prodotto Nome prodottoE il nome del prodotto che verrà visualizzato Descrizione breve prodotto E la descrizione breve del prodotto che verrà visualizzata Descrizione dettagliata prodotto E la descrizione dettagliata del prodotto che verrà visualizzata nella scheda del prodotto Immagine thumb prodotto E limmagine del prodotto che verrà visualizzata nella pagina di categoria Immagine full prodotto E limmagine del prodotto che verrà visualizzata nella scheda del prodotto Immagine galleria prod E limmagine per la galleria dimmagini del prodotto. Attributo multivalore PrezzoE il prezzo di vendita del prodotto PesoE il peso del prodotto CostoE il costo del prodotto MAGAZZINO IDMagazzinoE il codice univoco che identifica un magazzino prodotti; è candidato ad essere chiave primaria dellentità magazzino Progettazione concettuale

20 Analisi delle entità VETRINA IDVetrinaÈ il codice univoco che identifica la vetrina su cui saranno pubblicati i prodotti in evidenza; è candidato ad essere chiave primaria dellentità vetrina Nome vetrinaE il nome della vetrina che sarà visualizzato nel sito CATEGORIA IDCategoriaÈ il codice univoco che identifica una categoria; è candidato ad essere chiave primaria dellentità categoria Nome categoriaE il nome della categoria che sarà visualizzato nel sito Descrizione categoria E la descrizione della categoria che sarà visualizzata nel sito Icona categoriaE licona della categoria che sarà visualizzata nel sito CATALOGO IDCataglogoÈ il codice univoco che identifica un catalogo; è candidato ad essere chiave primaria dellentità catalogo Nome catalogoE il nome del catalogo che servirà alloperatore per identificare il catalogo Descrizione catalogo E la descrizione del catalogo che servirà alloperatore per avere informaizoni più dettagliate sul catalogo Progettazione concettuale

21 Analisi delle relazioni e della cardinalità INDIRIZZI Collega lentità cliente con lentità rubrica indirizzi; rappresenta la rubrica degli indirizzi di spedizione di ogni cliente CardinalitàUno a molti; ogni cliente può avere uno o più indirizzi di spedizione associati alla sua anagrafica; la partecipazione dellentità cliente è facoltativa in quanto un cliente può non avere un indirizzo di spedizione nel caso in cui non abbia ancora effettuato ordini, mentre la partecipazione dellentità rubrica indirizzi è obbligatoria in quanto un indirizzo di spedizione deve essere associato ad un cliente ACQUISTO Collega lentità cliente con lentità ordine; rappresenta limmissione di un ordine da parte di un cliente CardinalitàUno a molti; ogni ordine è associato ad un solo cliente mentre ogni cliente può aver inserito più ordini; la partecipazione dellentità ordine alla relazione è obbligatoria in quanto ogni ordine deve essere stato immesso da un cliente, mentre la partecipazione dellentità cliente alla relazione è facoltativa in quanto vi possono essere dei clienti che non hanno immesso alcun ordine Progettazione concettuale

22 Analisi delle relazioni e della cardinalità CONSEGNA Collega lentità ordine con lentità spedizione; definisce la spedizione fisica dellordine CardinalitàUno a uno; ogni ordine può essere spedito una e una sola volta e una spedizione può essere associata soltanto ad un ordine; la partecipazione dellentità Spedizione è obbligatoria in quanto ogni spedizione deve essere associata ad un ordine, mentre la partecipazione dellentità Ordine è facoltativa in quanto un ordine può essere stato immesso ma non ancora spedito. FATTURAZIONE Collega lentità ordine con lentità pagamento; definisce il pagamento/fatturazione dellordine CardinalitàUno a uno; ogni ordine può essere pagato una e una sola volta ed un pagamento può essere associata soltanto ad un ordine; la partecipazione dellentità Pagamento è obbligatoria in quanto ogni pagamento deve essere associato ad un ordine, mentre la partecipazione dellentità Ordine è facoltativa in quanto un ordine può essere stato immesso ma non ancora pagato. COMPOSIZIONE Collega lentità ordine con lentità prodotto; rappresenta la presenza di determinati prodotti allinterno di un ordine CardinalitàMolti a molti; ogni ordine può comprendere uno o più prodotti e ogni prodotto può essere inserito in più ordini; la partecipazione dellentità ordine alla relazione è obbligatoria in quanto ogni ordine deve contenere almeno un prodotto, mentre la partecipazione dellentità prodotto alla relazione è facoltativa in quanto vi possono essere dei prodotti che non sono associati ad alcun ordine QuantitàE la quantità di un prodotto associata ad un determinato ordine Progettazione concettuale

23 Analisi delle relazioni e della cardinalità EVIDENZA Collega lentità prodotto con lentità vetrina; definisce la presenza di un prodotto nella vetrina CardinalitàMolti a molti; ogni prodotto può essere presente in una vetrina e ogni vetrina può contenere più prodotti; la partecipazione da ambo i lati della relazione è facoltativa in quanto un prodotto può non apparire in alcuna vetrina ed una vetrina può non contenere alcun prodotto in evidenza Testo evidenzaE il testo utilizzato nellhome page per il prodotto in evidenza Immagine evidenza E limmagine utilizzata nellhome page per il prodotto in evidenza LOCAZIONE Collega lentità prodotto con lentità magazzino; rappresenta la locazione presso la quale sono presenti i prodotti CardinalitàMolti a molti; ogni magazzino può comprendere uno o più prodotti e ogni prodotto può essere presente in più magazzini; la partecipazione da ambo i lati della relazione è facoltativa in quanto un prodotto può non esssere presente in nessun magazzino e vi possono essere dei magazzini che non sono associati ad alcun prodotto DisponibilitàE la disponibilità di un prodotto in un determinzato magazzino Progettazione concettuale

24 Analisi delle relazioni e della cardinalità TIPO PRODOTTO Collega lentità prodotto con lentità categoria; definisce lappartenenza di un prodotto ad una determinata categoria CardinalitàUno a molti; ogni categoria può avere uno o più prodotti al suo interrno, mentre un prodotto può essere associato ad una sola categoria; la partecipazione dellentità prodotto è obbligatoria in quanto in quanto un prodotto può essere assegnato solo ad una categoria, mentre la partecipazione dellentità categoria è facoltativa in quanto possono esistere delle categorie che non contengono alcun prodotto TIPO CATEGORIA Collega lentità categoria con lentità catalogo; definisce lappartenenza di una categoria ad un determinato catalogo CardinalitàMolti a molti; ogni catalogo può comprendere una o più categorie di prodotti e ogni categoria può essere inserita in più cataloghi; la partecipazione da ambo i lati della relazione è facoltativa in quanto una categoria può non esssere presente ad alcun catalogo e vi possono essere dei cataloghi che non sono contengono alcuna categoria Progettazione concettuale

25 Schema E-R finale con gli attributi Progettazione concettuale

26 Analisi delle prestazioni sullo schema E-R ConcettoTipoVolume ClienteE10000 Rubrica indirizziE15000 OrdineE31000 ConfermatoE1000 SpeditoE1000 PagatoE1000 ContabilizzatoE28000 AnnullatoE20 SpedizioneE30000 CorriereE20000 Corriere espressoE10000 PagamentoE29000 ContrassegnoE14000 Carta di creditoE10000 PayPalE5000 ProdottoE500 MagazzinoE2 VetrinaE2 CategoriaE15 CatalogoE5 ConcettoTipoVolume IndirizziR15000 AcquistoR31000 ConsegnaR30000 FatturazioneR29000 ComposizioneR60000 LocazioneR600 EvidenzaR20 Tipo prodottoR500 Tipo categoriaR20 Tavole dei volumi Nella tavola dei volumi sono riportati il numero di occorrenze di ogni entità e di ogni relazione dello schema E-R sulle dimensioni dei relativi attributi, stimando il funzionamento a regime. I volumi sono stimati considerando le cardinalità delle entità coinvolte. Progettazione logica

27 Analisi delle prestazioni sullo schema E-R OperazioneTipoFrequenza Inserimento dati clienteInterattiva20 / giorno Cancellazione dati clienteInterattiva20 / anno Aggiornamento dati clienteInterattiva3 / giorno Inserimento prodottoInterattiva2 / mese Cancellazione prodottoInterattiva5 / anno Aggiornamento prodottoInterattiva2 / mese Inserimento categoriaInterattiva2 / anno Cancellazione categoriaInterattiva1 / anno Aggiornamento categoriaInterattiva2 / anno Inserimento catalogoInterattiva2 / anno Cancellazione catalogoInterattiva1 / anno Aggiornamento catalogoInterattiva2 / anno Inserimento prodotti in vetrinaInterattiva1 / anno Cancellazione prodotti in vetrinaInterattiva1 / anno Aggiornamento prodotti in vetrinaInterattiva4 / settimana Inserimento magazzinoInterattiva1 / anno Cancellazione magazzinoInterattiva1 / anno Aggiornamento magazzinoBatch1 / giorno Inserimento ordineInterattiva50 / giorno Cancellazione ordineInterattiva5 / mese Aggiornamento ordineBatch100 / giorno Inserimento pagamentoInterattiva50 / giorno Tavola delle operazioni Sono riportate le tipologie e la frequenza delle operazioni effettuate sulla base di dati. * Evidenziate le operazioni più importanti che andremo ad analizzare Progettazione logica

28 Analisi delle prestazioni sullo schema E-R OperazioneTipoFrequenza Cancellazione pagamentoInterattiva5 / anno Aggiornamento pagamentoInterattiva1 / mese Inserimento tipologia pagamentoInterattiva1 / anno Cancellazione tipologia pagamentoInterattiva- Aggiornamento tipologia pagamentoInterattiva- Inserimento spedizioneInterattiva50 / giorno Cancellazione spedizioneInterattiva5 /mese Aggiornamento spedizioneInterattiva5 / mese Inserimento tipologia spedizioneInterattiva1 / anno Cancellazione tipologia spedizioneInterattiva- Aggiornamento tipologia spedizioneInterattiva- Dato un cliente restituire tutti gli ordini effettuatiBatch1 / giorno Restituire tutti gli ordini effettuati e non ancora speditiBatch1 / giorno Restituire tutti gli ordini effettuati e non ancora pagatiBatch1 / giorno Restituire tutti gli ordini effettuati in un determinato intervallo di dateInterattiva5 / giorno Restituire le informazioni da visualizzare nella scheda di un prodottoInterattiva1000 / giorno Restituire tutti i prodotti presenti nella vetrinaInterattiva500 / giorno Restituire tutti i prodotti presenti in una categoriaInterattiva300 / giorno Restituire tutte le categorie presenti in un catalogoInterattiva800 / giorno Restituire i prodotti associati ad un ordineInterattiva100 / giorno Restituire tutti i dati associati ad un clienteInterattiva10 / giorno Restituire il fatturato giornaliero/mensile/annualeBatch1 / giorno Progettazione logica * Evidenziate le operazioni più importanti che andremo ad analizzare

29 Analisi delle prestazioni sullo schema E-R ConcettoCostruttiAccessiTipo ClienteEntità1S IndirizziRelazione3S Rubrica indirizziEntità3S Tabella degli accessi Inserimento dati cliente Tabella degli accessi ConcettoCostruttiAccessiTipo SpedizioneEntità1S CorriereEntità1S ConsegnaRelazione1S OrdineEntità1L SpeditoEntità1S Inserimento spedizione Progettazione logica

30 Analisi delle prestazioni sullo schema E-R ConcettoCostruttiAccessiTipo OrdineEntità1S AcquistoRelazione1L ClienteEntità1L ConfermatoEntità1S ComposizioneRelazione3S ProdottoEntità3L Tabella degli accessi Inserimento ordine Progettazione logica

31 Analisi delle prestazioni sullo schema E-R ConcettoCostruttiAccessiTipo OrdineEntità1L ContabilizzatoEntità1S Tabella degli accessi Aggiornamento ordine (contabilizzazione) Tabella degli accessi ConcettoCostruttiAccessiTipo ProdottoEntità1L LocazioneRelazione3L MagazzinoEntità3L Restituire informazioni da visualizzare nella scheda prodotto Progettazione logica

32 Analisi delle prestazioni sullo schema E-R ConcettoCostruttiAccessiTipo ProdottoEntità10L EvidenzaRelazione10L VetrinaEntità1L Tabella degli accessi Restituire tutti i prodotti presenti in una vetrina Tabella degli accessi ConcettoCostruttiAccessiTipo OrdineEntità1L ComposizioneRelazione5L ProdottoEntità5L Restituire i prodotti associati ad un ordine Progettazione logica

33 Analisi delle prestazioni sullo schema E-R ConcettoCostruttiAccessiTipo CatalogoEntità1L Tipo CategoriaRelazione10L CategoriaEntità10L Tabella degli accessi Restituire tutte le categorie presenti in un catalogo Tabella degli accessi ConcettoCostruttiAccessiTipo CategoriaEntità1L Tipo prodottoRelazione20L ProdottoEntità20L Restituire i prodotti associati ad un ordine Progettazione logica

34 Analisi delle ridondanze ConcettoTipoVolume OrdineE30000 ComposizioneR60000 ProdottoE100 PagamentoE30000 FatturazioneR30000 ConsegnaR30000 SpedizioneE30000 CorriereE20000 Corriere espressoE10000 Operazione 1: Inserimento di un pagamento per un ordine (50 volte al giorno) Operazione 2: Analisi degli importi di pagamento per reportistica (1 volta al giorno) Progettazione logica

35 Analisi delle ridondanze ConcettoCostruttoAccessiTipo PagamentoE1L Presenza di ridondanza Operazione 1 Operazione 2 ConcettoCostruttoAccessiTipo OrdineE1L ComposizioneR2L ProdottoE2L ConsegnaR1L SpedizioneE1L Corriere o CEE1L PagamentoE1S FatturazioneR1S Costo operazione 1: 100 accessi in scrittura 400 accessi in lettura Costo operazione 2: trascurabile Progettazione logica Totale accessi (contando doppi gli accessi in scrittura): 600 accessi al giorno

36 Analisi delle ridondanze ConcettoCostruttoAccessiTipo OrdineE50L ComposizioneR100L ProdottoE100L ConsegnaR50L SpedizioneE50L Corriere o CEE50L Assenza di ridondanza Operazione 1 Operazione 2 Costo operazione 1: 400 accessi in lettura 100 accessi in scrittura Costo operazione 2: 400 accessi in lettura Totale accessi (contando doppi gli accessi in scrittura): accessi al giorno ConcettoCostruttoAccessiTipo OrdineE1L ComposizioneR2L ProdottoE2L ConsegnaR1L SpedizioneE1L Corriere o CEE1L PagamentoE1S FatturazioneR1S Progettazione logica Si opta quindi per mantenere la ridondanza presentata nello schema E-R

37 Eliminazione delle generalizzazioni Entità padreEntità figlieTipo OrdineConfermato – Spedito – Pagato – Contabilizzato - AnnullatoGeneralizzazione totale e esclusiva SpedizioneCorriere – Corriere espressoGeneralizzazione totale e esclusiva PagamentoContrassegno – Carta di credito - PayPalGeneralizzazione totale e esclusiva La gerarchia Ordine – Stati ordine viene risolta mantenendo lentità padre Ordine e accorpando le entità figlie in una nuova entità Status ordine con un attributo Status ordine che descrive lo stato in cui si trova un ordine definito dallavanzamento dellordine e un identificatore dello stesso (sarà la chiave primaria della tabella in corrispondenza con la foreign key della tabella Ordine); Si è optato per questa scelta in quanto nel futuro potrebbero essere aggiunti nuovi stati dellordine. Progettazione logica

38 Eliminazione delle generalizzazioni La gerarchia Spedizione – Corriere – Corriere espresso viene risolta mantenendo lentità padre Spedizione e accorpando le entità figlie in una nuova entità Tipologia Spedizione con un attributo Descrizione tipologia spedizione che descrive il tipo di spedizione che può essere selezionata da un cliente per effettuare un ordine, un attributo Spese di spedizione che indica le spese di spedizione associate al metodo di spedizione e un identificatore dello stesso (sarà la chiave primaria della tabella in corrispondenza con la foreign key della tabella Spedizione); Si è optato per questa scelta in quanto nel futuro potrebbero essere aggiunti nuovi metodi di spedizione con possibili ulteriori attributi per descriverne le caratteristiche. Progettazione logica

39 Eliminazione delle generalizzazioni La gerarchia Pagamento – Contrassegno – Carta di credito – PayPal viene risolta mantenendo lentità padre Pagamento e accorpando le entità figlie in una nuova entità Tipologia Pagamento con un attributo Descrizione tipologia pagamento che descrive il tipo di pagamento che può essere selezionato da un cliente per effettuare un ordine e un identificatore dello stesso (sarà la chiave primaria della tabella in corrispondenza con la foreign key della tabella Pagamento); Anche in questo caso si è optato per questa scelta in quanto nel futuro potrebbero essere aggiunti nuovi metodi di pagamento con possibili ulteriori attributi per descriverne le caratteristiche. Progettazione logica

40 Partizionamento/accorpamento di concetti Lentità Cliente viene partizionata in due entità: Cliente e Dati anagrafici in modo da separare gli attributi che vengono acceduti separatamente; infatti nellentità cliente rimangono i dati di accesso del cliente che vengono utilizzati per identificare un cliente al momento del login, mentre i dati utilizzati soltanto nel momento in cui viene immesso un ordine vengono inseriti nella nuova entità Dati anagrafici. Le due entità saranno in relazione 1-1 con coerenza tra identificatore primario. Progettazione logica

41 Partizionamento/accorpamento di concetti Lentità Prodotto viene partizionata in due entità: Prodotto e Dati ausiliari prodotto in modo da separare gli attributi che vengono acceduti separatamente; infatti nellentità prodotto rimangono i dati di che vengono visualizzati nella scheda prodotto del sito dal cliente, mentre i dati utilizzati soltanto per questioni di reportistica vengono inseriti nella nuova entità Dati ausiliari prodotto. Le due entità saranno in relazione 1-1 con coerenza tra identificatore primario. Progettazione logica

42 Partizionamento/accorpamento di concetti ConcettoAttributoSoluzione adottata Cliente (entità) TelefonoLentità cliente può avere nessuno, uno o più numeri di telefono; poiché i numeri di telefono si suppone possano essere al massimo due (fisso e mobile), lattributo viene diviso in due attributi semplici (telefono1 e telefono2) che vengono accorpati allentità cliente; nel caso fosse necessario memorizzare più numeri di telefono, la ristrutturazione dellattributo passa attraverso la definizione di unulteriore entità e di una relazione uno a molti Prodotto (entità) Immagine galleria prodotto Lentità prodotto può avere nessuna, una o più immagini per la galleria; poichè le immagini saranno in media una decina per ogni prodotto e laccesso a queste avverrà in maniera contestuale per ogni prodotto si è optato per creare unentità galleria immagini in relazione uno a molti con lentità prodotto con chiave esterna lID del prodotto, chiave primaria unID univoco IDImmagineGalleria e un attributo Immagine galleria. In questo modo più prodotti potranno anche utilizzare la stessa immagine per una galleria Eliminazione degli attributi multivalore ConcettoAttributoSoluzione adottata Cliente (entità) Indirizzo di fatturazione Lindirizzo di fatturazione del cliente viene suddiviso nei seguenti attributi che vengono accorpati allentità stessa: Rubrica indirizzi (entità) Indirizzo di spedizione Lindirizzo di spedizione del cliente viene suddiviso nei seguenti attributi che vengono accorpati allentità stessa: Eliminazione degli attributi composti Progettazione logica Nome Cognome Indirizzo Città CAP Provincia Nome Cognome Indirizzo Città CAP Provincia

43 Scelta degli identificatori principali Entità e Relationship molti a molti Ordine (IDOrdine, Data di inserimento) Prodotto (IDProdotto, Nome prodotto, Descrizione breve prodotto, Descrizione dettagliata prodotto, Immagine thumb prodotto, immagine full prodotto, Prezzo prodotto) Composizione (IDOrdine, IDProdotto) con vincoli di integrità referenziale fra IDOrdine in Composizione e la chiave di Ordine IDProdotto in Composizione e la chiave di Prodotto Catalogo (IDCatalogo, Nome catalogo, Descrizione catalogo) Categoria (IDCategoria, Icona categoria, Nome categoria, Descrizione categpria) Tipo Categoria (IDCatalogo, IDCategoria) con vincoli di integrità referenziale fra IDCatalogo in Tipo Categoria e la chiave di Catalogo IDCategoria in Tipo Categoria e la chiave di Categoria Progettazione logica

44 Scelta degli identificatori principali Entità e Relationship molti a molti Vetrina (IDVetrina, Nome vetrina) Prodotto (IDProdotto, Nome prodotto, Descrizione breve prodotto, Descrizione dett. prodotto, Immagine thumb prodotto, immagine full prodotto, Prezzo prodotto) Evidenza (IDVetrina, IDProdotto, Testo in evidenza, Immagine in evid.) con vincoli di integrità referenziale fra IDVetrina in Evidenza e la chiave di Vetrina IDProdotto in Evidenza e la chiave di Prodotto Prodotto (IDProdotto, Nome prodotto, Descrizione breve prodotto, Descrizione dett. prodotto, Immagine thumb prodotto, immagine full prodotto, Prezzo prodotto) Magazzino (IDMagazzino) Locazione (IDProdotto, IDMagazzino, Disponibilità) con vincoli di integrità referenziale fra IDProdotto e la chiave di Prodotto IDMagazzino e la chiave di Magazzino Progettazione logica

45 Scelta degli identificatori principali Entità e Relationship uno a molti Prodotto (IDProdotto, Nome prodotto, Descrizione breve prodotto, Descrizione dett. prodotto, Immagine thumb prodotto, immagine full prodotto, Prezzo prodotto, IDCategoria) Categoria (IDCategoria, Icona categoria, Nome categoria, Descrizione categoria) con vincolo di integrità referenziale fra IDCategoria in Prodotto e la chiave di Prodotto IDCategoria in Prodotto non ammette valore nullo in quanto la cardinalità minima della relationship è 1 Galleria immagini (IDImmagineGalleria, Immagine galleria, IDProdotto) Prodotto (IDProdotto, Nome prodotto, Descrizione breve prodotto, Descriz. dett. prodotto, Immagine thumb prodotto, immagine full prodotto, Prezzo prodotto) con vincolo di integrità referenziale fra IDProdotto in Galleria immagini e la chiave di Prodotto IDProdotto in Galleria immagini non ammette valore nullo in quanto la cardinalità minima della relationship è 1 Progettazione logica

46 Scelta degli identificatori principali Entità e Relationship uno a molti Rubrica indirizzi (IDIndirizzo, Indirizzo, Città, CAP, IDCliente) Cliente (IDCliente, Nome, Username, Password) con vincolo di integrità referenziale fra IDCliente in Rubrica indirizzi e la chiave di Cliente IDCliente in Rubrica indirizzi non ammette valore nullo in quanto la cardinalità minima della relationship è 1 Ordine (IDOrdine, Data di inserimento, IDCliente) Cliente (IDCliente, Nome, Username, Password) con vincolo di integrità referenziale fra IDCliente in Ordine e la chiave di Cliente IDCliente in Ordine non ammette valore nullo in quanto la cardinalità minima della relationship è 1 Progettazione logica

47 Scelta degli identificatori principali Entità e Relationship uno a molti Ordine (IDOrdine, Data di inserimento, IDStatusOrdine) Status ordine (IDStatusOrdine, Status ordine) con vincolo di integrità referenziale fra IDStatusOrdine in Ordine e la chiave di Status ordine IDStatusOrdine in Ordine non ammette valore nullo in quanto la cardinalità minima della relationship è 1 Spedizione (IDSpedizione, Data spedizione, IDMetodoSpedizione) Metodo spedizione (IDMetodoSpedizione, Desc metodo spedizione, Spese di spedizione) con vincolo di integrità referenziale fra IDMetodoSpedizione in Spedizione e la chiave di Metodo spedizione IDMetodoSpedizione in Spedizione non ammette valore nullo in quanto la cardinalità minima della relationship è 1 Pagamento (IDPagamento, Data pagamento, Importo pagamento, IDMetodoPagamento) Metodo pagamento (IDMetodoPagamento, Desc metodo pagamento) con vincolo di integrità referenziale fra IDMetodoPagamento in Pagamento e la chiave di Metodo pagamento IDMetodoPagamento in Pagamento non ammette valore nullo in quanto la cardinalità minima della relationship è 1 Progettazione logica

48 Scelta degli identificatori principali Entità e Relationship uno a uno Spedizione (IDSpedizione, Data spedizione, IDOrdine) Ordine (IDOrdine, Data di inserimento) con vincoli di integrità referenziale. Ammette valori nulli Pagamento (IDPagamento, Data pagamento, Importo pagamento, IDOrdine) Ordine (IDOrdine, Data di inserimento) con vincoli di integrità referenziale. Ammette valori nulli Cliente (IDCliente, Nome, Username, Password) Ordine (IDCliente, , Telefono1, Telefono2, Indirizzo, Città, CAP) con vincoli di integrità referenziale. Ammette valori nulli Prodotto (IDProdotto, Nome prodotto, Descrizione breve prodotto, Descriz. dett. prodotto, Immagine thumb prodotto, immagine full prodotto, Prezzo prodotto) Dati Ausiliari prodotto (IDProdotto, Peso prodotto, Costo prodotto) con vincoli di integrità referenziale, senza valori nulli Progettazione logica

49 Schema E-R ristrutturato Progettazione logica

50 Scelta degli indici Tabelle volatili Cliente Composizione Dati anagrafici Locazione Ordine Pagamento Rubrica indirizzi Spedizione Status ordine Tabelle non volatili Catalogo Categoria Dati ausiliari prodotto Evidenza Galleria immagini Magazzino Metodo pagamento Metodo spedizione Prodotto Tipo categoria Vetrina Nelle tabelle volatili non si inseriscono indici in quanto appesantirebbero le operazioni di input e update Progettazione fisica Identifichiamo le tabelle non volatili nelle quali potremo valutare di inserire degli indici

51 Scelta degli indici Tabelle non volatiliOccorrenzeCandidata per indici Catalogo5NO Categoria15NO Dati ausiliari prodotto100SI Evidenza20NO Galleria immagini5000SI Magazzino2NO Metodo pagamento3NO Metodo spedizione2NO Prodotto500SI Tipo categoria20NO Vetrina2NO Escludiamo le tabelle con poche occorrenze in quanto può essere più efficiente memorizzare la relazione in memoria che memorizzare un indice addizionale Progettazione fisica Escludiamo le tabelle con poche occorrenze

52 Scelta degli indici Tabelle non volatiliAccessi in lettura (Interrogazioni) Frequenza Dati ausiliari prodotto Restituire il costo di ogni prodotto 1 al giorno Restituire il peso di ogni prodotto 1 al giorno Prodotto (a) Restituire le informazioni da visualizzare nella scheda di un prodotto 1000 / giorno (b) Restituire tutti i prodotti presenti nella vetrina 500 / giorno (c) Restituire i prodotti associati ad un ordine 300 / giorno (d) Restituire tutti i prodotti presenti in una categoria 100 / giorno Galleria immagini Restituire tutte le immagini della galleria associate ad un prodotto 1000 / giorno Escludiamo anche la tabella Dati ausiliari prodotto in quanto conta due soli accesso in lettura al giorno Progettazione fisica Gli indici portano dei benefici nelle performance per relazioni che contano molti accessi in lettura

53 Scelta degli indici Campo(a)(b)(c)(d) Nome Prodotto XXXX Descrizione Breve Prodotto XXX Descrizione Dettagliata Prodotto X Immagine Thumb Prodotto XX Immagine Full Prodotto X Prezzo Prodotto XX I candidati indici sono quindi gli attributi Nome Prodotto e Descrizione Breve Prodotto Progettazione fisica Identifichiamo gli attributi che partecipano alle interrogazioni Accessi giornalieri Nome Prodotto: = Accessi giornalieri Descrizione Breve Prodotto: = 1.600

54 Scelta degli indici Inseriremo quindi degli indici sui campi Nome Prodotto e Descrizione Breve Prodotto Progettazione fisica Valutiamo linserimento degli indici nei campi candidati L numero di record nel file 500 B dimensione dei blocchi 4KB R lunghezza dei record (fissa per semplicità) ~6KB K lunghezza del campo chiave 50B – 100B P lunghezza degli indirizzi (ai blocchi) 4B CampoTipo datiDimensione Nome Prodotto Text (50)50 byte Descrizione Breve Prodotto Text (100)100 byte Descrizione Dettagliata Prodotto Memo (media: 5000) 5000 byte Immagine Thumb Prodotto Text (255)255 byte Immagine Full Prodotto Text (255)255 byte Prezzo Prodotto Currency4 byte NF = L / (B/R) =~ 500/(4.000/6.000) = 750 Nome Prodotto: ND = L / (B/(K+P)) =~ 500/(50+4) = 9 Descrizione Breve Prodotto: ND = L / (B/(K+P)) =~ 500/(100+4) = 5 NF: Numero di blocchi per il file ND: Numero di blocchi per un indice denso

55 Scelta degli indici Inseriremo quindi anche in questo caso un indice sul campo Immagine Galleria Progettazione fisica Valutiamo linserimento degli indici nei campi candidati L numero di record nel file B dimensione dei blocchi 4KB R lunghezza dei record (fissa per semplicità) 287B K lunghezza del campo chiave 255B P lunghezza degli indirizzi (ai blocchi) 4B NF = L / (B/R) =~ 5.000/(4.000/287) = 359 ND = L / (B/(K+P)) =~ 5.000/(255+4) = 19 NF: Numero di blocchi per il file ND: Numero di blocchi per un indice denso Nel caso della tabella Galleria immagini valutiamo lattributo Immagine Galleria di tipo Text(255) di 255 byte

56 Normalizzazione Le tabelle Rubrica Indirizzi e Dati anagrafici non sono in seconda forma normale Per portarle in seconda forma normale dobbiamo fare in modo che tutte le informazioni della tabella dipendano dalla chiave primaria e non dal dato presente nel campo. Creiamo le tabelle Città, CAP e Provincia in modo da poter identificare univocamente queste tre informazioni. Nelle tabelle Rubrica Indirizzi e Dati anagrafici elimineremo gli attributi sopra elencati e li sostituiremo con IDCittà in relazione 1-molti con la tabella Città.

57 Schema finale Progettazione fisica


Scaricare ppt "Progetto di base di dati per un sito di ecommerce Paolo Oltramonti."

Presentazioni simili


Annunci Google