ESEMPIO DI PROGETTAZIONE DI UN DB Nella lezione di oggi vedremo un semplice esempio di progettazione e implementazione di un database MySQL. Ricapitoliamo le fasi che tipicamente conducono dal mondo reale al suo modello informatico, supponendo di utilizzare come modello un database SQL Analisi di un particolare aspetto del mondo reale BIOINFO3 - Lezione 07 Schema concettuale Schema logico (entità e relazioni) (tabelle) 1 COSA VOGLIAMO GESTIRE? Supponiamo di voler creare e gestire un DB (molto semplice e ridotto al minimo) di ENZIMI DI RESTRIZIONE. Gli enzimi di restrizione stanno alla base della tecnologia del DNA-ricombinante. Enzimi di tipi I e II: riconoscono una sequenza e tagliano lontano dal sito di riconoscimento. Enzimi di tipo II: tagliano all`interno del sito di riconoscimento. Supponiamo però che questa risorsa (REBASE) non esista e a noi serva assolutamente sviluppare un database di questo aspetto (ENZIMI DI RESTRIZIONE DI TIPO II) del mondo reale BIOINFO3 - Lezione 07 2 ANALISI (SCHEMA CONCETTUALE) Cerchiamo di capire quali entità dobbiamo considerare e come eventualmente esse siano in relazione tra loro Ovviamente una entità è sicuramente quella degli ENZIMI stessi (ad esempio chiamiamola enzimir) enzimir Una soluzione più complessa potrebbe considerare anche i produttori degli enzimi, associando ogni enzima a tutti i suoi produttori (è una relazione molti:molti tipicamente rappresentata in una tabella intermedia tra le due, in quanto ogni enzima può avere più produttori ed ogni produttore più enzimi) BIOINFO3 - Lezione 07 3 CONSIDERAZIONI In REBASE il problema di associare ogni enzima a tutti i suoi produttori è stato risolto in modo poco formale e non molto flessibile (ma pratico!). E’ stato associato un codice di una lettera a ciascun produttore e sono state inserite in un campo “vendor” le lettere corrispondenti a tutti i produttori che vendono l’enzima memorizzato in quel record (es. acefghijkmnoqrsuvx enzima venduto da a, da c, da e,….) In questo esempio però non vogliamo gestire il problema dei produttori perciò consideriamo come entità da gestire solo quella degli enzimi! BIOINFO3 - Lezione 07 4 ANALISI (SCHEMA LOGICO) Quali attributi (che poi diventeranno i campi di una tabella) riusciamo ad individuare per gli enzimi di restrizione? Innanzitutto il nome (che potrebbe fungere da chiave!). Di solito è una stringa di caratteri di lunghezza variabile (ma meno di 20) Ovviamente poi ci interessa sapere la sequenza specifica riconosciuta dall’enzima (piccola stringa caratteri ) E’ essenziale sapere anche in quale posizione avviene il taglio. Essa potrà essere rappresentata da un piccolo numero intero con segno. (EcoRI, nella figura, taglia in posizione 1) BIOINFO3 - Lezione 07 5 IL MODELLO DEI DATI Ricapitolando: L’analisi effettuata ci ha permesso di costruire uno schema concettuale dei dati semplicissimo, formato da una sola entità, con il seguente schema logico. Allo schema fisico ci pensa SQL! DB ? (bisognerebbe anche scegliere un nome per il DB!) Tabella (Entità): enzimir Campi (Attributi) della tabella: nome di tipo varchar(20) (chiave) sequenza di tipo varchar (50) sitotaglio di tipo tinyint BIOINFO3 - Lezione 07 6 TRADUZIONE IN SQL Lo schema logico è immediatamente traducibile in un comando create di MySQL che scriviamo per comodità dentro ad un file (chiamato ad esempio enzimir.mysql). BIOINFO3 - Lezione 07 7 CREAZIONE EFFETTIVA DELLA TABELLA A questo punto si deve decidere in che database inserire la nostra tabella. Una volta disponibile un DB si può finalmente chiedere al client mysql di UNIX di leggere il nostro file di comandi enzimir.mysql per creare effettivamente la tabella enzimir all’interno del DB Come? BIOINFO3 - Lezione 07 8 VERIFICA A questo punto desideriamo controllare che la tabella sia stata realmente creata e vorremmo verificare l’esattezza dei campi. Che comando usiamo? BIOINFO3 - Lezione 07 9 INSERIMENTO DATI Vogliamo inserire manualmente il record per EcoRI. BIOINFO3 - Lezione 07 10 INSERIMENTO DATI Vogliamo ora inserire altri enzimi, ma questa volta da file. Creiamo un file (ad esempio insertenzimi.mysql) con un editor e poi lo passiamo al client mysql BIOINFO3 - Lezione 07 11 VISUALIZZAZIONE DEI DATI Vorremmo vedere tutta la tabella ordinata per nome dell’enzima Ci accorgiamo che abbiamo sbagliato il sito di taglio per l’enzima AcrI! Modificarlo da 1 a -1 BIOINFO3 - Lezione 07 12 VISUALIZZAZIONE DEI DATI Vorremmo vedere ora le sequenze ordinate per lunghezza ed, a parità di lunghezza, per ordine alfabetico Questo non ve l’ho detto però provateci lo stesso. Ci interessa sapere la lunghezza media delle sequenze degli enzimi! BIOINFO3 - Lezione 07 13 QUERY ... e la lunghezza massima e minima delle sequenze riconosciute? BIOINFO3 - Lezione 07 14