Cenni sui DATABASE Cos'e' un database Un database puo' essere definito come una collezione strutturata di record (dati) I dati sono memorizzati su un computer in modo opportuno e possono essere recuperati attraverso delle interrogazioni (queries) L'insieme dei software per gestire e organizzare un database si chiama ”database management system” (DBMS) Schemi Lo scopo di un database e' collezionare informazione Bisogna dare una struttura al database per poter catalogare e poi recuperare l'informazione La struttura di un particolare database (o parte di esso) viene descritta da uno ”schema”. Lo schema descrive gli oggetti che compongono il database e le loro relazioni Modelli relazionali Esistono diversi modi di modellare un database modelli gerarchici modelli di rete Il modello piu' usato al momento e' il modello relazionale Le informazioni sono organizzate in tabelle Le relazioni fra tabelle sono organizzate in tabelle Ogni colonna rappresenta un tipo di informazione L'insieme delle informazioni per un singolo record e' rappresentato da una riga Alcuni database system Il modello relazionale fu proposto da E. F. Codd nel 1970 Oracle (1980) DB2 (1980) dBase (1980) Mysql (1990) PostgreSQL (1990) Database Relazionali Relazioni Attributi Sono i ”nomi” delle colonne delle tabelle Domini sono le tabelle (array bidimensionali) per ogni attributo deve essere specificato un domino, cioe' l'insieme dei valori che puo' assumere Record (o tupla) sono le singole righe: ogni cella della tupla contiene un valore in base al dominio dell'attributo Caratteristiche una base di dati deve servire più utenti gli accessi devono essere concorrenti i dati devono essere disponibili in ogni momento integrità dei dati: i dati non devono essere corrotto da un uso inappropirato della base di dati sicurezza dei dati: l'accesso deve essere garantito solo agli utenti abilitato e nelle forme consentite Obiettivo L'obiettivo di un DBMS è quello di garantire l'indipendenza dei dati, ossia il fatto che diverse applicazioni possono accedere agli stessi dati senza dover conoscere l'implementazione fisica della base di dati. Si utilizza una struttura a 3 livelli: schema logico: i dati sono descritti da un modello schema fisico (o interno): fornisce le implementazioni per le strutture del livello logico schema esterno: definisce le viste parziali per diverse classi di utenti Relazione Una relazione nome un insieme finito di tuple e di domini associati il numero di attributi viene detto ”grado” esempi: R(Attributo1:Dominio1,Attributo2:Dominio2,...) R(Attributo1,Attributo2,...) Studente(nome, cognome, matricola) Istanza Un'istanza è un insieme finito di tuple per una relazione Il numero di tuple è dettà ”cardinalità” esempio: { ( (nome, ”Mario”), (cognome, ”Rossi”), (matricola, 12345) ), ( (nome, ”Lucia”), (cognome, ”Verdi”), (matricola, 54321) ) } Visione tabellare nome Mario Lucia STUDENTE cognome matricola Rossi 12345 Verdi 54321 Concetto relazionale relazione attributo grado tupla cardinalità Equivalente informale tabella colonna numero di colonne riga numero di righe Chiave Per poter garantire l'unicità delle tuple si deve dichiarare un attributo (o più attributi) come chiave servono per fare ”collegamenti” fra tabelle permettono ricerche più veloci se un attributo è dichiarato come chiave per una relazione, non può esistere un'istanza che abbia due tuple uguali per quell'attributo ad es. per la relazione STUDENTE si può usare o la chiave ”matricola” o la chiave ”nome,cognome” Un esempio nome Mario Lucia STUDENTE cognome matricola Rossi 12345 Verdi 54321 CORSO codice titolo 123 informatica 345 biologia 333 inglese IS CRIZ IONE codice matricola 123 12345 345 12345 333 12345 345 54321 333 54321 Join Quando si vuole avere l'informazione completa delle tabelle si fà un'operazione di concatenazione (join) Le tre tabelle dell'esempio diventano: nome Mario Mario Mario Lucia Lucia RISULTATO cognome matricola Rossi 12345 Rossi 12345 Rossi 12345 Verdi 54321 Verdi 54321 codice 123 345 333 345 333 titolo informatica biologia inglese biologia inglese Problema: i dati sono ripetuti più volte, quindi aggiornare questo tipo di tabelle è difficile Algebra relazionale Una volta che uno schema e' stato definito e istanziato, si possono fare delle interrogazioni sulla BD Operazioni insiemistiche unione, intersezione, differenza, prodotto cartesiano Operatori relazionali ridenominazione, selezione, proiezione, concatenazione (join), divisione Gli operatori insiemistici Unione: produce una relazione che contiene una delle relazioni o entrambe (R1 U R2) Intersezione: produce una relazione che contiene le tuple che appartengono a entrambe le relazioni (R1 ∩ R2) Differenza: produce una relazione che contiene le tuple che appartengono alla prima relazione ma non alla seconda (R1 \ R2) Prodotto cartesiano: produce una relazione formata da tutte le tuple che è possibile ottenere unendo le tuple (R1 × R2) Operatori relazionali Ridenominazione: rinomina uno o piu' attributi di una relazione ( σoldname → newname(R) ) Selezione: consente di selezionare le tuple di una relazione che soddisfano una determinata condizione (combinazioni booleane di confronti) ( σcondizione(R) ) Proiezione: produce una relazione con i soli attributi presenti nell'operazione ( πattr1,attr2(R) ) Divisione: produce una relazione le cui tuple, se estese con una qualunque tupla della seconda relazione, producono una tupla della prima relazione ( R1 Ö R2 ) Contatenazione naturale L’operatore di concatenazione naturale (natural join) produce una relazione che le cui tuple sono ottenute “componendo” le tuple di r1 e r2 che hanno gli stessi valori sugli attributi comuni ( R1 ᛞ R2) la concatenazione è associativa e commutativa; Se R1 e R2 non hanno attributi comuni, allora R1ᛞR2 = R1 × R2 (altrimenti R1ᛞR2 = { } ) Se R1 e R2 sono compatibili (hanno gli stessi attributi), allora R1ᛞR2 = R1 ∩ R2 Vincoli sulle relazioni Esistono 4 tipi di vincoli sulle relazioni fra due tabelle R1 e R2 (cioe' sugli attributi comuni) uno a uno: ad ogni chiave di R1 corrisponde una e una sola chiave di R2 uno a molti: per ogni chiave di R1 possono corrispondere molte chiavi di R2 ma per ogni chiave di R2 vi e' una sola chiave di R1 molti a uno: per ogni chiave di R2 possono corrispondere molte chiavi di R1 ma per ogni chiave di R1 vi e' una sola chiave di R2 molti a molti: per ogni chiave di R1 possono corrispondere molte chiavi di R2 SQL Per fare le interrogazioni non si usa l'algebra relazionale ma un linguaggio piu' ”evoluto”: l'SQL (Structured Query Language) La query e' divisa in 6 clausole: SELECT FROM WHERE GROUP BY HAVING ORDER BY Clausole SELECT: equivale alla proiezione (e consente la ridenominazione) FROM: quali tabelle sono interessate nella query ed eventualmente in che modo vengono concatenate (join) WHERE: una o piu' condizioni che ogni tupla del risultato deve soddisfare (equivale alla selezione) Clausole (2) GROUP BY: serve per raggruppare i risultati in base a qualche attributo HAVING: serve per specificare delle condizioni sul risultato di GROUP BY ORDER BY: serve per ordinare il risultato Esempi SELECT * FROM books WHERE price > 100 ORDER BY title; SELECT count(*) FROM authors WHERE surname = ”Codd” SELECT books.title, count(*) AS Authors FROM books NATURAL JOIN book_authors GROUP BY books.title; Fogli di calcolo Cos'e' un foglio di calcolo E' una tabella che permette di fare operazioni complesse sui dati Diversamente dal database lo scopo e' la manipolazione e la correlazione dei dati nella singola tabella Un database puo' essere ”simulato” da un foglio di calcolo con piu' tabelle ma l'implementazione e' inefficiente Programmi EXCEL (commerciale) WORKS (commerciale) Openoffice CALC (libero) GoogleCALC (gratuito) Celle Ogni tabella di un foglio di calcolo e' formata da celle Le celle hanno due coordinate ascissa: lettere dell'alfabeto (da sinistra a destra) ordinata: numeri (dall'alto in basso) In ogni cella si possono inserire: valori e formule, ... Ogni cella puo' avere uno o piu' bordi, un tipo di carattere, colori, ... Potenzialita' Un foglio di calcolo permette: eseguire operazioni sulle singole celle (somme, sottrazioni, moltiplicazioni, ...) eseguire operazioni su gruppi di celle (totali, medie, max, min, ...) ordinare valori espressioni condizionate creare grafici sulla base dei dati OpenOffice CALC Manipolazione dei dati Utilizzando la finestra video si inseriscono nelle celle valori: Numerici (interi, frazionari, percentuali, valute) Date Strighe di caratteri Formule - possono contenere operandi numerici e/o le coordinate delle celle (indicate simbolicamente, ad esempio B1, F9, A25, AA50, ...). Le formule vengono ricalcolate ogni volta che una delle celle interessate viene modificata. Funzionalità Attraverso menù e tasti funzione è possibile: inserire, cancellare, spostare righe/colonne ridefinire l’ampiezza di una colonna fissare righe e colonne di intestazione contornare celle con bordi dividere il video in più parti (finestre), che si possono far scorrere una sull’altra per avvicinare righe o colonne non contigue salvare il foglio di lavoro su disco ... Riferimenti I riferimenti sono dati attraverso l’indicazione di riga e di colonna (es. A1, B3+B4) L’indirizzamento delle caselle può essere assoluto o relativo. Assoluto: ogni casella viene individuata attraverso la sua posizione nella matrice, con la riga (numero) e la colonna (lettera o numero) che la contraddistinguono. Relativo: una casella può anche essere individuata attraverso la sua posizione relativa rispetto alla casella attiva (su cui si è posizionati). Riferimento assoluto Un riferimento (parzialmente) assoluto si ha utilizzando il carattere speciale ”$” nella costruzione di un riferimento: $C$5 Colonna e riga sono fissati $C5 Solo la colonna è fissata C$5 Solo la riga è fissata Riferimento relativo Il riferimento relativo viene calcolato solo quando si copiano le formule. Ad esempio se nella casella D4 c'è scritto ”=B4”, quindi uno spostamento relativo di 2,1 caselle (D-B=2, 4-3=1), e si copia la formula in D5, la formula nella nuova cella sarà ”=B5” perché ci si è di un sola riga (5-4) ma la colonna è rimasta invariata Se in D4 c'era scritto ”=$B$4”, D5 sarebbe stato uguale a D4 Formule Sono espressioni che iniziano con il carattere = Formule aritmetiche (a valore numerico) o logiche (vero o falso): = 34*5.6 + B2 Vero ---> 1 Falso ---> 0 Gli operatori aritmetici disponibili sono: +, -, *, /, ^ Gli operatori logici sono: =, <, >, <>, <=, >= Funzioni Si può selezionare una funzione tra quelle presentate. Funzioni statistiche, finanziarie, matematiche, trigonometriche, logiche, etc. SOMMA(D2;D8;D10) (somma serie) ----->D2+D8+D10 SOMMA(D2:D8) (somma intervallo) ----->D2+D3+...+D8 MEDIA(D1:D10) -----> media di 10 caselle Formato delle celle Con Formato Celle si possono definire: formati per date, orari, numeri. l’allineamento nelle caselle: centrato, a sinistra, a destra. tipi e stili dei caratteri. bordi colori Grafici Selezionando un'area del foglio di calcolo si può dire al programma di generare un grafico Di solito bisogna specificare l'asse X, l'asse Y, eventualmente righe e colonne per le etichette, tipo del grafico, ... Nel grafico di solito è presente una legenda per capire il significato dei diversi colori I grafici sono altamente personalizzabili Se si modifica una delle celle il grafico viene modificato di conseguenza Grafico 1100 1000 900 800 700 600 500 lunghezza 400 # di CG 300 200 100 0 AN001 AN002 AN003 Tipi di grafico Linee Linee 3D Aree Aree 3D Colonne Barre 3D Barre Colonne 3D Torta Torta 3D Diagramma XY Rete Diagramma quotazioni