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.
2.
3.
•
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:
1.
2.
3.
4.
5.
6.
7.
Atterrare in una Home Page dove saranno presentati i prodotti che si vogliono mettere in evidenza
Accedere alle categorie di prodotti
Accedere allle schede di dettaglio dei prodotti
Inserire i prodotti desiderati nel carrello
Mostrare il resoconto dei prodotti nel carrello con i prezzi ed il totale in evidenza
Selezionare il tipo di spedizione ed il metodo di pagamento
Sottomettere l’ordine
•
I prodotti saranno organizzati in categorie.
Ogni categoria avrà un nome, un’icona ed una descrizione. Le categorie saranno organizzate in cataloghi in modo da poter avere diverse versioni
del sito riservate a determinate tipologie di clienti. Per identificare un catalogo sarà sufficiente avere un nome ed una descrizione.
•
Ogni prodotto sarà identificato da un codice e avrà un nome, una descrizione breve, una descrizione dettagliata, un immagine per la pagina di
categoria, un’immagine per la scheda di dettaglio, una galleria d’immagini opzionale, un prezzo, un peso ed un costo.
•
Ogni prodotto potrà essere fisicamente disponibile in uno o più magazzini.
•
Ogni cliente dovrà essere identificato da uno username, una password, un indirizzo 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
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
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
Vetrina
Collegamenti
Prodotti
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:
–
–
–
•
Il flusso standard sarà relativamente semplice:
–
–
–
–
–
•
•
•
•
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)
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
Diagramma E-R
Per realizzare lo schema viene utilizzata una strategia di tipo misto; si parte da
uno schema embrionale, espandendolo a macchia d’olio fino allo schema finale
Cliente
Acquisto
Ordine
Le entità principali:
Le relazioni principali:
• Cliente
• Acquisto
• Ordine
• Composizione
Composizione
• Prodotto
Progettazione concettuale
Prodotto
Approfondimento dell’entità “cliente”
Cliente
Indirizzi
Rubrica indirizzi
Ogni cliente oltre al proprio indirizzo principale può memorizzare una rubrica di indirizzi di
spedizione utili all’evasione dei suoi ordini.
Si definisce quindi la nuova entità “Rubrica indirizzi”: Una rubrica di indirizzi di spedizione è
associata ad ogni cliente. Il cliente sceglierà l’indirizzo di spedizione al quale spedire
l’ordine dalla rubrica degli indirizzi
Progettazione concettuale
Approfondimento dell’entità “prodotto”
Prodotto
Locazione
Magazzino
Ogni prodotto risiederà fisicamente in uno o più magazzini in modo da gestire la disponibilità
dei prodotti a sistema.
Viene quindi definita l’entità “Magazzino”: Un magazzino sarà identificato e avrà al suo
interno dei prodotti che contribuiranno a garantire la disponibilità di essi nel sito
Progettazione concettuale
Approfondimento dell’entità “prodotto”
Prodotto
Tipo prodotto
Categoria
Tipo Categoria
Evidenza
Vetrina
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
Catalogo
Progettazione concettuale
Approfondimento dell’entità “ordine”
Ordine
Confermato
Pagato
Spedito
Contabilizzato
Annullato
Lo stato di un ordine può essere confermato (ordine inserito da parte del cliente),
spedito (ordine spedito al cliente), pagato (ordine pagato da parte del cliente),
contabilizzato (ordine confermato, pagato e consegnato al cliente – ordine concluso) o
annullato (ordine annullato da parte del cliente o del negozio)
La generalizzazione è totale ed esclusiva.
Progettazione concettuale
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à:
Ordine
Consegna
Spedizione
Fatturazione
Pagamento
Pagamento: Perchè un ordine sia
accettato dal sistema ed evaso, deve
essere stato autorizzato il pagamento da
parte del cliente.
Spedizione: Un ordine deve essere
spedito al cliente che ha effettuato l’ordine
all’indirizzo indicato dal cliente
Progettazione concettuale
Approfondimento delle entità “spedizione” e “pagamento”
Spedizione
La spedizione di un ordine può essere
effettuata con corriere o con corriere
espresso.
Corriere
espresso
Corriere
La generalizzazione è totale ed esclusiva.
Pagamento
Un ordine può essere pagato con
contrassegno, carta di credito o PayPal.
Contrassegno
Carta di
credito
Paypal
Anche in questo caso la generalizzazione
è totale ed esclusiva.
Progettazione concettuale
Schema E-R finale
Cliente
Consegna
Spedizione
Corriere
Acquisto
Corriere
espresso
Ordine
Confermato
Pagato
Rubrica
indirizzi
Indirizzi
Fatturazione
Contrassegno
Contabilizzato
Spedito
Annullato
Pagamento
Carta di
credito
Paypal
Composizione
Locazione
Magazzino
Evidenza
Vetrina
Prodotto
Catalogo
Tipo
Categoria
Categoria
Tipo prodotto
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
CONFERMATO
Nessun attributo
SPEDITO
Nessun attributo
PAGATO
Nessun attributo
CONTABILIZZATO
Nessun attributo
ANNULLATO
Nessun attributo
Progettazione concettuale
Analisi delle entità
SPEDIZIONE
IDSpedizione
È il codice univoco che identifica la spedizione; Sarà riportato nel documento di spedizione; è
candidato ad essere chiave primaria dell’entità “Spedizione”
Data di
spedizione
E’ la data in cui viene effettivamente spedito l’ordine
CORRIERE
Spese di
spedizione
Sono le spese di spedizione associate al metodo di spedizione corriere
CORRIERE ESPRESSO
Spese di
spedizione
Sono le spese di spedizione associate al metodo di spedizione corriere espresso
Progettazione concettuale
Analisi delle entità
PAGAMENTO
IDPagamento
È il codice univoco associato al pagamento; è candidato ad essere chiave primaria dell’entità
“Pagamento”
Data di
pagamento
E’ la data in cui viene effettivamente effettuata la transazione
Importo
pagamento
E’ l’importo del pagamento
CONTRASSEGNO
Nessun attributo
CARTA DI CREDITO
Nessun attributo
PAYPAL
Nessun attributo
Progettazione concettuale
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à
COMPOSIZIONE
Collega l’entità “ordine” con l’entità “prodotto”; rappresenta la presenza di determinati prodotti all’interno di un ordine
Cardinalità
Molti a molti; ogni ordine può comprendere uno o più prodotti e ogni prodotto può essere inserito in
più ordini; la partecipazione dell’entità “ordine” alla relazione è obbligatoria in quanto ogni ordine deve
contenere almeno un prodotto, mentre la partecipazione dell’entità “prodotto” alla relazione è
facoltativa in quanto vi possono essere dei prodotti che non sono associati ad alcun ordine
Quantità
E’ la quantità di un prodotto associata ad un determinato ordine
CONSEGNA
Collega l’entità “ordine” con l’entità “spedizione”; definisce la spedizione fisica dell’ordine
Cardinalità
Uno a uno; ogni ordine può essere spedito una e una sola volta e una spedizione può essere
associata soltanto ad un ordine; la partecipazione dell’entità “Spedizione” è obbligatoria in quanto ogni
spedizione deve essere associata ad un ordine, mentre la partecipazione dell’entità “Ordine” è
facoltativa in quanto un ordine può essere stato immesso ma non ancora spedito.
FATTURAZIONE
Collega l’entità “ordine” con l’entità “pagamento”; definisce il pagamento/fatturazione dell’ordine
Cardinalità
Uno a uno; ogni ordine può essere pagato una e una sola volta ed un pagamento può essere
associata soltanto ad un ordine; la partecipazione dell’entità “Pagamento” è obbligatoria in quanto ogni
pagamento deve essere associato ad un ordine, mentre la partecipazione dell’entità “Ordine” è
facoltativa in quanto un ordine può essere stato immesso ma non ancora pagato.
Progettazione concettuale
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
IDCliente
Username
Password
email
Telefono [0:N]
IDSpedizione
Data spedizione
Nome
Cognome
Indirizzo
Città
Provincia
CAP
1-1
IDIndirizzo
Alias indirizzo
Attivo
Rubrica
indirizzi
Indirizzi
Nome
Cognome
Indirizzo
Città
Provincia
CAP
0-N
Indirizzo di
fatturazione
Consegna
Spedizione
1-1
0-N
Cliente
Indirizzo di
spedizione
Acquisto
IDOrdine
0-1
Data di inserimento
1-1
0-1
Corriere
Corriere
espresso
Spese di spedizione
Spese di spedizione
Ordine
IDpagamento
Data pagamento
Importo pagamento
1-1
Fatturazione
Pagamento
1-N
Confermato
Spedito
Carta di
credito
Contrassegno
Contabilizzato
Paypal
IDMagazzino
Quantità
Nome magazzino
Pagato
Composizione
Annullato
0-N
0-N
Locazione
Magazzino
IDProdotto
Nome prodotto
0-N
Disponibilità
IDCatalogo
IDCategoria
1-1
0-N
Catalogo
Tipo
Categoria
0-N
Categoria
Nome catalogo
Descrizione categoria
Icona Categoria
Tipo prodotto
Nome vetrina
0-N
0-N
Nome categoria
Descrizione catalogo
Prodotto
IDVetrina
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
Immagine galleria prodotto [0:N]
Prezzo prodotto
Costo prodotto
Peso prodotto
Evidenza
0-N
Immagine in evidenza
Testo in evidenza
Progettazione concettuale
Vetrina
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
Annullato
Concetto
Tipo
Volume
Indirizzi
R
15000
Acquisto
R
31000
Consegna
R
30000
Fatturazione
R
29000
Composizione
R
60000
28000
Locazione
R
600
E
20
Evidenza
R
20
Spedizione
E
30000
Tipo prodotto
R
500
Corriere
E
20000
Tipo categoria
R
20
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
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-R
Operazione
Tipo
Frequenza
Inserimento dati cliente
Interattiva
20 / giorno
Cancellazione dati cliente
Interattiva
20 / anno
Aggiornamento dati cliente
Interattiva
3 / giorno
Interattiva
2 / mese
Interattiva
5 / anno
Interattiva
2 / mese
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
Interattiva
50 / giorno
Inserimento prodotto
Tavola delle operazioni
Cancellazione prodotto
Aggiornamento prodotto
Inserimento categoria
Sono riportate le tipologie e la
frequenza delle operazioni
effettuate sulla base di dati.
Inserimento pagamento
* Evidenziate le operazioni più importanti che andremo ad analizzare
Progettazione logica
Analisi delle prestazioni sullo schema E-R
Operazione
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
Batch
1 / giorno
Restituire il fatturato giornaliero/mensile/annuale
* Evidenziate le operazioni più importanti che andremo ad analizzare
Progettazione logica
Analisi delle prestazioni sullo schema E-R
Inserimento dati cliente
Tabella degli accessi
IDCliente
Username
Password
email
Telefono [0:N]
Nome
Cognome
Indirizzo
Città
Provincia
CAP
1-1
0-N
Cliente
Indirizzi
Indirizzo di
fatturazione
IDIndirizzo
Alias indirizzo
Attivo
Rubrica
indirizzi
Indirizzo di
spedizione
Nome
Cognome
Indirizzo
Città
Provincia
CAP
Concetto
Costrutti
Accessi
Tipo
Cliente
Entità
1
S
Indirizzi
Relazione
3
S
Rubrica indirizzi
Entità
3
S
Accessi
Tipo
Inserimento spedizione
IDSpedizione
Data spedizione
1-1
Tabella degli accessi
Consegna
Spedizione
IDOrdine
0-1
Corriere
Corriere
espresso
Spese di spedizione
Spese di spedizione
Data di inserimento
Ordine
Confermato
Pagato
Spedito
Contabilizzato
Annullato
Concetto
Costrutti
Spedizione
Entità
1
S
Corriere
Entità
1
S
Consegna
Relazione
1
S
Ordine
Entità
1
L
Spedito
Entità
1
S
Progettazione logica
Analisi delle prestazioni sullo schema E-R
Inserimento ordine
IDCliente
Username
Password
email
Telefono [0:N]
Nome
Cognome
Tabella degli accessi
Cliente
0-N
Indirizzo di
fatturazione
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
Provincia
CAP
Acquisto
IDOrdine
Data di inserimento
1-1
Ordine
1-N
Confermato
Spedito
Contabilizzato
Quantità
Pagato
Annullato
Composizione
IDProdotto
Nome prodotto
0-N
Prodotto
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
Immagine galleria prodotto [0:N]
Prezzo prodotto
Costo prodotto
Peso prodotto
Progettazione logica
Analisi delle prestazioni sullo schema E-R
Aggiornamento ordine (contabilizzazione)
IDOrdine
Data di inserimento
Ordine
Confermato
Concetto
Costrutti
Accessi
Tipo
Ordine
Entità
1
L
Contabilizzato
Entità
1
S
Contabilizzato
Spedito
Pagato
Tabella degli accessi
Annullato
Restituire informazioni da visualizzare nella scheda prodotto
IDMagazzino
IDProdotto
Nome prodotto
Nome magazzino
0-N
0-N
Locazione
Prodotto
Disponibilità
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
Immagine galleria prodotto [0:N]
Prezzo prodotto
Costo prodotto
Peso prodotto
Magazzino
Tabella degli accessi
Concetto
Costrutti
Accessi
Tipo
Prodotto
Entità
1
L
Locazione
Relazione
3
L
Magazzino
Entità
3
L
Progettazione logica
Analisi delle prestazioni sullo schema E-R
Restituire i prodotti associati ad un ordine
Tabella degli accessi
IDOrdine
IDProdotto
Nome prodotto
Data di inserimento
Quantità
Ordine
1-N
0-N
Composizione
Prodotto
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
Immagine galleria prodotto [0:N]
Prezzo prodotto
Costo prodotto
Peso prodotto
Concetto
Costrutti
Accessi
Tipo
Ordine
Entità
1
L
Composizione
Relazione
5
L
Prodotto
Entità
5
L
Accessi
Tipo
Restituire tutti i prodotti presenti in una vetrina
IDProdotto
Nome prodotto
IDVetrina
Tabella degli accessi
Nome vetrina
Prodotto
0-N
Evidenza
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
Immagine galleria prodotto [0:N]
Prezzo prodotto
Costo prodotto
Peso prodotto
0-N
Immagine in evidenza
Testo in evidenza
Vetrina
Concetto
Costrutti
Prodotto
Entità
10
L
Evidenza
Relazione
10
L
Vetrina
Entità
1
L
Progettazione logica
Analisi delle prestazioni sullo schema E-R
Restituire i prodotti associati ad un ordine
IDProdotto
Nome prodotto
IDCategoria
1-1
Prodotto
0-N
Categoria
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
Immagine galleria prodotto [0:N]
Prezzo prodotto
Costo prodotto
Peso prodotto
Tipo prodotto
Nome categoria
Descrizione categoria
Icona Categoria
Tabella degli accessi
Concetto
Costrutti
Accessi
Tipo
Categoria
Entità
1
L
Tipo prodotto
Relazione
20
L
Prodotto
Entità
20
L
Accessi
Tipo
Restituire tutte le categorie presenti in un catalogo
IDCatalogo
IDCategoria
0-N
Catalogo
Tipo
Categoria
0-N
Categoria
Nome categoria
Nome catalogo
Descrizione catalogo
Tabella degli accessi
Concetto
Costrutti
Catalogo
Entità
1
L
Tipo Categoria
Relazione
10
L
Categoria
Entità
10
L
Descrizione categoria
Icona Categoria
Progettazione logica
Analisi delle ridondanze
IDpagamento
Data pagamento
Importo pagamento
Pagamento
Concetto
Ordine
Tipo
Volume
E
30000
IDOrdine
Composizione
R
60000
Prodotto
E
100
Pagamento
E
Data di inserimento
Status ordine
IDSpedizione
Data spedizione
30000
1-1
Spedizione
0-1
Consegna
Ordine
1-N
Fatturazione
R
30000
Consegna
R
30000
Quantità
Composizione
Corriere
espresso
Corriere
Spedizione
E
30000
Spese di spedizione
Corriere
E
20000
Corriere espresso
E
10000
IDProdotto
Nome prodotto
0-N
Spese di spedizione
Prodotto
• Operazione 1: Inserimento di un pagamento per un ordine (50 volte al giorno)
• Operazione 2: Analisi degli importi di pagamento per reportistica (1 volta al giorno)
Progettazione logica
0-N
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
Immagine galleria prodotto [0:N]
Prezzo prodotto
Costo prodotto
Peso prodotto
Analisi delle ridondanze
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
Concetto
Costrutto
Accessi
Tipo
Pagamento
E
1
L
Costo operazione 1:
100 accessi in scrittura
400 accessi in lettura
Costo operazione 2:
trascurabile
Totale accessi (contando doppi gli accessi in scrittura): 600 accessi al giorno
Progettazione logica
Analisi delle ridondanze
Assenza di ridondanza
Operazione 1 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
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
Operazione 2
Si opta quindi per mantenere la ridondanza
presentata nello schema E-R
Costo operazione 1:
400 accessi in lettura
100 accessi in scrittura
Costo operazione 2:
400 accessi in lettura
Totale accessi (contando
doppi gli accessi in scrittura):
1.000 accessi al giorno
Progettazione logica
Eliminazione delle generalizzazioni
Entità padre
Entità figlie
Tipo
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
IDOrdine
Ordine
Data di inserimento
IDStatusOrdine
Status ordine
1-1
Ordine
Confermato
Pagato
Spedito
0-N
Avanzamento
Status
ordine
Contabilizzato
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.
Progettazione logica
Eliminazione delle generalizzazioni
IDSpedizione
Data spedizione
Spedizione
IDSpedizione
Data spedizione
IDMetodoSpedizione
Descrizione metodo spedizione
Spese di spedizione
Metodo
spedizione
Corriere
Spese di spedizione
1-1
0-N
Tipo spedizione
Spedizione
Corriere
espresso
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.
Progettazione logica
Eliminazione delle generalizzazioni
Pagamento
IDpagamento
Data pagamento
Importo pagamento
Metodo
pagamento
Contrassegno
Carta di
credito
IDpagamento
Data pagamento
Importo pagamento
IDMetodoPagamento
Descrizione metodo pagamento
1-1
0-N
Tipo pagamento
Pagamento
Paypal
La gerarchia “Pagamento” – “Contrassegno” – “Carta di credito” – “PayPal” viene risolta mantenendo l’entità
padre “Pagamento” e accorpando le entità figlie in una nuova entità “Tipologia Pagamento” con un attributo
“Descrizione tipologia pagamento” che descrive il tipo di pagamento che può essere selezionato da un cliente per
effettuare un ordine e un identificatore dello stesso (sarà la chiave primaria della tabella in corrispondenza con la
foreign key della tabella “Pagamento”);
Anche in questo caso si è optato per questa scelta in quanto nel futuro potrebbero essere aggiunti nuovi metodi di
pagamento con possibili ulteriori attributi per descriverne le caratteristiche.
Progettazione logica
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”.
IDCliente
Username
Password
email
Telefono [0:N]
Indirizzo
Città
CAP
Provincia
Cliente
Indirizzo di
fatturazione
Cognome
Nome
Le due entità saranno in relazione 1-1 con
coerenza tra identificatore primario.
IDCliente
email
Username
Password
IDCliente
Telefono1
Telefono2
Indirizzo
Città
CAP
Provincia
Dati
anagrafici
1-1
0-1
Anagrafica
Cliente
Indirizzo di
fatturazione
Cognome
Nome
Progettazione logica
Partizionamento/accorpamento di concetti
IDProdotto
Nome 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”.
Prodotto
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
Immagine galleria prodotto [0:N]
Prezzo prodotto
Costo prodotto
Peso prodotto
IDProdotto
Nome prodotto
1-1
Prodotto
Le due entità saranno in relazione 1-1 con
coerenza tra identificatore primario.
IDProdotto
Anagrafica
prodotto
1-1
Dati ausiliari
prodotto
Costo prodotto
Peso prodotto
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
Immagine galleria prodotto [0:N]
Prezzo prodotto
Progettazione logica
Partizionamento/accorpamento di concetti
Eliminazione degli attributi multivalore
Concetto
Cliente
(entità)
Prodotto
(entità)
Attributo
Soluzione adottata
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
Immagine
galleria prodotto
L’entità “prodotto” può avere nessuna, una o più immagini per la galleria; poichè le immagini saranno in media una
decina per ogni prodotto e l’accesso a queste avverrà in maniera contestuale per ogni prodotto si è optato per
creare un’entità “galleria immagini” in relazione uno a molti con l’entità “prodotto” con chiave esterna l’ID del
prodotto, chiave primaria un’ID univoco “IDImmagineGalleria” e un attributo “Immagine galleria”. In questo modo
più prodotti potranno anche utilizzare la stessa immagine per una galleria
Eliminazione degli attributi composti
Concetto
Attributo
Soluzione adottata
Cliente
(entità)
Indirizzo di
fatturazione
L’indirizzo di fatturazione del cliente viene suddiviso nei seguenti attributi che vengono accorpati all’entità stessa:
Rubrica
indirizzi
(entità)
Indirizzo di
spedizione
L’indirizzo di spedizione del cliente viene suddiviso nei seguenti attributi che vengono accorpati all’entità stessa:
• Nome
• Città
• Cognome
• CAP
• Indirizzo
• Provincia
• Nome
• Cognome
• Indirizzo
• Città
• CAP
• Provincia
Progettazione logica
Scelta degli identificatori principali
IDOrdine
Data di inserimento
Entità e Relationship molti a molti
Ordine
1-N
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)
Quantità
Composizione
IDProdotto
Nome prodotto
0-N
con vincoli di integrità referenziale fra
• IDOrdine in Composizione e la chiave di Ordine
• IDProdotto in Composizione e la chiave di Prodotto
Prodotto
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
Prezzo prodotto
IDCategoria
Icona Categoria
Nome categoria
Descrizione categoria
IDCatalogo
Nome catalogo
Descrizione catalogo
0-N
Catalogo
Tipo
Categoria
Catalogo (IDCatalogo, Nome catalogo, Descrizione catalogo)
Categoria (IDCategoria, Icona categoria, Nome categoria,
Descrizione categpria)
Tipo Categoria (IDCatalogo, IDCategoria)
0-N
Categoria
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
Entità e Relationship molti a molti
IDProdotto
Nome prodotto
IDVetrina
Nome vetrina
Testo in evidenza
0-N
Vetrina
0-N
0-N
Evidenza
Prodotto
Immagine in evidenza
con vincoli di integrità referenziale fra
• IDVetrina in Evidenza e la chiave di Vetrina
• IDProdotto in Evidenza e la chiave di Prodotto
IDMagazzino
IDProdotto
Nome prodotto
0-N
Prezzo prodotto
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
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.)
Disponibilità
Locazione
Prodotto
Prezzo prodotto
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
0-N
Magazzino
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
Entità e Relationship uno a molti
IDCategoria
Icona Categoria
Nome categoria
Descrizione categoria
IDProdotto
Nome prodotto
0-N
Categoria
1-1
Prodotto
Tipo prodotto
Prezzo prodotto
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
IDProdotto
Nome prodotto
IDImmagineGalleria
Immagine galleria
Galleria
immagini
0-N
1-1
Galleria
Prodotto
Prezzo prodotto
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
Prodotto (IDProdotto, Nome prodotto, Descrizione breve prodotto,
Descrizione dett. prodotto, Immagine thumb prodotto,
immagine full prodotto, Prezzo prodotto, IDCategoria)
Categoria (IDCategoria, Icona categoria, Nome categoria,
Descrizione categoria)
• con vincolo di integrità referenziale fra IDCategoria in
Prodotto e la chiave di Prodotto
• IDCategoria in Prodotto non ammette valore nullo in quanto
la cardinalità minima della relationship è 1
Galleria immagini (IDImmagineGalleria, Immagine galleria, IDProdotto)
Prodotto (IDProdotto, Nome prodotto, Descrizione breve prodotto,
Descriz. dett. prodotto, Immagine thumb prodotto,
immagine full prodotto, Prezzo prodotto)
• con vincolo di integrità referenziale fra IDProdotto in
Galleria immagini e la chiave di Prodotto
• IDProdotto in Galleria immagini non ammette valore nullo in quanto
la cardinalità minima della relationship è 1
Progettazione logica
Scelta degli identificatori principali
Entità e Relationship uno a molti
IDCliente
1-1
0-N
Cliente
Rubrica indirizzi (IDIndirizzo, Indirizzo, Città, CAP, IDCliente)
Cliente (IDCliente, Nome, Username, Password)
IDIndirizzo
Alias indirizzo
Nome
Cognome
email
Username
Password
Indirizzi
Rubrica
indirizzi
Indirizzo
Città
Provincia
CAP
Attivo
• con vincolo di integrità referenziale fra IDCliente in
Rubrica indirizzi e la chiave di Cliente
• IDCliente in Rubrica indirizzi non ammette valore nullo in quanto
la cardinalità minima della relationship è 1
IDCliente
Nome
Username
Password
Ordine (IDOrdine, Data di inserimento, IDCliente)
Cliente (IDCliente, Nome, Username, Password)
Cliente
0-N
Acquisto
IDOrdine
Data di inserimento
• con vincolo di integrità referenziale fra IDCliente in
Ordine e la chiave di Cliente
• IDCliente in Ordine non ammette valore nullo in quanto
la cardinalità minima della relationship è 1
1-1
Ordine
Progettazione logica
Scelta degli identificatori principali
Entità e Relationship uno a molti
IDOrdine
Data di inserimento
IDStatusOrdine
Status ordine
Status
ordine
0-N
1-1
Ordine
Avanzamento
IDSpedizione
Data spedizione
IDMetodoSpedizione
Descrizione metodo spedizione
Spese di spedizione
Metodo
spedizione
• con vincolo di integrità referenziale fra IDStatusOrdine in
Ordine e la chiave di Status ordine
• IDStatusOrdine in Ordine non ammette valore nullo in quanto
la cardinalità minima della relationship è 1
Spedizione (IDSpedizione, Data spedizione, IDMetodoSpedizione)
Metodo spedizione (IDMetodoSpedizione, Desc metodo spedizione,
Spese di spedizione)
1-1
0-N
Tipo spedizione
Spedizione
IDpagamento
Data pagamento
Importo pagamento
IDMetodoPagamento
Descrizione metodo pagamento
Metodo
pagamento
Ordine (IDOrdine, Data di inserimento, IDStatusOrdine)
Status ordine (IDStatusOrdine, Status ordine)
1-1
0-N
Tipo pagamento
Pagamento
• con vincolo di integrità referenziale fra IDMetodoSpedizione in
Spedizione e la chiave di Metodo spedizione
• IDMetodoSpedizione in Spedizione non ammette valore nullo in quanto
la cardinalità minima della relationship è 1
Pagamento (IDPagamento, Data pagamento, Importo pagamento,
IDMetodoPagamento)
Metodo pagamento (IDMetodoPagamento, Desc metodo pagamento)
• con vincolo di integrità referenziale fra IDMetodoPagamento in
Pagamento e la chiave di Metodo pagamento
• IDMetodoPagamento in Pagamento non ammette valore nullo in quanto
la cardinalità minima della relationship è 1
Progettazione logica
Scelta degli identificatori principali
Entità e Relationship uno a uno
IDOrdine
Data di inserimento
IDSpedizione
Data spedizione
Spedizione (IDSpedizione, Data spedizione, IDOrdine)
Ordine (IDOrdine, Data di inserimento)
0-1
1-1
Ordine
Consegna
Spedizione
con vincoli di integrità referenziale. Ammette valori nulli
IDOrdine
Data di inserimento
0-1
Ordine
1-1
Fatturazione
Pagamento
IDpagamento
Data pagamento
Importo pagamento
Pagamento (IDPagamento, Data pagamento, Importo pagamento,
IDOrdine)
Ordine (IDOrdine, Data di inserimento)
con vincoli di integrità referenziale. Ammette valori nulli
IDCliente
IDCliente
Nome
Cognome
Telefono1
Telefono2
Indirizzo
Città
Provincia
CAP
Dati
anagrafici
email
Username
Password
1-1
0-1
Cliente
Anagrafica
Cliente (IDCliente, Nome, Username, Password)
Ordine (IDCliente, email, Telefono1, Telefono2, Indirizzo, Città,
CAP)
con vincoli di integrità referenziale. Ammette valori nulli
IDProdotto
Nome prodotto
IDProdotto
1-1
Prodotto
Anagrafica
prodotto
Prezzo prodotto
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
1-1
Dati ausiliari
prodotto
Peso prodotto
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)
Costo prodotto
con vincoli di integrità referenziale, senza valori nulli
Progettazione logica
Schema E-R ristrutturato
IDCliente
IDCliente
Nome
Cognome
Telefono1
Telefono2
Indirizzo
Città
Provincia
CAP
1-1
Dati
anagrafici
IDIndirizzo
Alias indirizzo
Nome
Cognome
email
Username
Password
0-1
1-1
0-N
Cliente
Anagrafica
Indirizzo
Città
Provincia
CAP
Attivo
Rubrica
indirizzi
Indirizzi
0-N
IDStatusOrdine
Status ordine
0-N
Status
ordine
1-1
Acquisto
Avanzamento
IDOrdine
Data di inserimento
1-1
IDSpedizione
Data spedizione
0-1
0-1
1-1
Ordine
Consegna
Spedizione
Tipo spedizione
0-N
Testo in evidenza
0-N
Vetrina
Metodo
spedizione
Catalogo
Tipo
Categoria
Tipo pagamento
Composizione
0-N
0-N
Evidenza
Metodo
pagamento
Immagine in evidenza
IDCategoria
Icona Categoria
Nome categoria
Descrizione categoria
IDCatalogo
Nome catalogo
Descrizione catalogo
0-N
1-1
Quantità
IDVetrina
Nome vetrina
IDMetodoSped
Desc metodo sped
Spese spedizione
Pagamento
1-N
1-1
0-N
0-N
1-1
Tipo prodotto
Categoria
0-N
IDMetodoPagamento
Desc metodo pagamento
IDMagazzino
IDProdotto
Nome prodotto
0-N
IDpagamento
Data pagamento
Importo pagamento
1-1
Fatturazione
Disponibilità
Locazione
0-N
Nome magazzino
Magazzino
Prodotto
IDProdotto
1-1
IDImmagineGalleria
Immagine galleria
Galleria
immagini
0-N
1-1
Galleria
Anagrafica
prodotto
Prezzo prodotto
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
Progettazione logica
1-1
Dati ausiliari
prodotto
Peso prodotto
Costo prodotto
Scelta degli indici
Identifichiamo le tabelle non volatili nelle quali potremo valutare di inserire
degli indici
Tabelle volatili
Tabelle non volatili
Cliente
Catalogo
Composizione
Categoria
Dati anagrafici
Dati ausiliari prodotto
Locazione
Ordine
Evidenza
Galleria immagini
Pagamento
Rubrica indirizzi
Magazzino
Spedizione
Metodo pagamento
Status ordine
Metodo spedizione
Prodotto
Nelle tabelle volatili non si inseriscono indici in quanto
appesantirebbero le operazioni di input e update
Tipo categoria
Vetrina
Progettazione fisica
Scelta degli indici
Escludiamo le tabelle con poche occorrenze
Tabelle non volatili
Occorrenze
Candidata per
indici
Catalogo
5
NO
Categoria
15
NO
Dati ausiliari prodotto
100
SI
Evidenza
20
NO
5000
SI
Magazzino
2
NO
Metodo pagamento
3
NO
Metodo spedizione
2
NO
Prodotto
500
SI
Tipo categoria
20
NO
Vetrina
2
NO
Galleria immagini
Escludiamo le tabelle con poche occorrenze in quanto
può essere più efficiente memorizzare la relazione in
memoria che memorizzare un indice addizionale
Progettazione fisica
Scelta degli indici
Gli indici portano dei benefici nelle performance per relazioni che contano
molti accessi in lettura
Tabelle non volatili
Dati ausiliari prodotto
Prodotto
Galleria immagini
Accessi in lettura
(Interrogazioni)
Frequenza
Restituire il costo di ogni prodotto
1 al giorno
Restituire il peso di ogni prodotto
1 al giorno
(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
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
Scelta degli indici
Identifichiamo gli attributi che partecipano alle interrogazioni
Campo
(a)
(b)
(c)
(d)
Nome Prodotto
X
X
X
X
Descrizione Breve Prodotto
X
X
Descrizione Dettagliata Prodotto
X
Immagine Thumb Prodotto
X
Immagine Full Prodotto
X
Prezzo Prodotto
X
X
X
X
Accessi giornalieri “Nome Prodotto”:
1.000 + 500 + 300 + 100 = 1.900
Accessi giornalieri “Descrizione Breve Prodotto”:
1.000 + 500 + 100 = 1.600
I candidati indici sono quindi gli attributi “Nome Prodotto”
e “Descrizione Breve Prodotto”
Progettazione fisica
Scelta degli indici
Valutiamo l’inserimento degli indici nei campi candidati
Campo
Tipo dati
Dimensione
Text (50)
50 byte
Text (100)
100 byte
Memo
(media: 5000)
5000 byte
Immagine Thumb Prodotto
Text (255)
255 byte
Immagine Full Prodotto
Text (255)
255 byte
Prezzo Prodotto
Currency
4 byte
Nome Prodotto
Descrizione Breve Prodotto
Descrizione Dettagliata Prodotto
L numero di record nel file 500
B dimensione dei blocchi 4KB
R lunghezza dei record (fissa per semplicità) ~6KB
K lunghezza del campo chiave 50B – 100B
P lunghezza degli indirizzi (ai blocchi) 4B
Inseriremo quindi degli indici sui campi “Nome Prodotto”
e “Descrizione Breve Prodotto”
NF: Numero di blocchi per il file
ND: Numero di blocchi per un indice denso
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
Progettazione fisica
Scelta degli indici
Valutiamo l’inserimento degli indici nei campi candidati
Nel caso della tabella “Galleria immagini” valutiamo l’attributo “Immagine Galleria” di tipo
Text(255) di 255 byte
L numero di record nel file 5.000
B dimensione dei blocchi 4KB
R lunghezza dei record (fissa per semplicità) 287B
K lunghezza del campo chiave 255B
P lunghezza degli indirizzi (ai blocchi) 4B
NF = L / (B/R) =~ 5.000/(4.000/287) = 359
ND = L / (B/(K+P)) =~ 5.000/(255+4) = 19
Inseriremo quindi anche in questo caso un indice sul campo “Immagine Galleria”
NF: Numero di blocchi per il file
ND: Numero di blocchi per un indice denso
Progettazione fisica
Normalizzazione
Le tabelle “Rubrica Indirizzi” e “Dati anagrafici” non sono in seconda forma
normale
Per portarle in seconda forma normale dobbiamo fare in modo che tutte le informazioni della tabella
dipendano dalla chiave primaria e non dal dato presente nel campo.
Creiamo le tabelle “Città”, “CAP” e “Provincia” in modo da poter identificare univocamente queste tre
informazioni.
Nelle tabelle “Rubrica Indirizzi” e “Dati anagrafici” elimineremo gli attributi sopra elencati e li sostituiremo con
“IDCittà” in relazione 1-molti con la tabella “Città”.
IDCliente
Nome
Cognome
IDCliente
Nome
Cognome
Telefono1
Telefono2
Indirizzo
Città
Provincia
CAP
Telefono1
Telefono2
Indirizzo
Dati
anagrafici
IDIndirizzo
Alias indirizzo
Nome
Cognome
Indirizzo
Dati
anagrafici
Rubrica
indirizzi
1-1
0-N
Anagrafica
1-1
IDCitta
0-N
Anagrafica
Citta
Nome citta
1-1
Anagrafica
IDIndirizzo
Alias indirizzo
Nome
Cognome
Rubrica
indirizzi
1-N
IDCAP
CAP
CAP
Indirizzo
Città
Provincia
CAP
1-1
Anagrafica
1-N
Provincia
Normalizzazione
IDProvincia
Provincia
Schema finale
TBL_CATEGORIA
TBL_TIPO_CATEGORIA
TBL_CATALOGO
IDProvincia
IDCatalogo
IDCategoria
PK
IDCAP
PK
IDCitta
FK1,I1
CAP
IDProvincia
FK1,I1
Nome_Citta
IDCAP
IDCategoria
Icona_Categoria
Nome_Categoria
Descrizione_Categoria
Nome_Catalogo
Descrizione_Catalogo
TBL_CITTA
TBL_CAP
TBL_PROVINCIA
PK
PK,FK1,I1,I3
PK,FK2,I4,I2
IDCatalogo
PK,I1
PK,I1
TBL_GALLERIA_IMMAGINI
Provincia
TBL_PRODOTTO
TBL_DATI_ANAGRAFICI
TBL_RUBRICA_INDIRIZZI
PK,I1
FK1,I4,I3
FK2,I5,I2
IDIndirizzo
TBL_CLIENTE
Alias
Nome
Cognome
Indirizzo
IDCitta
Attivo
IDCliente
IDImmagineGalleria
PK,I1
PK,I1
IDCliente
U1
email
Username
Password
PK,FK2,I1
FK1,I2,I3
IDCliente
Nome
Cognome
Indirizzo
IDCitta
Telefono1
Telefono2
PK,I3
ID_Prodotto
I4
I1
Nome_Prodotto
Descrizione_Breve_Prodotto
Descrizione_Dettagliata_Prodotto
Immagine_Thumb_Prodotto
Immagine_Full_Prodotto
Prezzo_Prodotto
IDCategoria
FK1,I5,I2
Immagine_Galleria
I3
FK1,I4,I2 IDProdotto
TBL_LOCAZIONE
PK,FK2,I4,I2
PK,FK1,I1,I3
IDProdotto
IDMagazzino
Disponibilita
TBL_MAGAZZINO
ID_Magazzino
PK,I1
Nome_Magazzino
TBL_ORDINE
PK,I2
ID_Ordine
FK1,I4,I1
FK2,I5,I3
Data_Inserimento
IDCliente
IDStatusOrdine
TBL_COMPOSIZIONE
PK,FK1,I1,I3
PK,FK2,I4,I2
IDOrdine
IDProdotto
TBL_DATI_AUSILIARI_PRODOTTO
PK,FK1,I1
IDProdotto
Quantita
Peso_Prodotto
Costo_Prodotto
TBL_STATUS_ORDINE
PK,I1
TBL_EVIDENZA
IDStatusOrdine
PK,FK1,I3,I1
PK,FK2,I4,I2
Status_Ordine
Testo_In_Evidenza
Immagine_In_Evidenza
TBL_PAGAMENTO
TBL_METODO_PAGAMENTO
PK,I1
PK,I1
IDProdotto
IDVetrina
IDPagamento
IDMetodoPagamento
Descrizione_Metodo_Pagamento
Data_Pagamento
Importo_Pagamento
IDMetodoPagamento
FK1,I2
FK2,U2,U1 IDOrdine
TBL_METODO_SPEDIZIONE
TBL_SPEDIZIONE
PK,I1
IDSpedizione
Data_Spedizione
IDMetodoSpedizione
FK1,I3,I2
FK2,U2,U1 IDOrdine
PK,I1
IDMetodoSpedizione
Descrizione_Metodo_Spedizione
Spese_Spedizione
Progettazione fisica
TBL_VETRINA
PK,I1
IDVetrina
Nome_Vetrina
Scarica

Presentazione e-Shop - Studenti Dipartimento di Ingegneria