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