La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Progetto di base di dati per un sito di ecommerce

Presentazioni simili


Presentazione sul tema: "Progetto di base di dati per un sito di ecommerce"— 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 l’attività. Il sito effettuerà vendite nel solo territorio italiano. 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 Selezionare il tipo di spedizione ed il metodo di pagamento Sottomettere l’ordine I prodotti saranno organizzati in categorie. Ogni categoria avrà un nome, un’icona 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, un’immagine per la scheda di dettaglio, una galleria d’immagini 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 l’evasione dell’ordine (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 dell’ordine. Per l’ordine dovrà essere tracciato anche l’avanzamento che consiste nelle fasi di: ordine confermato da parte del cliente, ordine spedito da parte dell’azienda, ordine pagato da parte del cliente, contabilizzazione dell’ordine 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 Requisiti Termine Descrizione Sinonimi
Collegamenti Prodotto Oggetto fisico che si può acquistare nel sito Ordine, Categoria, Home page Cliente Persona che effettua almeno un ordine nel sito Ordine Catalogo Catalogo nel quale sono organizzate delle categorie che contengono prodotti Categoria Categoria nella quale sono organizzati prodotti dello stesso tipo Prodotto, Catalogo Insieme di tutte le informazioni relative ad un acquisto da parte di un cliente Prodotto, cliente, pagamento, spedizione Home page Pagina nella quale si visualizzano dei prodotti che si vogliono mettere in evidenza Vetrina Prodotti Pagamento Pagamento relativo ad un acquisto. Può essere fatto in 3 modi: Carta di credito, contrassegno o PayPal Spedizione Spedizione della merce acquistata. Può essere fatto in 2 modi: Corriere standard o corriere espresso Magazzino Magazzino nel quale saranno dispinibili i prodotti venduti 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 l’attività. 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, un’immagine per la pagina di categoria, un’immagine per la scheda di dettaglio, una galleria d’immagini 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 dell’ordine. 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 dell’ordine. Per l’ordine dovrà essere tracciato anche l’avanzamento che consiste nelle fasi di: ordine confermato da parte del cliente, ordine spedito da parte dell’azienda, ordine pagato da parte del cliente, contabilizzazione dell’ordine che chiude il ciclo di un ordine. Ovviamente un ordine può anche essere annullato in determinati casi particolari. FRASI RELATIVE AI CATALOGHI 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, un’icona 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 l’evasione dell’ordine (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 dell’ordine. Ogni cliente potrà avere una rubrica di indirizzi di spedizione ai quali assegnare degli pseudonimi per riconoscerli. FRASI RELATIVE ALL’HOME PAGE 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 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 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 d’olio fino allo schema finale Le entità principali: Cliente Ordine Prodotto Le relazioni principali: Acquisto Composizione Progettazione concettuale

8 Approfondimento dell’entità “cliente”
Ogni cliente oltre al proprio indirizzo principale può memorizzare una rubrica di indirizzi di spedizione utili all’evasione dei suoi ordini. Si definisce quindi la nuova entità “Rubrica indirizzi”: Una rubrica di indirizzi di spedizione è associata ad ogni cliente. Il cliente sceglierà l’indirizzo di spedizione al quale spedire l’ordine dalla rubrica degli indirizzi Progettazione concettuale

9 Approfondimento dell’entità “prodotto”
Ogni prodotto risiederà fisicamente in uno o più magazzini in modo da gestire la disponibilità dei prodotti a sistema. Viene quindi definita l’entità “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 dell’entità “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 l’home 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 dell’entità “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 dell’entità “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 l’ordine all’indirizzo 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 RUBRICA INDIRIZZI DI SPEDIZIONE
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 dell’entità “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 l’ordine. Attributo composto Telefono Numeri di telefono del cliente. Attributo multivalore RUBRICA INDIRIZZI DI SPEDIZIONE IDIndirizzo È il codice univoco che viene associato all’indirizzo nel momento della sua creazione; identifica qualsiasi indirizzo; è candidato ad essere chiave primaria dell’entità “rubrica indirizzi di spedizione” Alias indirizzo di spedizione È lo pseudonimo assegnato dal cliente all’indirizzo 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à Progettazione concettuale ORDINE IDOrdine
È il codice univoco che identifica l’ordine; è candidato ad essere la chiave primaria dell’entità “ordine” Data di inserimento Data in cui l’ordine viene inserito dal cliente CONFERMATO Nessun attributo SPEDITO Nessun attributo PAGATO Nessun attributo CONTABILIZZATO Nessun attributo ANNULLATO Nessun attributo Progettazione concettuale

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

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

19 Analisi delle entità Progettazione concettuale PRODOTTO IDProdotto
È il codice univoco identifica un prodotto; è candidato ad essere chiave primaria dell’entità “prodotto” Nome prodotto E’ 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’ l’immagine del prodotto che verrà visualizzata nella pagina di categoria Immagine full prodotto E’ l’immagine del prodotto che verrà visualizzata nella scheda del prodotto Immagine galleria prod E’ l’immagine per la galleria d’immagini del prodotto. Attributo multivalore Prezzo E’ il prezzo di vendita del prodotto Peso E’ il peso del prodotto Costo E’ il costo del prodotto MAGAZZINO IDMagazzino E’ il codice univoco che identifica un magazzino prodotti; è candidato ad essere chiave primaria dell’entità “magazzino” Progettazione concettuale

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

21 Analisi delle relazioni e della cardinalità
INDIRIZZI Collega l’entità “cliente” con l’entità “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 dell’entità 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 dell’entità rubrica indirizzi è obbligatoria in quanto un indirizzo di spedizione deve essere associato ad un cliente ACQUISTO Collega l’entità “cliente” con l’entità “ordine”; rappresenta l’immissione 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 dell’entità “ordine” alla relazione è obbligatoria in quanto ogni ordine deve essere stato immesso da un cliente, mentre la partecipazione dell’entità “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à
COMPOSIZIONE Collega l’entità “ordine” con l’entità “prodotto”; rappresenta la presenza di determinati prodotti all’interno 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 dell’entità “ordine” alla relazione è obbligatoria in quanto ogni ordine deve contenere almeno un prodotto, mentre la partecipazione dell’entità “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 CONSEGNA Collega l’entità “ordine” con l’entità “spedizione”; definisce la spedizione fisica dell’ordine 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 dell’entità “Spedizione” è obbligatoria in quanto ogni spedizione deve essere associata ad un ordine, mentre la partecipazione dell’entità “Ordine” è facoltativa in quanto un ordine può essere stato immesso ma non ancora spedito. FATTURAZIONE Collega l’entità “ordine” con l’entità “pagamento”; definisce il pagamento/fatturazione dell’ordine 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 dell’entità “Pagamento” è obbligatoria in quanto ogni pagamento deve essere associato ad un ordine, mentre la partecipazione dell’entità “Ordine” è facoltativa in quanto un ordine può essere stato immesso ma non ancora pagato. Progettazione concettuale

23 Analisi delle relazioni e della cardinalità
EVIDENZA Collega l’entità “prodotto” con l’entità “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 evidenza E’ il testo utilizzato nell’home page per il prodotto in evidenza Immagine evidenza E’ l’immagine utilizzata nell’home page per il prodotto in evidenza LOCAZIONE Collega l’entità “prodotto” con l’entità “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 l’entità “prodotto” con l’entità “categoria”; definisce l’appartenenza 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 dell’entità prodotto è obbligatoria in quanto in quanto un prodotto può essere assegnato solo ad una categoria, mentre la partecipazione dell’entità categoria è facoltativa in quanto possono esistere delle categorie che non contengono alcun prodotto TIPO CATEGORIA Collega l’entità “categoria” con l’entità “catalogo”; definisce l’appartenenza 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
Concetto Tipo Volume Cliente E 10000 Rubrica indirizzi 15000 Ordine 31000 Confermato 1000 Spedito Pagato Contabilizzato 28000 Annullato 20 Spedizione 30000 Corriere 20000 Corriere espresso Pagamento 29000 Contrassegno 14000 Carta di credito PayPal 5000 Prodotto 500 Magazzino 2 Vetrina Categoria 15 Catalogo 5 Concetto Tipo Volume Indirizzi R 15000 Acquisto 31000 Consegna 30000 Fatturazione 29000 Composizione 60000 Locazione 600 Evidenza 20 Tipo prodotto 500 Tipo categoria 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
Operazione Tipo Frequenza Inserimento dati cliente Interattiva 20 / giorno Cancellazione dati cliente 20 / anno Aggiornamento dati cliente 3 / giorno Inserimento prodotto 2 / mese Cancellazione prodotto 5 / anno Aggiornamento prodotto Inserimento categoria 2 / anno Cancellazione categoria 1 / anno Aggiornamento categoria Inserimento catalogo Cancellazione catalogo Aggiornamento catalogo Inserimento prodotti in vetrina Cancellazione prodotti in vetrina Aggiornamento prodotti in vetrina 4 / settimana Inserimento magazzino Cancellazione magazzino Aggiornamento magazzino Batch 1 / giorno Inserimento ordine 50 / giorno Cancellazione ordine 5 / mese Aggiornamento ordine 100 / giorno Inserimento pagamento 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
Operazione Tipo Frequenza Cancellazione pagamento Interattiva 5 / anno Aggiornamento pagamento 1 / mese Inserimento tipologia pagamento 1 / anno Cancellazione tipologia pagamento - Aggiornamento tipologia pagamento Inserimento spedizione 50 / giorno Cancellazione spedizione 5 /mese Aggiornamento spedizione 5 / mese Inserimento tipologia spedizione Cancellazione tipologia spedizione Aggiornamento tipologia spedizione Dato un cliente restituire tutti gli ordini effettuati Batch 1 / giorno Restituire tutti gli ordini effettuati e non ancora spediti Restituire tutti gli ordini effettuati e non ancora pagati Restituire tutti gli ordini effettuati in un determinato intervallo di date 5 / giorno Restituire le informazioni da visualizzare nella scheda di un prodotto 1000 / giorno Restituire tutti i prodotti presenti nella vetrina 500 / giorno Restituire tutti i prodotti presenti in una categoria 300 / giorno Restituire tutte le categorie presenti in un catalogo 800 / giorno Restituire i prodotti associati ad un ordine 100 / giorno Restituire tutti i dati associati ad un cliente 10 / giorno Restituire il fatturato giornaliero/mensile/annuale * Evidenziate le operazioni più importanti che andremo ad analizzare Progettazione logica

29 Analisi delle prestazioni sullo schema E-R
Inserimento dati cliente Tabella degli accessi Concetto Costrutti Accessi Tipo Cliente Entità 1 S Indirizzi Relazione 3 Rubrica indirizzi Inserimento spedizione Tabella degli accessi Concetto Costrutti Accessi Tipo Spedizione Entità 1 S Corriere Consegna Relazione Ordine L Spedito Progettazione logica

30 Analisi delle prestazioni sullo schema E-R
Inserimento ordine Tabella degli accessi Concetto Costrutti Accessi Tipo Ordine Entità 1 S Acquisto Relazione L Cliente Confermato Composizione 3 Prodotto Progettazione logica

31 Analisi delle prestazioni sullo schema E-R
Aggiornamento ordine (contabilizzazione) Tabella degli accessi Concetto Costrutti Accessi Tipo Ordine Entità 1 L Contabilizzato S Restituire informazioni da visualizzare nella scheda prodotto Tabella degli accessi Concetto Costrutti Accessi Tipo Prodotto Entità 1 L Locazione Relazione 3 Magazzino Progettazione logica

32 Analisi delle prestazioni sullo schema E-R
Restituire i prodotti associati ad un ordine Tabella degli accessi Concetto Costrutti Accessi Tipo Ordine Entità 1 L Composizione Relazione 5 Prodotto Restituire tutti i prodotti presenti in una vetrina Tabella degli accessi Concetto Costrutti Accessi Tipo Prodotto Entità 10 L Evidenza Relazione Vetrina 1 Progettazione logica

33 Analisi delle prestazioni sullo schema E-R
Restituire i prodotti associati ad un ordine Tabella degli accessi Concetto Costrutti Accessi Tipo Categoria Entità 1 L Tipo prodotto Relazione 20 Prodotto Restituire tutte le categorie presenti in un catalogo Tabella degli accessi Concetto Costrutti Accessi Tipo Catalogo Entità 1 L Tipo Categoria Relazione 10 Categoria Progettazione logica

34 Analisi delle ridondanze
Concetto Tipo Volume Ordine E 30000 Composizione R 60000 Prodotto 100 Pagamento Fatturazione Consegna Spedizione Corriere 20000 Corriere espresso 10000 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
Presenza di ridondanza Operazione 1 Concetto Costrutto Accessi Tipo Ordine E 1 L Composizione R 2 Prodotto Consegna Spedizione Corriere o CE Pagamento S Fatturazione Costo operazione 1: 100 accessi in scrittura 400 accessi in lettura Costo operazione 2: trascurabile Operazione 2 Concetto Costrutto Accessi Tipo Pagamento E 1 L Totale accessi (contando doppi gli accessi in scrittura): 600 accessi al giorno Progettazione logica

36 Analisi delle ridondanze
Assenza di ridondanza Operazione 1 Concetto Costrutto Accessi Tipo Ordine E 1 L Composizione R 2 Prodotto Consegna Spedizione Corriere o CE Pagamento S Fatturazione Costo operazione 1: 400 accessi in lettura 100 accessi in scrittura Costo operazione 2: Operazione 2 Concetto Costrutto Accessi Tipo Ordine E 50 L Composizione R 100 Prodotto Consegna Spedizione Corriere o CE Totale accessi (contando doppi gli accessi in scrittura): accessi al giorno Si opta quindi per mantenere la ridondanza presentata nello schema E-R Progettazione logica

37 Eliminazione delle generalizzazioni
Entità padre Entità figlie Tipo Ordine Confermato – Spedito – Pagato – Contabilizzato - Annullato Generalizzazione totale e esclusiva Spedizione Corriere – Corriere espresso Pagamento Contrassegno – Carta di credito - PayPal La gerarchia “Ordine” – “Stati ordine” viene risolta mantenendo l’entità 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 dall’avanzamento dell’ordine 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 dell’ordine. Progettazione logica

38 Eliminazione delle generalizzazioni
La gerarchia “Spedizione” – “Corriere” – “Corriere espresso” viene risolta mantenendo l’entità 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 l’entità 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
L’entità “Cliente” viene partizionata in due entità: “Cliente” e “Dati anagrafici” in modo da separare gli attributi che vengono acceduti separatamente; infatti nell’entità 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
L’entità “Prodotto” viene partizionata in due entità: “Prodotto” e “Dati ausiliari prodotto” in modo da separare gli attributi che vengono acceduti separatamente; infatti nell’entità “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
Eliminazione degli attributi multivalore Concetto Attributo Soluzione adottata Cliente (entità) Telefono L’entità “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), l’attributo viene diviso in due attributi semplici (“telefono1” e “telefono2”) che vengono accorpati all’entità “cliente”; nel caso fosse necessario memorizzare più numeri di telefono, la ristrutturazione dell’attributo passa attraverso la definizione di un’ulteriore entità e di una relazione uno a molti Prodotto Immagine galleria prodotto L’entità “prodotto” può avere nessuna, una o più immagini per la galleria; poichè le immagini saranno in media una decina per ogni prodotto e l’accesso a queste avverrà in maniera contestuale per ogni prodotto si è optato per creare un’entità “galleria immagini” in relazione uno a molti con l’entità “prodotto” con chiave esterna l’ID del prodotto, chiave primaria un’ID univoco “IDImmagineGalleria” e un attributo “Immagine galleria”. In questo modo più prodotti potranno anche utilizzare la stessa immagine per una galleria Eliminazione degli attributi composti Concetto Attributo Soluzione adottata Cliente (entità) Indirizzo di fatturazione L’indirizzo di fatturazione del cliente viene suddiviso nei seguenti attributi che vengono accorpati all’entità stessa: Rubrica indirizzi Indirizzo di spedizione L’indirizzo di spedizione del cliente viene suddiviso nei seguenti attributi che vengono accorpati all’entità stessa: Nome Cognome Indirizzo Città CAP Provincia Nome Cognome Indirizzo Città CAP Provincia Progettazione logica

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 Identifichiamo le tabelle non volatili nelle quali potremo valutare di inserire 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

51 Scelta degli indici Escludiamo le tabelle con poche occorrenze
Tabelle non volatili Occorrenze Candidata per indici Catalogo 5 NO Categoria 15 Dati ausiliari prodotto 100 SI Evidenza 20 Galleria immagini 5000 Magazzino 2 Metodo pagamento 3 Metodo spedizione Prodotto 500 Tipo categoria Vetrina Escludiamo le tabelle con poche occorrenze in quanto può essere più efficiente memorizzare la relazione in memoria che memorizzare un indice addizionale Progettazione fisica

52 Scelta degli indici Gli indici portano dei benefici nelle performance per relazioni che contano molti accessi in lettura Tabelle non volatili Accessi in lettura (Interrogazioni) Frequenza Dati ausiliari prodotto Restituire il costo di ogni prodotto 1 al giorno Restituire il peso di ogni prodotto 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 Escludiamo anche la tabella “Dati ausiliari prodotto” in quanto conta due soli accesso in lettura al giorno Progettazione fisica

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

54 Scelta degli indici Valutiamo l’inserimento degli indici nei campi candidati Campo Tipo dati Dimensione 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 Prezzo Prodotto Currency 4 byte 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 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 Inseriremo quindi degli indici sui campi “Nome Prodotto” e “Descrizione Breve Prodotto” NF: Numero di blocchi per il file ND: Numero di blocchi per un indice denso Progettazione fisica

55 Scelta degli indici Valutiamo l’inserimento degli indici nei campi candidati Nel caso della tabella “Galleria immagini” valutiamo l’attributo “Immagine Galleria” di tipo Text(255) di 255 byte L numero di record nel file 5.000 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 Inseriremo quindi anche in questo caso un indice sul campo “Immagine Galleria” NF: Numero di blocchi per il file ND: Numero di blocchi per un indice denso Progettazione fisica

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à”. Normalizzazione

57 Schema finale Progettazione fisica


Scaricare ppt "Progetto di base di dati per un sito di ecommerce"

Presentazioni simili


Annunci Google