Tool Basi di Dati e Sistemi Informativi Prof. Marco Di Felice Dott.sa Sara Zuppiroli A.A. 2012-2013 Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 1 / 26
Gli strumenti che vedremo Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 2 / 26
Come imposteremo le lezioni Per ogni strumento: Breve introduzione Installazione sul proprio pc del tool Creazione ed accesso a un DB Comandi SQL da terminale e da interfaccia grafica Esempio di implementazione di un piccolo DB Funzionalità avanzate Confronto tra i due strumenti Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 3 / 26
Introduzione a Postgres PostgreSQL è un Database system (relazionale e ad oggetti) open source Nasce da un progetto del 1986 del professor Michael Stonebraker Ad oggi PostgreSql supporta le piattaforme Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), e Windows. supporta la gestione di tabelle, foreign keys, joins, views, triggers, and stored procedures. Include i seguenti tipi di dato: INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, e TIMESTAMP, inoltre salva immagini, suoni e video. Ha interfacce per i seguenti linguaggi C/C++, Java,.Net, Perl, Python, Ruby, Tcl, ODBC. per maggiori informazioni http://www.postgresql.org/docs/9.2/static/history.html Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 4 / 26
Licenza La licenza di Postgres è The PostgreSQL Licence (PostgreSQL) È una licenza simile a MIT e BSD le cui caratteristiche principali sono: La possibilità di utilizzare il codice di PostgreSQL o lo strumento gratuitamente L unico vincolo è quello di citare l autore del programma Per maggiori informazioni http://opensource.org/licenses/postgresql Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 5 / 26
Installazione Ci colleghiamo alla pagina http://www.postgresql.org/download/ Selezioniamo la piattaforma installata sul vostro computer Eseguire il download del programma Eseguiamo le istruzioni sul file README Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 6 / 26
Architettura PostgreSQL usa un modello client/server. Una sessione PostgreSQL consiste nei seguenti processi: Un processo server, che gestisce il database e accetta le connessioni da parte di un client. Il server gestisce le azioni sul database su indicazione dei client. È chiamato postmaster il programma server. L applicazione client che richiede le operazioni al database. L applicazione Client può essere un applicazione: uno strumento text-oriented uno strumento con interfaccia grafica, un web server che accede al database mostrando le pagine web uno strumento specializzato al mantenimento del database Alcune applicazioni client sono sviluppate da PostgreSQL distribution, molte sono sviluppate da altri utenti. Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 7 / 26
Accedere al Server Selezionare il programma PostgreSql e selezionare SQL shell, apparirà la seguente pagina Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 8 / 26
Connessione da shell Scrivere le seguenti linee di comando per connettersi da Shell Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 9 / 26
I primi passi Creazione e cancellazione di un nuovo DB da shell I comdandi per creare/cancellare un DB sono CREATE DATABASE/DROP DATABASE seguito dal nome che si vuole assegnare In BNF (Backus - Naur Form) i comandi createdb e dropdb sono definiti come segue: < command >::=< create >; < drop >; < create >::= CREATE DATABASE < identifier > < drop >::= DROP DATABASE < identifier > < identifier >::=< letter >< id > < id >::=< letter > < digit > < number >::=< digit > + < letter >::= a b... z A... Z < digit >::= 0 1... 9 Creare un DB che si chiami DB1 Cancellare il DB appena creato Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 10 / 26
Creazione delle tabelle Per connettersi a un DB da shell bisogna digitare il comando nome del DB Creiamo un Database dal nome IlMeteo Ci connettiamo al Database IlMeteo A questo punto creiamo le tabelle che appartengono a questo DB: La tabella Tempo che contiene almeno questi attributi: comune, tempmin, tempmax, precipitazione, data La tabella Comune che contiene almeno questi attributi: comune, posizione Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 11 / 26
I tipi I principali tipi che si possono utilizzare sono: I tipi numerici Smallint 2 bytes, integer 4 bytes, real 4 bytes e precisione a 6 numeri decimali Per approfondimenti http://www.postgresql.org/ docs/9.2/static/datatype-numeric.html I tipi Data Timestamp, date Per approfondimenti http://www.postgresql.org/ docs/9.2/static/datatype-datetime.html I tipi Geometrici Point, circle Per approfondimenti http://www.postgresql.org/ docs/9.2/static/datatype-geometric.html Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 12 / 26
Creazione delle tabelle CREATE TABLE Tempo ( comune varchar ( 8 0 ), nome temp_min int, temperatura minima temp_max int, temperatura massima p r e c i p i t a z i o n e real, p r e c i p i t a z i o n e data date ) ; CREATE TABLE Comune ( nome varchar ( 8 0 ), l o c a l i z z a z i o n e p o i n t ) ; Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 13 / 26
Inserimento dei dati nelle tabelle INSERT INTO Tempo VALUES ( Bologna,7, 11, 0.0, 2012 10 29 ) ; INSERT INTO Comune VALUES ( Bologna, ( 194.0, 53.0) ) ; INSERT INTO Tempo ( comune, temp_min, temp_max, p r e c i p i t a z i o n e, data ) VALUES ( Reggio Emilia, 6, 10, 0.05, 2012 10 29 ) ; INSERT INTO Tempo ( data, comune, temp_min, temp_max ) VALUES ( 2012 10 29, Modena, 5, 1 0 ) ; Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 14 / 26
Vincoli interni ed esterni alle tabelle Per inserire un vincolo interno a una tabella, bisogna inserire alla fine di insert il comando CONSTRAINT nomecost PRIMARY KEY (campo1,..., campon) Per inserire un vincolo esterno bisogna aggiungere il comando CONSTRAINT nomecost FOREIGN KEY (campotabelladavincolare) REFERENCES tabellasucuicreareilvincolo (campo) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 15 / 26
Esempi di Select Estrarre tutti i dati presenti nella tabella tempo Trovare per ogni comune la temperatura minima e la precipitazione per ciascun giorno Con i dati archiviati, calcolare la temperatura media di ciascun comune Estrarre le temperature e le precipitazioni e le date in cui il comune di Bologna non ha avuto precipitazioni. Ordinare i dati in tabella per comune e poi per comune e temperatura minima Selezionare i singoli comuni presenti nella tabella tempo, ripetere l esercizio ordinando i dati per comune Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 16 / 26
Esempi di Select SELECT FROM tempo ; SELECT comune, temp_min, p r e c i p i t a z i o n e, data FROM Tempo ; SELECT comune, ( temp_max+temp_min ) / 2 AS temp_m FROM Tempo ; SELECT FROM Tempo WHERE Comune = Bologna AND p r e c i p i t a t i o n = 0. 0 ; Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 17 / 26
Esempi di Select SELECT FROM Tempo ORDER BY comune ; SELECT FROM Tempo ORDER BY Comune, temp_min ; SELECT DISTINCT Comune FROM Tempo ; SELECT DISTINCT Comune FROM Tempo ORDER BY Comune ; Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 18 / 26
Join tra tabelle Estrarre tutti i comuni che sono presenti nella tabella tempo e di cui si ha la posizione Estrarre tutti i dati delle tabelle tempo e comune legati dal nome del comune Estrarre tutti i dati delle tabelle tempo e comune anche se il comune non è stato definito nella tabella comuni Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 19 / 26
Join tra tabelle SELECT C. FROM Comune C WHERE C. nome in ( select t. comune from tempo ) and c. posizione <> NULL; SELECT comune, temp_min, temp_max, p r e c i p i t a z i o n e data, posizione FROM tempo, comune WHERE comune = nome ; SELECT FROM Tempo LEFT OUTER JOIN Comune ON ( tempo. comune = comune. nome ) ; Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 20 / 26
Group by e Having SELECT comune, ( temp_min + temp_max ) / 2 temp_med FROM Tempo group by comune, ( temp_min + temp_max ) / 2 having ( temp_min + temp_max)/2 >8 ; Quali dati estrae questa query? Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 21 / 26
Trigger Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 22 / 26
Interfaccia grafica Selezionare il programma PostgreSql e poi pgadminiii Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 23 / 26
Import da file Decidere il separatore delle colonne Creare il file con tutti i dati da inserire in tabella col separatore scelto Selezionare la tabella su cui si vuole fare l import Importare il file dopo aver configurato l operazione Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 24 / 26
Esercizio Uno studio medico vuole di realizzare un archivio che permetta di gestire i dati utilizzati dai medici che ne fanno parte. I medici ad oggi sono cinque e ognuno di loro deve avere accesso al DB dal proprio computer con una propria password. Il medico deve poter inserire, gestire e cancellare i propri pazienti. Ogni paziente avrà una scheda anagrafica che avrà almeno i seguenti dati: nome, cognome, data di nascita, luogo di nascita, codice fiscale e numero di identificazione della tessera sanitaria. Il paziente avrà una scheda principale in cui verranno indicate le sue patologie croniche, la sua percentuale di invalidità, eventuale, e i medicinali prescritti permanentemente, come l insulina ad un diabetico per esempio. Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 25 / 26
Esercizio All interno di questa scheda si potranno visualizzare l elenco delle visite del paziente. Ogni visita contiene il giorno in cui è stata effettuata, la ragione, gli eventuali medicinali prescritti e un campo in cui sono annotabili alcune note a discrezione del medico curante. Vi è la possibilità di allegare file di tipo jpg e doc per eventuali referti di altre visite che si ritengono collegati alla visita. Basi di Dati e Sistemi Informativi () PostgreSQL A.A. 2012-2013 26 / 26