1.42k likes | 2.83k Views
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à.
E N D
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: • 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 • 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 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 • Le entità principali: • Cliente • Ordine • Prodotto • Le relazioni principali: • Acquisto • Composizione Progettazione concettuale
Approfondimento dell’entità “cliente” 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” 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” 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 Progettazione concettuale
Approfondimento dell’entità “ordine” 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à: 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” La spedizione di un ordine può essere effettuata con corriere o con corriere espresso. La generalizzazione è totale ed esclusiva. Un ordine può essere pagato con contrassegno, carta di credito o PayPal. Anche in questo caso la generalizzazione è totale ed esclusiva. Progettazione concettuale
Schema E-R finale Progettazione concettuale
Analisi delle entità Progettazione concettuale
Analisi delle entità Progettazione concettuale
Analisi delle entità Progettazione concettuale
Analisi delle entità Progettazione concettuale
Analisi delle entità Progettazione concettuale
Analisi delle entità Progettazione concettuale
Analisi delle relazioni e della cardinalità Progettazione concettuale
Analisi delle relazioni e della cardinalità Progettazione concettuale
Analisi delle relazioni e della cardinalità Progettazione concettuale
Analisi delle relazioni e della cardinalità Progettazione concettuale
Schema E-R finale con gli attributi Progettazione concettuale
Analisi delle prestazioni sullo schema E-R 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 Tavola delle operazioni Sono riportate le tipologie e la frequenza delle operazioni effettuate sulla base di dati. Progettazione logica * Evidenziate le operazioni più importanti che andremo ad analizzare
Analisi delle prestazioni sullo schema E-R Progettazione logica * Evidenziate le operazioni più importanti che andremo ad analizzare
Analisi delle prestazioni sullo schema E-R Inserimento dati cliente Tabella degli accessi Inserimento spedizione Tabella degli accessi Progettazione logica
Analisi delle prestazioni sullo schema E-R Inserimento ordine Tabella degli accessi Progettazione logica
Analisi delle prestazioni sullo schema E-R Aggiornamento ordine (contabilizzazione) Tabella degli accessi Restituire informazioni da visualizzare nella scheda prodotto Tabella degli accessi Progettazione logica
Analisi delle prestazioni sullo schema E-R Restituire i prodotti associati ad un ordine Tabella degli accessi Restituire tutti i prodotti presenti in una vetrina Tabella degli accessi Progettazione logica
Analisi delle prestazioni sullo schema E-R Restituire i prodotti associati ad un ordine Tabella degli accessi Restituire tutte le categorie presenti in un catalogo Tabella degli accessi Progettazione logica
Analisi delle ridondanze • 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
Analisi delle ridondanze Presenza di ridondanza Operazione 1 Costo operazione 1: 100 accessi in scrittura 400 accessi in lettura Costo operazione 2: trascurabile Operazione 2 Totale accessi (contando doppi gli accessi in scrittura): 600 accessi al giorno Progettazione logica
Analisi delle ridondanze Assenza di ridondanza Operazione 1 Costo operazione 1: 400 accessi in lettura 100 accessi in scrittura Costo operazione 2: 400 accessi in lettura Operazione 2 Totale accessi (contando 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 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 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 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”. Le due entità saranno in relazione 1-1 con coerenza tra identificatore primario. Progettazione logica
Partizionamento/accorpamento di concetti 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”. Le due entità saranno in relazione 1-1 con coerenza tra identificatore primario. Progettazione logica
Partizionamento/accorpamento di concetti Eliminazione degli attributi multivalore Eliminazione degli attributi composti Progettazione logica
Scelta degli identificatori principali Entità e Relationship molti a molti 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) con vincoli di integrità referenziale fra • IDOrdine in Composizione e la chiave di Ordine • IDProdotto in Composizione e la chiave di Prodotto Catalogo (IDCatalogo, Nome catalogo, Descrizione catalogo) Categoria (IDCategoria, Icona categoria, Nome categoria, Descrizione categpria) Tipo Categoria (IDCatalogo, IDCategoria) 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 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.) con vincoli di integrità referenziale fra • IDVetrina in Evidenza e la chiave di Vetrina • IDProdotto in Evidenza e la chiave di Prodotto 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 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 Rubrica indirizzi (IDIndirizzo, Indirizzo, Città, CAP, IDCliente) Cliente (IDCliente, Nome, Username, Password) • 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 Ordine (IDOrdine, Data di inserimento, IDCliente) Cliente (IDCliente, Nome, Username, Password) • 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 Progettazione logica
Scelta degli identificatori principali Entità e Relationship uno a molti Ordine (IDOrdine, Data di inserimento, IDStatusOrdine) Status ordine (IDStatusOrdine, Status ordine) • 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) • 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 Spedizione (IDSpedizione, Data spedizione, IDOrdine) Ordine (IDOrdine, Data di inserimento) con vincoli di integrità referenziale. Ammette valori nulli Pagamento (IDPagamento, Data pagamento, Importo pagamento, IDOrdine) Ordine (IDOrdine, Data di inserimento) con vincoli di integrità referenziale. Ammette valori nulli Cliente (IDCliente, Nome, Username, Password) Ordine (IDCliente, email, Telefono1, Telefono2, Indirizzo, Città, CAP) con vincoli di integrità referenziale. Ammette valori nulli 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) con vincoli di integrità referenziale, senza valori nulli Progettazione logica
Schema E-R ristrutturato Progettazione logica
Scelta degli indici Identifichiamo le tabelle non volatili nelle quali potremo valutare di inserire degli indici Nelle tabelle volatili non si inseriscono indici in quanto appesantirebbero le operazioni di input e update Progettazione fisica