+ All Categories
Home > Documents > Progetto di base di dati per un sito di ecommerce

Progetto di base di dati per un sito di ecommerce

Date post: 19-Jan-2016
Category:
Upload: lovie
View: 67 times
Download: 1 times
Share this document with a friend
Description:
Progetto di base di dati per un sito di ecommerce. Paolo Oltramonti. 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à. - PowerPoint PPT Presentation
57
Progetto di base di dati per un sito di ecommerce Paolo Oltramonti
Transcript
Page 1: Progetto di base di dati  per un  sito di ecommerce

Progetto di base di dati per un sito di ecommerce

Paolo Oltramonti

Page 2: Progetto di base di dati  per un  sito di ecommerce

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:1. Mostrare i prodotti al cliente2. Permettere al cliente di navigare il catalogo nel quale sono organizzati i prodotti3. 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 evidenza2. Accedere alle categorie di prodotti3. Accedere allle schede di dettaglio dei prodotti4. Inserire i prodotti desiderati nel carrello5. Mostrare il resoconto dei prodotti nel carrello con i prezzi ed il totale in evidenza6. Selezionare il tipo di spedizione ed il metodo di pagamento7. 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 email 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

Page 3: Progetto di base di dati  per un  sito di ecommerce

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

Page 4: Progetto di base di dati  per un  sito di ecommerce

Glossario dei termini

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 Categoria nella quale sono organizzati prodotti dello stesso tipo Prodotto, Catalogo

Ordine 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

Ordine

Spedizione Spedizione della merce acquistata. Può essere fatto in 2 modi:

Corriere standard o corriere espresso

Ordine

Magazzino Magazzino nel quale saranno dispinibili i prodotti venduti Prodotto

Requisiti

Page 5: Progetto di base di dati  per un  sito di ecommerce

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• 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

Page 6: Progetto di base di dati  per un  sito di ecommerce

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 email 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• 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 dell’ordine. • 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 dell’ordine.• 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

Page 7: Progetto di base di dati  per un  sito di ecommerce

Cliente Ordine ProdottoAcquisto Composizione

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 finalePer 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

Page 8: Progetto di base di dati  per un  sito di ecommerce

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

Cliente Indirizzi Rubrica indirizzi

Progettazione concettuale

Page 9: Progetto di base di dati  per un  sito di ecommerce

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

Prodotto Locazione Magazzino

Progettazione concettuale

Page 10: Progetto di base di dati  per un  sito di ecommerce

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

Prodotto Evidenza

Tipo Categoria

Tipo prodotto

Vetrina

Categoria

Catalogo

Progettazione concettuale

Page 11: Progetto di base di dati  per un  sito di ecommerce

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.

Ordine

Pagato ContabilizzatoConfermato Spedito Annullato

Progettazione concettuale

Page 12: Progetto di base di dati  per un  sito di ecommerce

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

Ordine

Consegna Fatturazione

Spedizione Pagamento

Progettazione concettuale

Page 13: Progetto di base di dati  per un  sito di ecommerce

Approfondimento delle entità “spedizione” e “pagamento”

Spedizione

CorriereCorriere espresso

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.

Pagamento

ContrassegnoContrassegno PaypalCarta di creditoCarta di credito

Progettazione concettuale

Page 14: Progetto di base di dati  per un  sito di ecommerce

Schema E-R finale

Composizione

AcquistoSpedizione

CorriereCorriere espresso

Cliente

Ordine

Prodotto

Pagamento

ContrassegnoContrassegno PaypalCarta di creditoCarta di credito

Consegna

Fatturazione

IndirizziRubrica indirizzi

Locazione Magazzino

Evidenza Vetrina

Tipo Categoria

Tipo prodottoCategoriaCatalogo

Pagato

ContabilizzatoConfermato Spedito

Annullato

Progettazione concettuale

Page 15: Progetto di base di dati  per un  sito di ecommerce

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

email Indirizzo email 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

Page 16: Progetto di base di dati  per un  sito di ecommerce

Analisi delle entità

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

SPEDITO

Nessun attributo

PAGATO

Nessun attributo

CONTABILIZZATO

Nessun attributo

ANNULLATO

Nessun attributo

CONFERMATO

Nessun attributo

Progettazione concettuale

Page 17: Progetto di base di dati  per un  sito di ecommerce

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 dell’entità “Spedizione”

Data di spedizione

E’ la data in cui viene effettivamente spedito l’ordine

CORRIERE ESPRESSO

Spese di spedizione

Sono le spese di spedizione associate al metodo di spedizione corriere espresso

Progettazione concettuale

Page 18: Progetto di base di dati  per un  sito di ecommerce

Analisi delle entità

CONTRASSEGNO

Nessun attributo

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

CARTA DI CREDITO

Nessun attributo

PAYPAL

Nessun attributo

Progettazione concettuale

Page 19: Progetto di base di dati  per un  sito di ecommerce

Analisi delle entità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

Page 20: Progetto di base di dati  per un  sito di ecommerce

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 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

Page 21: Progetto di base di dati  per un  sito di ecommerce

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

Page 22: Progetto di base di dati  per un  sito di ecommerce

Analisi delle relazioni e della cardinalità

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.

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

Progettazione concettuale

Page 23: Progetto di base di dati  per un  sito di ecommerce

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

Page 24: Progetto di base di dati  per un  sito di ecommerce

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

Page 25: Progetto di base di dati  per un  sito di ecommerce

Schema E-R finale con gli attributi

Composizione

AcquistoSpedizione

CorriereCorriere espresso

Cliente

Ordine

Prodotto

Pagamento

ContrassegnoContrassegno PaypalCarta di creditoCarta di credito

Consegna

Fatturazione

IndirizziRubrica indirizzi

Locazione Magazzino

Evidenza VetrinaTipo Categoria

Tipo prodottoCategoriaCatalogo

1-1

0-N

1-1

1-1

0-N

0-N

0-1

1-1

0-1 1-1

0-N 0-N

0-N

0-N0-N0-N

1-N

0-N

IDCliente

Username Password

email Telefono [0:N]

Indirizzo di fatturazione

Indirizzo Città

Provincia

IDIndirizzo

IDOrdine

Data di inserimento

IDSpedizione Data spedizione

Importo pagamento Data pagamento IDpagamento

IDMagazzino

IDVetrina IDCategoria

Icona Categoria

Descrizione categoria

Nome categoria

IDCatalogo

Descrizione catalogo

Nome catalogo Testo in evidenza

Immagine in evidenza

Disponibilità

IDProdotto Nome prodotto

Costo prodotto

Prezzo prodotto

Immagine galleria prodotto [0:N]

Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto

Peso prodotto

Pagato

ContabilizzatoConfermato Spedito

Annullato

Quantità

Spese di spedizione Spese di spedizione

Nome vetrina

Nome magazzino

CAP

Cognome Nome

Indirizzo di spedizione

Indirizzo Città Provincia CAP

Cognome Nome

Alias indirizzo Attivo

Progettazione concettuale

Page 26: Progetto di base di dati  per un  sito di ecommerce

Analisi delle prestazioni sullo schema E-R

Concetto Tipo Volume

Cliente E 10000

Rubrica indirizzi E 15000

Ordine E 31000

Confermato E 1000

Spedito E 1000

Pagato E 1000

Contabilizzato E 28000

Annullato E 20

Spedizione E 30000

Corriere E 20000

Corriere espresso E 10000

Pagamento E 29000

Contrassegno E 14000

Carta di credito E 10000

PayPal E 5000

Prodotto E 500

Magazzino E 2

Vetrina E 2

Categoria E 15

Catalogo E 5

Concetto Tipo Volume

Indirizzi R 15000

Acquisto R 31000

Consegna R 30000

Fatturazione R 29000

Composizione R 60000

Locazione R 600

Evidenza R 20

Tipo prodotto R 500

Tipo categoria R 20

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

Page 27: Progetto di base di dati  per un  sito di ecommerce

Analisi delle prestazioni sullo schema E-ROperazione Tipo Frequenza

Inserimento dati cliente Interattiva 20 / giorno

Cancellazione dati cliente Interattiva 20 / anno

Aggiornamento dati cliente Interattiva 3 / giorno

Inserimento prodotto Interattiva 2 / mese

Cancellazione prodotto Interattiva 5 / anno

Aggiornamento prodotto Interattiva 2 / mese

Inserimento categoria Interattiva 2 / anno

Cancellazione categoria Interattiva 1 / anno

Aggiornamento categoria Interattiva 2 / anno

Inserimento catalogo Interattiva 2 / anno

Cancellazione catalogo Interattiva 1 / anno

Aggiornamento catalogo Interattiva 2 / anno

Inserimento prodotti in vetrina Interattiva 1 / anno

Cancellazione prodotti in vetrina Interattiva 1 / anno

Aggiornamento prodotti in vetrina Interattiva 4 / settimana

Inserimento magazzino Interattiva 1 / anno

Cancellazione magazzino Interattiva 1 / anno

Aggiornamento magazzino Batch 1 / giorno

Inserimento ordine Interattiva 50 / giorno

Cancellazione ordine Interattiva 5 / mese

Aggiornamento ordine Batch 100 / giorno

Inserimento pagamento Interattiva 50 / 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

Page 28: Progetto di base di dati  per un  sito di ecommerce

Analisi delle prestazioni sullo schema E-ROperazione Tipo Frequenza

Cancellazione pagamento Interattiva 5 / anno

Aggiornamento pagamento Interattiva 1 / mese

Inserimento tipologia pagamento Interattiva 1 / anno

Cancellazione tipologia pagamento Interattiva -

Aggiornamento tipologia pagamento Interattiva -

Inserimento spedizione Interattiva 50 / giorno

Cancellazione spedizione Interattiva 5 /mese

Aggiornamento spedizione Interattiva 5 / mese

Inserimento tipologia spedizione Interattiva 1 / anno

Cancellazione tipologia spedizione Interattiva -

Aggiornamento tipologia spedizione Interattiva -

Dato un cliente restituire tutti gli ordini effettuati Batch 1 / giorno

Restituire tutti gli ordini effettuati e non ancora spediti Batch 1 / giorno

Restituire tutti gli ordini effettuati e non ancora pagati Batch 1 / giorno

Restituire tutti gli ordini effettuati in un determinato intervallo di date Interattiva 5 / giorno

Restituire le informazioni da visualizzare nella scheda di un prodotto Interattiva 1000 / giorno

Restituire tutti i prodotti presenti nella vetrina Interattiva 500 / giorno

Restituire tutti i prodotti presenti in una categoria Interattiva 300 / giorno

Restituire tutte le categorie presenti in un catalogo Interattiva 800 / giorno

Restituire i prodotti associati ad un ordine Interattiva 100 / giorno

Restituire tutti i dati associati ad un cliente Interattiva 10 / giorno

Restituire il fatturato giornaliero/mensile/annuale Batch 1 / giorno

Progettazione logica* Evidenziate le operazioni più importanti che andremo ad analizzare

Page 29: Progetto di base di dati  per un  sito di ecommerce

Spedizione

CorriereCorriere espresso

Ordine

Consegna

0-1

1-1

IDOrdine

Data di inserimento

IDSpedizione Data spedizione

Pagato

ContabilizzatoConfermato Spedito

Annullato

Spese di spedizione Spese di spedizione

Analisi delle prestazioni sullo schema E-R

Cliente IndirizziRubrica indirizzi

1-10-N

IDCliente

Username Password

email Telefono [0:N]

Indirizzo di fatturazione

Indirizzo Città

Provincia

IDIndirizzo

CAP

Cognome Nome

Indirizzo di spedizione

Indirizzo Città Provincia CAP

Cognome Nome

Alias indirizzo Attivo

Concetto Costrutti Accessi Tipo

Cliente Entità 1 S

Indirizzi Relazione 3 S

Rubrica indirizzi Entità 3 S

Tabella degli accessi

Inserimento dati cliente

Tabella degli accessi

Concetto Costrutti Accessi Tipo

Spedizione Entità 1 S

Corriere Entità 1 S

Consegna Relazione 1 S

Ordine Entità 1 L

Spedito Entità 1 S

Inserimento spedizione

Progettazione logica

Page 30: Progetto di base di dati  per un  sito di ecommerce

Composizione

Acquisto

Cliente

Ordine

Prodotto

1-1

0-N

1-N

0-N

IDCliente

Username Password

email Telefono [0:N]

Indirizzo di fatturazione

Provincia

IDOrdine

Data di inserimento

IDProdotto Nome prodotto

Costo prodotto

Prezzo prodotto

Immagine galleria prodotto [0:N]

Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto

Peso prodotto

Pagato

ContabilizzatoConfermato Spedito

Annullato

Quantità

CAP

Cognome Nome

Analisi delle prestazioni sullo schema E-R

Concetto Costrutti Accessi Tipo

Ordine Entità 1 S

Acquisto Relazione 1 L

Cliente Entità 1 L

Confermato Entità 1 S

Composizione Relazione 3 S

Prodotto Entità 3 L

Tabella degli accessi

Inserimento ordine

Progettazione logica

Page 31: Progetto di base di dati  per un  sito di ecommerce

ProdottoLocazione Magazzino

0-N 0-N

IDMagazzino

Disponibilità

IDProdotto Nome prodotto

Costo prodotto

Prezzo prodotto

Immagine galleria prodotto [0:N]

Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto

Peso prodotto

Nome magazzino

Ordine

IDOrdine

Data di inserimento

Pagato

ContabilizzatoConfermato Spedito

Annullato

Analisi delle prestazioni sullo schema E-R

Concetto Costrutti Accessi Tipo

Ordine Entità 1 L

Contabilizzato Entità 1 S

Tabella degli accessi

Aggiornamento ordine (contabilizzazione)

Tabella degli accessi

Concetto Costrutti Accessi Tipo

Prodotto Entità 1 L

Locazione Relazione 3 L

Magazzino Entità 3 L

Restituire informazioni da visualizzare nella scheda prodotto

Progettazione logica

Page 32: Progetto di base di dati  per un  sito di ecommerce

ComposizioneOrdine Prodotto1-N 0-N

IDOrdine

Data di inserimento IDProdotto Nome prodotto

Costo prodotto

Prezzo prodotto

Immagine galleria prodotto [0:N]

Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto

Peso prodotto

Quantità

ProdottoEvidenza Vetrina

0-N 0-N

IDVetrina

Testo in evidenza

Immagine in evidenza

IDProdotto Nome prodotto

Costo prodotto

Prezzo prodotto

Immagine galleria prodotto [0:N]

Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto

Peso prodotto

Nome vetrina

Analisi delle prestazioni sullo schema E-R

Concetto Costrutti Accessi Tipo

Prodotto Entità 10 L

Evidenza Relazione 10 L

Vetrina Entità 1 L

Tabella degli accessi

Restituire tutti i prodotti presenti in una vetrina

Tabella degli accessi

Concetto Costrutti Accessi Tipo

Ordine Entità 1 L

Composizione Relazione 5 L

Prodotto Entità 5 L

Restituire i prodotti associati ad un ordine

Progettazione logica

Page 33: Progetto di base di dati  per un  sito di ecommerce

Prodotto

Tipo prodottoCategoria

1-1

0-N

IDCategoria

Icona Categoria

Descrizione categoria

Nome categoria

IDProdotto Nome prodotto

Costo prodotto

Prezzo prodotto

Immagine galleria prodotto [0:N]

Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto

Peso prodotto

Analisi delle prestazioni sullo schema E-R

Concetto Costrutti Accessi Tipo

Catalogo Entità 1 L

Tipo Categoria Relazione 10 L

Categoria Entità 10 L

Tabella degli accessi

Restituire tutte le categorie presenti in un catalogo

Tabella degli accessi

Concetto Costrutti Accessi Tipo

Categoria Entità 1 L

Tipo prodotto Relazione 20 L

Prodotto Entità 20 L

Restituire i prodotti associati ad un ordine

Tipo Categoria

CategoriaCatalogo0-N0-N

IDCategoria

Icona Categoria

Descrizione categoria

Nome categoria

IDCatalogo

Descrizione catalogo

Nome catalogo

Progettazione logica

Page 34: Progetto di base di dati  per un  sito di ecommerce

Analisi delle ridondanze

Pagamento Importo pagamento Data pagamento IDpagamento

Concetto Tipo Volume

Ordine E 30000

Composizione R 60000

Prodotto E 100

Pagamento E 30000

Fatturazione R 30000

Consegna R 30000

Spedizione E 30000

Corriere E 20000

Corriere espresso E 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)

Composizione

Ordine

Prodotto0-N

1-N

0-N

IDOrdine

Data di inserimento

IDProdotto Nome prodotto

Costo prodotto

Prezzo prodotto

Immagine galleria prodotto [0:N]

Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto

Peso prodotto

Status ordine

Spedizione Consegna0-11-1IDSpedizione

Data spedizione

CorriereCorriere espresso

Spese di spedizione Spese di spedizione

Quantità

Progettazione logica

Page 35: Progetto di base di dati  per un  sito di ecommerce

Analisi delle ridondanze

Concetto Costrutto Accessi Tipo

Pagamento E 1 L

Presenza di ridondanza

Operazione 1

Operazione 2

Concetto Costrutto Accessi Tipo

Ordine E 1 L

Composizione R 2 L

Prodotto E 2 L

Consegna R 1 L

Spedizione E 1 L

Corriere o CE E 1 L

Pagamento E 1 S

Fatturazione R 1 S

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

Page 36: Progetto di base di dati  per un  sito di ecommerce

Analisi delle ridondanze

Concetto Costrutto Accessi Tipo

Ordine E 50 L

Composizione R 100 L

Prodotto E 100 L

Consegna R 50 L

Spedizione E 50 L

Corriere o CE E 50 L

Assenza di ridondanzaOperazione 1

Operazione 2

Costo operazione 1:400 accessi in lettura100 accessi in scrittura

Costo operazione 2: 400 accessi in lettura

Totale accessi (contando doppi gli accessi in scrittura): 1.000 accessi al giorno

Concetto Costrutto Accessi Tipo

Ordine E 1 L

Composizione R 2 L

Prodotto E 2 L

Consegna R 1 L

Spedizione E 1 L

Corriere o CE E 1 L

Pagamento E 1 S

Fatturazione R 1 S

Progettazione logica

Si opta quindi per mantenere la ridondanza presentata nello schema E-R

Page 37: Progetto di base di dati  per un  sito di ecommerce

Eliminazione delle generalizzazioni

Entità padre Entità figlie Tipo

Ordine Confermato – Spedito – Pagato – Contabilizzato - Annullato Generalizzazione totale e esclusiva

Spedizione Corriere – Corriere espresso Generalizzazione totale e esclusiva

Pagamento Contrassegno – Carta di credito - PayPal Generalizzazione totale e esclusiva

Ordine

IDOrdine

Data di inserimento

Pagato

ContabilizzatoConfermato Spedito

Annullato

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.

Ordine

IDOrdine

Data di inserimento

Status ordine

IDStatusOrdine Status ordine

Avanzamento1-1 0-N

Progettazione logica

Page 38: Progetto di base di dati  per un  sito di ecommerce

Eliminazione delle generalizzazioni

Spedizione

CorriereCorriere espresso

IDSpedizione Data spedizione

Spese di spedizione Spese di spedizione

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.

Spedizione

IDSpedizione

Data spedizione

Tipo spedizione1-10-N

Metodo spedizione

IDMetodoSpedizione

Descrizione metodo spedizione Spese di spedizione

Progettazione logica

Page 39: Progetto di base di dati  per un  sito di ecommerce

Eliminazione delle generalizzazioni

Pagamento

ContrassegnoContrassegno PaypalCarta di creditoCarta di credito

Importo pagamento Data pagamento IDpagamento

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.

Tipo pagamento1-10-N

Metodo pagamento

IDMetodoPagamento

Descrizione metodo pagamento

Pagamento

Importo pagamento

Data pagamento IDpagamento

Progettazione logica

Page 40: Progetto di base di dati  per un  sito di ecommerce

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.

Cliente0-1

IDCliente

email Username

Password

Telefono1 Telefono2

AnagraficaDati

anagrafici

IDCliente

1-1

Nome

Indirizzo di fatturazione

Indirizzo Città CAP

Provincia

Cognome

Cliente

IDCliente

Nome

Username Password

email Telefono [0:N]

Indirizzo di fatturazione

Indirizzo Città CAP

Provincia

Cognome

Progettazione logica

Page 41: Progetto di base di dati  per un  sito di ecommerce

Partizionamento/accorpamento di concetti

Prodotto

IDProdotto Nome prodotto

Costo prodotto

Prezzo prodotto

Immagine galleria prodotto [0:N]

Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto

Peso prodotto

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.

Prodotto

IDProdotto Nome prodotto

Costo prodotto

Prezzo prodotto

Immagine galleria prodotto [0:N]

Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto

Peso prodotto 1-1Anagrafica

prodotto

1-1Dati ausiliari

prodotto

IDProdotto

Progettazione logica

Page 42: Progetto di base di dati  per un  sito di ecommerce

Partizionamento/accorpamento di concetti

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

(entità)

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 multivalore

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

(entità)

Indirizzo di spedizione

L’indirizzo di spedizione del cliente viene suddiviso nei seguenti attributi che vengono accorpati all’entità stessa:

Eliminazione degli attributi composti

Progettazione logica

• Nome• Cognome• Indirizzo

• Città• CAP• Provincia

• Nome• Cognome• Indirizzo

• Città• CAP• Provincia

Page 43: Progetto di base di dati  per un  sito di ecommerce

Scelta degli identificatori principali

Composizione

Ordine

Prodotto

1-N

0-N

IDOrdine

Data di inserimento

IDProdotto Nome prodotto

Prezzo prodotto Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto

Quantità

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

Tipo Categoria

CategoriaCatalogo0-N0-N

IDCategoria

Icona Categoria

Descrizione categoria Nome categoria

IDCatalogo

Descrizione catalogo Nome catalogo

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

Page 44: Progetto di base di dati  per un  sito di ecommerce

Scelta degli identificatori principali

ProdottoEvidenzaVetrina0-N0-N

0-NIDVetrina

Testo in evidenza

Immagine in evidenza

IDProdotto Nome prodotto

Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto

Prezzo prodotto

Nome vetrina

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

Locazione Magazzino0-N 0-N

IDMagazzino Disponibilità IDProdotto

Nome prodotto

Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto

Prezzo 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

Page 45: Progetto di base di dati  per un  sito di ecommerce

Scelta degli identificatori principali

ProdottoTipo prodottoCategoria1-10-N

IDCategoria

Icona Categoria

Descrizione categoria Nome categoria

IDProdotto Nome prodotto

Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto

Prezzo prodotto

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 inProdotto 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 inGalleria immagini e la chiave di Prodotto• IDProdotto in Galleria immagini non ammette valore nullo in quanto la cardinalità minima della relationship è 1

Prodotto

IDProdotto Nome prodotto

Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto

GalleriaGalleria

immagini

1-1 0-NIDImmagineGalleria Immagine galleria

Prezzo prodotto

Progettazione logica

Page 46: Progetto di base di dati  per un  sito di ecommerce

Scelta degli identificatori principali

Acquisto

Cliente

Ordine

1-1

0-N

IDOrdine

Data di inserimento

Nome Username

Password

IDCliente

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 inRubrica 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 inOrdine e la chiave di Cliente• IDCliente in Ordine non ammette valore nullo in quanto la cardinalità minima della relationship è 1

Cliente IndirizziRubrica indirizzi

1-10-NIndirizzo Città

CAP

IDIndirizzo IDCliente

email Username

Password Nome

Cognome

Alias indirizzo

Provincia

Attivo

Progettazione logica

Page 47: Progetto di base di dati  per un  sito di ecommerce

Scelta degli identificatori principali

Ordine

IDOrdine

Data di inserimento

Status ordine

IDStatusOrdine Status ordine

Avanzamento1-10-N

Spedizione

IDSpedizione

Data spedizione

Tipo spedizione1-10-N

Metodo spedizione

IDMetodoSpedizione

Descrizione metodo spedizione Spese di spedizione

Entità e Relationship uno a molti

Ordine (IDOrdine, Data di inserimento, IDStatusOrdine)Status ordine (IDStatusOrdine, Status ordine)

• con vincolo di integrità referenziale fra IDStatusOrdine inOrdine 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 inSpedizione e la chiave di Metodo spedizione• IDMetodoSpedizione in Spedizione non ammette valore nullo in quanto la cardinalità minima della relationship è 1

Tipo pagamento1-10-N

Metodo pagamento

IDMetodoPagamento

Descrizione metodo pagamento

Pagamento

Importo pagamento

Data pagamento IDpagamento Pagamento (IDPagamento, Data pagamento, Importo pagamento,

IDMetodoPagamento)Metodo pagamento (IDMetodoPagamento, Desc metodo pagamento)

• con vincolo di integrità referenziale fra IDMetodoPagamento inPagamento e la chiave di Metodo pagamento• IDMetodoPagamento in Pagamento non ammette valore nullo in quanto la cardinalità minima della relationship è 1

Progettazione logica

Page 48: Progetto di base di dati  per un  sito di ecommerce

Scelta degli identificatori principali

Spedizione OrdineConsegna0-11-1

IDOrdine

Data di inserimento

IDSpedizione Data spedizione

Ordine PagamentoFatturazione0-1 1-1

IDOrdine

Data di inserimento

Importo pagamento Data pagamento IDpagamento

Prodotto

IDProdotto Nome prodotto

Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto Costo prodotto

Peso prodotto

1-1Anagrafica prodotto

1-1 Dati ausiliari prodotto

IDProdotto

Prezzo prodotto

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, email, 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

Cliente0-1

Nome

Telefono1

Indirizzo Città

CAP

Telefono2

AnagraficaDati

anagrafici

IDCliente

1-1

IDCliente

email Username

Password Cognome

Provincia

Progettazione logica

Page 49: Progetto di base di dati  per un  sito di ecommerce

Schema E-R ristrutturato

Composizione

Acquisto

Spedizione

Cliente

Ordine

Prodotto

PagamentoConsegna Fatturazione

IndirizziRubrica indirizzi

Locazione Magazzino

EvidenzaVetrina

Tipo Categoria

Tipo prodottoCategoriaCatalogo1-10-N

1-1

1-1

0-N

0-N

0-11-1 0-1 1-1

0-N 0-N

0-N0-N

0-N0-N

1-N

0-N

IDOrdine

Data di inserimento

IDSpedizione Data spedizione

Importo pagamento Data pagamento IDpagamento

IDMagazzino

IDVetrina

IDCategoria

Icona Categoria

Descrizione categoria Nome categoria

IDCatalogo

Descrizione catalogo Nome catalogo

Testo in evidenza

Immagine in evidenza

Disponibilità IDProdotto Nome prodotto

Immagine full prodotto

Immagine thumb prodotto

Descrizione dettagliata prodotto

Descrizione breve prodotto

Tipo spedizione

1-1

0-N

Metodo spedizione

IDMetodoSped

Desc metodo sped

Tipo pagamento

1-1

0-N

Metodo pagamento Desc metodo pagamento

IDMetodoPagamento

0-1Anagrafica

Dati anagrafici

1-1

IDCliente

email Username

Password

GalleriaGalleria

immagini

1-1 0-NIDImmagineGalleria Immagine galleria

Costo prodotto

Peso prodotto

1-1Anagrafica prodotto

1-1 Dati ausiliari prodotto

IDProdotto

Status ordine

IDStatusOrdine Status ordine

Avanzamento1-10-N

Spese spedizione

Prezzo prodotto

Nome vetrina

Quantità

Nome magazzino

Nome IDCliente

Cognome

Telefono1

Indirizzo Città

CAP

Telefono2

Provincia

IDIndirizzo

Nome Cognome

Alias indirizzo

Indirizzo Città

CAP Provincia

Attivo

Progettazione logica

Page 50: Progetto di base di dati  per un  sito di ecommerce

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

Page 51: Progetto di base di dati  per un  sito di ecommerce

Scelta degli indici

Tabelle non volatili Occorrenze Candidata per indici

Catalogo 5 NO

Categoria 15 NO

Dati ausiliari prodotto 100 SI

Evidenza 20 NO

Galleria immagini 5000 SI

Magazzino 2 NO

Metodo pagamento 3 NO

Metodo spedizione 2 NO

Prodotto 500 SI

Tipo categoria 20 NO

Vetrina 2 NO

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

Page 52: Progetto di base di dati  per un  sito di ecommerce

Scelta degli indici

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 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

Page 53: Progetto di base di dati  per un  sito di ecommerce

Scelta degli indici

Campo (a) (b) (c) (d)

Nome Prodotto X X X X

Descrizione Breve Prodotto X X X

Descrizione Dettagliata Prodotto X

Immagine Thumb Prodotto X X

Immagine Full Prodotto X

Prezzo Prodotto X X

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”: 1.000 + 500 + 300 + 100 = 1.900

Accessi giornalieri “Descrizione Breve Prodotto”: 1.000 + 500 + 100 = 1.600

Page 54: Progetto di base di dati  per un  sito di ecommerce

Scelta degli indici

Inseriremo quindi degli indici sui campi “Nome Prodotto” e “Descrizione Breve Prodotto”

Progettazione fisica

Valutiamo l’inserimento degli indici nei campi candidati

L numero di record nel file 500B dimensione dei blocchi 4KBR lunghezza dei record (fissa per semplicità) ~6KBK lunghezza del campo chiave 50B – 100BP lunghezza degli indirizzi (ai blocchi) 4B

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 Text (255) 255 byte

Prezzo Prodotto Currency 4 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 fileND: Numero di blocchi per un indice denso

Page 55: Progetto di base di dati  per un  sito di ecommerce

Scelta degli indici

Inseriremo quindi anche in questo caso un indice sul campo “Immagine Galleria”

Progettazione fisica

Valutiamo l’inserimento degli indici nei campi candidati

L numero di record nel file 5.000B dimensione dei blocchi 4KBR lunghezza dei record (fissa per semplicità) 287BK lunghezza del campo chiave 255BP 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 fileND: Numero di blocchi per un indice denso

Nel caso della tabella “Galleria immagini” valutiamo l’attributo “Immagine Galleria” di tipo Text(255) di 255 byte

Page 56: Progetto di base di dati  per un  sito di ecommerce

Normalizzazione

CittaIDCitta

Nome citta

Dati anagrafici

Nome IDCliente

Cognome

Telefono1

Indirizzo Telefono2

CAP

IDCAP CAP

Provincia

IDProvincia Provincia

Anagrafica

1-1

Anagrafica

1-N

Anagrafica

Rubrica indirizzi

IDIndirizzo

Nome Cognome

Alias indirizzo

Indirizzo

Anagrafica

1-1

1-N

1-1

1-1

0-N

0-N

Normalizzazione

Le tabelle “Rubrica Indirizzi” e “Dati anagrafici” non sono in seconda forma normalePer 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à”.

Dati anagrafici

Nome IDCliente

Cognome

Telefono1

Indirizzo Città

CAP

Telefono2

Provincia

Rubrica indirizzi

IDIndirizzo

Nome Cognome

Alias indirizzo

Indirizzo Città

CAP Provincia

Page 57: Progetto di base di dati  per un  sito di ecommerce

Schema finale

Progettazione fisica

TBL_STATUS_ORDINE

PK,I1 IDStatusOrdine

Status_Ordine

TBL_PAGAMENTO

PK,I1 IDPagamento

Data_Pagamento Importo_PagamentoFK1,I2 IDMetodoPagamentoFK2,U2,U1 IDOrdine

TBL_DATI_AUSILIARI_PRODOTTO

PK,FK1,I1 IDProdotto

Peso_Prodotto Costo_Prodotto

TBL_CAP

PK IDCAP

CAPFK1,I1 IDProvincia

TBL_TIPO_CATEGORIA

PK,FK1,I1,I3 IDCatalogoPK,FK2,I4,I2 IDCategoria

TBL_CATALOGO

PK,I1 IDCatalogo

Nome_Catalogo Descrizione_Catalogo

TBL_VETRINA

PK,I1 IDVetrina

Nome_Vetrina

TBL_PRODOTTO

PK,I3 ID_Prodotto

I4 Nome_ProdottoI1 Descrizione_Breve_Prodotto Descrizione_Dettagliata_Prodotto Immagine_Thumb_Prodotto Immagine_Full_Prodotto Prezzo_ProdottoFK1,I5,I2 IDCategoria

TBL_EVIDENZA

PK,FK1,I3,I1 IDProdottoPK,FK2,I4,I2 IDVetrina

Testo_In_Evidenza Immagine_In_Evidenza

TBL_CATEGORIA

PK,I1 IDCategoria

Icona_Categoria Nome_Categoria Descrizione_Categoria

TBL_GALLERIA_IMMAGINI

PK,I1 IDImmagineGalleria

I3 Immagine_GalleriaFK1,I4,I2 IDProdotto

TBL_CITTA

PK IDCitta

Nome_CittaFK1,I1 IDCAP

TBL_PROVINCIA

PK IDProvincia

Provincia

TBL_LOCAZIONE

PK,FK2,I4,I2 IDProdottoPK,FK1,I1,I3 IDMagazzino

Disponibilita

TBL_CLIENTE

PK,I1 IDCliente

emailU1 Username Password

TBL_RUBRICA_INDIRIZZI

PK,I1 IDIndirizzo

Alias Nome Cognome IndirizzoFK1,I4,I3 IDCitta AttivoFK2,I5,I2 IDCliente

TBL_MAGAZZINO

PK,I1 ID_Magazzino

Nome_Magazzino

TBL_METODO_PAGAMENTO

PK,I1 IDMetodoPagamento

Descrizione_Metodo_PagamentoTBL_METODO_SPEDIZIONE

PK,I1 IDMetodoSpedizione

Descrizione_Metodo_Spedizione Spese_Spedizione

TBL_COMPOSIZIONE

PK,FK1,I1,I3 IDOrdinePK,FK2,I4,I2 IDProdotto

Quantita

TBL_ORDINE

PK,I2 ID_Ordine

Data_InserimentoFK1,I4,I1 IDClienteFK2,I5,I3 IDStatusOrdine

TBL_DATI_ANAGRAFICI

PK,FK2,I1 IDCliente

Nome Cognome IndirizzoFK1,I2,I3 IDCitta Telefono1 Telefono2

TBL_SPEDIZIONE

PK,I1 IDSpedizione

Data_SpedizioneFK1,I3,I2 IDMetodoSpedizioneFK2,U2,U1 IDOrdine


Recommended