Università degli Studi di Modena e Reggio Emilia Facoltà di Scienze della Comunicazione e dell’Economia Corso di Laurea in Comunicazione e Marketing Anno Accademico 2005/06 Metodi per la Gestione dei Dati (lezioni di laboratorio) Titolare del corso: ing. Stefano SETTI Lezioni di laboratorio: gruppo A-K - dott. Fabio RUINI gruppo M-Z - dott. Alessandro FILISETTI Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 1 Convenzioni per la progettazione fisica Sebbene non sempre costituiscano dei vincoli insormontabili, esistono alcune convenzioni che è bene seguire durante la progettazione fisica, per evitare eventuali problemi con i DB che stiamo creando. Le convenzioni più diffuse sono le seguenti: i nomi delle tabelle devono essere al singolare (ad. esempio: “studente” e non “studenti”); i nomi delle tabelle e dei singoli campi non devono contenere spazi vuoti al loro interno (è possibile trovare degli escamotage, ad esempio sfruttando il carattere “underscore”: “data_di_nascita” invece di “data di nascita”); i nomi delle tabelle e dei singoli campi non devono contenere caratteri alfanumerici “particolari” (lettere accentate, apostrofi, ecc... Ad esempio: “facolta” e non “facoltà”); i nomi delle tabelle e dei singoli campi non devono essere eccessivamente “lunghi” (mediamente, nomi di 10/15 caratteri sono già piuttosto lunghi): utilizzare abbreviazioni esplicative ogni qualvolta ciò è possibile. Ad esempio: “id_stud” al posto di “identificativo_univoco_studente”. Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 2 L'esercizio della settimana scorsa Nelle slides della scorsa lezione abbiamo presentato un esercizio (esercizio 2 - slide nr. 39), dove veniva richiesto di creare un DB (relativo ad un’ipotetica segreteria didattica), con le rispettive tabelle. L’elenco delle tabelle, leggermente modificato al fine di migliorarne l’efficacia didattica, è riportato qui sotto: studente = {matricola, nome, cognome, data_di_nascita, id_cdl, crediti_conseguiti} cdl = {id, nome, classe_di_laurea, numero_chiuso, id_facolta}; facolta = {id, nome, indirizzo, citta, CAP, provincia}; insegnamento = {id, nome, id_cdl, nr_crediti, anno}; appello = {id, id_ins, id_stu, data, voto}; propedeuticita = {id, id_ins, id_ins_prop}; Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 3 Creazione “manuale“ delle tabelle (mediante scrittura del codice SQL corrispondente) Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 4 Connessione a MySQL – step 1 Una volta entrati nel prompt dei comandi, occorre spostarsi all’interno della directory nella quale è stato installato il client. Se durante l’installazione non sono stati variati i parametri di default, per accedere alla cartella dovrebbe essere sufficiente digitare l’istruzione: C:\>cd \Programmi\EasyPHP1-8\mysql\bin seguita dalla pressione del tasto INVIO Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 5 Connessione a MySQL – step 2 Per comodità possiamo accedere a MySQL con le credenziali di “root”: C:\Programmi\EasyPHP\mysql\bin\>mysql –u root (il parametro “-u” indica a MySQL che la stringa seguente rappresenta il nome dell’utente che sta tentando di collegarsi al DBMS). Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 6 Creazione e selezione del nuovo Data Base Per creare un Data Base si utilizza l’istruzione CREATE già vista nelle precedenti lezioni, ovvero: mysql> CREATE nome_database; Nel caso specifico: mysql> CREATE scuola; Seguita dal solito comando per selezionare il neonato DB: mysql> USE scuola; Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 7 Creazione della tabella 'studente' mysql> CREATE TABLE `studente` ( `matricola` SMALLINT(6) NOT NULL AUTO_INCREMENT, `nome` VARCHAR(30) NOT NULL, `cognome` VARCHAR(30) NOT NULL, `data_di_nascita` DATE NOT NULL, `id_cdl` TINYINT UNSIGNED NOT NULL, `crediti_conseguiti` TINYINT UNSIGNED, PRIMARY KEY (`matricola`) ); Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 8 Creazione della tabella ‘cdl’ mysql> CREATE TABLE `cdl` ( `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, `nome` VARCHAR(100) NOT NULL, `classe_di_laurea` TINYINT UNSIGNED NOT NULL, `numero_chiuso` BINARY(1) NOT NULL, `id_facolta` TINYINT UNSIGNED NOT NULL, PRIMARY KEY (`id`) ); Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 9 Creazione della tabella 'facolta' mysql> CREATE TABLE `facolta` ( `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, `nome` VARCHAR(50) NOT NULL, `indirizzo` VARCHAR(100) NOT NULL, `citta` VARCHAR(20) NOT NULL, `cap` VARCHAR(5) NOT NULL, `provincia` VARCHAR(4) NOT NULL, PRIMARY KEY (`id`) ); Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 10 La tabella ‘insegnamento’ mysql> CREATE TABLE `insegnamento` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `nome` VARCHAR(50) NOT NULL, `id_cdl` TINYINT UNSIGNED NOT NULL, `nr_crediti` TINYINT UNSIGNED NOT NULL, `anno` TINYINT NOT NULL, PRIMARY KEY (`id`) ); Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 11 La tabella 'appello' mysql> CREATE TABLE `appello` ( `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT, `id_ins` SMALLINT UNSIGNED NOT NULL, `id_stu` SMALLINT UNSIGNED NOT NULL, `data` DATETIME NOT NULL, `voto` TINYINT UNSIGNED, PRIMARY KEY (`id`) ); Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 12 Creazione della tabella 'propedeuticita' mysql> CREATE TABLE `propedeuticita` ( `id` TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, `id_ins` SMALLINT NOT NULL, `id_ins_prop` SMALLINT NOT NULL, PRIMARY KEY (`id`) ); Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 13 Creazione “semi-automatica“ delle tabelle (mediante l’interfaccia grafica di phpMyAdmin) Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 14 Le stesse tabelle create con phpMyAdmin (versione 2.2.x) Per creare le tabelle senza ricorrere alla shell, ma sfruttando l'interfaccia grafica phpMyAdmin, occorre seguire il seguente procedimento: alla voce “Crea un nuovo database”, digitare “scuola” e fare clic sul pulsante “Crea”; alla voce “Crea una nuova tabella nel database scuola”, inserire: il nome della tabella da creare nella casella “Nome”; il numero di campi di cui è composta nella casella “Campi”; fare clic sul pulsante “Esegui”; nella nuova schermata, compilare le varie caselle di testo e, una volta riempite tutte, fare clic sul pulsante “Salva”. Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 15 Creazione di un nuovo Data Base da phpMyAdmin Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 16 Creazione di una nuova tabella da phpMyAdmin - step 1 Una volte creato il Data Base, alla voce “Crea una nuova tabella nel database scuola”, inserire: il nome della tabella da creare nella casella “Nome”; il numero di campi di cui è composta nella casella “Campi”; fare clic sul pulsante “Esegui”; Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 17 Creazione di una nuova tabella da phpMyAdmin - step 1 Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 18 Creazione di una nuova tabella da phpMyAdmin - step 2 Una volte attribuito il nome alla tabella da creare ed il numero di campi “attributi della relazione”, compare una schermata nella quale occorre immettere le caratteristiche relative ad ogni campo*. Una volta effettuata questa operazione, fare clic sul pulsante “Salva”. La vostra tabella comparirà all’interno di “visualizzazione struttura” e verrà mostrato il codice MySQL creato sulla base dei parametri introdotti. *: Attenzione !!! Nella stessa schermata compare un pulsante “Esegui”. Accertatevi di non premere accidentalmente questo pulsante, in quanto non salva la tabella ma inserisce un nuovo campo all’interno della stessa. Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 19 Creazione di una nuova tabella da phpMyAdmin - step 2 Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 20 Creazione di una nuova tabella da phpMyAdmin - step 2 Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 21 Download del file SQL completo Per velocizzare l'operazione di creazione delle tabelle dell'esempio, invece che crearle manualmente è possibile scaricare il file 'scuola.sql', disponibile on line sulla pagina di Dolly relativa al corso, ed eseguirlo: da shell: mysql> CREATE scuola; mysql> USE scuola; mysql> SOURCE scuola.sql; (NB: affinché il comando SOURCE possa essere eseguito con questa sintassi, il file SQL deve trovarsi nella stessa directory dalla quale è stata lanciata la shell di MySQL. Di default, si tratta di C:\Programmi\EasyPHP1-8\mysql\bin) da phpMyAdmin (versione 2.2.x): creare un nuovo database (chiamato “scuola”); eseguire la query sul database “scuola” (in sequenza: selezione del DB “scuola”, della scheda “SQL”, del file SQL tramite il pulsante “Sfoglia” e quindi clic sul pulsante “Esegui”). Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 22 Esecuzione del file SQL da phpMyAdmin - step 1 Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 23 Esecuzione del file SQL da phpMyAdmin - step 2 Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 24 Come creare un file SQL simile a quello che abbiamo appena utilizzato? Per creare un file SQL, “eseguibile” come quello che abbiamo appena utilizzato, è possibile percorrere almeno due strade differenti: - scrivere tutto il codice SQL attraverso un editor di “plain-text” (ad es. il Blocco Note di Windows, il TextEdit di Mac OS X, KWrite su Linux/KDE, ecc...); - utilizzare la funzione di esportazione offerta da phpMyAdmin. Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 25 Esportazione del DB ‘scuola’ attraverso phpMyAdmin - step 1 Per esportare struttura e dati di un Data Base da phpMyAdmin, si può seguire il percorso qui elencato: dalla schermata principale del programma, scegliere il DB che si desidera esportare (nel nostro caso il Data Base “scuola”); nelle varie schede che compaiono nel frame destro della pagina, scegliere “Esporta”; nella sezione “Esporta” selezionare tutte le tabelle del DB (link “Seleziona Tutto”) e l’opzione “SQL”; nella sezione “Opzioni SQL” selezionare: “Struttura”, “Aggiungi DROP TABLE”, “Aggiunge IF NOT EXISTS”, “Aggiungi valore AUTO_INCREMENT”, “Usa i backquotes con i nomi delle tabelle e dei campi”, “Compatibilità dell’esportazione SQL: NONE”, “Dati”, “Inserimenti completi”, “Inserimenti estesi”, “Usa l’esadecimale per i dati binari”, “Tipo di esportazione: INSERT”; nella sezione “Salva con nome...” selezionare: “Salva con nome...”, “Nome file template: __DB__”, “Compressione: nessuno”. fare clic sul pulsante “Esegui” e salvare in locale una copia del file SQL risultante. Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 26 Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 27 Fine della terza lezione… Materiale didattico a cura di: Fabio Ruini ([email protected]) e Alessandro Filisetti ([email protected]) Insegnamento: Metodi per la Gestione dei Dati - AA 2005/06 - Corso di Laurea in Comunicazione e Marketing Facoltà di Scienze della Comunicazione e dell’Economia - Università degli Studi di Modena e Reggio Emilia 28