Progettare una base di dati che permetta di gestire il problema descritto nel seguito, nei seguenti punti: 1. Definire uno schema Entità/Relazione che descriva il problema 2. Definire uno schema logico secondo il modello relazionale, derivato da una ristrutturazione, se necessaria, del diagramma E/R, esteso con gli eventuali vincoli necessari a garantire la consistenza della base di dati. Un negozio di elettrodomestici vende diversi prodotti, ciascuno dei quali ha alcune caratteristiche descrittive in comune con gli altri (prezzo di acquisto, marca, dimensioni, prezzo di vendita, data di vendita) ma, in funzione del tipo, ha anche caratteristiche specifiche. La base di dati deve quindi consentire di gestire diverse categorie di prodotti e, quindi, di associare loro le rispettive caratteristiche. Il negozio ha un solo fornitore per ogni componente (ma può comprare più componenti dallo stesso fornitore). Inoltre ha un’anagrafe clienti che permette di stabilire, a fine anno, l’importo di un buono acquisto da offrire in omaggio a ciascuno di essi, di valore pari al 2% del valore degli acquisti che quest’ultimo ha fatto durante l’anno.
Un negozio di elettrodomestici vende diversi prodotti, ciascuno dei quali ha alcune caratteristiche descrittive in comune con gli altri (prezzo di acquisto, marca, dimensioni, prezzo di vendita, data di vendita) ma ha anche caratteristiche specifiche. La base di dati deve quindi consentire di gestire diverse categorie di prodotti e, quindi, di associare loro le rispettive caratteristiche. Il negozio ha un solo fornitore per ogni prodotto (ma può comprare più prodotti dallo stesso fornitore). Inoltre ha un’anagrafe clienti che permette di stabilire, a fine anno, l’importo di un buono acquisto da offrire in omaggio a ciascuno di essi, di valore pari al 2% del valore degli acquisti che quest’ultimo ha fatto durante l’anno.
Entità Relazioni Cliente (1,N) L H P Vendita (1,N) Prodotto (1,N) Dati anag. Cliente (1,N) Prezzo vendita L H P Vendita Marca Modello Dim. (1,N) Prezzo listino Prodotto (1,N) Prezzo acquisto Fornitura (1,N) Fornitore Dati anag. Buono Acquisto Valore
Schema scheletro L H P (1,N) (1,N) Cliente Vendita Prodotto (1,N) Dati anag. Marca Modello Dim. Data Quantità (1,N) (1,N) Cliente Vendita Prodotto (1,N) (1,N) Prezzo vendita Prezzo acquisto Data Premio annuale Acquisto (1,1) Quantità Dati anag. (1,N) Valore Buono Acquisto Anno Fornitore N.B. La relazione Acquisto è di tipo molti a molti in quanto un prodotto può essere acquistato piu volte in date diverse. Esiste anche una relazione 1:N tra Prodotto e Fornitore, logicamente distinta dall’acquisto, che potrebbe ad es. chiamarsi “Fornitura”
Generalizzazioni L H P Prodotto Prodotto1 Prodotto2 ProdottoN ….. Marca Modello Dim. Prezzo listino Prodotto Prodotto1 Prodotto2 ProdottoN ….. C11 C12 C1n C21 C22 C2n CN1 CN2 CNn
Eliminazione generalizzazioni e attributi multivalore C.F. Nome ……….. Marca Modello L H P Cliente Prezzo listino Prodotto Codice P.I. Nome ……….. (1,N) Specifica Fornitore Valore (1,N) Caratteristica Nome
Buono Acquisto C.F. Nome ……….. Vendita Cliente Prodotto Valore Buono Acquisto Anno (1,1) Premio annuale Quantità Prezzo vendita Data (1,N) C.F. Nome ……….. Marca Modello L H P (1,N) Vendita (1,N) Prezzo listino Cliente Codice Prodotto Data Quantità (1,N) (1,N) P.I. Nome ……….. Acquisto Specifica (1,N) Valore Prezzo acquisto Fornitore (1,N) Caratteristica Nome
Schema logico Cliente(CF, Nome, Cognome, Indirizzo, ….) Fornitore(PI, Nome, Cognome, Indirizzo, ….) Prodotto(Codice, Marca, Modello, L, H, P, Prezzolistino, PI) Specifica(NomeCaratteristica, CodiceProd, Valore) Vendita(CodiceProd, CF, Prezzovendita, Quantità, Data) Acquisto(CodiceProd, PI, Prezzoacquisto, Quantità, Data) BuonoAcquisto(Valore, Anno, CF) Caratteristica(Nome) N.B. La tabella caratteristica è utile solo se si vuole imporre un vincolo di integrità referenziale fra Specifica.Nomecaratteristica e Caratteristica.Nome