Progetto Di Base Di Dati Per Un

  • Uploaded by: Emanuele Furnari
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Progetto Di Base Di Dati Per Un as PDF for free.

More details

  • Words: 8,068
  • Pages: 57
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

Related Documents

Basi Di Dati
May 2020 8
Progetto Di Ricerca3
November 2019 13
Rendering Di Progetto
December 2019 12
Gruppo Di Progetto
December 2019 30

More Documents from ""