università degli studi di Trieste corso di laurea triennale in ingegneria informatica progetto di un database per un negozio di videogiochi Negozio di videogiochi Si vuole realizzare un database per la gestione di un negozio di vendita videogiochi. I prodotti che il negozio vende sono videogiochi, console, alcune guide di giochi e svariati accessori per console e computer. I dipendenti che lavorano nel negozio al momento della vendita di un prodotto devono inserire il proprio codice personale. I dati del dipendente che servono sono codice dipendente, nome, cognome, il ruolo all’interno del negozio, sesso, indirizzo, telefono, e-mail. Il dipendente inoltre può vendere solo prodotti disponibili e non può vendere una quantità negativa o nulla. Le console possono essere portatili o per tv e ogni console possiede i suoi giochi. Di ogni gioco si vuole memorizzare il codice prodotto, il titolo, la casa produttrice, il prezzo, la trama, il genere, la console a cui fa riferimento, il supporto (se cd, dvd, ecc.), la quantità e l’ anno di produzione. Per ogni console si vogliono memorizzare i dati relativi al codice prodotto, nome, la versione, il prezzo, la casa produttrice e alla quantità. Per ogni accessorio si vuole memorizzare il codice prodotto, tipo (se joystick, joypad, ecc.), a quale modello si riferisce, il prezzo e la quantità. Il negozio ha diversi fornitori da cui può comprare. Per fornitore si intende una società. Per ciascun fornitore si vuole memorizzare il nome della sede, l’indirizzo della società, il numero di telefono,la città e lo stato in cui si trova. Per ciascuna guida al gioco si vuole memorizzare titolo, il prezzo, la sua quantità e a quale console si riferisce. La guida può far riferimento anche a più console. Glossario dei termini Termine Descrizione Sinonimi Collegamenti Videogioco Videogioco per console e per pc che il cliente può comprare Guida Guida pratica per la soluzione e i trucchi di un videogioco Dipendente, fornitore Accessorio Componente aggiuntivo ad una console o ad un computer Fornitore, dipendente Console Oggetto che permette di giocare ad un videogioco Fornitore Società che fornisce i prodotti al negozio Videogioco, console, guida, accessorio Dipendente Persona che lavora nel negozio Videogioco, console, guida, accessorio Gioco Modello Dipendente, fornitore Fornitore, dipendente Strutturazione dei requisiti Frasi di carattere generale •Si vuole realizzare un database per la gestione di un negozio di vendita videogiochi. •I prodotti che il negozio vende sono videogiochi, console, alcune guide di giochi e svariati accessori per console e computer. Frasi relative al dipendente •I dipendenti che lavorano nel negozio al momento della vendita di un prodotto devono inserire il proprio codice personale. •I dati del dipendente che servono sono codice dipendente, nome, cognome, il ruolo all’interno del negozio, sesso, indirizzo, telefono, e-mail. •Il dipendente inoltre può vendere solo prodotti disponibili. Frasi relative al fornitore •Il negozio ha diversi fornitori da cui può comprare. •Per fornitore si intende una società. •Per ciascun fornitore si vuole memorizzare il nome della sede, l’indirizzo della società, il numero di telefono,la città e lo stato in cui si trova. Frasi relative alla console •Le console possono essere portatili o per tv. •Ogni console possiede i suoi giochi. •Per ogni console si vogliono memorizzare i dati relativi al codice prodotto, al nome, la versione, il prezzo, la casa produttrice e la quantità. Frasi relative al videogioco •Di ogni gioco si vuole memorizzare il codice prodotto, il titolo, la casa produttrice, il prezzo, la trama, il genere, la console a cui fa riferimento, il supporto (se cd, dvd, ecc.), la quantità e l’ anno di produzione. Frasi relative all’ accessorio •Per ogni accessorio si vuole memorizzare il codice prodotto, il tipo (se joystick, joypad, ecc.), a quale console si riferisce, il prezzo, la quantità. Frasi relative alla guida •Per ciascuna guida al gioco si vuole memorizzare il titolo, il prezzo, la quantità e a quale console si riferisce. •La guida può far riferimento anche a più console. Operazioni sui dati 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Inserimento dati anagrafici di un fornitore e di un dipendente (circa 1 volta l’anno) Inserimento dati console, videogioco, accessorio e guida (circa 3 volte al mese) Modifica dati anagrafici di un fornitore e di un dipendente (circa 1 volta l’anno) Modifica dati console, videogioco, guida e accessorio (circa 2 volte al mese) Visualizzare tutti i dati di un fornitore (circa 2 volte al mese) Dato il titolo del videogioco visualizzare tutti i suoi dati (circa 50 volte al giorno) Dato il nome di una console visualizzare tutti i dati e tutte le versioni disponibili con i relativi prezzi e quantità disponibile (circa 1 volta al giorno) Dato il tipo di accessorio visualizzare tutti i dati e a che console si riferisce (circa 1 volta al giorno) Dato il titolo di una guida visualizzare tutti i suoi dati (circa 5 volte a settimana) Vendita di un videogioco, di una console, di una guida e di un accessorio inserendo il codice dipendente, la data in cui avviene la vendita e la quantità venduta (circa 50 volte al giorno) Classifica dei dipendenti visualizzando oltre i dati relativi al dipendente anche la quantità di videogiochi venduti tra due date (circa 1 volta al mese ) Classifica dei videogiochi in base alla quantità venduta tra due date (circa 1 volta alla settimana) Classifica delle console più vendute in un intervallo di date (circa 1 volta al mese) Classifica dei dipendenti visualizzando, oltre i dati del cliente, anche il fatturato di vendita dei videogiochi tra due date(1 volta al mese) PROGETTAZIONE CONCETTUALE Schema scheletro Strategia di progetto usata DIPENDENTE progettazione mista VENDITA •Suddivisione in sottoproblemi • Raffinamenti successivi VIDEOGIOCO CONSOLE FORNITURA FORNITORE GUIDA ACCESSORIO Diagrammi E R : raffinamento dell’entità videogioco Hanno un loro genere Fanno riferimento ad una casa produttrice Possono avere diversi supporti (cd, dvd, ecc.) Un videogioco è riferito ad una determinata console (es: resident evil 4 per playstation, wii ecc.) CASA PRODUTTRICE PRODUZIONE SUPPORTO TIPO SUPPORTO TIPO GENERE VIDEOGIOCO GENERE RIFERITO CONSOLE Di ogni videogioco si registrano il numero di serie, il titolo, il prezzo, la trama, la disponibilità e l’ anno di produzione. La disponibilità è intesa come quantità disponibile. Raffinamento dell’entità console: La console è prodotta da una casa produttrice CASA PRODUTTRICE PRODUZIONE → Per ogni console si conoscono i dati relativi al numero di serie, nome, il prezzo e la quantità. TIPO VERSIONE CONSOLE TV VERSIONE PORTATILE Una console può avere diversi tipi di versione (es: la playstation 2 versione ‘original’ e la playstation 2 versione ‘slim’) Si dividono in console portatile oppure in console per televisione Generalizzazione TOTALE ed ESCLUSIVA: una console può essere solo portatile o solo per tv, non può essere tutte e due. Raffinamento dell’entità guida e accessorio: CONSOLE ASSOCIATA GUIDA Una guida di videogiochi deve essere associata ad una console perché il cliente che richiede una particolare guida deve conoscere per che console è stata scritta. Di ciascuna guida al gioco si conosce il titolo, il prezzo e la quantità disponibile a magazzino. CONSOLE ASSOCIATO CA ACCESSORIO Un accessorio è associato ad una determinata console (per esempio presa scart per playstation 2). Raffinamento dell’entità fornitore e relazioni con videogioco, console, guida e accessorio VIDEOGIOCO CONSOLE GUIDA ACCESSORIO Il fornitore fornisce al negozio dei prodotti, quali videogiochi, console, guide e accessori. FORNITURA CITTA’ POSSIEDE SEDE Esistono diversi fornitori per i diversi prodotti del negozio. FORNITORE Dato un prodotto qualsiasi si può conoscere qual è il fornitore associato. STATO Per ciascun fornitore si conosce il nome della sede, l’indirizzo della società, il numero di telefono,la città e lo stato in cui si trova. Il fornitore, inteso come società, risiederà in una città precisa di uno stato. Per esempio, Tecnogroup s.p.a., Roma, Italia. L’entità dipendente e la relazione vendita dei prodotti VIDEOGIOCO CONSOLE GUIDA ACCESSORIO VENDITA I dati del dipendente che si conoscono sono il codice dipendente, il nome, il cognome, il ruolo che ha all’interno del negozio, il sesso, l’ indirizzo, il telefono e la e-mail. DIPENDENTE Il dipendente al momento della vendita deve inserire il suo codice personale per un eventuale identificazione successiva. Schema concettuale finale CASA PRODUTTRICE TIPO VERSIONE GENERE VERSIONE TIPO GENERE PRODUZIONE ASSOCIATA SUPPORTO TIPO SUPPORTO VIDEOGIOCO RIFERITO CONSOLE GUIDA ASSOCIATO CA TV PORTATILE ACCESSORIO FORNITURA VENDITA CITTA’ SEDE FORNITORE DIPENDENTE POSSIEDE STATO ANALISI DELLE ENTITA’ FORNITORE FornitoreID E’ il codice univoco che identifica il fornitore;è candidato ad essere chiave primaria dell’entità “fornitore”. Nome Definisce il nome del fornitore inteso come società – azienda. Telefono E’ il numero di telefono del fornitore. Attributo multivalore. Indirizzo E’ il sito dove si trova la società del fornitore. Attributo composto. CITTA’ CittàID E’ il codice univoco che identifica la città dove lavora il fornitore; è candidato ad essere chiave primaria dell’entità “città”. Nome Definisce il nome della città. STATO StatoID E’ il codice univoco che identifica lo stato dove si trova la città in cui lavora il fornitore; è candidato ad essere chiave primaria dell’entità “stato”. Nome Definisce il nome dello stato. VIDEOGIOCO VideogiocoID E’ il codice univoco che identifica il videogioco univocamente; è candidato ad essere chiave primaria dell’entità “videogioco”. Titolo E’ il titolo del videogioco. Trama Informazioni della storia del videogioco. Anno E’ l’anno in cui il videogioco è uscito in commercio. Prezzo Rappresenta il costo del videogioco. Quantità Rappresenta il numero di elementi presenti a magazzino. CASA PRODUTTRICE CasaprodID E’ il codice univoco che identifica la casa produttrice; è candidata ad essere chiave primaria dell’entità “casa produttrice”. Nome E’ il nome della casa produttrice. GENERE GenereID E’ il codice che identifica univocamente il genere; è candidata ad essere chiave primaria dell’entità “genere”. Nome E’ il genere di appartenenza di un videogioco; ad esempio sportivo, picchiaduro ecc. SUPPORTO SupportoID E’ il codice univoco che identifica il tipo di supporto;è candidata ad essere chiave primaria dell’entità “supporto”. Tipo Descrive il tipo di supporto (Dvd, Blue Rey ecc.) CONSOLE ConsoleID E’ il codice univoco che identifica la console; è candidata ad essere chiave primaria dell’entità “console”. Nome Definisce il nome della console. Quantità Rappresenta il numero di elementi presenti a magazzino. Prezzo Rappresenta il costo della console in euro. PORTATILE Nessun attributo. TV Nessun attributo. VERSIONE VersioneID E’ il codice univoco che identifica la versione di una console; è candidata ad essere chiave primaria dell’entità “versione”. Nome E’ il nome della versione di una console. Per esempio slim, original, ecc. DIPENDENTE DipendenteID E’ il codice univoco che identifica il dipendente del negozio; è candidato ad essere chiave primaria dell’entità “dipendente”. Nome E’ il nome proprio del dipendente. Cognome E’ il cognome del dipendente. Sesso Maschio o Femmina. Indirizzo E’ la residenza del dipendente. Attributo composto. Telefono E’ il numero di telefono del dipendente. Attributo multivalore. Email E’ l’indirizzo di posta elettronica del dipendente. Ruolo Rappresenta il ruolo all’interno del negozio (venditore, tecnico ecc.) Attributo multivalore. ACCESSORIO AccessorioID E’ il codice univoco che identifica l’accessorio; è candidato ad essere chiave primaria dell’entità “accessorio”. Prezzo E’ il costo dell’accessorio in euro. Quantità Rappresenta la quantità a magazzino dell’accessorio. Tipo Definisce la tipologia dell’accessorio. GUIDA GuidaID E’ il codice univoco che identifica la guida; è candidata ad essere chiave primaria dell’entità “guida”. Titolo E’ il titolo della guida. Prezzo E’ il costo in euro della guida. Quantità Rappresenta il numero di copie presenti in negozio della guida. ANALISI DELLE RELAZIONI E DELLA CARDINALITA’ POSSIDE Collega l’entità “stato” con l’entità “città”. Cardinalità UNO A MOLTI : una città può risiedere in un solo stato ma uno stato possiede più città. SEDE Collega l’entità “fornitore” con l’entità “città”. Rappresenta la città dove ha sede l’azienda fornitrice Cardinalità UNO A MOLTI : un fornitore ha sede in una sola città ma in quella città ci possono essere più fornitori. FORNITURA Collega l’entità “”fornitore” con le entità “videogioco”, con l’entità “console”, con l’entità “guida” e con l’entità “accessorio”. Relazione quinquennaria. Cardinalità MOLTI A MOLTI : un fornitore può fornire uno o più prodotti e un prodotto può essere fornito da uno o più fornitori. Data E’ la data in cui avviene la fornitura. Quantità E’ il numero di pezzi di un prodotto fornito. TIPO SUPPORTO Collega l’entità “supporto” con l’entità “videogioco”. Cardinalità UNO A MOLTI : un videogioco ha uno e uno solo tipo di supporto ma un tipo di supporto può essere associato a più videogiochi. TIPO GENERE Collega l’entità “videogioco” all’entità “genere”. Cardinalità UNO A MOLTI : ogni videogioco è assegnato ad un solo genere mentre un genere può essere associato a più videogiochi. PRODUZIONE Collega l’entità “casa produttrice” all’entità “videogioco” e all’entità “console”. Relazione ternaria. Cardinalità UNO A MOLTI : una casa produttrice produce uno o più videogiochi (oppure console) ma un videogioco (oppure una console) viene prodotta da una sola casa produttrice. RIFERITO Collega l’entità “videogioco” con l’entità “console”. Cardinalità MOLTI A MOLTI :un videogioco può fare riferimento a una o più console e una console può avere uno o più giochi. ASSOCIATA Collega l’entità “console” all’entità “guida”. Cardinalità MOLTI A MOLTI : una guida può far riferimento a una o più console e una console può essere associata a una o più guide. ASSOCIATO C – A Collega l’entità “console” all’entità “accessorio”. Cardinalità MOLTI A MOLTI : un tipo di accessorio può far riferimento ad una o più console e quella console può essere associata ad uno o più accessori. TIPO VERSIONE Collega l’entità “console” all’entità “versione”. Cardinalità MOLTI A MOLTI : una console può avere una o più versioni e una versione può riguardare una o più console. VENDITA Collega l’entità “dipendente” alle entità “videogioco”, “console”, “guida” e “accessorio”. Relazione quinquennaria. Cardinalità MOLTI A MOLTI : un dipendente può vendere uno o più prodotti e un prodotto può essere venduto da più dipendente. Data E’ la data in cui avviene una vendita. Quantità Rappresenta il numero di pezzi venduti. Business Rules Regole di vincolo (1) Il dipendente, al momento della vendita di un prodotto, deve inserire il proprio codice personale. (2) Il dipendente deve vendere solo prodotti disponibili. (3) Il dipendente non deve vendere una quantità nulla o negativa. Schema E R finale con attributi e cardinalità CasaprodID GenereID GENERE (1,N) TIPO GENERE (1,1) CASA PRODUTTRICE Nome Nome VersioneID (1,N) VideogiocoID Titolo PRODUZIONE Anno Trama Quantità (1,N) SupportoID SUPPORTO Tipo (1,1) TIPO SUPPORTO VERSIONE (1,N) Quantità Prezzo (1,1) (1,N) VIDEOGIOCO Nome (1,1) ConsoleID Nome Prezzo (1,N) TIPO VERSIONE (0,N) ASSOCIATA (1,N) (1,N) RIFERITO CONSOLE GUIDA (1,N) ASSOCIATO CA (1,N) GuidaID Titolo Prezzo Quantità TV ittàID PORTATILE (1,N) CITTA’ (1,N) SEDE Nome (1,N) (1,1) (1,N) FORNITURA (1,N) POSSIEDE ACCESSORIO (1,N) Data Quantità STATO (1,N) (1,N) (1,N) Data Nome StatoID VENDITA (1,N) (1,N) (1,N) (1,N) Indirizzo Telefono Nome FornitoreID DIPENDENTE Tipo FORNITORE Quantità (1,N) (1,1) Prezzo AccessorioID (1,N) Ruolo Email Telefono Indirizzo Sesso Cognome Nome DipendenteID PROGETTAZIONE LOGICA: tavola dei volumi Entità Concetto Volume Fornitore 20 Città 20 Stato 10 Dipendente 5 Accessorio 50 Videogioco 2000 Console 10 Guida 20 Supporti 10 Genere 10 Casa produttrice 1000 Versioni 20 Tv (Console) 6 Portatili (Console) 4 Concetto Volume Sede 20 Possiede 20 Fornitura 1080 Vendita 1080 Tipo supporto 2000 Tipo genere 2000 Produzione 1010 Riferito 2000 Tipo versione 10 Associata 20 Associato C A 50 Relazioni Nella tavola dei volumi vengono riportati tutti i concetti dello schema con il volume (numero di occorrenze) previsto a regime. Tavola delle operazioni Operazione Tipo Frequenza Inserimento dati anagrafici di un fornitore e di un dipendente I 1 / anno Inserimento dati console, videogioco, accessorio e guida I 3 / mese Modifica dati anagrafici di un fornitore e di un dipendente I 1 / anno Modifica dati console, videogioco, guida e accessorio I 2 / mese Visualizzare tutti i dati di un fornitore B 2 / mese Dato il titolo del videogioco visualizzare tutti i suoi dati B 50 / giorno Dato il nome di una console visualizzare tutti i dati e tutte le versioni disponibili con i relativi prezzi e quantità disponibile B 1 / giorno Dato il tipo di accessorio visualizzare tutti i dati e a che console si riferisce B 1 / giorno Dato il titolo di una guida visualizzare tutti i suoi dati B 5 / settimana Vendita di un videogioco I 50 / giorno Classifica dei dipendenti visualizzando oltre i dati relativi al dipendente anche la quantità di videogiochi venduti tra due date B 1 / mese Classifica dei videogiochi in base alla quantità venduta tra due date B 1 / settimana Classifica delle console più vendute in un intervallo di date B 1 / mese Classifica dei dipendenti visualizzando, oltre i dati del cliente, anche il fatturato di vendita dei videogiochi tra due date B 1 / mese Vendita di una console I 1 / giorno Vendita di una guida I 1 / giorno Vendita di un accessorio I 2 / settimana Schema di operazione – tavola degli accessi OPERAZIONE : Dato il titolo del videogioco visualizzare tutti i suoi dati CasaprodID GenereID (1,N) GENERE TIPO GENERE (1,1) CASA PRODUTTRICE Nome Nome (1,N) VideogiocoID Titolo Anno PRODUZIONE Trama Quantità Prezzo (1,N) SupportoID SUPPORTO Tipo (1,1) TIPO SUPPORTO ConsoleID Nome Quantità Prezzo (1,1) VIDEOGIOCO (1,N) (1,N) RIFERITO CONSOLE CONCETTO COSTRUTTO ACCESSI TIPO Videogioco Entità 1 Lettura Tipo supporto Relazione 2 Lettura Un titolo di videogioco in media ha 2 supporti perché è venduto per 2 console diverse Supporto Entità 2 Lettura Un titolo di videogioco ha un unico genere Tipo genere Relazione 1 Lettura Genere Entità 1 Lettura Riferito Relazione 2 Lettura Console Entità 2 Lettura Produzione Relazione 1 Lettura Casa produttrice Entità 1 Lettura In media un titolo di videogioco è venduto per 2 console. Un titolo di videogioco ha una sola casa produttrice Ristrutturazione dello schema E-R : Eliminazione delle generalizzazioni TIPO VERSIONE ConsoleID TIPO VERSIONE Nome Quantità Prezzo RIFERITO ASSOCIATA ConsoleID Nome Quantità Prezzo Portatile CONSOLE ASSOCIATO CA RIFERITO TV CONSOLE ASSOCIATA ASSOCIATO CA PORTATILE La gerarchia “console”-“tv”-“portatile”, non avendo i figli attributi specifici che li distinguono, viene risolta inglobando le entità figlie della generalizzazione nel padre, aggiungendo un attributo “portatile” che contraddistingue il tipo di console. Non ci sono relazioni che interessavano “tv” e “portatile” quindi la gerarchia rimane così. Ristrutturazione dello schema E-R : Partizionamento dell’entità videogioco VideogiocoID Titolo L’entità “videogioco” viene partizionata in due entità “dati videogioco” e “videogioco” separando così i suoi attributi che: 1. vengono acceduti da operazioni diverse 2. in fase di caricamento si presentano delle ridondanze di dati (si pensi che in media un videogioco è riferito a 2 console distinte). Anno ConsoleID Trama Nome Quantità Prezzo Quantità Prezzo VIDEOGIOCO (1,N) (1,N) RIFERITO CONSOLE Questo tipo di partizionamento si chiama ‘decomposizione verticale’ cioè si suddivide il concetto operando sui suoi attributi. Quantità Prezzo Trama Anno Titolo VideogiocoID CONSOLE RIFERITO DATI VIDEOGIOCO (1,N) DATI (1,1) (1,1) VIDEOGIOCO Soluzione: si decide di accorpare gli attributi “quantità” e “prezzo” nell’ entità “videogioco” e gli attributi “videogiocoID”, “titolo”, “”anno” e “trama” nell’entità “dati videogioco”. La chiave primaria dell’entità “videogioco” è una chiave composta dagli attributi “VideogiocoID” e “ConsoleID” che sono anche le due chiavi esterne della stessa entità. Ristrutturazione dello schema E-R : Partizionamento dell’entità console VersioneID (1,N) TIPO VERSIONE ConsoleID L’entità “console” viene partizionata in due entità “dati console” e “console” separando così i suoi attributi che vengono acceduti da operazioni diverse e presenterebbero ridondanza dati. Nome VERSIONE (1,N) Nome Quantità Prezzo Anche in questo caso si tratta di una ‘decomposizione verticale’. Nome VersioneID CONSOLE VERSIONE (1,N) Prezzo Nome TIPO VERSIONE (1,1) (1,N) DATI CONSOLE Quantità ConsoleID (1,1) DATI C CONSOLE Soluzione: si decide di accorpare gli attributi “quantità” e “prezzo” nell’ entità “console” e gli attributi “consoleID” e “nome” nell’entità “dati console”. La chiave primaria dell’entità “console” è composta da 2 attributi “ConsoleID” e “VersioneID” che sono anche chiave esterne per la stessa entità. Ristrutturazione dello schema E-R : Partizionamento dell’entità accessorio ConsoleID Nome Portatile CONSOLE (1,N) ASSOCIATO CA (1,N) L’entità “accessorio” viene partizionata in due entità “tipo accessorio” e “accessorio” separando così i suoi attributi che vengono acceduti da operazioni diverse e che presenterebbero ridondanza dati. ACCESSORIO Tipo Quantità Prezzo AccessorioID Anche in questo caso si tratta di una ‘decomposizione verticale’. AccessorioID Tipo TIPO ACCESSORIO (1,N) TIPO (1,1) ACCESSORIO TIPO Quantità Prezzo DATI CONSOLE Soluzione: si decide di accorpare gli attributi “quantità” e “prezzo” nell’ entità “accessorio” e gli attributi “accessorioID” e “tipo” nell’entità “tipo accessorio”. La chiave primaria dell’entità “accessorio” è composta da 2 attributi “AccessorioID” e “ConsoleID” che sono anche chiavi esterne per la stessa entità. Ristrutturazione dello schema E-R : Partizionamento delle relazioni vendita e fornitura FORNITURA Quantità La relazione “vendita” viene partizionata in quattro relazioni “vendita v”, “vendita g”,”vendita a” e “vendita c”. VENDITA Data DIPENDENTE La relazione “fornitura” viene partizionata in quattro relazioni “fornitura v”, “fornitura g”,”fornitura a” e “fornitura c”. Email FORNITORE VENDITA A Data FORNITURA V VENDITA G Data Quantità Data Data Data DIPENDENTE FORNITURA A Quantità FORNITURA C FORNITORE Data Quantità FORNITURA G Quantità Quantità Telefono Quantità Data Indirizzo VENDITA V Nome Il partizionamento della relazione è dovuto al fatto che nell’atto di inserimento a magazzino di un prodotto non si inserirà mai tutti i prodotti contemporaneamente e quindi ci sarebbe una grossa quantità di valori NULL. FornitoreID Telefono Indirizzo Sesso Cognome Nome DipendenteID Il partizionamento della relazione è dovuto al fatto che nell’atto di vendita non si venderà mai (o quasi mai) più prodotti contemporaneamente e quindi ci sarebbe una grossa quantità di valori NULL. Quantità VENDITA C (1,N) (1,1) Data Quantità Data Quantità Telefono Indirizzo Nome FornitoreID Email Telefono Indirizzo Sesso Cognome Nome DipendenteID Ristrutturazione dello schema E-R : attributi composti e multivalore Eliminazione degli attributi multivalore CONCETTO ATTRIBUTO SOLUZIONE ADOTTATA Dipendente (entità) Telefono Bisogna conoscere ALMENO un numero di telefono del dipendente. Tuttavia ai fini dell’applicazione può essere utile registrare anche solo due numeri di telefono; l’attributo “telefono” viene diviso in “cellulare” e “casa”, che diventano 2 attributi distinti dell’entità “dipendente”. Se 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 (per un dipendente fino a n numeri di telefono). Fornitore (entità) Telefono L’entità “fornitore” deve avere ALMENO un numero di telefono; poiché i numeri di telefono necessari ai fini dell’applicazione si suppone possano essere soltanto due (fisso e mobile), l’attributo viene diviso in due attributi semplici (“cellulare” e “aziendale”) che vengono accorpati all’entità “fornitore”; nel caso fosse necessario memorizzare più numeri di telefono, la ristrutturazione dell’attributo passa attraverso la definizione di un’ulteriore entità (telefono) e di una relazione uno a molti. Dipendente (entità) Ruolo Il dipendente possiede un ruolo all’interno del negozio e quel ruolo può essere associato ad uno o più dipendenti; la ristrutturazione dell’attributo passa attraverso la definizione di un’ulteriore entità (ruolo) e di una relazione uno a molti. Eliminazione degli attributi composti CONCETTO ATTRIBUTO SOLUZIONE ADOTTATA Dipendente (entità) Indirizzo L’ indirizzo del dipendente viene suddiviso nei seguenti attributi : • Via • Città • Provincia • Cap. Solo l’attributo “Via” viene accorpato nell’entità “Dipendente”; Gli attributi “Città”, “Provincia” e “Cap” vengono trasformati in 3 entità distinte per evitare ridondanze nell’entità “dipendente”. Fornitore (entità) Indirizzo L’indirizzo del fornitore viene suddiviso nei seguenti attributi che vengono accorpati nell’entità stessa: • Via • numero civico Ristrutturazione dello schema E-R : BUSINESS RULES REGOLE DI VINCOLO (1), (2) e (3) “Il dipendente non deve vendere una quantità nulla o negativa” “Il dipendente, al momento della vendita di un prodotto, deve inserire il proprio codice personale” “Il dipendente deve vendere solo prodotti disponibili” I VINCOLI DEVONO ESSERE RISPETTATI QUI : Non posso vendere un prodotto (in fase di vendita) se in ‘quantità’ è presente un valore non positivo! Il dipendente inserisce il proprio codice personale nelle tabelle di vendita. Quantità Data VENDITA V Quantità VENDITA A Data Data Quantità Data VENDITA G VENDITA C Quantità DIPENDENTE Non posso vendere un prodotto la cui quantità in magazzino è uguale a zero! Email Telefono Indirizzo Sesso Cognome Nome DipendenteID Scelta degli identificatori principali Nel modello relazionale gli identificatori principali (chiavi primarie) vengono usati per stabilire legami tra dati in relazioni diverse. Per ogni entità si è creato appositamente un identificatore che: non può contenere valori NULL perché, se così fosse, non garantirebbe l’accesso a tutte le occorrenze dell’entità corrispondente; in quanto identificatore, non può ripetersi all’interno dello stesso concetto; è un identificatore interno, cioè è costituito solo da attributi dell’entità stessa; è formato da un solo attributo (o al massimo 2), in modo da facilitare le operazioni di join e da ridurre le dimensioni degli indici. Schema E R ristrutturato GenereID CasaprodID GENERE CASA PRODUTTRICE Nome Nome (1,N) (1,N) ASSOCIATA (1,1) GUIDA (1,1) PRODUZIONE (1,N) Prezzo VERSIONE Quantità Prezzo GuidaID Titolo Quantità Prezzo Quantità Trama Titolo Anno VideogiocoID ConsoleID Nome Portatile (1,N) DATI VIDEOGIOCO SupportoID (1,N) SUPPORTO Tipo (1,1) DATI VIDEOGIOCO (1,1) (1,N) (1,N) RIFERITO (1,N) (1,1) (1,1) DATI CONSOLE DATI C CONSOLE TIPO VERSIONE (1,1) TIPO SUPPORTO Nome (1,N) TIPO GENERE VersioneID (1,1) AccessorioID Tipo (1,N) (1,1) ASSOCIATO CA (1,1) ACCESSORIO TIPO (1,N) TIPO ACCESSORIO (1,N) Quantità Data (1,N) FORNITURA A Data (1,N) (1,N) (1,N) Ora Data (1,N) FORNITURA C FORNITORE (1,N) Data Quantità (1,1) Aziendale SEDE Nome Cellulare (1,1) (1,N) CITTA’ VENDITA V (1,N) Ora Data Quantità (1,N) VENDITA A (1,N) Quantità Numero C Via Nome FornitoreID CittàID FORNITURA G (1,N) Quantità Data (1,N) Quantità Quantità Prezzo FORNITURA V (1,N) Ora Data Quantità (1,N) VENDITA C (1,N) ProvinciaID Data Ora DIPENDENTE PROVINCIA (1,N) VENDITA G Nome (1,1) Quantità (1,N) (1,1) (1,N) RUOLO Nome StatoID RuoloID Casa Email Cellulare STATO Sesso Cognome Nome DipendenteID TIPO RUOLO (1,N) POSSIEDE (1,N) RESIDENZA (1,1) CITTADIP CittaDipID Cap Provincia Città Via (1,1) Nome (1,1) CAP Tipo CapID Cap ASSOCIATA POSSIEDE tblCittaDip tblCAP PK PK CittaDipID FK1 Nome ProvinciaID tblDipendente CapID CAP DipendenteID FK1 FK2 Cognome Nome Sesso Via Citta Provincia Cap Cellulare Casa Email RuoloID CittaDipID tblRuolo PK RuoloID Tipo tblDipendenteVideogioco PK PK Data Ora FK1 FK2 FK2 DipendenteID VideogiocoID ConsoleID Quantita tblDipendenteConsole PK PK Data Ora FK1 FK2 FK2 DipendenteID ConsoleID VersioneID Quantita tblCasaProduttrice PK tblGenere PK CasaprodID PK ProvinciaID Nome tblDipendenteGuida PK PK Data Ora FK1 FK2 DipendenteID GuidaID Quantita tblDipendenteAccessorio tblDatiConsoleGuida PK,FK2 PK,FK1 PK PK Data Ora FK1 FK2 FK2 DipendenteID AccessorioID ConsoleID Quantita GuidaID ConsoleID tblDatiConsole PK ConsoleID FK1 Nome Portatile CasaprodID Nome GenereID tblProvinciaDip PK tblTipoAccessorio PK tblVersione PK VersioneID AccessorioID Tipo Nome Nome tblVideogioco tblDatiVideogioco PK FK1 FK2 VideogiocoID Titolo Anno Trama CasaprodID GenereID PK,FK1 PK,FK2 FK3 tblConsole VideogiocoID ConsoleID PK,FK1 PK,FK2 tblGuida PK GuidaID Prezzo Quantita Titolo Prezzo Quantità tblFornitoreConsole tblFornitoreGuida Prezzo Quantità SupportoID tblAccessorio PK,FK1 PK,FK2 ConsoleID AccessorioID Prezzo Quantita tblFornitoreAccessorio tblFornitoreVideogioco tblSupporto PK ConsoleID VersioneID SupportoID Tipo PK,FK2 PK,FK2 PK,FK1 PK VideogiocoID ConsoleID FornitoreID Data PK,FK2 PK,FK2 PK,FK1 PK ConsoleID VersioneID FornitoreID Data PK,FK1 PK,FK2 PK FornitoreID GuidaID Data Quantita Quantita Quantita tblFornitore tblCitta tblStato PK StatoID Nome PK CittaID FK1 Nome StatoID PK FornitoreID FK1 Nome Via NumeroCivico Cellulare Aziendale CittaID PK,FK2 PK,FK2 PK,FK1 PK AccessorioID ConsoleID FornitoreID Data Quantita Documentazione di schemi logici Esiste un vincolo di integrità referenziale tra l’attributo “SupportoID” della relazione “tblVideogioco” e l’attributo “SupportoID” della relazione “tblSupporto”. tblSupporto SupportoID Esiste un vincolo di integrità referenziale tra l’attributo “FornitoreID” delle relazione “tblFornitoreVideogioco” e l’attributo “FornitoreID” della relazione “tblFornitore”; Inoltre esiste un vincolo di integrità referenziale tra gli attributi “VideogiocoID” e “ConsoleID” della relazione “tblFornitoreVideogioco” e gli attributi “VideogiocoID” e “ConsoleID” della relazione “tblVideogioco”. Tipo tblVideogioco VideogiocoID ConsoleID Prezzo Quantita “VideogiocoID”, “ConsoleID” e “FornitoreID” della relazione “tblFornitoreVideogioco” non sono sufficienti a determinare una chiave primaria in quanto uno stesso videogioco può essere fornito da uno stesso fornitore nell’arco di un periodo si aggiunge l’attributo “Data” alla chiave primaria. SupportoID tblFornitoreVideogioco VideogiocoID ConsoleID FornitoreID Data Quantita tblFornitore FornitoreID Nome Via Numero civico tblCitta CiitaID Nome StatoID Cellulare Aziendale CittaID Esiste un vincolo di integrità referenziale tra l’attributo “CittaID” della relazione “tblFornitore” e l’attributo “CittaID” della relazione “tblCitta”. tblStato StatoID Nome Esiste un vincolo di integrità referenziale tra l’attributo “StatoID” della relazione “tblCitta” e l’attributo “StatoID” della relazione “tblStato”.