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