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