Simulazione informatica Esercizio da svolgere con il DBMS MySQL ed il client HeidiSQL 1. Crea un database di nome VideoNoleggi che contenga tre tabelle, una chiamata Clienti che contiene l'anagrafica dei clienti di un negozio di videonoleggio, una chiamata DVD che contiene l'elenco dei DVD disponibili ed una chiamata Noleggi che contiene l'elenco dei noleggi relativi ai DVD che vengono presi in prestito dai clienti. Un cliente può prendere in prestito quanti DVD vuole, quindi un singolo record della tabella Clienti può essere correlato a uno o più record della tabella Noleggi. Un singolo video, tuttavia, è associato a un solo cliente in un determinato momento, quindi un singolo record della tabella Noleggi è correlato a un solo record della tabella Clienti. Allo stesso modo ciascun record della tabella DVD è correlato ad uno o più record della tabella Noleggi, in quanto ad ogni noleggio viene registrato il nome del cliente ma anche il video che è stato noleggiato. 2. Crea la tabella Clienti scegliendo opportunamente il tipo, la dimensione ed il formato dei campi: Cognome Nome Indirizzo Città Numero_tel 3. Aggiungi il campo ID_cliente di tipo chiave primaria Auto_Increment 4. Inserisci almeno 10 record: ID_studente Cognome Nome 1 2 3 4 5 Coletti Verdi Gianelli Esposito Moretti Roberta Alberto Sara Antonio Giuseppe 6 7 8 9 10 Sandri Sonetti Rossi Frollino Capelli Bruno Maria Matteo Marco Manuela Indirizzo Via Gardena, 34 Via Cavour, 11 Corso Rivolta, 43 Via Albertoni, 34 Corso C.Colombo, 126 Viale Cavour, 32 Via Verdi, 3 Via Natta, 32 Via Mazzini, 11 Via C.Colombo, 21 Città Numero_tel Pescara Bergamo Firenze Napoli Ancona +3933056453423 +3933356457423 +3933356453423 +3933156153420 +3934656453421 Roma Palermo Lecce Bologna Milano +3933353853122 +3933355953423 +3934556453424 +3934323453425 +3932156412426 Esiste una relazione uno a molti fra una coppia di tabelle quando un singolo record della prima tabella può essere correlato a uno o più record della seconda tabella, ma un singolo record della seconda tabella può essere correlato a un solo record della prima tabella. Esaminiamo un esempio generico di questo tipo di relazione. Questa è la più comune relazione in assoluto che può esistere fra una coppia di tabelle in un database ed è la più facile da identificare. Essa è cruciale dal punto di vista dell’integrità dei dati in quanto aiuta a eliminare i dati duplicati e a ridurre al minimo i dati ridondanti. 5. Crea la tabella DVD scegliendo opportunamente il tipo, la dimensione ed il formato dei campi: Titolo Anno Regista Genere Nazione 6. Aggiungi il campo ID_video di tipo chiave primaria Auto_Increment 7. Inserisci almeno 10 record: ID_vide o 1 2 Titolo Anno Regista Genere Nazione 1986 1998 M.Scorsese A. Tornatore Commedia Fantastico USA Italia 3 4 5 6 7 8 9 Il colore dei soldi La leggenda del pianista sull'oceano Il cacciatore Taxi Driver My fairlady Profumo di donna Blood diamonds Novecento Apocalipse now 1978 1976 1964 1992 2007 1976 1979 Guerra Drammatico Commedia Drammatico Drammatico Drammatico Guerra USA USA USA USA USA Italia USA 10 V per vendetta 2005 M. Cimino M. Scorsese J. Cuckor M. Brest E. Zwick B.Bertolucci F. Ford Coppola J. Mc Teigue Azione Inghilterra 8. Crea la tabella Noleggi per creare una relazione di tipo 1 a molti tra le tre tabelle. scegliendo opportunamente il tipo, la dimensione ed il formato dei campi: id_cliente id_dvd data_noleggio data_restituzione I campi id_dvd e id_cliente sono chiavi esterne, pertanto quando crei la tabella ricordati di inserire il vincolo relazionale che non ammette la possibilità di inserire chiavi esterne non correlate al relativo studente o strumento. 6. Aggiungi il campo ID_noleggio di tipo chiave primaria Auto_Increment 7. Inserisci almeno 20 record: ID_noleggio 1 2 3 4 5 6 7 Id_cliente 1 8 1 3 3 2 1 Id_dvd 1 4 2 7 1 2 3 Data_noleggio 10/03/2013 11/03/2013 21/03/2013 11/04/2013 14/04/2013 18/04/2013 21/04/2013 Data_restituzione 11/03/2013 11/03/2013 22/03/2013 22/04/2013 21/04/2013 22/04/2013 26/04/2013 8 9 10 11 12 13 14 15 16 17 18 19 20 6 3 5 2 2 1 3 7 8 9 10 3 10 5 4 3 2 7 5 6 3 5 6 5 5 6 11/05/2013 14/05/2013 14/05/2013 14/05/2013 19/05/2013 21/05/2013 22/05/2013 24/05/2013 19/05/2013 19/06/2013 21/07/2013 05/08/2013 12/08/2013 12/05/2013 18/05/2013 22/05/2013 21/05/2013 20/05/2013 29/06/2013 22/06/2013 02/06/2013 20/05/2013 22/06/2013 04/08/2012 6/08/2013 14/08/2013