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 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. 1 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}; Creazione manuale delle tabelle (mediante scrittura del codice SQL corrispondente) 3 4
Connessione a MySQL step 1 Connessione a MySQL step 2 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 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). 5 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; 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`) 7 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, 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, 9 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, 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, 11 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, Creazione semi-automatica delle tabelle (mediante l interfaccia grafica di phpmyadmin) 13 14 Le stesse tabelle create con phpmyadmin (versione 2.2.x) Creazione di un nuovo Data Base da phpmyadmin 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. 15 16
Creazione di una nuova tabella da phpmyadmin - step 1 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 ; 17 18 Creazione di una nuova tabella da phpmyadmin - step 2 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. 19 20
Creazione di una nuova tabella da phpmyadmin - step 2 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 ). 21 22 Esecuzione del file SQL da phpmyadmin - step 1 Esecuzione del file SQL da phpmyadmin - step 2 23 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. 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. 25 26 Fine della terza lezione 27 28