Sei sulla pagina 1di 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. Mostrare i prodotti al cliente
2. Permettere al cliente di navigare il catalogo nel quale sono organizzati i prodotti
3. Permettere al cliente di acquistare i prodotti presenti nel catalogo (sottomettere un ordine)

• Il flusso standard sarà relativamente semplice:


1. Atterrare in una Home Page dove saranno presentati i prodotti che si vogliono mettere in evidenza
2. Accedere alle categorie di prodotti
3. Accedere allle schede di dettaglio dei prodotti
4. Inserire i prodotti desiderati nel carrello
5. Mostrare il resoconto dei prodotti nel carrello con i prezzi ed il totale in evidenza
6. Selezionare il tipo di spedizione ed il metodo di pagamento
7. Sottomettere l’ordine

• I prodotti saranno organizzati in categorie.


Ogni categoria avrà un nome, un’icona ed una descrizione. Le categorie saranno organizzate in cataloghi in modo da poter avere diverse versioni
del sito riservate a determinate tipologie di clienti. Per identificare un catalogo sarà sufficiente avere un nome ed una descrizione.
• Ogni prodotto sarà identificato da un codice e avrà un nome, una descrizione breve, una descrizione dettagliata, un immagine per la pagina di
categoria, un’immagine per la scheda di dettaglio, una galleria d’immagini opzionale, un prezzo, un peso ed un costo.
• Ogni prodotto potrà essere fisicamente disponibile in uno o più magazzini.
• Ogni cliente dovrà essere identificato da uno username, una password, un indirizzo email e le informazioni necessarie per l’evasione dell’ordine
(indirizzo di spedizione/fatturazione + uno o più numeri di telefono utili al corriere per la consegna).
• Ogni cliente potrà avere una rubrica di indirizzi di spedizione ai quali assegnare degli pseudonimi per riconoscerli.
• Per ogni ordine dovranno essere tracciate le seguenti informazioni: data inserimento ordine, cliente, prodotti, metodo di spedizione, metodo di
pagamento, indirizzo di spedizione e stato dell’ordine. Per l’ordine dovrà essere tracciato anche l’avanzamento che consiste nelle fasi di: ordine
confermato da parte del cliente, ordine spedito da parte dell’azienda, ordine pagato da parte del cliente, contabilizzazione dell’ordine che chiude il
ciclo di un ordine. Ovviamente un ordine può anche essere annullato in determinati casi particolari.
• Inizialmente saranno disponibili 3 metodi di pagamento: contrassegno, carta di credito e PayPal. Dei quali dovremo tracciare le seguenti
informazioni: data pagamento, importo pagamento ed ordine associato al pagamento.
• Inizialmente saranno disponibili 2 tipi di spedizione: Corriere e corriere espresso. Dei quali dovremo tracciare le seguenti informazioni: data di
spedizione , ordine associato. Le spese di spedizione dipendono dal metodo di spedizione selezionato.

Requisiti
Requisiti espressi in linguaggio naturale
Operazioni previste sulla base di dati
1. CLIENTI:
(a) Inserimento dati cliente. (b) Cancellazione dati cliente. (c) Aggiornamento dati cliente.
2. PRODOTTO – CATEGORIA - CATALOGO:
(a) Aggiunta prodotto/categoria/catalogo. (b) Cancellazione prodotto/categoria/catalogo. (c) Aggiornamento prodotto/categoria/catalogo.
3. VETRINA:
(a) Inserimento prodotto in vetrina. (b) Cancellazione prodotto in vetrina. (c) Aggiornamento prodotto in vetrina.
4. PAGAMENTO:
(a) Inserimento nuovo pagamento. (b) Cancellazione pagamento. (c) Aggiornamento pagamento.
5. TIPOLOGIE PAGAMENTO:
(a) Inserimento nuove tipologie di pagamento. (b) Cancellazione tipologia di pagamento. (c) Aggiornamento tipologia di pagamento.
6. SPEDIZIONE:
(a) Inserimento nuova spedizione. (b) Cancellazione spedizione. (c) Aggiornamento spedizione.
7. TIPOLOGIE SPEDIZIONE:
(a) Inserimento nuove tipologie di spedizione. (b) Cancellazione tipologia di spedizione. (c) Aggiornamento tipologia di spedizione.
8. ORDINE:
(a) Inserimento nuovo ordine. (b) Cancellazione ordine. (c) Aggiornamento ordine.
9. MAGAZZINO:
(a) Inserimento nuovo magazzino. (b) Cancellazione magazzino. (c) Aggiornamento magazzino. (d) Aggiornamento scorte a magazzino

10. ALTRE PROCEDURE:


(a) Dato un cliente restituire tutti gli ordini effettuati (b) Restituire tutti gli ordini effettuati e non ancora spediti. (c) Restituire tutti gli ordini effettuati e non ancora pagati (d)
Restituire tutti gli ordini effettuati in un determinato intervallo di date (e) Restituire tutti i prodotti presenti nella vetrina (f) Restituire tutti i prodotti presenti in
una categoria (g) Restituire tutte le categorie presenti in un catalogo (h) Restituire i prodotti associati ad un ordine (i) Restituire tutte le informazioni
associate ad un ordine (j) Restituire tutti i dati associati ad un cliente (k) Restituire il fatturato giornaliero/mensile/annuale

Requisiti
Glossario dei termini

Termine Descrizione Sinonimi Collegamenti


Prodotto Oggetto fisico che si può acquistare nel sito Ordine, Categoria, Home
page
Cliente Persona che effettua almeno un ordine nel sito Ordine

Catalogo Catalogo nel quale sono organizzate delle categorie che Categoria
contengono prodotti
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 Prodotto, cliente,


un cliente pagamento, spedizione
Home page Pagina nella quale si visualizzano dei prodotti che si vogliono Vetrina Prodotti
mettere in evidenza
Pagamento Pagamento relativo ad un acquisto. Può essere fatto in 3 modi: Ordine
Carta di credito, contrassegno o PayPal
Spedizione Spedizione della merce acquistata. Può essere fatto in 2 modi: Ordine
Corriere standard o corriere espresso
Magazzino Magazzino nel quale saranno dispinibili i prodotti venduti Prodotto

Requisiti
Strutturazione dei requisiti
FRASI DI CARATTERE GENERALE
• Si vuole realizzare una base di dati per una società che opera nel settore del commercio elettronico. La necessità è quella di creare un sito adatto a
svolgere l’attività.
• Il sito effettuerà vendite nel solo territorio italiano.

FRASI RELATIVE AI PRODOTTI


• Il sito dovrà svolgere principalmente 3 funzioni:
– Mostrare i prodotti al cliente
– Permettere al cliente di navigare il catalogo nel quale sono organizzati i prodotti
– Permettere al cliente di acquistare i prodotti presenti nel catalogo (sottomettere un ordine)
• Il flusso standard sarà relativamente semplice:
– Atterrare in una Home Page dove saranno presentati i prodotti che si vogliono mettere in evidenza
– Accedere alle categorie di prodotti
– Accedere allle schede di dettaglio dei prodotti
– Inserire i prodotti desiderati nel carrello
– Mostrare il resoconto dei prodotti nel carrello con i prezzi ed il totale in evidenza
• I prodotti saranno organizzati in categorie.
• Ogni prodotto sarà identificato da un codice e avrà un nome, una descrizione breve, una descrizione dettagliata, un’immagine per la pagina di categoria,
un’immagine per la scheda di dettaglio, una galleria d’immagini opzionale, un prezzo, un peso ed un costo.
• Per ogni ordine le informazioni dovranno essere tracciate le seguenti informazioni: data inserimento ordine, cliente, prodotti, metodo di spedizione,
metodo di pagamento, indirizzo di spedizione e stato dell’ordine.
• Ogni prodotto potrà essere fisicamente disponibile in uno o più magazzini

FRASI RELATIVE AGLI ORDINI


• Per ogni ordine dovranno essere tracciate le seguenti informazioni: data inserimento ordine, cliente, prodotti, metodo di spedizione, metodo di pagamento,
indirizzo di spedizione e stato dell’ordine.
• Per l’ordine dovrà essere tracciato anche l’avanzamento che consiste nelle fasi di: ordine confermato da parte del cliente, ordine spedito da parte
dell’azienda, ordine pagato da parte del cliente, contabilizzazione dell’ordine che chiude il ciclo di un ordine. Ovviamente un ordine può anche essere
annullato in determinati casi particolari.

FRASI RELATIVE AI CATALOGHI


• Il sito dovrà svolgere principalmente 3 funzioni:
– Permettere al cliente di navigare il catalogo nel quale sono organizzati i prodotti
– Permettere al cliente di acquistarei prodotti presenti nel catalogo (sottomettere un ordine)

• Le categorie saranno organizzate in cataloghi in modo da poter avere diverse versioni del sito riservate a determinate tipologie di clienti. Per identificare un
catalogo sarà sufficiente avere un nome ed una descrizione.

Requisiti
Strutturazione dei requisiti
FRASI RELATIVE ALLE CATEGORIE
• Il flusso standard sarà relativamente semplice:
– ...
– Accedere alle categorie di prodotti
– ...
• I prodotti saranno organizzati in categorie.
• Ogni categoria avrà un nome, un’icona ed una descrizione. Le categorie saranno organizzate in cataloghi in modo da poter avere diverse versioni del sito
riservate a determinate tipologie di clienti.

FRASI RELATIVE AI CLIENTI


• Il sito dovrà svolgere principalmente 3 funzioni:
– Mostrare i prodotti al cliente
– ...
• Ogni cliente dovrà essere identificato da uno username, una password, un indirizzo email e le informazioni necessarie per l’evasione dell’ordine (indirizzo di
spedizione/fatturazione + uno o più numeri di telefono utili al corriere per la consegna).
• Per ogni ordine le informazioni dovranno essere tracciate le seguenti informazioni: canale di vendita, data inserimento ordine, cliente, prodotti, metodo di
spedizione, metodo di pagamento, indirizzo di spedizione e stato dell’ordine.
• Ogni cliente potrà avere una rubrica di indirizzi di spedizione ai quali assegnare degli pseudonimi per riconoscerli.

FRASI RELATIVE ALL’HOME PAGE


• Il flusso standard sarà relativamente semplice:
– Atterrare in una Home Page dove saranno presentati i prodotti che si vogliono mettere in evidenza

FRASI RELATIVE AL PAGAMENTO


• Selezionare il tipo di spedizione ed il metodo di pagamento
• Per ogni ordine le informazioni dovranno essere tracciate le seguenti informazioni: canale di vendita, data inserimento ordine, cliente, prodotti, metodo di
spedizione, metodo di pagamento, indirizzo di spedizione e stato dell’ordine.
• Inizialmente saranno disponibili 3 metodi di pagamento: contrassegno, carta di credito e PayPal. Dei quali dovremo tracciare le seguenti informazioni: data
pagamento, importo pagamento, ordine associato al pagamento.

FRASI RELATIVE ALLA SPEDIZIONE


• Selezionare il tipo di spedizione ed il metodo di pagamento
• Per ogni ordine le informazioni dovranno essere tracciate le seguenti informazioni: canale di vendita, data inserimento ordine, cliente, prodotti, metodo di
spedizione, metodo di pagamento, indirizzo di spedizione e stato dell’ordine.
• Inizialmente saranno disponibili 2 tipi di spedizione: Corriere e corriere espresso. Dei quali dovremo tracciare le seguenti informazioni: data di spedizione ,
ordine associato
• Le spese di spedizione dipendono dal metodo di spedizione selezionato.

Requisiti
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 Composizione Prodotto

Le entità principali: Le relazioni principali:

• Cliente • Acquisto

• Ordine • Composizione

• Prodotto

Progettazione concettuale
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 Evidenza Vetrina La visualizzazione e categorizzazione


dei prodotti ci porta a definire 3 ulteriori
entità e 3 ulteriori relazioni:

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


Categoria
una categoria nella quale sarà
visualizzato.

Catalogo: ad un catalogo possono


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


Ordine sistema, per poter essere considerato
chiuso, deve completare due ulteriori
attività che ci portano a definire due nuove
entità:
Consegna Fatturazione
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


Spedizione Pagamento 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 La generalizzazione è totale ed esclusiva.


Corriere
espresso

Pagamento

Un ordine può essere pagato con


contrassegno, carta di credito o PayPal.

Anche in questo caso la generalizzazione


Carta di è totale ed esclusiva.
Contrassegno Paypal
credito

Progettazione concettuale
Schema E-R finale
Cliente Rubrica
Indirizzi
indirizzi

Spedizione Consegna
Acquisto

Corriere Ordine Fatturazione Pagamento


Corriere
espresso

Carta di
Contrassegno Paypal
Confermato Spedito Contabilizzato credito

Pagato Annullato Composizione


Locazione Magazzino

Prodotto

Tipo
Catalogo Categoria Tipo prodotto
Categoria
Evidenza Vetrina

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 Indirizzo al quale fatturare l’ordine. Attributo composto
fatturazione
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 È lo pseudonimo assegnato dal cliente all’indirizzo di spedizione per essere intuitivo (esempio: casa,
di spedizione ufficio, mamma)
Indirizzo di Indirizzo al quale spedire la merce al cliente. Attributo composto
spedizione

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 Data in cui l’ordine viene inserito dal cliente
inserimento

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 E’ la data in cui viene effettivamente spedito l’ordine
spedizione

CORRIERE
Spese di Sono le spese di spedizione associate al metodo di spedizione corriere
spedizione

CORRIERE ESPRESSO
Spese di Sono le spese di spedizione associate al metodo di spedizione corriere espresso
spedizione

Progettazione concettuale
Analisi delle entità

PAGAMENTO
IDPagamento È il codice univoco associato al pagamento; è candidato ad essere chiave primaria dell’entità
“Pagamento”
Data di E’ la data in cui viene effettivamente effettuata la transazione
pagamento
Importo E’ l’importo del pagamento
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 E’ la descrizione breve del prodotto che verrà visualizzata
breve prodotto
Descrizione E’ la descrizione dettagliata del prodotto che verrà visualizzata nella scheda del prodotto
dettagliata
prodotto
Immagine E’ l’immagine del prodotto che verrà visualizzata nella pagina di categoria
thumb prodotto
Immagine full E’ l’immagine del prodotto che verrà visualizzata nella scheda del prodotto
prodotto
Immagine E’ l’immagine per la galleria d’immagini del prodotto. Attributo multivalore
galleria prod
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 E’ la descrizione della categoria che sarà visualizzata nel sito
categoria
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 E’ la descrizione del catalogo che servirà all’operatore per avere informaizoni più dettagliate sul
catalogo 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 E’ l’immagine utilizzata nell’home page per il prodotto in evidenza
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 0-N 1-1 IDIndirizzo


Password
Cliente Rubrica Alias indirizzo
email Indirizzi
Telefono [0:N] indirizzi Attivo

Nome Nome
Cognome 0-N
Cognome
Indirizzo Indirizzo di Indirizzo di Indirizzo
Città fatturazione spedizione Città
Provincia Provincia
IDSpedizione CAP CAP
1-1
Data spedizione Consegna
Spedizione
Acquisto

IDOrdine
0-1 1-1 Data di inserimento

0-1 1-1 IDpagamento


Data pagamento
Ordine Fatturazione Pagamento Importo pagamento
Corriere
Corriere
espresso
1-N
Spese di spedizione Spese di spedizione

Carta di
Contrassegno Paypal
Confermato Spedito Contabilizzato credito

Quantità IDMagazzino
Nome magazzino
Composizione 0-N
Pagato Annullato 0-N
Locazione Magazzino
IDProdotto
0-N Nome prodotto
Disponibilità IDVetrina
IDCatalogo IDCategoria
Nome vetrina
1-1 Prodotto 0-N

0-N 0-N 0-N 0-N


Tipo Descrizione breve prodotto Evidenza Vetrina
Catalogo Categoria Tipo prodotto
Categoria Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto Immagine in evidenza
Nome categoria
Immagine galleria prodotto [0:N] Testo in evidenza
Nome catalogo Descrizione categoria Prezzo prodotto
Descrizione catalogo Icona Categoria Costo prodotto
Peso prodotto

Progettazione concettuale
Analisi delle prestazioni sullo schema E-R
Concetto Tipo Volume Concetto Tipo Volume
Cliente E 10000 Indirizzi R 15000
Rubrica indirizzi E 15000
Acquisto R 31000
Ordine E 31000
Consegna R 30000
Confermato E 1000
Fatturazione R 29000
Spedito E 1000
Composizione R 60000
Pagato E 1000

Contabilizzato E 28000 Locazione R 600

Annullato 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
Tavole dei volumi
Contrassegno E 14000

Carta di credito E 10000 Nella tavola dei volumi sono riportati il numero di
occorrenze di ogni entità e di ogni relazione dello
PayPal E 5000 schema E-R sulle dimensioni dei relativi attributi,
Prodotto E 500 stimando il funzionamento a regime.
Magazzino E 2
I volumi sono stimati considerando le cardinalità
Vetrina E 2 delle entità coinvolte.
Categoria E 15
Catalogo E 5
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

Inserimento prodotto Interattiva 2 / mese


Tavola delle operazioni
Cancellazione prodotto Interattiva 5 / anno

Aggiornamento prodotto Sono riportate le tipologie e la Interattiva 2 / mese


frequenza delle operazioni
Inserimento categoria Interattiva 2 / anno
effettuate sulla base di dati.
Cancellazione categoria Interattiva 1 / anno

Aggiornamento categoria Interattiva 2 / anno

Inserimento catalogo Interattiva 2 / anno


Cancellazione catalogo Interattiva 1 / anno

Aggiornamento catalogo Interattiva 2 / anno

Inserimento prodotti in vetrina Interattiva 1 / anno


Cancellazione prodotti in vetrina Interattiva 1 / anno

Aggiornamento prodotti in vetrina Interattiva 4 / settimana

Inserimento magazzino Interattiva 1 / anno

Cancellazione magazzino Interattiva 1 / anno

Aggiornamento magazzino Batch 1 / giorno

Inserimento ordine Interattiva 50 / giorno

Cancellazione ordine Interattiva 5 / mese

Aggiornamento ordine Batch 100 / giorno

Inserimento pagamento Interattiva 50 / giorno


* 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

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


* Evidenziate le operazioni più importanti che andremo ad analizzare
Progettazione logica
Analisi delle prestazioni sullo schema E-R
Inserimento dati cliente

IDCliente
Tabella degli accessi
Username 0-N 1-1 IDIndirizzo Concetto Costrutti Accessi Tipo
Password
Cliente Rubrica Alias indirizzo
email Indirizzi
indirizzi Attivo
Telefono [0:N]
Cliente Entità 1 S
Nome Nome
Cognome Cognome
Indirizzo di
Indirizzo
Città fatturazione
Indirizzo di
spedizione
Indirizzo
Città
Indirizzi Relazione 3 S
Provincia Provincia
CAP CAP
Rubrica indirizzi Entità 3 S

Inserimento spedizione

IDSpedizione
Data spedizione
Spedizione
1-1
Consegna Tabella degli accessi
0-1
IDOrdine
Data di inserimento
Concetto Costrutti Accessi Tipo
Ordine Spedizione Entità 1 S
Corriere
Corriere
espresso
Corriere Entità 1 S
Spese di spedizione Spese di spedizione

Consegna Relazione 1 S
Confermato Spedito Contabilizzato
Ordine Entità 1 L

Pagato Annullato Spedito Entità 1 S

Progettazione logica
Analisi delle prestazioni sullo schema E-R
Inserimento ordine
IDCliente

Username
Password
email
Telefono [0:N]
Cliente Tabella degli accessi
Nome
Cognome 0-N
Indirizzo di
fatturazione
Concetto Costrutti Accessi Tipo
Provincia
CAP

Acquisto Ordine Entità 1 S


IDOrdine

1-1 Data di inserimento


Acquisto Relazione 1 L
Ordine
Cliente Entità 1 L
1-N

Confermato Entità 1 S

Confermato Spedito Contabilizzato Composizione Relazione 3 S


Quantità

Pagato Annullato
Composizione Prodotto Entità 3 L
IDProdotto
0-N Nome 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

Progettazione logica
Analisi delle prestazioni sullo schema E-R
Aggiornamento ordine (contabilizzazione)
IDOrdine
Data di inserimento
Tabella degli accessi
Ordine Concetto Costrutti Accessi Tipo
Ordine Entità 1 L
Contabilizzato Entità 1 S
Confermato Spedito Contabilizzato

Pagato Annullato

Restituire informazioni da visualizzare nella scheda prodotto


IDMagazzino
IDProdotto Nome magazzino
Nome prodotto
0-N 0-N
Tabella degli accessi
Locazione Magazzino
Prodotto Concetto Costrutti Accessi Tipo
Disponibilità Prodotto Entità 1 L
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Locazione Relazione 3 L
Immagine full prodotto
Immagine galleria prodotto [0:N]
Magazzino Entità 3 L
Prezzo prodotto
Costo prodotto
Peso prodotto

Progettazione logica
Analisi delle prestazioni sullo schema E-R
Restituire i prodotti associati ad un ordine
IDOrdine Tabella degli accessi
Data di inserimento IDProdotto

Quantità
Nome prodotto
Concetto Costrutti Accessi Tipo
1-N 0-N
Ordine Composizione Prodotto Ordine Entità 1 L

Descrizione breve prodotto


Composizione Relazione 5 L
Descrizione dettagliata prodotto
Immagine thumb prodotto Prodotto Entità 5 L
Immagine full prodotto
Immagine galleria prodotto [0:N]
Prezzo prodotto
Costo prodotto
Peso prodotto

Restituire tutti i prodotti presenti in una vetrina


IDProdotto
Nome prodotto IDVetrina
Tabella degli accessi
Nome vetrina

Prodotto 0-N 0-N


Concetto Costrutti Accessi Tipo
Evidenza Vetrina
Prodotto Entità 10 L
Descrizione breve prodotto
Descrizione dettagliata prodotto Immagine in evidenza Evidenza Relazione 10 L
Immagine thumb prodotto
Testo in evidenza
Immagine full prodotto Vetrina Entità 1 L
Immagine galleria prodotto [0:N]
Prezzo prodotto
Costo prodotto
Peso prodotto

Progettazione logica
Analisi delle prestazioni sullo schema E-R
Restituire i prodotti associati ad un ordine
IDProdotto
Nome prodotto Tabella degli accessi
IDCategoria Concetto Costrutti Accessi Tipo
1-1 Prodotto
0-N
Categoria Entità 1 L
Descrizione breve prodotto
Categoria Tipo prodotto Descrizione dettagliata prodotto Tipo prodotto Relazione 20 L
Immagine thumb prodotto

Nome categoria
Immagine full prodotto Prodotto Entità 20 L
Immagine galleria prodotto [0:N]
Descrizione categoria Prezzo prodotto
Icona Categoria Costo prodotto
Peso prodotto

Restituire tutte le categorie presenti in un catalogo

IDCatalogo IDCategoria
Tabella degli accessi
Concetto Costrutti Accessi Tipo
0-N 0-N
Tipo Catalogo Entità 1 L
Catalogo Categoria
Categoria
Tipo Categoria Relazione 10 L
Nome categoria
Categoria Entità 10 L
Nome catalogo Descrizione categoria
Descrizione catalogo Icona Categoria

Progettazione logica
Analisi delle ridondanze
IDpagamento
Data pagamento
Pagamento Importo pagamento

Concetto Tipo Volume


Ordine E 30000
IDOrdine

Composizione R 60000 Data di inserimento


Status ordine

Prodotto E 100 IDSpedizione 1-1 0-1


Data spedizione Consegna Ordine
Spedizione
Pagamento E 30000
1-N
Fatturazione R 30000 Quantità

Composizione
Consegna R 30000
Corriere
Corriere
espresso
Spedizione E 30000 0-N
IDProdotto
Nome prodotto
Spese di spedizione Spese di spedizione

0-N
Corriere E 20000 Prodotto

Corriere espresso E 10000 Descrizione breve prodotto


Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
Immagine galleria prodotto [0:N]
Prezzo prodotto

• Operazione 1: Inserimento di un pagamento per un ordine (50 volte al giorno) Costo prodotto
Peso prodotto

• Operazione 2: Analisi degli importi di pagamento per reportistica (1 volta al giorno)

Progettazione logica
Analisi delle ridondanze
Presenza di ridondanza
Operazione 1 Concetto Costrutto Accessi Tipo
Ordine E 1 L Costo operazione 1:
Composizione R 2 L 100 accessi in scrittura
Prodotto E 2 L
400 accessi in lettura
Consegna R 1 L
Spedizione E 1 L
Corriere o CE E 1 L
Pagamento E 1 S
Fatturazione R 1 S

Operazione 2 Concetto Costrutto Accessi Tipo Costo operazione 2:


Pagamento E 1 L 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 Costo operazione 1:
Ordine E 1 L 400 accessi in lettura
Composizione R 2 L 100 accessi in scrittura
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

Operazione 2 Concetto Costrutto Accessi Tipo


Costo operazione 2:
Ordine E 50 L
400 accessi in lettura
Composizione R 100 L
Prodotto E 100 L
Consegna R 50 L
Spedizione E 50 L Totale accessi (contando
Corriere o CE E 50 L doppi gli accessi in scrittura):
1.000 accessi al giorno
Si opta quindi per mantenere la ridondanza
presentata nello schema E-R Progettazione logica
Eliminazione delle generalizzazioni
Entità padre Entità figlie Tipo
Ordine Confermato – Spedito – Pagato – Contabilizzato - Annullato Generalizzazione totale e esclusiva
Spedizione Corriere – Corriere espresso Generalizzazione totale e esclusiva
Pagamento Contrassegno – Carta di credito - PayPal Generalizzazione totale e esclusiva

IDOrdine
Data di inserimento

Ordine IDOrdine
Data di inserimento
IDStatusOrdine
Status ordine

1-1 0-N
Ordine Avanzamento Status
ordine
Confermato Spedito Contabilizzato

Pagato 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
IDMetodoSpedizione IDSpedizione
Descrizione metodo spedizione Data spedizione
Spese di spedizione

0-N 1-1
Metodo Tipo spedizione Spedizione
spedizione

Corriere
Corriere
espresso

Spese di spedizione Spese di spedizione

La gerarchia “Spedizione” – “Corriere” – “Corriere espresso” viene risolta mantenendo l’entità padre
“Spedizione” e accorpando le entità figlie in una nuova entità “Tipologia Spedizione” con un attributo
“Descrizione tipologia spedizione” che descrive il tipo di spedizione che può essere selezionata da un cliente per
effettuare un ordine, un attributo “Spese di spedizione” che indica le spese di spedizione associate al metodo di
spedizione e un identificatore dello stesso (sarà la chiave primaria della tabella in corrispondenza con la foreign key
della tabella “Spedizione”);
Si è optato per questa scelta in quanto nel futuro potrebbero essere aggiunti nuovi metodi di spedizione con possibili
ulteriori attributi per descriverne le caratteristiche.

Progettazione logica
Eliminazione delle generalizzazioni

IDpagamento
Data pagamento IDpagamento
Pagamento Importo pagamento IDMetodoPagamento Data pagamento
Descrizione metodo pagamento Importo pagamento

0-N 1-1
Metodo Tipo pagamento Pagamento
pagamento

Carta di
Contrassegno Paypal
credito

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

IDCliente L’entità “Cliente” viene partizionata in


due entità: “Cliente” e “Dati anagrafici”
in modo da separare gli attributi che
Username vengono acceduti separatamente; infatti
Password nell’entità cliente rimangono i dati di
email Cliente accesso del cliente che vengono utilizzati
Telefono [0:N]
per identificare un cliente al momento del
Indirizzo login, mentre i dati utilizzati soltanto nel
Città Indirizzo di momento in cui viene immesso un ordine
CAP fatturazione vengono inseriti nella nuova entità “Dati
Provincia
anagrafici”.
Cognome
Nome Le due entità saranno in relazione 1-1 con
coerenza tra identificatore primario.

IDCliente
email
IDCliente
Username
Password
Telefono1
Telefono2 1-1 0-1
Dati
Anagrafica Cliente
anagrafici
Indirizzo
Città Indirizzo di
CAP fatturazione
Provincia
Cognome
Nome

Progettazione logica
Partizionamento/accorpamento di concetti
IDProdotto
Nome prodotto
L’entità “Prodotto” viene partizionata in
due entità: “Prodotto” e “Dati ausiliari
Prodotto prodotto” in modo da separare gli attributi
che vengono acceduti separatamente; infatti
Descrizione breve prodotto nell’entità “prodotto” rimangono i dati di che
Descrizione dettagliata prodotto vengono visualizzati nella scheda prodotto
Immagine thumb prodotto del sito dal cliente, mentre i dati utilizzati
Immagine full prodotto soltanto per questioni di reportistica
Immagine galleria prodotto [0:N] vengono inseriti nella nuova entità “Dati
Prezzo prodotto
ausiliari prodotto”.
Costo prodotto
Peso prodotto Le due entità saranno in relazione 1-1 con
coerenza tra identificatore primario.

IDProdotto IDProdotto
Nome prodotto

1-1 1-1 Costo prodotto


Anagrafica Dati ausiliari Peso prodotto
Prodotto
prodotto 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 Attributo Soluzione adottata
Cliente Telefono L’entità “cliente” può avere nessuno, uno o più numeri di telefono; poiché i numeri di telefono si suppone possano
(entità) essere al massimo due (fisso e mobile), l’attributo viene diviso in due attributi semplici (“telefono1” e “telefono2”)
che vengono accorpati all’entità “cliente”; nel caso fosse necessario memorizzare più numeri di telefono, la
ristrutturazione dell’attributo passa attraverso la definizione di un’ulteriore entità e di una relazione uno a molti
Prodotto Immagine L’entità “prodotto” può avere nessuna, una o più immagini per la galleria; poichè le immagini saranno in media una
(entità) galleria prodotto 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 Indirizzo di L’indirizzo di fatturazione del cliente viene suddiviso nei seguenti attributi che vengono accorpati all’entità stessa:
(entità) fatturazione • Nome • Città
• Cognome • CAP
• Indirizzo • Provincia

Rubrica Indirizzo di L’indirizzo di spedizione del cliente viene suddiviso nei seguenti attributi che vengono accorpati all’entità stessa:
indirizzi spedizione • Nome • Città
(entità) • Cognome • CAP
• Indirizzo • 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) Quantità
Prodotto (IDProdotto, Nome prodotto, Descrizione breve prodotto,
Descrizione dettagliata prodotto, Immagine thumb prodotto, Composizione
immagine full prodotto, Prezzo prodotto)
Composizione (IDOrdine, IDProdotto) IDProdotto
0-N Nome prodotto

con vincoli di integrità referenziale fra


• IDOrdine in Composizione e la chiave di Ordine Prodotto
• IDProdotto in Composizione e la chiave di Prodotto
Descrizione breve prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto
Immagine full prodotto
Prezzo prodotto

IDCategoria Catalogo (IDCatalogo, Nome catalogo, Descrizione catalogo)


IDCatalogo Icona Categoria
Nome catalogo
Categoria (IDCategoria, Icona categoria, Nome categoria,
Nome categoria
Descrizione catalogo Descrizione categoria Descrizione categpria)
Tipo Categoria (IDCatalogo, IDCategoria)
0-N 0-N
Tipo
Catalogo Categoria con vincoli di integrità referenziale fra
Categoria
• 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
Vetrina (IDVetrina, Nome vetrina)
IDVetrina
Nome vetrina Testo in evidenza 0-N Prodotto (IDProdotto, Nome prodotto, Descrizione breve prodotto,
0-N
Descrizione dett. prodotto, Immagine thumb prodotto,
0-N
Vetrina Evidenza Prodotto immagine full prodotto, Prezzo prodotto)
Evidenza (IDVetrina, IDProdotto, Testo in evidenza, Immagine in evid.)
Immagine in evidenza Prezzo prodotto
Descrizione breve prodotto con vincoli di integrità referenziale fra
Descrizione dettagliata prodotto • IDVetrina in Evidenza e la chiave di Vetrina
Immagine thumb prodotto
Immagine full prodotto
• IDProdotto in Evidenza e la chiave di Prodotto

IDMagazzino
IDProdotto Disponibilità
Nome prodotto
Prodotto (IDProdotto, Nome prodotto, Descrizione breve prodotto,
Descrizione dett. prodotto, Immagine thumb prodotto,
0-N 0-N immagine full prodotto, Prezzo prodotto)
Locazione Magazzino
Magazzino (IDMagazzino)
Prodotto Locazione (IDProdotto, IDMagazzino, Disponibilità)

Prezzo prodotto con vincoli di integrità referenziale fra


Descrizione breve prodotto • IDProdotto e la chiave di Prodotto
Descrizione dettagliata prodotto • IDMagazzino e la chiave di Magazzino
Immagine thumb prodotto
Immagine full prodotto

Progettazione logica
Scelta degli identificatori principali
Entità e Relationship uno a molti

IDCategoria Prodotto (IDProdotto, Nome prodotto, Descrizione breve prodotto,


Icona Categoria IDProdotto
Nome categoria Nome prodotto Descrizione dett. prodotto, Immagine thumb prodotto,
Descrizione categoria immagine full prodotto, Prezzo prodotto, IDCategoria)
0-N 1-1
Categoria (IDCategoria, Icona categoria, Nome categoria,
Categoria Tipo prodotto Prodotto Descrizione categoria)

• con vincolo di integrità referenziale fra IDCategoria in


Prezzo prodotto
Descrizione breve prodotto Prodotto e la chiave di Prodotto
Descrizione dettagliata prodotto • IDCategoria in Prodotto non ammette valore nullo in quanto
Immagine thumb prodotto la cardinalità minima della relationship è 1
Immagine full prodotto

IDProdotto
Nome prodotto Galleria immagini (IDImmagineGalleria, Immagine galleria, IDProdotto)
Prodotto (IDProdotto, Nome prodotto, Descrizione breve prodotto,
IDImmagineGalleria
Immagine galleria Galleria 1-1 0-N Descriz. dett. prodotto, Immagine thumb prodotto,
Galleria Prodotto
immagini immagine full prodotto, Prezzo prodotto)
Prezzo prodotto
Descrizione breve prodotto • con vincolo di integrità referenziale fra IDProdotto in
Descrizione dettagliata prodotto Galleria immagini e la chiave di Prodotto
Immagine thumb prodotto
Immagine full 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
Rubrica indirizzi (IDIndirizzo, Indirizzo, Città, CAP, IDCliente)
IDIndirizzo
email Alias indirizzo
Cliente (IDCliente, Nome, Username, Password)
Username Nome
Password
Cognome
Indirizzo
• con vincolo di integrità referenziale fra IDCliente in
0-N 1-1 Rubrica indirizzi e la chiave di Cliente
Cliente Rubrica Città
Indirizzi Provincia
indirizzi CAP • IDCliente in Rubrica indirizzi non ammette valore nullo in quanto
Attivo
la cardinalità minima della relationship è 1

IDCliente
Nome
Username
Password

Cliente Ordine (IDOrdine, Data di inserimento, IDCliente)


Cliente (IDCliente, Nome, Username, Password)

0-N • con vincolo di integrità referenziale fra IDCliente in


Ordine e la chiave di Cliente
Acquisto IDOrdine • IDCliente in Ordine non ammette valore nullo in quanto
Data di inserimento
la cardinalità minima della relationship è 1
1-1

Ordine

Progettazione logica
Scelta degli identificatori principali
Entità e Relationship uno a molti

IDOrdine Ordine (IDOrdine, Data di inserimento, IDStatusOrdine)


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

0-N 1-1 • con vincolo di integrità referenziale fra IDStatusOrdine in


Status Avanzamento Ordine
ordine 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)


IDMetodoSpedizione IDSpedizione
Descrizione metodo spedizione Data spedizione Metodo spedizione (IDMetodoSpedizione, Desc metodo spedizione,
Spese di spedizione Spese di spedizione)
0-N 1-1
Metodo Tipo spedizione Spedizione • con vincolo di integrità referenziale fra IDMetodoSpedizione in
spedizione
Spedizione e la chiave di Metodo spedizione
• IDMetodoSpedizione in Spedizione non ammette valore nullo in quanto
la cardinalità minima della relationship è 1

IDpagamento Pagamento (IDPagamento, Data pagamento, Importo pagamento,


IDMetodoPagamento Data pagamento IDMetodoPagamento)
Importo pagamento
Descrizione metodo pagamento Metodo pagamento (IDMetodoPagamento, Desc metodo pagamento)
0-N 1-1
Metodo Tipo pagamento Pagamento • con vincolo di integrità referenziale fra IDMetodoPagamento in
pagamento 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

Spedizione (IDSpedizione, Data spedizione, IDOrdine)


IDSpedizione 0-1
Ordine (IDOrdine, Data di inserimento)
1-1
Data spedizione Consegna Ordine
Spedizione
con vincoli di integrità referenziale. Ammette valori nulli

IDOrdine
Data di inserimento

IDpagamento Pagamento (IDPagamento, Data pagamento, Importo pagamento,


0-1 1-1
Ordine
Data pagamento IDOrdine)
Fatturazione Pagamento Importo pagamento
Ordine (IDOrdine, Data di inserimento)

con vincoli di integrità referenziale. Ammette valori nulli


IDCliente
IDCliente email
Nome Username
Cognome Password

Telefono1
Cliente (IDCliente, Nome, Username, Password)
1-1 0-1
Telefono2
Indirizzo Dati Ordine (IDCliente, email, Telefono1, Telefono2, Indirizzo, Città,
Città Anagrafica Cliente
Provincia anagrafici CAP)
CAP

con vincoli di integrità referenziale. Ammette valori nulli


IDProdotto
Nome prodotto
IDProdotto

1-1 1-1 Prodotto (IDProdotto, Nome prodotto, Descrizione breve prodotto,


Anagrafica Dati ausiliari
Prodotto Descriz. dett. prodotto, Immagine thumb prodotto,
prodotto prodotto
immagine full prodotto, Prezzo prodotto)
Prezzo prodotto Peso prodotto Dati Ausiliari prodotto (IDProdotto, Peso prodotto, Costo prodotto)
Descrizione breve prodotto Costo prodotto
Descrizione dettagliata prodotto
Immagine thumb prodotto con vincoli di integrità referenziale, senza valori nulli
Immagine full prodotto

Progettazione logica
Schema E-R ristrutturato
IDCliente
IDCliente IDIndirizzo
email Alias indirizzo
Nome Username
Cognome Nome
Password
Cognome
Telefono1 Indirizzo
Telefono2 1-1 0-1 0-N 1-1
Indirizzo Dati Rubrica Città
Città Anagrafica Cliente Indirizzi Provincia
Provincia anagrafici indirizzi CAP
CAP Attivo
0-N
IDStatusOrdine
Status ordine

0-N 1-1
Status Avanzamento Acquisto
ordine IDOrdine
Data di inserimento

1-1

0-1 1-1 IDpagamento


IDSpedizione 1-1 0-1 Data pagamento
Data spedizione Consegna Ordine
Spedizione Fatturazione Pagamento Importo pagamento

1-1 1-N 1-1

Tipo spedizione IDVetrina Quantità Tipo pagamento


Nome vetrina Testo in evidenza
Composizione
0-N 0-N 0-N
0-N
IDMetodoSped Vetrina Evidenza IDMetodoPagamento
Desc metodo sped Metodo Metodo
Desc metodo pagamento
Spese spedizione spedizione pagamento
Immagine in evidenza
IDCategoria IDMagazzino
IDCatalogo Icona Categoria IDProdotto Disponibilità Nome magazzino
Nome catalogo Nome categoria Nome prodotto
Descrizione catalogo Descrizione categoria 0-N
0-N 0-N
0-N 0-N 0-N Locazione Magazzino
Tipo 1-1
Catalogo Categoria Tipo prodotto Prodotto
Categoria
IDProdotto

1-1 1-1
Anagrafica Dati ausiliari
IDImmagineGalleria 1-1 0-N Prezzo prodotto
Immagine galleria Galleria prodotto prodotto
Galleria Descrizione breve prodotto
immagini Descrizione dettagliata prodotto
Immagine thumb prodotto Peso prodotto
Immagine full prodotto Costo prodotto

Progettazione logica
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
Evidenza
Ordine
Galleria immagini
Pagamento
Magazzino
Rubrica indirizzi
Spedizione Metodo pagamento

Status ordine Metodo spedizione

Prodotto

Nelle tabelle volatili non si inseriscono indici in quanto Tipo categoria


appesantirebbero le operazioni di input e update
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

Galleria immagini 5000 SI

Magazzino 2 NO

Metodo pagamento 3 NO

Metodo spedizione 2 NO

Prodotto 500 SI

Tipo categoria 20 NO

Vetrina 2 NO

Escludiamo le tabelle con poche occorrenze in quanto


può essere più efficiente memorizzare la relazione in
memoria che memorizzare un indice addizionale

Progettazione fisica
Scelta degli indici
Gli indici portano dei benefici nelle performance per relazioni che contano
molti accessi in lettura

Tabelle non volatili Accessi in lettura Frequenza


(Interrogazioni)
Dati ausiliari prodotto Restituire il costo di ogni prodotto 1 al giorno

Restituire il peso di ogni prodotto 1 al giorno

Prodotto (a) Restituire le informazioni da 1000 / giorno


visualizzare nella scheda di un
prodotto

(b) Restituire tutti i prodotti presenti 500 / giorno


nella vetrina

(c) Restituire i prodotti associati ad un 300 / giorno


ordine

(d) Restituire tutti i prodotti presenti in 100 / giorno


una categoria

Galleria immagini Restituire tutte le immagini della 1000 / giorno


galleria associate ad un prodotto

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 X

Descrizione Dettagliata Prodotto X

Immagine Thumb Prodotto X X

Immagine Full Prodotto X

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


Nome Prodotto Text (50) 50 byte

Descrizione Breve Prodotto Text (100) 100 byte

Descrizione Dettagliata Prodotto Memo 5000 byte


(media: 5000)
Immagine Thumb Prodotto Text (255) 255 byte

Immagine Full Prodotto Text (255) 255 byte

Prezzo Prodotto Currency 4 byte

L numero di record nel file 500


B dimensione dei blocchi 4KB NF = L / (B/R) =~ 500/(4.000/6.000) = 750
R lunghezza dei record (fissa per semplicità) ~6KB
K lunghezza del campo chiave 50B – 100B Nome Prodotto:
P lunghezza degli indirizzi (ai blocchi) 4B ND = L / (B/(K+P)) =~ 500/(50+4) = 9

Inseriremo quindi degli indici sui campi “Nome Prodotto” Descrizione Breve Prodotto:
e “Descrizione Breve Prodotto” ND = L / (B/(K+P)) =~ 500/(100+4) = 5

NF: Numero di blocchi per il file


ND: Numero di blocchi per un indice denso 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 Telefono1
Nome Telefono2
Dati
1-1 0-N
Indirizzo
Cognome Anagrafica
anagrafici
Telefono1
Telefono2
Indirizzo Dati
Città IDIndirizzo
Provincia anagrafici Alias indirizzo
Nome Rubrica 1-1 0-N IDCitta

CAP Anagrafica Citta Nome citta


Cognome indirizzi
Indirizzo

1-1

Anagrafica
IDIndirizzo
1-N
Alias indirizzo
IDCAP
Nome CAP
Cognome CAP

Indirizzo 1-1
Rubrica Città
Provincia Anagrafica
indirizzi CAP
1-N
IDProvincia
Provincia
Provincia

Normalizzazione
Schema finale
TBL_CATEGORIA
TBL_CATALOGO TBL_TIPO_CATEGORIA PK,I1 IDCategoria
PK,I1 IDCatalogo PK,FK1,I1,I3 IDCatalogo
Icona_Categoria
PK,FK2,I4,I2 IDCategoria
Nome_Categoria
Nome_Catalogo
Descrizione_Categoria
TBL_CAP TBL_CITTA Descrizione_Catalogo
TBL_PROVINCIA
PK IDCAP PK IDCitta
PK IDProvincia
TBL_GALLERIA_IMMAGINI
CAP Nome_Citta
Provincia PK,I1 IDImmagineGalleria
FK1,I1 IDProvincia FK1,I1 IDCAP
TBL_PRODOTTO
I3 Immagine_Galleria
PK,I3 ID_Prodotto FK1,I4,I2 IDProdotto

TBL_RUBRICA_INDIRIZZI TBL_DATI_ANAGRAFICI I4 Nome_Prodotto


I1 Descrizione_Breve_Prodotto TBL_LOCAZIONE
PK,I1 IDIndirizzo PK,FK2,I1 IDCliente Descrizione_Dettagliata_Prodotto
TBL_CLIENTE PK,FK2,I4,I2 IDProdotto
Immagine_Thumb_Prodotto PK,FK1,I1,I3 IDMagazzino
Alias PK,I1 IDCliente Nome Immagine_Full_Prodotto
Nome Cognome Prezzo_Prodotto
Cognome Indirizzo Disponibilita
email FK1,I5,I2 IDCategoria
Indirizzo U1 Username FK1,I2,I3 IDCitta
FK1,I4,I3 IDCitta Password Telefono1
Attivo Telefono2
TBL_MAGAZZINO
FK2,I5,I2 IDCliente
PK,I1 ID_Magazzino

Nome_Magazzino

TBL_ORDINE TBL_COMPOSIZIONE
PK,I2 ID_Ordine PK,FK1,I1,I3 IDOrdine TBL_DATI_AUSILIARI_PRODOTTO
PK,FK2,I4,I2 IDProdotto
Data_Inserimento PK,FK1,I1 IDProdotto
FK1,I4,I1 IDCliente Quantita
FK2,I5,I3 IDStatusOrdine Peso_Prodotto
Costo_Prodotto

TBL_STATUS_ORDINE
PK,I1 IDStatusOrdine TBL_EVIDENZA TBL_VETRINA
PK,FK1,I3,I1 IDProdotto PK,I1 IDVetrina
Status_Ordine
PK,FK2,I4,I2 IDVetrina
Nome_Vetrina
Testo_In_Evidenza
TBL_PAGAMENTO Immagine_In_Evidenza
TBL_METODO_PAGAMENTO
PK,I1 IDPagamento
PK,I1 IDMetodoPagamento
Data_Pagamento
TBL_SPEDIZIONE TBL_METODO_SPEDIZIONE
Descrizione_Metodo_Pagamento Importo_Pagamento
FK1,I2 IDMetodoPagamento PK,I1 IDSpedizione PK,I1 IDMetodoSpedizione
FK2,U2,U1 IDOrdine
Data_Spedizione Descrizione_Metodo_Spedizione
FK1,I3,I2 IDMetodoSpedizione Spese_Spedizione
FK2,U2,U1 IDOrdine

Progettazione fisica