Università degli studi di Urbino C.d.L : Informatica Applicata Anno Accademico : 2007/ : FastResearch :. Gestionale per Negozio Informatico

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Università degli studi di Urbino C.d.L : Informatica Applicata Anno Accademico : 2007/2008. .: FastResearch :. Gestionale per Negozio Informatico"

Transcript

1 Università degli studi di Urbino C.d.L : Informatica Applicata Anno Accademico : 2007/2008.: FastResearch :. Gestionale per Negozio Informatico..: Realizzato da Giorgio Rosolia Mat :.. Corso: Basi di Dati e Sistemi Informativi Docente : dott. Alessandro Aldini

2 1. Analisi dei Requisiti 1a. Requisiti espressi in linguaggio naturale: Si vuol realizzare una base di dati per la gestione delle vendite di computer portatili e dei relativi accessori per l upgrade. Il negozio oltre alla vendita di questi prodotti, offre anche vari servizi. Il database dovrà permettere la gestione e l organizzazione dei prodotti, dei clienti e degli ordini, conterrà quindi, varie informazioni riguardanti i clienti, i dati tecnici dei portatili e dei componenti, la descrizione dei servizi offerti, tutte le informazioni riguardanti gli eventuali ordini associati ai clienti. Sarà inoltre possibile associare ad ogni prodotto un grossista e ad ogni grossista i relativi corrieri utilizzati. Quindi il database non permetterà di creare ordini ai grossisti ma solo di accedere ad eventuali informazioni relative a corrieri e grossisti associati ai prodotti. I grossisti avranno un codice, nome, sede, n di telefono, ; I corrieri un codice, un nome, n di telefono, sede, orari di apertura. Gli ordini dei clienti saranno formati quindi da uno o più prodotti e/o da uno o più servizi. I servizi offerti dal negozio sono: il recupero dati, la formattazione e l installazione di sistemi operativi ad infine l assemblaggio dei componenti per l upgrade. I servizi saranno caratterizzati quindi da un Codice servizio, da una descrizione e da un prezzo. I prodotti saranno divisi in notebook e componenti per l upgrade quali: HDD e RAM. Ogni prodotto dovrà essere caratterizzato da un codice, nome, marca, prezzo, quantità, ecc... I dati tecnici importanti per i notebook sono: schermo (in pollici), cpu, ram(in Gb), hdd (in Gb), scheda grafica. I dati tecnici per gli HDD sono: capacità, velocità di rotazione, interfaccia. Mentre per le RAM possono essere: interfaccia, frequenza operativa, capacità. Gli ordini sono caratterizzati da una data, dal prezzo totale e da una quantità riferita ai singoli prodotti, nel caso si tratta di servizi la quantità si riferirà al numero di ore di manodopera. I Clienti saranno differenziati dal codice fiscale, sarà possibile accedere a informazioni del tipo: nome, cognome, data di nascita, indirizzo, n di telefono. Si potranno quindi inserire ogni tipologia di prodotto, aggiungere nuovi grossisti e nuovi clienti e inserire nuovi ordini, nonché effettuare operazioni di interrogazioni più comuni e utili. 1b. Operazioni importanti da effettuare nel database: 1. Inserimento di un nuovo ordine associato ad un cliente non presente nell archivio, composto da prodotti e/o servizi già presenti in archivio. (si dovrà vedere se il prodotto è disponibile) (WRITE 15 volte al giorno) 2. Inserimento di un nuovo prodotto con tutte le relative caratteristiche tecniche, associato ad un grossista già presente nell archivio. (WRITE 2 volte al giorno) 3. Inserimento di un nuovo grossista con i relativi dati, associato ad un corriere già presente in archivio. (READ 10 volte all anno) 4. Ricerca di tutti i prodotti disponibili in ordine alfabetico, appartenenti ad una specifica categoria, visualizzando Codice Prodotto, Nome, Marca, Quantità in magazzino, Prezzo, e gli attributi corrispondenti alla categoria selezionata. (READ 20 volte al giorno) - 2 -

3 5. Ricerca di uno specifico corriere visualizzando nome, numero di telefono e orari di apertura. (READ 5 volte al mese) 6. Ricerca di tutti i grossisti che utilizzano un determinato corriere visualizzando il nome, il telefono e l del grossista. (READ 10 volte al mese) 7. Ricerca tutti i prodotti non disponibili, visualizzando il codice, la categoria, il nome, la marca e il prezzo del prodotto, il nome, il telefono e l del grossista ad esso associato, ordinati in ordine alfabetico sulla categoria di appartenenza. (READ 5 volte al mese) 8. Ricerca di tutti i prodotti ordinati da un cliente, visualizzando Codice, Categoria, Nome, Marca, Prezzo del/i prodotto/i, data di acquisto dell articolo e Quantità ordinata. La lista degli articoli dovrà essere ordinata dal più recente al meno recente. (READ 1 volta alla settimana) 9. Ricerca di tutti i clienti che hanno ordinato un prodotto di una certa marca dopo una determinata data, visualizzando nome, cognome e telefono del cliente, data dell ordine, codice e nome del prodotto. (READ 2 volte al mese) 10. Visualizza tutti gli ordini dell ultimo mese il cui totale sia maggiore della media di tutti i totali, visualizzando il codice ed il totale dell ordine, nome e cognome del cliente che lo ha effettuato. Ordinati in ordine decrescente sul totale dell ordine. (READ 2 volte al mese) 11. Top ten dei clienti più affezionati (clienti che hanno speso di più). Visualizzando Nome, Cognome e la spesa Totale. (READ 1 volte al mese) 12. Visualizza i 10 prodotti più richiesti ordinati in modo decrescente, visualizzando numero di ordinazioni, Codice, nome, marca e prezzo del prodotto. (READ 8 volte al mese) - 3 -

4 1c. Glossario dei termini: Termini Descrizione Sinonimi Collegamenti Cliente Colui che effettua un - Ordine ordine nel negozio Prodotto Categoria generale che comprende Notebook - Ordine - Notebook - Componenti e Componenti Servizi Si riferisce ai servizi - Clienti - Ordine erogati dal negozio nei confronti dei clienti Componenti Particolare categoria di Accessori Prodotto Prodotti Notebook Particolare categoria di Computer portatili Prodotto Prodotti Ordine Contiene tutti i - Prodotto - Cliente prodotti e/o servizi ordinati da un cliente Grossista Azienda che fornisce - Prodotto - Corriere prodotti Corriere Servizio di spedizioni - Grossista usato dai grossisti HDD Particolare categoria di - Componenti Componenti RAM Particolare categoria di Componenti - Componenti 1d. Rilevamento e correzione delle ambiguità: Linea Termine Nuovo Termine Motivo correzione 1 Computer Portatili Notebook Sinonimo per Computer portatili in linea 13 2 Accessori Componenti Componenti è più specifico 6 Portatili Notebook Sinonimo per Portatili in linea Codice Codice Prodotto Codice prodotto è più specifico 18 Capacità Capacità_hdd Capacità_hdd è più specifico 19 Capacità Capacità_ram Capacità_ram è più specifico 21 Quantità Quantità ordinata Quantità ordinata è più specifico 16 Quantità Quantità magazzino Quantità magazzino è più specifico - 4 -

5 1e. Testo dopo la correzione delle ambiguità: Si vuol realizzare una base di dati per la gestione delle vendite di notebook e dei relativi componenti per l upgrade. Il negozio oltre alla vendita di questi prodotti, offre anche vari servizi. Il database dovrà permettere la gestione e l organizzazione dei prodotti, dei clienti e degli ordini, conterrà quindi, varie informazioni riguardanti i clienti, i dati tecnici dei notebook e dei componenti, la descrizione dei servizi offerti, tutte le informazioni riguardanti gli eventuali ordini associati ai clienti. Sarà inoltre possibile associare ad ogni prodotto un grossista e ad ogni grossista i relativi corrieri utilizzati. Quindi il database non permetterà di creare ordini ai grossisti ma solo di accedere ad eventuali informazioni relative a corrieri e grossisti associati ai prodotti. I grossisti avranno un codice, nome, sede, n di telefono, ; I corrieri un codice, un nome, n di telefono, sede, orari di apertura. Gli ordini dei clienti saranno formati quindi da uno o più prodotti e/o da uno o più servizi. I servizi offerti dal negozio sono: il recupero dati, la formattazione e l installazione di sistemi operativi ad infine l assemblaggio dei componenti per l upgrade. I servizi saranno caratterizzati quindi da un Codice servizio, da una descrizione e da un prezzo. I prodotti saranno divisi in notebook e componenti per l upgrade quali : HDD e RAM. Ogni prodotto dovrà essere caratterizzato da un codice prodotto, nome, marca, prezzo, quantità ordinata, ecc... I dati tecnici importanti per i notebook sono: schermo (in pollici), cpu, ram(gb), hdd (in Gb), scheda grafica. I dati tecnici per gli HDD sono : capacità_hdd, velocità di rotazione, interfaccia. Mentre per le RAM possono essere: interfaccia, frequenza operativa, capacità_ram. Gli ordini sono caratterizzati da una data, dal prezzo totale e da una quantità magazzino riferita ai singoli prodotti, nel caso si tratti di servizi la quantità si riferirà al numero di ore di manodopera. I Clienti saranno differenziati dal codice fiscale, sarà possibile accedere a informazioni del tipo: nome, cognome, data di nascita, indirizzo, n di telefono. Si potranno quindi inserire ogni tipologia di prodotto, aggiungere nuovi grossisti e nuovi clienti e inserire nuovi ordini, nonché effettuare operazioni di interrogazioni più comuni e utili. 1f. Filtraggio dei concetti fondamentali: Frasi Generali Si vuol realizzare una base di dati per la gestione delle vendite di notebook e dei relativi componenti per l upgrade. Il negozio oltre alla vendita di questi prodotti, offre anche vari servizi. Il database dovrà permettere la gestione e l organizzazione dei prodotti, dei clienti e degli ordini, conterrà quindi, varie informazioni riguardanti i clienti, i dati tecnici dei notebook e dei componenti, la descrizione dei servizi offerti, tutte le informazioni riguardanti gli eventuali ordini associati ai clienti. Sarà inoltre possibile associare ad ogni prodotto un grossista e ad ogni grossista i relativi corrieri utilizzati. Frasi relative ai Prodotti I prodotti saranno divisi in notebook e componenti per l upgrade quali : HDD e RAM. Ogni prodotto dovrà essere caratterizzato da un codice prodotto, nome, marca, prezzo, quantità, ecc... Frasi relative ai notebook I dati tecnici importanti per i notebook sono: schermo (in pollici), cpu, ram(in Gb), hdd (in Gb), scheda grafica. Frasi relative ad HDD e RAM I dati tecnici per gli HDD sono : capacità_hdd, velocità di rotazione, interfaccia. Mentre per le RAM possono essere: interfaccia, frequenza operativa, capacità_ram

6 Frasi relative ai Servizi I servizi offerti dal negozio sono: il recupero dati, la formattazione e l installazione di sistemi operativi ad infine l assemblaggio dei componenti per l upgrade. I servizi saranno caratterizzati quindi da un Codici servizio, da una descrizione e da un prezzo. Frasi relative ai Clienti I Clienti saranno differenziati dal codice fiscale, e sarà possibile accedere a informazioni del tipo: nome, cognome, data di nascita, indirizzo, n di telefono. Frasi relative ad Ordini di prodotti e servizi Gli ordini dei clienti saranno formati quindi da uno o più prodotti e/o da uno o più servizi. Gli ordini sono caratterizzati da una data, dal prezzo totale e da una quantità magazzino riferita ai singoli prodotti, nel caso si tratti di servizi la quantità si riferirà al numero di ore di manodopera. Frasi relative ai Grossisti Quindi il database non permetterà di creare ordini ai grossisti ma solo di accedere ad eventuali informazioni relative a corrieri e grossisti associati ai prodotti. I grossisti avranno un codice, nome, sede, n di telefono, . Frasi relative ai Corrieri I corrieri avranno un codice, un nome, n di telefono, sede, orari di apertura. 2. Progettazione concettuale 2a. Strategie di progetto La strategia di progetto che è stata scelta è la strategia mista, la quale si sviluppa tramite metodi Top Down e Bottom Up. Viene introdotto inizialmente uno schema scheletro composto dalle entità fondamentali ORDINE e CLIENTE legate dall associazione EFFETTUA. Questi sono i concetti principali di questa applicazione, che verranno poi approfonditi. Si arriverà ad ottenere infine lo schema concettuale finale. 2b. Schema scheletro Sono rappresentati i concetti principali dell applicazione, composti da due entità fondamentali, ORDINE e CLIENTE, legate dall associazione RICHIESTA. La cardinalità (0,N) tra clienti e ordini indica che un cliente può fare da 0 ad N ordini (questo significa che è possibile inserire un cliente nell anagrafica anche se non ha effettuato ordini). La cardinalità (1,1) tra ordini e clienti indica che un ordine è associato ad uno ed un solo cliente. Passiamo ora allo sviluppo dei vari schemi parziali, raffinando lo schema scheletro

7 2c. Schemi concettuali parziali Partendo dallo schema precedente, iniziamo ad analizzare le due entità: - CLIENTE L entità Cliente secondo le specifiche dovrà avere come attributi: Codice Fiscale, nome, cognome, data di nascita indirizzo e telefono (supponiamo quest ultimo unico e quindi con una cardinalità 1,1). Questi saranno considerati come un attributo composto chiamato Dati anagrafici. Lo stesso attributo Indirizzo sarà un attributo composto, i cui attributi semplici saranno: Città, Via, Numero_civico e CAP. Il Codice Fiscale (CF), permetterà di distinguere in modo univoco ogni cliente. - ORDINE L ordine dovrà avere come attributo la data in cui è stato fatto ed il prezzo totale: Data_Ordine e Totale. Inoltre avrà un attributo che lo identifica univocamente : IDOrdine. Questo perché, si suppone che il cliente possa effettuare più ordini nello stesso giorno, altrimenti avremmo usato un identificatore composto e misto (attributo: Data_Ordine; entità: Cliente). Dato che un ordine può avere uno o più prodotti e/o uno o più servizi ad esso associati (indicato appunto dalla cardinalità (1,n) vicino a ordine), introduciamo l entità PRODOTTI e l entità SERVIZI e le colleghiamo all entità ORDINE tramite una associazione n-aria che chiameremo COMPOSIZIONE. L attributo Quantità_ordinata da inserire nell associazione COMPOSIZIONE indica appunto quanti prodotti dello stesso articolo sono stati ordinati, mentre riferito ai servizi, indicherà il numero di ore impiegate per il servizio richiesto. La cardinalità (0,n) vicino a servizi e vicino a prodotti sta ad indicare che più servizi e/o prodotti possono appartenere ad un ordine e inoltre, questo significa che è possibile inserire un servizio e/o prodotto nell anagrafica anche se non compare in un ordine. I servizi come da specifica devono avere i seguenti attributi: IDServizio, Descrizione, Prezzo. I prodotti, sempre seguendo le specifiche, avranno: Codice_Prodotto, Nome, Marca, Descrizione, Quantità_magazzino e Prezzo. Ovviamente IDservizio sarà identificatore univoco per l entità Servizi e Codice_Prodotto lo sarà per Prodotti

8 SCHEMA PARZIALE 1 I Prodotti sono suddivisi in NOTEBOOK e COMPONENTI UPGRADE. Creiamo quindi una generalizzazione della classe base. I NOTEBOOK seguendo le specifiche sono caratterizzati oltre che dagli attributi ereditati da Prodotto, anche da attributi specifici dei notebook quali: schermo, cpu, cap_ram, cap_hdd, scheda grafica. Per quanto riguarda COMPONENTI UPGRADE, anch essa può essere ulteriormente specializzata in due categorie, gli HDD e le RAM. Introducendo però, gli attributi Capacità e Interfaccia, comuni alle due categorie. Gli hdd avranno in più, l attributo Velocità_Rotazione, le ram l attributo Frequenza

9 SCHEMA PARZIALE 2: Dalle specifiche si può notare che una ulteriore implementazione riguarda i grossisti ed i corrieri. Gli attributi associati a CORRIERI devono essere: IDCorriere, nome, telefono, sede, orari. L IDcorriere rappresenta l identificatore univoco per i corrieri, la sede si suppone essere unica, in quanto si immetterà la sede più vicina, in relazione a dove è situato il negozio che farà uso di questa basi di dati. La cardinalità (0,n) indica che un corriere può essere immesso in archivio anche se non è associato a nessun grossista. Gli attributi associati a GROSSISTI devono essere: IDgrossista, nome, sede, telefono, . L IDgrossista, rappresenta l identificatore uniovoco per i grossisti, e per l attributo sede valgono le stesse considerazioni fatte per l omonimo attributo dei CORRIERI. La cardinalità (0,n) indica che i grossisti possono anche non utilizzare alcun corriere oppure ne possono utilizzare più di uno. Per quanto riguarda le cardinalità riferite a grossisti e prodotti troviamo uno (0,n) dalla parte dei grossisti perché ci possono essere in archivio grossisti che non forniscono nessun prodotto oppure grossisti che forniscono più prodotti. Troviamo (1,1) dalla parte dei prodotti perché ogni prodotto deve avere uno solo grossista ad esso associato. Di conseguenza non sarà possibile immettere un nuovo prodotto senza specificare da quale grossista viene fornito

10 INTEGRAZIONE DI SCHEMI

11 2f. Dizionario dei dati Entità: Nome Entità Descrizione Attributi Identificatore CLIENTE Colui che effettua degli ordini CF (stringa a 16 caratteri) Dati anagrafici: - Nome (stringa a 15 caratteri) - Cognome (stringa a 15 caratteri) - Data_nascita (stringa a 10 caratteri) - Telefono (numero a 10 cifre) - Indirizzo: o Città (stringa a 30 caratteri) o Via (stringa a 30 caratteri) o Numero_civico (numerico a 4 cifre) CF ORDINE SERVIZI PRODOTTI NOTEBOOK COMPONENTI UPGRADE HDD RAM GROSSISTI CORRIERI Ordini che si trovano in tabella, effettuati dai clienti Servizi offerti dal negozio Prodotti che si trovano in tabella Particolare categoria di prodotti Particolare categoria di prodotti Particolare categoria di componenti upgrade Particolare categoria di componenti upgrade Grossisti che si trovano in tabella Corrieri che si trovano in tabella o CAP (numerico a 5 cifre) IDOrdine (numerico a 6 cifre) Data_ordine (stringa a 10 caratteri Totale (numerico a 5 cifre) IDServizio (numerico a 3 cifre) Descrizione (stringa a 64 caratteri) Prezzo (numerico a 3 cifre) Codice_Prodotto(numerico a 6 cifre) Nome (stringa a 70 caratteri) Marca (stringa a 30 caratteri) Quantità_magazzino (numerico a 3 cifre) Prezzo (numerico a 5 cifre) Schermo (numerico a 2 cifre) CPU (stringa a 70 caratteri) Cap_HDD(stringa a 10 caratteri) Cap_RAM(stringa a 10 caratteri) Scheda_Grafica(stringa a 30 caratteri) Capacità(stringa a 10 caratteri) Interfaccia(stringa a 5 caratteri) Velocità_Rotazione(stringa a 10 caratteri) Frequenza(stringa a 10 caratteri) IDGrossista(numerico a 2 cifre) Nome(stringa a 30 caratteri) Sede(stringa a 64 caratteri) (stringa a 64 caratteri) Telefono(numerico a 10 cifre) IDCorriere(numerico a 2 cifre) Nome(stringa a 30 caratteri) Sede(stringa a 64 caratteri) Telefono(numerico a 10 cifre) Orari(stringa a 40 caratteri) IDOrdine IDServizio Codice_Prodotto Nessuno, perché è un entità figlia Nessuno, perché è un entità figlia Nessuno, perché è un entità figlia Nessuno, perché è un entità figlia IDGrossista IDCorriere

12 Relazioni: Nome relazione Descrizione Entità coinvolte Attributi RICHIESTA Associa ad un ordine un certo cliente che lo ha richiesto CLIENTE, ORDINE - COMPOSIZIONE FORNITURA UTILIZZA Associa ad un ordine i prodotti ed i servizi che lo compongono Associa ad un prodotto un grossista che lo fornisce Associa ad un grossista i corrieri utilizzati ORDINE, SERVIZI, PRODOTTI PRODOTTI, GROSSISTI GROSSISTI, CORRIERI Quantità_ordinata (numerico a 2 cifre) Ristrutturazione dello Schema Concettuale 3a. Tavola delle operazioni Operazione Op. 1 Op. 2 Op. 3 Op. 4 Op. 5 Op. 6 Op. 7 Op. 8 Op. 9 Op. 10 Op. 11 Op. 12 Frequenza 15 volte al giorno 450 volte al mese 2 volte al giorno 60 volte al mese 10 volte l anno 1 volte al mese 20 volte al giorno 600 volte al mese 5 volte al mese 10 volte al mese 5 volte al mese 1 volta alla settimana 4 volte al mese 2 volte al mese 2 volte al mese 1 volta al mese 8 volte al mese 3b. Tavola dei volumi Nome Tipo Volume Cliente E 500 Ordine E 10_000 Servizi E 20 Prodotti E 500 Notebook E 300 Componenti Upgrade E 200 HDD E 100 RAM E 100 Grossisti E 10 Corrieri E 10 Richiesta R 10_

13 Composizione R 30_000 Fornitura R 500 Utilizza R 30 La relazione richiesta ha un volume pari al numero degli ordini in quanto la cardinalità ci indica che un ordine è composto da un solo cliente. Assumendo che un ordine è composto in media da tre prodotti e/o servizi, la relazione composizione avrà un volume dati pari a 30_000 (10_000*3). La relazione fornitura ha un volume pari al numero di prodotti in quanto la cardinalità ci indica che un prodotto è associato ad un solo fornitore. Assumendo che un grossista si avvale in media di 3 fornitori, il volume della relazione utilizza sarà di 30 (10*3). 3c. Costo delle operazioni e schemi di navigazione - Assumiamo il costo di una scrittura (W) uguale a quello di una lettura(r) Operazione 1 Inserimento di un nuovo ordine associato ad un cliente non presente nell archivio, composto da prodotti e/o servizi già presenti in archivio, (si dovrà vedere se il prodotto è disponibile). Supponiamo di inserire un ordine formato da due prodotti e da un solo servizio Questa operazione dovrà svolgersi in due fasi. Nella prima fase si verifica la disponibilità dei due prodotto richiesti. Nella seconda fase che dovrà essere eseguita solo se il prodotto è disponibile si inserirà l ordine e si aggiornerà la quantità del prodotto in magazzino

14 Fase 1 Concetto Costrutto Accessi Tipo Op. Prodotto Entità 2 R Costo Operazione 2R=2 Totale Costo (Fase 1) 2 * 450 = 900 Ovviamente il controllo della disponibilità riguarda solo i prodotti. I Servizi risultano essere sempre disponibili (infatti non ho inserito nessun attributo che lo specifica). In questa fase si calcolano due accessi all entità Prodotto come da ipotesi. Fase 2 Concetto Costrutto Accessi Tipo Op. Cliente Entità 1 W Richiesta Relazione 1 W Ordine Entità 1 W Composizione Relazione 3 W Prodotto Entità 1 R Servizio Entità 1 R Costo Operazione 6W+2R=8 Totale Costo (Fase 2) 8 * 450 = 3600 Gli accessi alla relazione Composizione sono tre perché un ordine in media può avere tre prodotti e/o servizi, in questo caso abbiamo due prodotti ed un servizio. In totale i costi sono i seguenti: Totale Costo (Fase 1 + Fase 2) =

15 Operazione 2 Inserimento di un nuovo prodotto con tutte le relative caratteristiche tecniche, associato ad un grossista già presente nell archivio. Supponiamo di inserire un notebook, non essendo possibile inserire un prodotto generico perché la generalizzazione dei prodotti è completa. Concetto Costrutto Accessi Tipo Op. Prodotto Entità 1 W Notebook Entità 1 W Grossisti Entità 1 R Fornitura Relazione 1 W Costo Operazione 3W+1R=4 Totale Costo 4 * 60 = 240 Operazione 3 Inserimento di un nuovo grossista con i relativi dati, associato ad un corriere già presente in archivio. Concetto Costrutto Accessi Tipo Op. Grossisti Entità 1 W Corrieri Entità 1 R Utilizza Relazione 3 W Costo Operazione 2W+3R=5 Totale Costo 5 * 1 =

16 Operazione 4 Ricerca di tutti i prodotti disponibili in ordine alfabetico, appartenenti ad una specifica categoria, visualizzando Codice Prodotto, Nome, Marca, Quantità in magazzino, Prezzo, e gli attributi corrispondenti alla categoria selezionata. Supponiamo di voler trovare i prodotti appartenenti alla categoria:ram, e che tutti risultino disponibili. Concetto Costrutto Accessi Tipo Op. Prodotto Entità 100 R Componenti Upgrade Entità 1 R RAM Entità 1 R Costo Operazione 1R+1R+100=102 Totale Costo 102 * 600 = Operazione 5 Ricerca di uno specifico corriere visualizzando nome, numero di telefono e orari di apertura. Concetto Costrutto Accessi Tipo Op. Corrieri Entità 1 R Costo Operazione 1R=1 Totale Costo 1 * 5 =

17 Operazione 6 Ricerca di tutti i grossisti che utilizzano un determinato corriere visualizzando il nome, il telefono e l del grossista. Concetto Costrutto Accessi Tipo Op. Corrieri Entità 1 R Utilizza Relazione 3 R Grossisti Entità 3 R Costo Operazione 1R+3R+3R=7 Totale Costo 7 * 10 = 70 Operazione 7 Ricerca tutti i prodotti non disponibili, visualizzando il codice, la categoria, il nome, la marca e il prezzo del prodotto, il nome, il telefono e l del grossista ad esso associato, ordinati in ordine alfabetico sulla categoria di appartenenza. Supponendo che al mese avremo in media 10 prodotti non disponibili, i costi saranno i seguenti: Concetto Costrutto Accessi Tipo Op. Prodotti Entità 500 R Fornitura Relazione 10 R Grossisti Entità 10 R Costo Operazione 500R+10R+10R=520 Totale Costo 520 * 5 =

18 Operazione 8 Ricerca di tutti i prodotti ordinati da un cliente, visualizzando Codice, Categoria, Nome, Marca, Prezzo del/i prodotto/i, data di acquisto dell articolo e Quantità ordinata. La lista degli articoli dovrà essere ordinata dal più recente al meno recente. Supponendo che nel caso pessimo, tutti gli ordini fatti dal cliente presentano solo prodotti e non servizi, il costo totale sarà il seguente: Concetto Costrutto Accessi Tipo Op. Cliente Entità 1 R Richiesta Relazione 20 R Ordine Entità 20 R Composizione Relazione 60 R Prodotto Entità 60 R Costo Operazione 1R+20R+20R+60R+60R= 161 Totale Costo 161 * 4 =

19 Operazione 9 Ricerca di tutti i clienti che hanno ordinato un prodotto di una certa marca dopo una determinata data, visualizzando nome, cognome e telefono del cliente, data dell ordine, codice e nome del prodotto. Supponendo che ci siano 100 prodotti di una stessa marca, avremo i seguenti costi: Concetto Costrutto Accessi Tipo Op. Prodotto Entità 100 R Composizione Relazione 6000 R Ordine Entità 2000 R Richiesta Relazione 2000 R Cliente Entità 100 R Costo Operazione 100R+6000R+2000R+2000R+100R= Totale Costo * 2 =

20 Operazione 10 Visualizza tutti gli ordini dell ultimo mese il cui totale sia maggiore della media di tutti i totali, visualizzando il codice ed il totale dell ordine, nome e cognome del cliente che lo ha effettuato. Ordinati in ordine decrescente sul totale dell ordine. Questa operazione si dovrà svolgere in due fasi. La prima fase si occuperà di ricavare la media del totale di tutti gli ordini. La seconda fase ricercherà gli ordini superiori alla media. FASE 1: Calcolo della media dei Totali di tutti gi ordini Concetto Costrutto Accessi Tipo Op. Ordine Entità R Totale Costo * 2 = FASE 2: Concetto Costrutto Accessi Tipo Op. Ordine Entità R Richiesta Relazione R Cliente Entità 500 R Costo Operazione 10000R+10000R+500R= Totale Costo * 2 = Totale Costo (Fase 1 + Fase 2) =

21 Operazione 11 Top ten dei clienti più affezionati (clienti che hanno speso di più). Visualizzando Nome, Cognome e la spesa Totale. Concetto Costrutto Accessi Tipo Op. Ordine Entità R Richiesta Relazione R Cliente Entità 500 R Costo Operazione 10000R+10000R+500R= Totale Costo * 1 = Operazione 12 Visualizza i 10 prodotti più richiesti ordinati in modo decrescente, visualizzando numero di ordinazioni, Codice, nome, marca e prezzo del prodotto

22 Concetto Costrutto Accessi Tipo Op. Composizione Relazione R Cliente Entità 500 R Costo Operazione 30000R+500R= Totale Costo * 8 = d. Analisi delle ridondanze Analizzando lo schema concettuale finale, è stata riscontrata la presenza di un attributo ridondante: Totale facente parte dell entità ORDINI. E un attributo ridondante che può essere derivato come somma del costo di ciascun prodotto ordinato moltiplicato per la quantità richiesta. Analisi dell attributo Totale: L attributo viene usato nell operazione 10. Con l attributo: Abbiamo un costo di operazione pari a Vedi pagina 20. Senza l attributo: FASE 1: Calcolo della media del Totale di tutti gli ordini: Concetto Costrutto Accessi Tipo Op. Ordine Entità R Composizione Relazione * 3 = R Prodotti Entità 500 R Servizi Entità 20 R Totale Costo 40520* 2 =

23 FASE 2: Controllo degli ordini superiori alla media: Concetto Costrutto Accessi Tipo Op. Cliente Entità 500 R Ordine Entità R Richiesta Relazione R Composizione Relazione R Servizi Entità 20 R Prodotti Entità 500 R Costo Operazione = Totale Costo * 2 = Totale Costo (Fase 1 + Fase 2) = Analizzando i costi ottenuti, l eliminazione dell attributo ridondante fa triplicare i costi di accesso. Se guardiamo l occupazione di area che introduce, tenendo conto che Totale avrà al massimo 5 cifre che sono rappresentabili da 17 bit, avremo: * 17bit = bit = 21.3 Kbyte Siccome l occupazione di memoria è minima e la presenza dell attributo genera una diminuzione dei costi di accesso. Risulta quindi conveniente tenere l attributo Totale. Inoltre avremo anche una notevole semplificazione della query mysql

24 3e. Eliminazione delle gerarchie La gerarchia che si può semplificare è la seguente: Ho deciso di eliminare l entità Componenti Upgrade perché è inutile: nessuna operazione la usa senza accedere alle entità figlie. Posso effettuare questa operazione perchè la generalizzazione risulta essere totale. Lo schema semplificato è il seguente: Mi accorgo che l attributo Capacità che si trova in HDD è comune ai NOTEBOOK che ha l attributo Cap_HDD, perché rappresentano la medesima cosa. Posso fare lo stesso discorso per l attributo Capacità in RAM e l attributo Cap_RAM in NOTEBOOK. Quindi metterò Cap_HDD e Cap_RAM nell entità padre (PRODOTTI) eliminando le ridondanze. Questi ultimi dovranno avere cardinalità (0,1) perché nel caso si tratti di HDD o di RAM uno dei due deve essere opzionale. Per quanto riguarda l attributo Interfaccia comune sia ad HDD e RAM lo inserirò nell entità padre con cardinalità (0,1) perché riferito ai notebook deve essere opzionale. Lo schema sarà il seguente:

25 Ora si può procedere all ultima semplificazione: collassare le entità figlie nell entità padre. Questo perché le operazioni non fanno molta distinzione tra le occorrenze e tra gli attributi di PRODOTTO, NOTEBOOK, HDD e RAM. In questo caso anche se avremo uno spreco di memoria per gli attributi nulli, la scelta ci assicura un numero minore di accessi rispetto ad altre soluzioni dove gli attributi sono distribuiti tra le varie entità. Ovviamente dovremo inserire un attributo chiamato categoria per distinguere le tre sottocategorie. L attributo dovrà avere valore non nullo in quanto la generalizzazione è totale. Lo schema definitivo è il seguente: 3f. Eliminazione degli attributi composti Gli attributi composti nello schema concettuale sono Dati_anagrafici nell entità UTENTE e Indirizzo che è un attributo composto di Dati_anagrafici

26 Dati_anagrafici verrà collassato nella rispettiva entità, nella quale passeranno gli attributi semplici. Per quanto riguarda l attributo composto Indirizzo, verrà privato di tutti i suoi attributi semplici e verrà trasformato esso stesso in un attributo semplice. Questo dovrà comunque inglobare tutte le altre informazioni eliminate. 3g. Eliminazione degli identificatori esterni Non ci sono identificatori esterni da eliminare. 3h. Schema E/R dopo le modifiche 3i. Scelta della chiavi Non ci sono modifiche rispetto alle tabelle a pagina

27 4. Progettazione logica 4a. Traduzione di entità e associazioni in relazioni del modello relazionale. Entità/Relazione CLIENTE ORDINE SERVIZI PRODOTTI COMPOSIZIONE GROSSISTI CORRIERI UTILIZZA Traduzione Cliente (CF, Nome, Cognome, Data_nascita, Telefono, Indirizzo) Ordine (IDOrdine, Data_ordine, Totale, Cliente) Nota: E stato rinominato CF in Cliente Servizi (IDServizio, Descrizione, Prezzo) Prodotti (Codice_Prodotto, Categoria, Nome, Marca, Quantità_magazzino, Prezzo, Scheda_Grafica, Velocità_Rotazione, Frequenza, CPU, Schermo, Cap_RAM, Cap_HDD, Interfaccia, Grossista) Nota: è stato rinominato IDGrossista in Grossista. Composizione (IDComp,Ordine, Servizio, Prodotto, Quantità_Ordinata) Nota: Sono stati rinominati IDOrdine,IDServizio,Codice_Prodotto in Ordine, Servizio e Prodotto. In questo caso ho dovuto inserire una chiave IDComp perché Ordine o Servizio potrebbero avere valore nullo, quindi la superchiave(ordine, Servizio, Prodotto) non può essere utilizzata. Grossista (IDGrossista, Nome, Telefono, Sede, ) Corrieri (IDCorriere, Nome, Telefono, Sede, Orari) Utilizza (Grossista, Corriere) Nota: Sono stati rinominati IDGrossista e IDCorriere in Grossista e Corriere

28 4b. Normalizzazione Le relazioni Ordini, Servizi, Prodotti e Composizione sono in forma normale di Boyce e Codd perché le uniche dipendenze funzionali sono o quelle banali o dipendenze tra un qualunque attributo non primo e la chiave. La relazione Utilizza ha solo attributi primi, quindi le uniche dipendenze funzionali sono quelle banali e pertanto si trova in BCFN. Le relazioni Cliente, Grossisti, Corrieri non sono in BCFN perché c è dipendenza funzionale tra Indirizzo e Telefono della relazione Cliente: Telefono -> Indirizzo e il primo non fa parte di una chiave. Nelle relazioni Grossisti e Corrieri c è la stessa dipendenza funzionale: Telefono -> Sede dove telefono non fa parte di una chiave. Soluzioni: - Togliere l attributo Telefono da tutte e tre le relazioni lasciando inalterato il resto. - Creare tre relazioni come segue: Rubrica_Cliente (Cliente, Telefono) nota: CF è stato rinominato in Cliente Rubrica_Grossista (Grossista, Telefono) nota: IDGrossista è stato rinominato in Grossista Rubrica_Corriere (Corriere, Telefono) nota: IDCorriere è stato rinominato in Corriere Tutte le relazioni ora sono in BCFN e non presenteranno anomalie in fase di inserimento modifica e cancellazione. 4c. Vincoli di integrità referenziale Attributo Cliente (relazione Rubrica_Cliente) Cliente (relazione Ordine) Grossista (relazione Prodotti) Grossista (relazione Utilizza) Ordine (relazione Composizione) Servizio (relazione Composizione) Prodotto (relazione Composizione) Corriere (relazione utilizza) Grossista (relazione Rubrica_Grossista) Corriere (relazione Rubrica_Corriere) Vincolato a CF (relazione Cliente) CF (relazione Cliente) IDGrossista (relazione Grossisti) IDGrossista (relazione Grossisti) IDOrdine (relazione Ordine) IDServizio (relazione Servizi) Codice_Prodotto (relazione Prodotto) IDCorriere (relazione Corrieri) IDGrossista (relazione Grossisti) IDCorriere (relazione Corrieri) 4d. MySQL: definizione dello schema Quindi, le relazioni da creare risultano essere le seguenti: CLIENTE (CF, Nome, Cognome, Data_nascita, Indirizzo) ORDINE (IDOrdine, Data_ordine, Totale, Cliente) SERVIZI (IDServizio, Descrizione, Prezzo) PRODOTTI (Codice_Prodotto, Categoria, Nome, Marca, Quantita_magazzino, Prezzo, Scheda_Grafica,Velocita_Rotazione, Frequenza, CPU, Schermo, Cap_RAM, Cap_HDD, Interfaccia, Grossista) COMPOSIZIONE (IDComp,Ordine, Servizio, Prodotto, Quantita_Ordinata) GROSSISTA (IDGrossista, Nome, Sede, ) CORRIERI (IDCorriere, Nome, Sede, Orari) UTILIZZA (Grossista, Corriere) RUBRICA_CLIENTE (Cliente, Telefono) RUBRICA_GROSSISTA (Grossista, Telefono) RUBRICA_CORRIERE (Corriere, Telefono)

29 CREAZIONE DATABASE E RELATIVE TABELLE IN MYSQL: CREATE DATABASE `Negozio`; CREATE TABLE `cliente` ( `CF` VARCHAR( 16 ) NOT NULL, `Nome` VARCHAR( 15 ) NOT NULL, `Cognome` VARCHAR( 15 ) NOT NULL, `Data_nascita` DATE NOT NULL, `Indirizzo` VARCHAR( 70 ) NOT NULL, PRIMARY KEY ( `CF` ) ) ENGINE = innodb; CREATE TABLE `corrieri` ( `IDCorriere` INT( 2 ) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, `Nome` VARCHAR( 30 ) NOT NULL, `Sede` VARCHAR( 70 ) NOT NULL DEFAULT 'ND', `Orari` VARCHAR( 70 ) NOT NULL DEFAULT 'ND', PRIMARY KEY ( `IDCorriere` ) ) ENGINE = innodb; CREATE TABLE `grossisti` ( `IDGrossista` INT( 2 ) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, `Nome` VARCHAR( 30 ) NOT NULL, `Sede` VARCHAR( 70 ) NOT NULL, ` ` VARCHAR( 70 ) NOT NULL, PRIMARY KEY ( `IDGrossista` ) ) ENGINE = innodb; CREATE TABLE `servizi` ( `IDServizi` INT( 2 ) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, `Descrizione` VARCHAR( 70 ) NOT NULL, `Prezzo` DECIMAL( 5, 2 ) UNSIGNED NOT NULL, PRIMARY KEY ( `IDServizi` ) ) ENGINE = innodb; CREATE TABLE `Rubrica_cliente` ( `Cliente` VARCHAR( 16 ) NOT NULL, `Telefono` VARCHAR( 10 ) NOT NULL, PRIMARY KEY ( `Cliente` ), FOREIGN KEY ( `Cliente` ) REFERENCES `negozio`.`clientei` (`CF` ) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = innodb; CREATE TABLE `rubrica_grossisti` ( `Grossista` INT( 2 ) UNSIGNED ZEROFILL NOT NULL, `Telefono` VARCHAR( 10 ) NOT NULL, PRIMARY KEY ( `Grossista` ), FOREIGN KEY ( `Grossista` ) REFERENCES `negozio`.`grossisti` (`IDGrossista` ) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = innodb;

30 CREATE TABLE `rubrica_corrieri` ( `Corriere` INT( 2 ) UNSIGNED ZEROFILL NOT NULL, `Telefono` VARCHAR( 10 ) NOT NULL, PRIMARY KEY ( `Corriere` ), FOREIGN KEY ( `Corriere` ) REFERENCES `negozio`.`corrieri` (`IDCorriere` ) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = innodb; CREATE TABLE `Ordine` ( `IDOrdine` INT( 5 ) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, `Data_ordine` DATE NOT NULL, `Totale` DECIMAL( 7, 2 ) UNSIGNED NOT NULL, `Cliente` VARCHAR( 16 ) NOT NULL, PRIMARY KEY ( `IDOrdine` ), INDEX (`Cliente`), FOREIGN KEY (`Cliente`) REFERENCES negozio`.`cliente` (`CF`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = innodb; CREATE TABLE `prodotti` ( `Codice_Prodotto` INT(3) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, `Categoria` VARCHAR( 8 ) NOT NULL, `Nome` VARCHAR( 70 ) NOT NULL, `Marca` VARCHAR( 30 ) NOT NULL, `CPU` VARCHAR( 70 ) NULL DEFAULT NULL, `Schermo` INT( 2 ) UNSIGNED NULL DEFAULT NULL, `Cap_RAM` INT( 4 ) UNSIGNED NULL DEFAULT NULL, `Cap_HDD` INT( 4 ) UNSIGNED NULL DEFAULT NULL, `Scheda_Grafica` VARCHAR( 30 ) NULL DEFAULT NULL, `Interfaccia` VARCHAR( 6 ) NULL DEFAULT NULL, `Velocita_rotazione` INT( 4 ) UNSIGNED NULL DEFAULT NULL, `Frequenza` INT( 4 ) UNSIGNED NULL DEFAULT NULL, `Quantita_Magazzino` INT( 3 ) UNSIGNED NOT NULL, `Prezzo` DECIMAL( 6, 2 ) UNSIGNED NOT NULL, `Grossista` INT( 2 ) UNSIGNED ZEROFILL NOT NULL, PRIMARY KEY ( `Codice_Prodotto` ), INDEX ( `Grossista` ), FOREIGN KEY ( `Grossista` ) REFERENCES `negozio`.`grossisti` (`IDGrossista`) ON DELETE NO ACTION ON UPDATE CASCADE ) ENGINE = innodb; CREATE TABLE `utilizza` ( `Grossista` INT( 2 ) UNSIGNED ZEROFILL NOT NULL, `Corriere` INT( 2 ) UNSIGNED ZEROFILL NOT NULL, PRIMARY KEY ( `Grossista`, `Corriere` ), FOREIGN KEY ( `Grossista` ) REFERENCES `negozio`.`grossisti` (`IDGrossista` ) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ( `Corriere` ) REFERENCES `negozio`.`corrieri` (`IDCorriere` ) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE = innodb ;

31 CREATE TABLE `composizione` ( `IDComp` INT( 5 ) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT `Ordine` INT( 5 ) UNSIGNED ZEROFILL NOT NULL, `Servizio` INT( 2 ) UNSIGNED ZEROFILL NULL DEFAULT NULL, `Prodotto` INT( 3 ) UNSIGNED ZEROFILL NULL DEFAULT NULL, `Quantità_Ordinata` INT( 2 ) UNSIGNED NOT NULL, PRIMARY KEY (`IDComp`), INDEX (`Ordine`), INDEX(`Servizio`), INDEX(`Prodotto`), FOREIGN KEY ( `Ordine` ) REFERENCES `negozio`.`ordine` (`IDOrdine` ) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ( `Servizio` ) REFERENCES `negozio`.`servizi` (`IDServizi` ) ON DELETE SET NULL ON UPDATE CASCADE, FOREIGN KEY ( `Prodotto` ) REFERENCES `negozio`.`prodotti` (`Codice_Prodotto` ) ON DELETE SET NULL ON UPDATE CASCADE ) ENGINE = innodb; 4e.MySQL: query Operazione 1: Inserimento di un nuovo ordine associato ad un cliente non presente nell archivio, composto da prodotti e/o servizi già presenti in archivio. (si dovrà vedere se il prodotto è disponibile) Supponiamo di inserire nell Ordine, un Servizio ed un Prodotto Passo1: BEGIN; SELECT Quantità_Magazzino FROM prodotti WHERE Codice_Prodotto = <codice del prodotto> AND Quantità_magazzino >= <quantità richiesta> ; COMMIT; Passo2: BEGIN; INSERT INTO cliente VALUES ( <CF>, <Nome>, <Cognome>, <Data_nascita>, <Indirizzo> ); INSERT INTO rubrica_cliente VALUES ( <CF>, <Telefono> ); INSERT INTO ordine(data_ordine,totale,cliente) VALUES( < >,< >,<CF> ); INSERT INTO composizione(ordine,servizio,quantità_ordinata) VALUES ( <IDOrdine>, <IDServizio>,< > ); INSERT INTO composizione(ordine,prodotto,quantità_ordinata) VALUES ( <IDOrdine>, <IDProdotto>,< > ); UPDATE prodotti SET Quantità_magazzino = Quantità_magazzino - <quantitàordinata> WHERE Codice_Prodotto = <codiceprodotto> ; COMMIT;

32 Operazione 2: Inserimento di un nuovo prodotto con tutte le relative caratteristiche tecniche, associato ad un grossista già presente nell archivio. Supponiamo di inserire un HDD: INSERT INTO prodotto(categoria, Nome, Marca, Quantita_magazzino, Prezzo, Velocita_Rotazione, Interfaccia, Cap_HDD, Grossista) VALUES ( < >,< >,< >,< >,< >,< >,< >,<IDGrossista> ); Operazione 3: Inserimento di un nuovo grossista con i relativi dati, associato ad un corriere già presente in archivio. BEGIN; INSERT INTO grossista(nome,sede, ) VALUES (< >,< >,< >); INSERT INTO rubrica_grossista(grossista,telefono) VALUES ( <IDGrossista>,< > ); INSERT INTO utilizza VALUES ( <IDGrossista>,<IDCorriere> ); COMMIT; Operazione 4: Ricerca di tutti i prodotti disponibili in ordine alfabetico, appartenenti ad una specifica categoria, visualizzando Codice Prodotto,nome, Marca, Quantità in magazzino, Prezzo, e gli attributi corrispondenti alla categoria selezionata. Query Generica, visualizza tutti gli attributi: SELECT * FROM prodotti WHERE Categoria= <nome categoria> AND Quantità_Magazzino>0 ORDER BY Marca,Nome ASC; Supponiamo che la categoria sia : NOTEBOOK. La query è la seguente: SELECT Marca, Nome, CPU, Schermo, Cap_HDD, Cap_RAM, Scheda_Grafica, Quantità_magazzino, Prezzo FROM prodotti WHERE Categoria= NOTEBOOK AND Quantità_Magazzino>0 ORDER BY Marca,Nome ASC; Operazione 5: Ricerca di uno specifico corriere visualizzando nome, numero di telefono orari di apertura. SELECT Nome,Telefono,Orari FROM corrieri,rubrica_corriere WHERE IDCorriere= <id del corriere> AND corrieri.idcorriere=rubrica_corriere.corriere;

33 Operazione 6: Ricerca di tutti i grossisti che utilizzano un determinato corriere visualizzando il nome, il telefono e l del grossista. SELECT Nome,Telefono, FROM grossisti,rubrica_grossista,utilizza WHERE utilizza.corriere= <codice corriere> AND grossisti.idgrossista=rubrica_grossista.grossista AND grossisti.idgrossista=utilizza.grossista Operazione 7: Ricerca tutti i prodotti non disponibili, visualizzando il codice, la categoria, il nome, la marca e il prezzo del prodotto, il nome, il telefono e l del grossista ad esso associato, ordinati in ordine alfabetico sulla categoria di appartenenza. SELECT Codice_prodotto,Categoria,prodotti.Nome, Marca, Prezzo,grossisti.Nome,Telefono, FROM prodotti,grossisti,rubrica_grossista WHERE Quantità_magazzino=0 AND grossisti.idgrossista=rubrica_grossista.grossista AND prodotti.grossista=grossisti.idgrossista ORDER BY prodotti.categoria ASC Operazione 8: Ricerca di tutti i prodotti ordinati da un cliente, visualizzando Codice, Categoria, Nome, Marca, Prezzo del/i prodotto/i, data di acquisto dell articolo e Quantità ordinata. La lista degli articoli dovrà essere ordinata dal più recente al meno recente. SELECT composizione.prodotto, prodotti.categoria, prodotti.nome, prodotti.marca, composizione.quantita_ordinata, ordine.data_ordine, prodotti.prezzo FROM ordine, composizione, prodotti WHERE ordine.idordine = composizione.ordine AND composizione.prodotto = prodotti.codice_prodotto AND ordine.cliente = <CodiceFiscale> AND composizione.prodotto IS NOT NULL ORDER BY ordine.data_ordine ASC; Operazione 9: Ricerca di tutti i clienti che hanno ordinato un prodotto di una certa marca dopo una determinata data, visualizzando nome, cognome e telefono del cliente, data dell ordine, codice, categoria e nome del prodotto. SELECT cliente.nome, cliente.cognome, rubrica_cliente.telefono, ordine.data_ordine, prodotti.codice_prodotto, prodotti.categoria, prodotti.nome FROM cliente, ordine, composizione, prodotti, rubrica_cliente WHERE cliente.cf = ordine.cliente AND ordine.idordine = composizione.ordine AND composizione.prodotto = prodotti.codice_prodotto AND rubrica_cliente.cliente=cliente.cf AND prodotti.marca = <marca> AND ordine.data_ordine > <data> ;

34 Operazione 10: Visualizza tutti gli ordini dell ultimo mese il cui totale sia maggiore della media di tutti i totali, visualizzando il codice ed il totale dell ordine, nome e cognome del cliente che lo ha effettuato. Ordinati in ordine decrescente sul totale dell ordine. SELECT cliente.nome,cliente.cognome,ordine.idordine,ordine.totale FROM ordine,cliente WHERE ordine.cliente=cliente.cf AND ordine.data_ordine BETWEEN (curdate() - interval 1 month) AND curdate() AND ordine.totale > (SELECT avg(totale) FROM ordine) ORDER BY Totale DESC; Operazione 11: Top ten dei clienti più affezionati (clienti che hanno speso di più). SELECT cliente.nome,cliente.cognome,sum(totale) FROM cliente,ordine WHERE cliente.cf=ordine.cliente GROUP BY cliente.cf ORDER BY sum(totale) DESC LIMIT 0,10; Operazione 12: Visualizza i 10 prodotti più richiesti ordinati in modo decrescente, visualizzando numero di ordinazioni, Codice, nome, marca e prezzo del prodotto. SELECT Prodotto,Categoria,Nome,Marca,sum(Quantita_Ordinata) FROM composizione,prodotti WHERE Prodotto IS NOT NULL AND Prodotto=Codice_Prodotto GROUP BY Prodotto ORDER BY sum(quantita_ordinata) DESC LIMIT 0,10; 5. Interfaccia in php: L interfaccia è stata sviluppata usando il php. Sono state implementate tutte le operazioni presenti nella relazione. Per quanto riguarda gli inserimenti, ho realizzato un controllo dei dati che restituisce errore se la stringa immessa non è del formato giusto o eccede la lunghezza massima consentita o il campo non è stato riempito. In tutte le operazioni portate a termine con successo, viene visualizzato il codice mysql altrimenti, viene visualizzato il messaggio d errore corrispondente. L interfaccia è raggiungibile all indirizzo:

1. Analisi dei requisiti

1. Analisi dei requisiti 1. Analisi dei requisiti 1a. Requisiti espressi in linguaggio naturale 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 Si vuole realizzare una base di dati

Dettagli

Impresa di raccolta e riciclaggio di materiali metallici e di rifiuti.

Impresa di raccolta e riciclaggio di materiali metallici e di rifiuti. Impresa di raccolta e riciclaggio di materiali metallici e di rifiuti. Indice Cognome Nome Matr.xxxxxx email Cognome Nome Mat. Yyyyyy email Argomento Pagina 1. Analisi dei requisiti 1 a. Requisiti espressi

Dettagli

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti: Date le tabelle: Clienti := < id, nome, cognome, indirizzo,città > Ordini := < id, data_ora_ordine, id_prodotto, id_cliente, quantità> Prodotti := < id, nome, descrizione, costo,scorte > INDICI Prevediamo

Dettagli

SOLUZIONI COMMENTATE

SOLUZIONI COMMENTATE Nel database Biblioteca vi sono le seguenti tabelle: SOLUZIONI COMMENTATE Utenti := < id, nome, cognome, indirizzo,città, tel_fisso,cellulare > Prestiti := < id, id_libro, id_utente, data_ora_prestito,

Dettagli

Esame di stato 2004 Portfolio studente

Esame di stato 2004 Portfolio studente Esame di stato 2004 Portfolio studente Traccia Il Dirigente Scolastico di una Scuola Secondaria Superiore chiede che si realizzi una base di dati per l'archiviazione e la gestione di informazioni riguardanti

Dettagli

Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende. Programma 30 set 205 Installazione Macchina Virtuale Introduzione alla BI nelle Aziende Introduzione SQL Macchina Virtuale È un emulazione di un computer su un altro computer Stesso punto di partenza per

Dettagli

VIDES. Mariagrazia Rossi

VIDES. Mariagrazia Rossi VIDES Mariagrazia Rossi Sommario Descrizione della realtà... 2 Requisiti Funzionali... 2 Requisiti non Funzionali... 3 Dizionario dei termini... 3 Diagramma dei casi d uso... 4 CASI D USO... 7 Process

Dettagli

Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica

Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica Istituto di Istruzione Superiore Alessandrini - Marino 1 Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica Descrizione Un azienda commerciale che vende prodotti IT (computers,

Dettagli

Vincoli di Integrità

Vincoli di Integrità Vincoli di Integrità Antonella Poggi Dipartimento di informatica e Sistemistica Sapienza Università di Roma Progetto di Applicazioni Software Anno accademico 2010-2011 Questi lucidi sono stati prodotti

Dettagli

IL DAT A B A S E DI ALGE B R A N D O

IL DAT A B A S E DI ALGE B R A N D O IL DAT A B A S E DI ALGE B R A N D O Un progetto di: Davide Valeriani Matricola 190883 davide.valeriani@studenti.unipr.it Corso di laurea in Ingegneria Informatica Esame di Basi di Dati A Prof. Stefano

Dettagli

TEORIA sulle BASI DI DATI

TEORIA sulle BASI DI DATI TEORIA sulle BASI DI DATI A cura del Prof. Enea Ferri Cos è un DATA BASE E un insieme di archivi legati tra loro da relazioni. Vengono memorizzati su memorie di massa come un unico insieme, e possono essere

Dettagli

SQL (STRUCTURED QUERY LANGUAGE)

SQL (STRUCTURED QUERY LANGUAGE) SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan SQL DDL Data Definition Language DML Data Manipulation Language DCL Data Control Language DDL Obiettivo: Definire la struttura

Dettagli

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7 Il trattamento dei dati database: il linguaggio SQL seconda parte Prof. Valle D.ssa Folgieri Lez9 15.11.06 Trattamento dati. Database: il

Dettagli

I livelli di progettazione possono essere così schematizzati: Esistono tre tipi diversi di modelli logici: Modello gerarchico: Esempio SPECIFICHE

I livelli di progettazione possono essere così schematizzati: Esistono tre tipi diversi di modelli logici: Modello gerarchico: Esempio SPECIFICHE I DATABASE o basi di dati possono essere definiti come una collezione di dati gestita dai DBMS. Tali basi di dati devono possedere determinati requisiti, definiti come specifiche, necessarie per il processo

Dettagli

Capitolo 8. Esercizio 8.1

Capitolo 8. Esercizio 8.1 Capitolo 8 Esercizio 8.1 Si consideri lo schema Entità-Relazione ottenuto come soluzione dell esercizio 7.4. Fare delle ipotesi sul volume dei dati e sulle operazioni possibili su questi dati e, sulla

Dettagli

Progetto Logos - Documentazione -

Progetto Logos - Documentazione - Progetto Logos - Documentazione - Marco Benvegnù Gianluca Marcante Simone Sanavio Roberto De Franceschi PM) Corso di Basi di Dati Corso di Laurea in Ingegneria Informatica A.A. 2002/2003 Progetto Logos

Dettagli

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Si consiglia di creare il data base, inserire i dati nelle tabelle, provare

Dettagli

UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME

UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME 14 maggio 2009 1 Progettazione di basi di dati Si vuole

Dettagli

DBMS (Data Base Management System)

DBMS (Data Base Management System) Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire

Dettagli

ESAME di INFORMATICA e ARCHIVIAZIONE

ESAME di INFORMATICA e ARCHIVIAZIONE UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME di INFORMATICA e ARCHIVIAZIONE 28 settembre 2011 1 Progettazione

Dettagli

Volumi di riferimento

Volumi di riferimento Simulazione seconda prova Esame di Stato Gestione di un centro agroalimentare all ingrosso Parte prima) Un nuovo centro agroalimentare all'ingrosso intende realizzare una base di dati per l'attività di

Dettagli

Prova scritta del corso di Basi di dati attive 17 Dicembre 1999. Agenzia

Prova scritta del corso di Basi di dati attive 17 Dicembre 1999. Agenzia Prova scritta del corso di Basi di dati attive 17 Dicembre 1999 Si desidera automatizzare la gestione dei banchetti organizzati da un agenzia di pubbliche relazioni. Le specifiche del sistema informativo,

Dettagli

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

Vincoli di Integrità Approccio dichiarativo alla loro implementazione Vincoli di Integrità Approccio dichiarativo alla loro implementazione Antonella Poggi Dipartimento di informatica e Sistemistica SAPIENZA Università di Roma Progetto di Applicazioni Software Anno accademico

Dettagli

Corso di Informatica Generale 1 IN1. Linguaggio SQL

Corso di Informatica Generale 1 IN1. Linguaggio SQL Università Roma Tre Facoltà di Scienze M.F.N. di Laurea in Matematica di Informatica Generale 1 Linguaggio SQL Marco (liverani@mat.uniroma3.it) Sommario Prima parte: le basi dati relazionali Basi di dati:

Dettagli

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. (Structured Query Language) : Il linguaggio è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. prima versione IBM alla fine degli anni '70 per un prototipo di ricerca (System

Dettagli

Basi di Dati Relazionali

Basi di Dati Relazionali Corso di Laurea in Informatica Basi di Dati Relazionali a.a. 2009-2010 PROGETTAZIONE DI UNA BASE DI DATI Raccolta e Analisi dei requisiti Progettazione concettuale Schema concettuale Progettazione logica

Dettagli

M733 ESAME DI STATO DI ISTITUTO TECNICO COMMERCIALE CORSO DI ORDINAMENTO

M733 ESAME DI STATO DI ISTITUTO TECNICO COMMERCIALE CORSO DI ORDINAMENTO Seconda prova scritta Ministero dell Istruzione, dell Università e della Ricerca M733 ESAME DI STATO DI ISTITUTO TECNICO COMMERCIALE CORSO DI ORDINAMENTO Indirizzo: PROGRAMMATORI Tema di: INFORMATICA GENERALE

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 2 Raffaella Gentilini 1 / 45 Sommario 1 Il DDL di SQL: Cancellazione ed Aggiornamento di una BD Cancellazione di Schemi, Tabelle, e Domini Aggiornamento di Tabelle

Dettagli

Introduzione a MySQL

Introduzione a MySQL Introduzione a MySQL Cinzia Cappiello Alessandro Raffio Politecnico di Milano Prima di iniziare qualche dettaglio su MySQL MySQL è un sistema di gestione di basi di dati relazionali (RDBMS) composto da

Dettagli

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza)

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza) 26/03/2013 SQL SQL -DDL Esercizio 4.3 Dare le definizioni SQL delle tre tabelle FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza) rappresentando

Dettagli

Progettazione Logica. Progettazione Logica

Progettazione Logica. Progettazione Logica Consorzio per la formazione e la ricerca in Ingegneria dell'informazione Tabelle per ogni concetto Docente: Cesare Colombo CEFRIEL colombo@cefriel.it http://www.cefriel.it Passaggio al modello logico (1)

Dettagli

Concetti fondamentali dei database database Cos'è un database Principali database

Concetti fondamentali dei database database Cos'è un database Principali database Concetti fondamentali dei database Nella vita di tutti i giorni si ha la necessità di gestire e manipolare dati. Le operazioni possono essere molteplici: ricerca, aggregazione con altri e riorganizzazione

Dettagli

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER Caratteristiche generali del linguaggio SQL Il linguaggio SQL è il linguaggio usato per la gestione dei database relazionali, cioè dei database creati con un DBMS di tipo relazionale. Esso nacque nella

Dettagli

Basi Di Dati, 09/12/2003

Basi Di Dati, 09/12/2003 Basi Di Dati, 09/12/2003 Una concessionaria di auto nuove ed usate vuole automatizzare alcune delle sue attività. L attività che la concessionaria vuole automatizzare riguarda la gestione delle auto nuove,

Dettagli

Corso di Basi di Dati A.A. 2014/2015

Corso di Basi di Dati A.A. 2014/2015 Corso di Laurea in Ingegneria Gestionale Sapienza - Università di Roma Corso di Basi di Dati A.A. 2014/2015 Esercitazione su Progettazione Logica Tiziana Catarci, Andrea Marrella Ultimo aggiornamento :

Dettagli

Tool. Basi di Dati e Sistemi Informativi Prof. Marco Di Felice Dott.sa Sara Zuppiroli A.A. 2012-2013

Tool. Basi di Dati e Sistemi Informativi Prof. Marco Di Felice Dott.sa Sara Zuppiroli A.A. 2012-2013 Tool Basi di Dati e Sistemi Informativi Prof. Marco Di Felice Dott.sa Sara Zuppiroli A.A. 2012-2013 Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 1 / 26 Gli strumenti che vedremo Basi

Dettagli

PROGRAMMA DI CLASSE 5AI

PROGRAMMA DI CLASSE 5AI Istituto di Istruzione Superiore Euganeo Istituto tecnico del settore tecnologico Istituto professionale del settore servizi socio-sanitari Istituto professionale del settore industria e artigianato PROGRAMMA

Dettagli

Progettazione concettuale

Progettazione concettuale Progettazione concettuale Strategie top-down A partire da uno schema che descrive le specifiche mediante pochi concetti molto astratti, si produce uno schema concettuale mediante raffinamenti successivi

Dettagli

Corso di Laboratorio di Basi di Dati

Corso di Laboratorio di Basi di Dati Corso di Laboratorio di Basi di Dati F1I072 - INF/01 a.a 2009/2010 Pierluigi Pierini Technolabs S.p.a. Pierluigi.Pierini@technolabs.it Università degli Studi di L Aquila Dipartimento di Informatica Technolabs

Dettagli

Basi di dati Progettazione logica. Elena Baralis Politecnico di Torino

Basi di dati Progettazione logica. Elena Baralis Politecnico di Torino Progettazione logica Progettazione logica Richiede di scegliere il modello dei dati!modello relazionale Obiettivo: definizione di uno schema logico relazionale corrispondente allo schema ER di partenza

Dettagli

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati Corso di Laura in Informatica Umanistica Basi di Dati Corso di Laura in Informatica Umanistica Appello del 10/09/2010 Parte 1: Algebra Relazionale e linguaggio SQL Docente: Giuseppe Amato Sia dato il seguente schema di base di dati per la gestione

Dettagli

11 - Progettazione Logica

11 - Progettazione Logica Corso di Laurea in Ingegneria Gestionale SAPIENZA Università di Roma Esercitazioni del corso di Basi di Dati Prof.ssa Catarci e Prof.ssa Scannapieco Anno Accademico 2011/2012 11 - Progettazione Logica

Dettagli

La Progettazione Concettuale

La Progettazione Concettuale La Progettazione Concettuale Università degli Studi del Sannio Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica CorsodiBasidiDati Anno Accademico 2006/2007 docente: ing. Corrado Aaron Visaggio

Dettagli

ESAME di INFORMATICA e ARCHIVIAZIONE

ESAME di INFORMATICA e ARCHIVIAZIONE UNIVERSITÀ DEGLI STUDI DI UDINE Facoltà di Medicina e Chirurgia CORSO DI LAUREA IN TECNICHE DI RADIOLOGIA MEDICA PER IMMAGINI E RADIOTERAPIA ESAME di INFORMATICA e ARCHIVIAZIONE 22 giugno 2011 1 Progettazione

Dettagli

L ARCHIVIAZIONE E LA GESTIONE DATI ATTRAVERSO L INTERAZIONE TRA MICROSOFT ACCESS ED EXCEL 1 INTRODUZIONE

L ARCHIVIAZIONE E LA GESTIONE DATI ATTRAVERSO L INTERAZIONE TRA MICROSOFT ACCESS ED EXCEL 1 INTRODUZIONE Roccatello Ing. Eduard L ARCHIVIAZIONE E LA GESTIONE DATI ATTRAVERSO L INTERAZIONE TRA MICROSOFT ACCESS ED EXCEL 1 INTRODUZIONE Agenda Presentazione docente Definizione calendario Questionario pre corso

Dettagli

Esercitazione 8 Mercoledì 21 gennaio 2015 (2 ore) DDL e progettazione

Esercitazione 8 Mercoledì 21 gennaio 2015 (2 ore) DDL e progettazione Esercitazione 8 Mercoledì 21 gennaio 2015 (2 ore DDL e progettazione Testi degli esercizi Esercizio 1 (Tema d esame del 20 settembre 2012 Si consideri il seguente schema di base di dati che vuole tenere

Dettagli

Introduzione al linguaggio SQL

Introduzione al linguaggio SQL Introduzione al linguaggio SQL Structured Query Language (Linguaggio Strutturato di Interrogazione di Database) prof. Cleto Azzani IPSIA MORETTO BRESCIA (2004) Che cos è un Data Base (Base di dati) Insieme

Dettagli

MySQL Database Management System

MySQL Database Management System MySQL Database Management System http://www.mysql.com/ DATABASE RELAZIONALI Un database è una collezione strutturata di informazioni. I database sono delle strutture nelle quali è possibile memorizzare

Dettagli

Dal modello concettuale al modello logico

Dal modello concettuale al modello logico Dal modello concettuale al modello logico Traduzione dal modello Entita - Associazione al modello Relazionale Ciclo di sviluppo di una base di dati (da parte dell utente) Analisi dello scenario Modello

Dettagli

MySQL Command Line Client: operazioni fondamentali

MySQL Command Line Client: operazioni fondamentali MySQL Command Line Client: operazioni fondamentali INTRODUZIONE Il RDBMS MySQL, oltre a fornire un applicazione che abbia un interfaccia user-friendly, ha a disposizione anche un altro client, che svolge

Dettagli

Preparazione. Introduzione a MySQL: costruzione di una base di dati e gestione degli accessi. Accesso all area condivisa. Avvio Server MySQL

Preparazione. Introduzione a MySQL: costruzione di una base di dati e gestione degli accessi. Accesso all area condivisa. Avvio Server MySQL Introduzione a MySQL: costruzione di una base di dati e gestione degli accessi Stefania Marrara Elisa Quintarelli Lezione 1 2 ore a.a 2004/05 Preparazione Accesso all area condivisa Start -> Programs ->MySQL

Dettagli

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL Basi di dati Il Linguaggio SQL Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento,

Dettagli

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE SQL e ACCESS Prof. Salvatore Multazzu (salvatoremultazzu@tiscali.it) Applicazioni Informatiche nella comunicazione Modello relazionale Entità Record o Ennuple Attributi o Campi Tipi Chiavi Primarie (PK)

Dettagli

Fasi del progetto ( 1 )

Fasi del progetto ( 1 ) Progetto 2004-2005 2005 Esercitazione delle lezioni 2, 3 e 4. 1 Fasi del progetto ( 1 ) Analisi dettagliata delle specifiche fornite dal committente. Questa fase è fondamentale per capire a fondo quali

Dettagli

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 3

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 3 INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 3 L azienda Plastic S.p.A, operante nel settore materie plastiche, ha deciso di dotarsi di un Sistema Informativo per la gestione del suo

Dettagli

BASI DI DATI I. Progettazione di un DBMS per un negozio di materiale elettrico. Progetto realizzato da: Iero Demetrio Matricola: 106857

BASI DI DATI I. Progettazione di un DBMS per un negozio di materiale elettrico. Progetto realizzato da: Iero Demetrio Matricola: 106857 BASI DI DATI I Progettazione di un DBMS per un negozio di materiale elettrico Progetto realizzato da: Iero Demetrio Matricola: 106857 DESCRIZIONE DELLA REALTA' Si vuole realizzare un DBMS per la gestione

Dettagli

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 9 SETTEMBRE 2015 Tempo: 2h30m

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 9 SETTEMBRE 2015 Tempo: 2h30m Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 9 SETTEMBRE 2015 Tempo: 2h30m Si consideri il seguente schema di base di dati, che vuole memorizzare informazioni relative a un sito di affitto

Dettagli

SQL: definizione schema

SQL: definizione schema Si Clienti(codice,nome,indirizzo,p_iva) scriva il SQL che definisce il seguente schema relazionale Prodotti(codice,nome,descrizione,prezzo) SQL: definizione schema Fatture(codice,cliente,data) RigheFattura(codice,fattura,prodotto,quantità,prezzo)

Dettagli

70555 Informatica 3 70777 Sicurezza 2. 70555 Mario Rossi 70777 Anna Bianchi. Esempio istanza:

70555 Informatica 3 70777 Sicurezza 2. 70555 Mario Rossi 70777 Anna Bianchi. Esempio istanza: DOMANDE 1) Definire i concetti di schema e istanza di una base di dati, fornendo anche un esempio. Si definisce schema di una base di dati, quella parte della base di dati stessa che resta sostanzialmente

Dettagli

SQL (STRUCTURED QUERY LANGUAGE)

SQL (STRUCTURED QUERY LANGUAGE) SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan SQL DDL Data Definition Language DML Data Manipulation Language DCL Data Control Language DDL Obiettivo: Definire la struttura

Dettagli

Il modello Entity-Relationship per il progetto delle basi di dati

Il modello Entity-Relationship per il progetto delle basi di dati 1 Il modello Entity-Relationship per il progetto delle basi di dati Massimo Paolucci (paolucci@dist.unige.it) DIST Università di Genova Le metodologie di progettazione delle Basi di Dati 2 Una metodologia

Dettagli

Progettazione di un DB....in breve

Progettazione di un DB....in breve Progettazione di un DB...in breve Cosa significa progettare un DB Definirne struttura,caratteristiche e contenuto. Per farlo è opportuno seguire delle metodologie che permettono di ottenere prodotti di

Dettagli

Esame di Stato Istituto Tecnico Industriale Soluzione della Seconda Prova Indirizzo: INFORMATICA Tema: INFORMATICA Anno Scolastico: 2002-2003

Esame di Stato Istituto Tecnico Industriale Soluzione della Seconda Prova Indirizzo: INFORMATICA Tema: INFORMATICA Anno Scolastico: 2002-2003 Esame di Stato Istituto Tecnico Industriale Soluzione della Seconda Prova Indirizzo: INFORMATICA Tema: INFORMATICA Anno Scolastico: 2002-2003 Il primo punto richiede l analisi e lo sviluppo del progetto

Dettagli

1.Tutte 2.Spesso P.IVAe le CF volte che si visualizza i dati un fornitore si mostranoanche. La mensa. La mensa

1.Tutte 2.Spesso P.IVAe le CF volte che si visualizza i dati un fornitore si mostranoanche. La mensa. La mensa Ristrutturare Osservazioni seguenti che possano indicazioni emergere lo schema sulle ER operazioni della slide frequenti successiva e indicando tenendo presenti i vincoli le 1.Tutte 2.Spesso P.IVAe le

Dettagli

REALIZZAZIONE DI UN SISTEMA INFORMATIVO TRAMITE DIVERSI DATABASE

REALIZZAZIONE DI UN SISTEMA INFORMATIVO TRAMITE DIVERSI DATABASE UNIVERSITÀ DEGLI STUDI DI PADOVA DIPARTIMENTO DI INGEGNERIA DELL INFORMAZIONE LAUREA TRIENNALE IN INGEGNERIA INFORMATICA REALIZZAZIONE DI UN SISTEMA INFORMATIVO TRAMITE DIVERSI DATABASE RELATORE: Prof.

Dettagli

Basi di Dati A.A. 2012/2013 Progetto database per pizzeria da asporto

Basi di Dati A.A. 2012/2013 Progetto database per pizzeria da asporto Basi di Dati A.A. 2012/2013 Progetto database per pizzeria da asporto Cappellotto Francesco, Cecchel Stefano matr. 611595, 1010676 27 Giugno 2013 1 INDICE 2 Indice 1 Descrizione del progetto 3 1.1 Requisiti

Dettagli

Metodi per la Gestione dei Dati (lezioni di laboratorio)

Metodi per la Gestione dei Dati (lezioni di laboratorio) Università degli Studi di Modena e Reggio Emilia Facoltà di Scienze della Comunicazione e dell Economia Corso di Laurea in Comunicazione e Marketing Titolare del corso: ing. Stefano SETTI Lezioni di laboratorio

Dettagli

Basi di Dati. Progettazione del Modello ER. K. Donno - Progettazione del Modello ER

Basi di Dati. Progettazione del Modello ER. K. Donno - Progettazione del Modello ER Basi di Dati Progettazione del Modello ER Dai requisiti allo schema ER Entità, relazioni e attributi non sono fatti assoluti dipendono dal contesto applicativo Nella pratica si fa spesso uso di una strategia

Dettagli

ITI Galilei Salerno Corso Database ed SQL

ITI Galilei Salerno Corso Database ed SQL ITI Galilei Salerno Corso Database ed SQL prof Carmine Napoli Introduzione Database: Si definisce Database un insieme di dati, di solito di notevoli dimensioni, raccolti, memorizzati ed organizzai in modo

Dettagli

Informatica (Basi di Dati)

Informatica (Basi di Dati) Corso di Laurea in Biotecnologie Informatica (Basi di Dati) Modello Entità-Relazione Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi, Torlone - Basi di Dati Lucidi del Corso di Basi di Dati 1, Prof.

Dettagli

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a. 2010-2011

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a. 2010-2011 Corso di Laurea in Informatica Basi di Dati a.a. 2010-2011 Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio PROGETTAZIONE FISICA SQL-DDL OBIETTIVO: Rappresentare i dati della realtà di interesse

Dettagli

DUE GRUPPI DI COMANDI

DUE GRUPPI DI COMANDI LEZIONE16 SQL DDL PAG. 1 / 9 PROF. ANDREA ZOCCHEDDU LEZIONE16 SQL DDL LINGUAGGIO SQL DATA DESCRIPTION LANGUAGE DUE GRUPPI DI COMANDI I comandi del linguaggio SQL sono divisi in due grandi gruppi che formano

Dettagli

Implementazione in Oracle di un semplice progetto

Implementazione in Oracle di un semplice progetto Oracle e SQL Implementazione in Oracle di un semplice progetto Operazioni preliminari La versione del DBMS Oracle a cui si farà riferimento di qui in seguito è la 10g Express Edition, liberamente scaricabile

Dettagli

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia: Corso di Basi di Dati Spaziali Linguaggi: SQL Angelo Montanari Donatella Gubiani Storia Storia: 1974: prima proposta SEQUEL 1981: prime implementazioni 1983: standard di fatto 1986, 1989, 1992 e 1999:

Dettagli

DATABASE RELAZIONALI

DATABASE RELAZIONALI 1 di 54 UNIVERSITA DEGLI STUDI DI NAPOLI FEDERICO II DIPARTIMENTO DI DISCIPLINE STORICHE ETTORE LEPORE DATABASE RELAZIONALI Dott. Simone Sammartino Istituto per l Ambiente l Marino Costiero I.A.M.C. C.N.R.

Dettagli

Progettazione logica: regole di traduzione

Progettazione logica: regole di traduzione Progettazione logica: regole di traduzione Sistemi Informativi T Versione elettronica: 08.1.progLogica.traduzione.pdf Il secondo passo requisiti del Sistema Informativo progettazione concettuale cosa si

Dettagli

CAPITOLO 4 ESERCIZI SU SQL

CAPITOLO 4 ESERCIZI SU SQL CAPITOLO 4 ESERCIZI SU SQL (le soluzioni sono riportate da pag. 5 in poi (Nota: gli esercizi non sono sempre in ordine di difficoltà Esercizio 1 Si prendano tutti gli schemi relazionali considerati negli

Dettagli

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 21 LUGLIO 2015 Tempo: 2h30m

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 21 LUGLIO 2015 Tempo: 2h30m Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 21 LUGLIO 2015 Tempo: 2h30m Si consideri il seguente schema di base di dati, che vuole memorizzare informazioni relative a pubblicazioni su riviste

Dettagli

Biglietti e Ritardi: schema E/R

Biglietti e Ritardi: schema E/R Biglietti e Ritardi: schema E/R Ritardi: Progettazione dello schema di Fatto! Definire uno schema di fatto per analizzare i ritardi; in particolare l analisi deve considerare l aeroporto di partenza, mentre

Dettagli

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI IL LINGUAGGIO SQL Il linguaggio SQL ( Structured Query Languages) è un linguaggio non procedurale che è diventato uno standard tra i linguaggi per la gestione dei database relazionali. Il linguaggio procedurale

Dettagli

Progettazione di basi di dati. Progettazione di basi di dati. Ciclo di vita dei sistemi informativi. Fasi del ciclo di vita [1]

Progettazione di basi di dati. Progettazione di basi di dati. Ciclo di vita dei sistemi informativi. Fasi del ciclo di vita [1] Progettazione di basi di dati Progettazione di basi di dati Requisiti progetto Base di dati Struttura Caratteristiche Contenuto Metodologia in 3 fasi Progettazione concettuale Progettazione logica Progettazione

Dettagli

Pianificazione del data warehouse

Pianificazione del data warehouse Pianificazione del data warehouse Dalla pianificazione emergono due principali aree d interesse: area commerciale focalizzata sulle agenzie di vendita e area marketing concentrata sulle vendite dei prodotti.

Dettagli

PHP e Structured Query Language

PHP e Structured Query Language Esercitazioni del corso di Tecnologie per la Comunicazione Aziendale PHP e Structured Query Language Marco Loregian loregian@disco.unimib.it www.siti.disco.unimib.it/didattica/tca2008 Interrogazioni (ripasso)

Dettagli

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. INFORMATICA Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. APPLICAZIONI WEB L architettura di riferimento è quella ampiamente diffusa ed

Dettagli

Transazioni - Parte 1

Transazioni - Parte 1 Basi di dati II Lezione 3 09/10/2008 Caputo Domenico Cosimo, Francesco Pichierri Transazioni - Parte 1 Le transazioni hanno a che fare con la programmabilità delle basi di dati. Prima di trattarle è necessaria

Dettagli

PROGETTAZIONE DI UN DATABASE

PROGETTAZIONE DI UN DATABASE Indice PROGETTAZIONE DI UN DATABASE 1.Il modello ER (entity relationship)...1 Generalità...1 I costrutti principali del modello...2 Entità...2 Associazioni...2 Attributi...2 Altri costrutti del modello...2

Dettagli

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati Corso di Access Modulo L2A (Access) 1.1 Concetti di base 1 Prerequisiti Utilizzo elementare del computer Concetti fondamentali di basi di dati 2 1 Introduzione Un ambiente DBMS è un applicazione che consente

Dettagli

Linguaggio SQL. Structured Query Language

Linguaggio SQL. Structured Query Language Linguaggio SQL Structured Query Language Creato negli anni 70 presso IBM Inizialmente solo linguaggio di interrogazione Ora linguaggio di riferimento per DB relazionali Standardizzato grazie al lavoro

Dettagli

Progettazione base dati relazionale

Progettazione base dati relazionale Progettazione base dati relazionale Prof. Luca Bolognini E-Mail:luca.bolognini@aliceposta.it Progettare una base di dati Lo scopo della progettazione è quello di definire lo schema della base di dati e

Dettagli

Progettazione logica relazionale (1/2)

Progettazione logica relazionale (1/2) Progettazione di basi di dati (1/2) Introduzione Ristrutturazione dello schema ER Eliminazione delle gerarchie Partizionamento di concetti Eliminazione degli attributi multivalore Eliminazione degli attributi

Dettagli

Esame di stato Informatica Corso Programmatori a.s. 2000/2001

Esame di stato Informatica Corso Programmatori a.s. 2000/2001 La storia di Internet mette in evidenza che il diffondersi delle reti telematiche ha influenzato non solo il campo tecnico della comunicazione tra computer, ma anche le abitudini di vita dei singoli e

Dettagli

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: storia SQL SQL: concetti base originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia il DML ne esistono varie versioni vediamo gli aspetti essenziali,

Dettagli

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov.

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov. Appunti di MySql Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov. Indice generale avviare la shell mysql...2 comandi SQL per la gestione del database (DDL)...2 visualizzare l'elenco

Dettagli

OR true null false true true true true null true null null false true null false NOT

OR true null false true true true true null true null null false true null false NOT Il linguaggio SQL è un linguaggio standard per la definizione, manipolazione e interrogazione delle basi di dati relazionali ed ha le seguenti caratteristiche: è dichiarativo; opera su multiset di tuple,

Dettagli

Istruzioni DML di SQL

Istruzioni DML di SQL Istruzioni DML di SQL Pag. 99 par.4 1 Sintassi: Costrutto: INSERT INTO (Inserimento di dati in tabelle) INSERT INTO [(, ,, )] VALUES (, ,

Dettagli

L interfaccia a riga di comando di MySql

L interfaccia a riga di comando di MySql L interfaccia a riga di comando di MySql Una volta completata la procedura di installazione possiamo finalmente testare le funzionalità di MySQL. Sia che ci si trovi in ambiente Linux che Windows, l'interfaccia

Dettagli

Basi di Dati Relazionali

Basi di Dati Relazionali Corso di Laurea in Informatica Basi di Dati Relazionali a.a. 2009-2010 Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio Coadiutore: Dott.ssa D. Nicotera PROGETTAZIONE FISICA SQL-DDL OBIETTIVO: Rappresentare

Dettagli

MODULO 5 DATA BASE PROGRAMMA. Progettazione rapida introduzione alla progettazione di DB

MODULO 5 DATA BASE PROGRAMMA. Progettazione rapida introduzione alla progettazione di DB MODULO 5 DATA BASE MODULO 5 - DATA BASE 1 PROGRAMMA Introduzione: concetti generali di teoria Progettazione rapida introduzione alla progettazione di DB Utilizzo di Access pratica sulla creazione e l utilizzo

Dettagli

Lezione del modulo 7 SQL e database del giorno 04/05/2006 tot. ore 3. Lo Standard SQL

Lezione del modulo 7 SQL e database del giorno 04/05/2006 tot. ore 3. Lo Standard SQL Lezione del modulo 7 SQL e database del giorno 04/05/2006 tot. ore 3 Lo Standard SQL Il linguaggio SQL è un linguaggio non procedurale (o di tipo dichiarativo), divenuto, ormai da tempo, il linguaggio

Dettagli

Progetto di basi di dati Laboratorio di diagnosi mediche

Progetto di basi di dati Laboratorio di diagnosi mediche Progetto di basi di dati aboratorio di diagnosi mediche Descrizione e specifiche Si vuole realizzare il progetto della base di dati di laboratorio di diagnosi medica, partendo da un insieme di requisiti.

Dettagli