INTRODUZIONE AI DATABASE RELAZIONALI Base dati e tecniche
INTRODUZIONE AI DATABASE RELAZIONALI Base dati e tecniche di utilizzo in ambito scientifico – parte 3 Opus Facere – INAF Bologna nicastro@iasfbo. inaf. it http: //ross. iasfbo. inaf. it/opusfacere/
Percorso di alternanza scuola-lavoro a cura di INAF - IASF Bologna DBMS: componenti Accessibilit à Concorrenz a Efficienza DBMS Affidabilità Sicurezza 2
Percorso di alternanza scuola-lavoro a cura di INAF - IASF Bologna DBMS: Accessibilità Accesso ai dati da applicativi scritti in vari linguaggi di programmazione Per esercitarsi con SQL vedere gli esempi riportati nella pagina vademecum del sito di riferimento: http: //ross. iasfbo. inaf. it/opusfacere/documenti/vademecum. html Adesso vediamo come si può interagire con il DB server da (quasi) tutti i linguaggi di programmazione, ad es. : Ø Linguaggio C Ø Linguaggio Python Ø Linguaggio PHP 3
Percorso di alternanza scuola-lavoro a cura di INAF - IASF Bologna DBMS: accesso da C Semplice query di informazione della versione del client My. SQL #include <my_global. h> #include <mysql. h> int main(int argc, char **argv) { printf("My. SQL client version: %sn", mysql_get_client_info()); exit(0); } 4
Percorso di alternanza scuola-lavoro a cura di INAF - IASF Bologna DBMS: accesso da C Semplice query di tipo SELECT con stampa risultato – errori non gestiti #include <my_global. h> #include <mysql. h> int main(int argc, char **argv) { MYSQL *con = mysql_init(NULL); mysql_real_connect(con, "localhost", "user", "pass", "db", 0, NULL, 0); mysql_query(con, "SELECT * FROM Messier"); MYSQL_RES *result = mysql_store_result(con); int num_fields = mysql_num_fields(result); // numero di colonne MYSQL_ROW row; while ((row = mysql_fetch_row(result))) { // per ogni riga ritornata for(int i = 0; i < num_fields; i++) printf("%s ", row[i] ? row[i] : "NULL"); printf("n"); } mysql_free_result(result); mysql_close(con); exit(0); } 5
Percorso di alternanza scuola-lavoro a cura di INAF - IASF Bologna DBMS: accesso da Python Sempre SELECT con stampa risultato – assumiamo di sapere i nomi dei campi #!/usr/bin/python # -*- coding: utf-8 -*import My. SQLdb as mdb con = mdb. connect('localhost', 'opuspass', 'opus 2017') with con: cur = con. cursor(mdb. cursors. Dict. Cursor) cur. execute("SELECT * FROM BSC LIMIT 4") rows = cur. fetchall() for row in rows: print row["Name"], row["RA"], row["Dec"], row["Vmag"] 6
Percorso di alternanza scuola-lavoro a cura di INAF - IASF Bologna DBMS: accesso da PHP Qui usiamo l’estensione My. SQLi – vedi http: //php. net/manual/en/mysqli. examples-basic. php <? php // Usiamo il database Sakila $mysqli = new mysqli('127. 0. 0. 1', 'opuspass', 'sakila'); SELECT actor_id, first_name, last_name FROM actor ORDER BY rand() LIMIT 5 $sql = ""; $result = $mysqli->query($sql); echo "<ul>n"; while ($actor = $result->fetch_assoc()) { echo "<li>". $ actor['actor_id']. "'>n"; echo $actor['first_name']. ' '. $actor['last_name']; echo "</li>n"; } echo "</ul>n; " $result->free(); $mysqli->close(); ? > 7
Percorso di alternanza scuola-lavoro a cura di INAF - IASF Bologna DBMS: accesso da PHP – 2 Catalogo di stelle brillanti BSC – vedi esempio di pagina web in seguito <? php. // Usiamo il database opus 2017, tabella BSC $mysqli = new mysqli('localhost', 'opos', 'opuspass', 'opus 2017'); $sql = "SELECT name, ra, de, vmag FROM BSC ORDER BY vmag LIMIT 8"; $result = $mysqli->query($sql); echo "<table<<tr>n; " while ($finfo = $result->fetch_field()) echo '<th>'. $finfo->name. '</th>'; // i nomi dei campi echo '</tr>'; while ($star$ = result->fetch_row} (() // le righe con i dati echo "<tr>n"; foreach ($row as $value) echo "<td nowrap>$value</td>"; echo "</tr<n; " } echo "</tr<</table>n"; // fine della tabella $result->free(); // puliamo l’oggetto con i dati $mysqli->close(); // chiudiamo la connessione con il server ? > 8
Percorso di alternanza scuola-lavoro a cura di INAF - IASF Bologna DBMS: accesso web I componenti base di un sito web moderno sono tipicamente 4 Sito Web CSS 3 Java. Script Apparenza Gestione contenuti HTML 5 Scheletro PHP Operazioni lato server 9
Percorso di alternanza scuola-lavoro a cura di INAF - IASF Bologna DBMS: accesso web Uso di Java. Script e AJAX per accedere ai dati: da file e da database Per usarlo sul proprio PC abbiamo bisogno di avere un web-server attivo con PHP abilitato. Va anche verificata la configurazione necessaria per poter accedere ai dati. Negli esempi si assume: DB=opus 2017 Utente=opus Password=opuspass Vedere i file qui sotto (presenti sul sito di riferimento). § index. html § Pagina di query + visione tabella § plot. html e histo. htlm § Pagina di query + visione grafico “scatter plot” e istogramma § cielo. html § Pagina di query + visione sulla sfera celeste § stile. css § File di stile § ajax_query. js § Funzioni di trasferimento dei dati dal DB server alla pagina web § query_bsc. php § Programma per effettuare la query locale sul DB server 10
Percorso di alternanza scuola-lavoro a cura di INAF - IASF Bologna Visualizzazione grafica dei dati Alcune risorse Java. Script per creare grafici in pagine WEB Ø am. Charts: https: //www. amcharts. com/ § Vedi pagina esempi: https: //www. amcharts. com/demos/ Ø Plotly. js: https: //plot. ly/javascript/ Ø D 3. js: https: //d 3 js. org/ Ø Flot: http: //www. flotcharts. org/ Ø… Google: javascript plotting library 11
- Slides: 11