Basi di dati Monica Bianchini Dipartimento di Ingegneria dell’Informazione E-mail: [email protected] Sommario Cenni storici e introduzione Da sistemi informativi a sistemi informatici: le basi di dati e i DBMS Il modello relazionale: vincoli, chiavi, algebra relazionale I linguaggi di interrogazione Le basi di dati distribuite e i sistemi ipermediali Cenni storici Gli archivi costituiscono una memoria di lavoro indispensabile per gestire quantità ingenti di informazione, per ordinare gli elementi utili, metterli in relazione e filtrare i dati che devono essere utilizzati nelle varie circostanze Prima della diffusione dei sistemi informatici, gli archivi erano gestiti in forma cartacea, con schedari e registri, che permettevano di catalogare e ordinare i dati secondo un unico criterio di ricerca e rendevano disagevole il recupero e l’analisi dell’informazione L’avvento dell’informatica ha permesso l’integrazione, in un unico programma applicativo, delle funzionalità di archiviazione e gestione dei dati Introduzione 1 Le basi di dati, ed i relativi programmi di gestione, sono sistemi che permettono la manipolazione di grandi quantità di informazione, per raggiungere gli scopi di una qualche organizzazione (azienda, istituzione, etc.): Raccolta, acquisizione Archiviazione, conservazione Elaborazione, trasformazione, produzione Distribuzione, comunicazione, scambio Introduzione 2 Le attività di gestione delle informazioni, così come le informazioni stesse, mentre a livello umano possono essere realizzate usando idee informali e linguaggio naturale, a livello informatico devono essere opportunamente formalizzate e codificate Tali formalizzazioni sono anteriori alla realizzazione dei sistemi informatici Nei sistemi informatici le informazioni vengono rappresentate in modo strutturato ed essenziale (mediante i dati) Introduzione 3 Il database permette la creazione di una memoria digitale vasta ed “intelligente”, che può essere utilizzata a diversi livelli di complessità Il database è un insieme integrato di informazioni omogenee, che fornisce strumenti, quali tabelle, query, maschere e report, per la catalogazione, l’ordinamento e la ricerca dei dati Basi di dati... oggi... DBMS borsa DBMS orari Sistemi informativi Informazioni Dati Sistema informativo Sottosistema di un’organizzazione che gestisce acquisizione elaborazione conservazione produzione delle informazioni di interesse Ogni organizzazione ha un sistema informativo Le informazioni sono un “bene” L’esistenza del sistema informativo è indipendente dalla sua automazione (sistema informatico) Sistema informatico Gestisce un sistema informativo in modo automatizzato Garantisce che i dati siano conservati in modo permanente su dispositivi di memoria Permette un aggiornamento veloce dei dati per riflettere rapidamente le loro variazioni Rende i dati accessibili alle interrogazioni degli utenti Può essere distribuito sul territorio Anche prima di essere automatizzati, molti sistemi informativi si sono evoluti verso una razionalizzazione e standardizzazione delle procedure e della organizzazione delle informazioni Gestione delle informazioni Modo di gestire e comunicare le informazioni accesso, elaborazione, trasmissione lingua scritta e parlata disegni, grafici, schemi codici e numeri Modo di memorizzare l’informazione ricordata a memoria copia cartacea in formato elettronico Sistemi per la gestione di informazioni Nelle attività standardizzate dei sistemi informativi complessi sono state introdotte col tempo forme di organizzazione e codifica delle informazioni Ad esempio, nei servizi anagrafici si è iniziato con registrazioni discorsive e poi nome e cognome estremi anagrafici codice fiscale .... una chiave per tutti! I sistemi informativi Rendono disponibili le informazioni Permettono di gestirle in maniera efficace Non sono legati alla loro realizzazione automatizzata (sistema informatico) Informazione - dato L’informazione si ottiene interpretando opportunamente i dati Mario Rossi Mario Rossi Numero di telefono di Mario Rossi 0577233601 Numero Dati e informazioni Dato: ciò che è immediatamente presente alla conoscenza, prima di ogni elaborazione; in informatica, elementi di informazione costituiti da simboli che devono essere elaborati Informazione: notizia o elemento che consente di avere conoscenza di fatti, situazioni, modi di essere Basi di dati È una collezione di dati utilizzata per rappresentare le informazioni di interesse in un sistema informativo I dati hanno vita più lunga delle procedure che operano su di essi Gestione di una base di dati Organizzazione e conservazione dei dati • Operazioni per la gestione e l’accesso ai dati • Un esempio: la rubrica telefonica Dati Nome Cognome Indirizzo Telefono Mario Rossi Via Garibaldi 10 0577233601 Operazioni • • • • Cercare un numero, dato il nome Inserire un nuovo numero Modificare un indirizzo …… Basi di dati: dove si trovano? Anagrafe — anagrafe residenti, anagrafe studenti Servizi bancari — conti correnti, Bancomat, carte di credito Elenchi delle utenze telefoniche Orari ferroviari Prenotazione voli Catalogo prodotti (CD,…) …… Accessibili in modo distribuito (Sportelli Bancomat, negozi,...) Accessibili da Internet (Orari FFSS, siti di ecommerce,...) Accessibili da terminali dedicati (Agenzie di viaggio, biblioteche...) …… DBMS DBMS — Data Base Management System è un sistema software per gestire basi di dati: ha il compito di amministrare i file in una base di dati, in modo persistente e condiviso Caratteristiche Grandi dimensioni uso della memoria secondaria Condivisione accesso di più utenti a dati comuni; si riduce la ridondanza dei dati e la possibilità di inconsistenze ed errori Persistenza Affidabilità i dati rimangono memorizzati capacità di non perdere i dati in caso di malfunzionamento (backup e recovery) Privatezza ciascun utente è riconosciuto da un username e una password e ha autorizzazione ad effettuare soltanto certe operazioni Efficienza capacità di svolgere le operazioni in tempo ragionevole e con risorse di calcolo e memoria accettabili Cosa si può fare con una base di dati 1 Per l’utente finale, l’uso più comune di una base di dati è l’esecuzione di opportune interrogazioni, query, predefinite Esempi tipici di interrogazioni sono… l’accesso al catalogo elettronico di una biblioteca la consultazione (on-line oppure sulle apposite macchine nelle stazioni) degli orari dei treni la prenotazione di un volo aereo la consultazione delle informazioni relative all’andamento dei titoli in borsa …… Cosa si può fare con una base di dati 2 Le interrogazioni possono essere molto semplici… Elencami tutti i libri di Calvino che sono presenti in biblioteca …ma possono essere anche molto complesse Elencami i libri di Calvino che nel titolo hanno una parola che compare anche nel titolo di un libro di Pavese e che sono stati presi in prestito almeno 10 volte Le interrogazioni possono essere espresse usando opportuni linguaggi, query language, che si differenziano in base al modello dei dati adottato L’uso di linguaggi di programmazione specializzati costituisce la maggiore differenza fra le basi di dati ed i fogli elettronici (oltre alla diversa quantità di informazione trattabile) Descrizione dei dati nei DBMS Livelli diversi di descrizione e rappresentazione dei dati permettono l’indipendenza dei dati dalla rappresentazione fisica i programmi fanno riferimento alla struttura a livello più alto le rappresentazioni sottostanti possono essere modificate senza necessità di modifica dei programmi Si introduce il concetto di modello dei dati modalità usata per organizzare i dati e descriverne la struttura offre meccanismi di strutturazione per descrivere sinteticamente il formato dei dati I modelli dei dati Modalità prescelta per l’organizzazione dei dati e per descriverne la struttura Relazionale, gerarchica, reticolare, ad oggetti... Il modello relazionale permette di organizzare i dati in insiemi di record a struttura fissa (concetto di relazione) record Nome Cognome Indirizzo Telefono Mario Rossi Via Verdi 5 0577234567 Marco Bianchi Via Righi 73 0557456783 Anna Dati Via Romeo 4 0578345234 Schemi ed istanze Schema: parte non variabile dei dati, è il formato del record RUBRICA(Nome,Cognome,Indirizzo,Telefono) Istanza (stato): valori effettivi contenuti nella base di dati Mario Marco Anna Rossi Bianchi Dati Via Verdi 5 0577234567 Via Righi 73 0557456783 Via Romeo 0578345234 4 Schemi e astrazione utente (applicazioni) schema logico schema fisico DB schema esterno (vista) descrizione, allo stesso livello di astrazione dello schema logico, di una parte della base di dati (es., la parte accessibile ad una classe di utenti) descrizione della base di dati nel modello logico (es., struttura della tabella) rappresentazione dello schema logico per mezzo di strutture di memorizzazione (file) il livello logico è indipendente da quello fisico: una tabella è utilizzata nello stesso modo qualunque sia la sua realizzazione fisica (che può anche variare nel tempo) Utenti di un DBMS L’amministratore della base di dati (DBA) è responsabile della progettazione, del controllo e dell’amministrazione della base di dati; configura il DBMS per garantirne le prestazioni, assicura l’affidabilità del sistema, gestisce le autorizzazioni di accesso I progettisti e programmatori di applicazioni realizzano programmi che accedono alla base di dati; utilizzano gli strumenti di sviluppo per la creazione di interfacce verso la base di dati Gli utenti, in grado di utilizzare i linguaggi interattivi di interrogazione, che effettuano transazioni (attività frequenti e predefinite) o attività casuali Transazioni 1 Programmi che realizzano attività frequenti predefinite, con poche eccezioni, previste a priori Esempi: e versamento presso uno sportello bancario emissione di un certificato anagrafico prenotazione aerea Il termine transazione ha un’altra accezione, più specifica: una transazione è un insieme di operazioni sulla base di dati che devono essere considerate in modo indivisibile (o atomico); ovvero, o tutte le operazioni dell’insieme sono eseguite correttamente oppure nessuna Transazioni 2 L’effetto di una transazione deve essere corretto, anche in presenza di transazioni concorrenti eseguite nello stesso intervallo di tempo Gli effetti di una transazione conclusasi positivamente devono essere definitivi, ovvero devono essere garantiti anche in presenza di guasti e di esecuzione concorrente Devono costituire una transazione... ...le operazioni di addebitamento dell’importo prelevato da un Bancomat e l’erogazione del denaro ...lo spostamento di fondi fra due conti (le operazioni di accreditamento su un conto e addebitamento su un altro) Vantaggi e svantaggi dei DBMS Vantaggi dati come risorsa comune a disposizione di tutta l’organizzazione gestione centralizzata con possibilità di standardizzazione disponibilità di servizi integrati riduzione di ridondanze e inconsistenze grazie alla condivisione indipendenza dei dati (favorisce lo sviluppo e la manutenzione delle applicazioni) Svantaggi costo dei prodotti e della transizione verso di essi (strutture, hardware/software, personale) non scorporabilità di eventuali servizi non utili (con riduzione di efficienza) Il modello relazionale Codd, 1970 Adottato dalla maggior parte dei DBMS in commercio Definisce come sono organizzati i dati e non come sono memorizzati e gestiti dal sistema informatico Relazione – Tabella Il concetto di relazione proviene dalla matematica, mentre quello di tabella è intuitivo Il modello relazionale permette di trattare i dati ad un livello logico senza preoccuparsi del livello fisico, ovvero di come i dati sono effettivamente elaborati e memorizzati: per accedere ai dati non è necessario conoscere le strutture fisiche con cui sono realizzati! Prodotto cartesiano 1 Consideriamo l’insieme dei nomi e dei numeri di telefono dei dipendenti di un’azienda: Mario Rossi Luca Verdi Anna Bianchi 2345 2367 2378 2356 D1 D2 Il prodotto cartesiano D1 D2 è l’insieme di tutte le coppie ordinate (NOME,TELEFONO) Prodotto cartesiano 2 Mario Rossi Mario Rossi Mario Rossi Mario Rossi Luca Verdi Luca Verdi Luca Verdi Luca Verdi Anna Bianchi Anna Bianchi Anna Bianchi Anna Bianchi 2345 2367 2378 2356 2345 2367 2378 2356 2345 2367 2378 2356 Il prodotto cartesiano contiene tutte le possibili associazioni fra gli elementi degli insiemi La rubrica dei numeri telefonici contiene solo alcune possibili coppie Relazioni Una relazione matematica sugli insiemi D1 e D2 (domini) è un sottoinsieme del prodotto cartesiano D1 D2. La rubrica contiene solo le coppie (NOME,TELEFONO) che esistono Mario Rossi Luca Verdi Luca Verdi Anna Bianchi 2345 2367 2378 2356 Un esempio D1 = Squadre di Serie A D2 = Squadre di Serie A D3 = Numero D4 = Numero Relazione Risultati delle partite della 29° giornata del campionato 2003/04 Ancona Brescia Juventus Milan Parma Perugia Reggina Roma Siena Bologna Modena Lazio Empoli Lecce Inter Udinese Chievo Sampdoria 3 0 1 1 3 2 0 3 0 2 0 0 0 1 3 1 1 0 Relazioni con attributi Ogni nupla della relazione stabilisce un legame fra i dati Il significato dei valori dipende dall’ordine con cui sono elencati nella nupla Brescia Modena 0 0 SquadraDiCasa SquadraOspite RetiCasa RetiOspitata Un nome può essere associato a ciascuna componente della nupla I nomi associati ai domini si dicono attributi e descrivono il ruolo che il dominio ha nella relazione Record e campi Ciascuna nupla della relazione può essere vista come un record Gli attributi definiscono la struttura del record ovvero i suoi campi Si può accedere al valore di un attributo di un record usando il nome del campo tuple SquadraDiCasa Ancona Brescia Juventus SquadraOspitata Bologna Modena Lazio RetiCasa 3 0 1 RetiOspitata 2 0 0 Si usa il termine tupla per indicare una riga di n valori corrispondenti ad attributi (l’ordine non è significativo) Tuple Data una tupla si possono estrarre i valori degli attributi SquadraDiCasa SquadraOspitata RetiCasa RetiOspitata Bescia Modena 0 0 t[SquadraOspitata] = Modena t[SquadraDiCasa] = Brescia Si possono estrarre anche insiemi di attributi, ottenendo tuple t[SquadraDiCasa,SquadraOspitata]= SquadraDiCasa Brescia SquadraOspitata Modena Tuple e relazioni Una relazione su X è un insieme di tuple su X (X è un insieme di attributi) Si usa la definizione di tupla al posto di n–upla: In una n–upla gli elementi sono individuati per posizione In una tupla gli elementi sono individuati per attributi serie A relazione SquadraDiCasa Ancona Brescia Juventus serie A SquadraOspitata Bologna Modena Lazio N RetiCasa 3 0 1 attributi N RetiOspitata 2 0 0 domini tuple Relazioni e basi di dati Una base di dati è in genere costituita da più relazioni Si possono creare corrispondenze fra le tuple di relazioni distinte Le corrispondenze si ottengono fra tuple di relazioni diverse aventi gli stessi valori su un insieme assegnato di attributi Corrispondenze fra relazioni Matricola A80198760 A80293450 A80198330 A80295640 A80197456 Cognome Bianchi Rossi Neri Felici Melli Studente A80198760 A80293450 A80198330 A80198330 A80197456 Voto 28 30 27 25 21 Nome Anna Andrea Luca Lorenzo Mara Corso 01 04 01 03 05 Data di nascita 22/03/1977 13/04/1978 04/08/1980 25/02/1979 17/10/1976 STUDENTI ESAMI Codice 01 03 04 05 Titolo Analisi I Geometria Fisica I Chimica Docente Anna Verdi Andrea Pitagora Luca Galileo Lorenzo Argenti CORSI Schemi per basi di dati Uno schema di relazione R(X) è costituito dal nome della relazione e da un insieme di attributi, X={A1, A2,…, An} STUDENTI(Matricola,Cognome,Nome,Data di Nascita) Uno schema di base di dati è un insieme di schemi di relazioni con nomi diversi: R={R1(X1), R2(X2),…, Rm(Xm)} R = { STUDENTI(Matricola,Cognome,Nome,Data di Nascita), ESAMI(Studente,Voto,Corso), CORSI(Codice,Titolo,Docente) } Esempio: archivio forniture Codice A0001 A0004 P0010 P0230 Descrizione Chiodi 35mm Viti 12mm Pinza Cacciavite Articolo A0001 A0004 P0010 P0230 A0004 Quantita 3000 500 3 2 100 Magazzino 234000 102400 200 600 Data 25/06/2000 25/06/2000 12/07/2000 13/07/2000 15/07/2000 Codice 0001 0034 0101 0076 Costo 0.15 0.25 7 3.50 Cliente 0034 0034 0001 0101 0034 PRODOTTI FORNITURE Nome Carlo Berti BCD Spa A&G Srl Luca Nelli Indirizzo Via Roma 6 Via Verdi 4 Viale Morgagni 16 Piazza Bixio 5 CLIENTI P. IVA 02332002 04554303 10920393 08832822 Informazione incompleta Può accadere che il valore di un attributo non sia disponibile per tutte le tuple Si introduce un valore nullo (NULL) che denota l’assenza di informazione sul valore di un attributo per una data tupla Il valore di un attributo può essere sconosciuto, inesistente o privo di informazione (non si sa se esiste) inesistente Codice 0001 0034 0101 Nome Carlo Berti BCD Spa A&G Srl Indirizzo Via Roma 6 Via Verdi 4 Viale Morgagni 16 P. IVA NULL 04554303 NULL sconosciuto Vincoli di integrità Occorre che le tuple rappresentino informazioni corrette per l’applicazione: Ex: Valori nulli Non ammesso! Matricola NULL A80293450 A80197456 Cognome Bianchi Rossi Melli Nome Anna Andrea Mara Data di nascita 22/03/1977 13/04/1978 NULL STUDENTI Può essere accettabile Alcuni campi non possono assumere valori nulli! In generale, occorre che i valori assegnati agli attributi in ciascuna tupla soddisfino una serie di vincoli Vincoli intrarelazionali Sono vincoli che coinvolgono il valore degli attributi all’interno di una stessa relazione: Studente A80198760 A80293450 A80198330 A80198330 Non ci possono essere due studenti con matricola uguale! Voto 37 30 22 25 Matricola A80198760 A80293450 A80198760 A80197456 Lode Corso 01 L 04 01 L 03 Cognome Bianchi Rossi Felici Melli Valore non ammesso Nome Anna Andrea Lorenzo Mara Combinazione non ammessa Data di nascita 22/03/1977 13/04/1978 25/02/1979 17/10/1976 Vincoli interrelazionali Sono vincoli che coinvolgono più relazioni Garantiscono l’integrità dei riferimenti fra tabelle Studente A80198760 A80293450 A80198330 A80198330 A80197456 Voto 28 30 27 25 21 Corso 01 04 01 03 05 ESAMI ? Codice 01 03 04 Titolo Analisi I Geometria Fisica I Docente Anna Verdi Andrea Pitagora Luca Galileo CORSI Vincoli di tupla Esprimono condizioni sui valori degli attributi di ciascuna tupla indipendentemente dalle altre (intrarelazionali) Sono espressi con predicati che devono essere veri per tutte le tuple (Voto18) AND (Voto30) NOT((Lode=‘L’) AND (Voto30)) Possono anche essere definiti da espressioni aritmetiche che legano fra loro i valori degli attributi PAGAMENTI(Data,Importo,Ritenute,Netto) Netto = Importo – Ritenute Chiavi I vincoli di chiave sono fondamentali per il modello relazionale Una chiave è un insieme di attributi utilizzato per identificare univocamente le tuple di una relazione Matricola A80198760 A80293450 A80198777 A80197456 Cognome Bianchi Rossi Felici Melli Nome Anna Andrea Lorenzo Mara Data di nascita 22/03/1977 13/04/1978 25/02/1979 17/10/1976 Matricola Nome, Cognome, Data di Nascita, Luogo di Nascita NO Luogo di Nascita Siena Poggibonsi Montepulciano Siena Corso Lettere Fisica Ingegneria Lettere SI Nome, Cognome, Corso Nome, Cognome, Data di Nascita Superchiavi e chiavi Un insieme K di attributi è una superchiave per una relazione R se R non contiene due tuple distinte t1 e t2 con t1[K]=t2[K] Un insieme di attributi K è una chiave per una relazione R se è una superchiave minimale (cioè non esiste una altra superchiave K’ che è contenuta in K) CHIAVI (Superchiavi Minimali) {Matricola} {Nome, Cognome, Data di Nascita, Luogo di Nascita} SUPERCHIAVI {Matricola, Nome} {Nome, Cognome, Data di Nascita, Luogo di Nascita, Corso} {Matricola, Corso} Scelta delle chiavi La scelta della chiave deve tenere conto delle proprietà del mondo reale da cui provengono i dati STUDENTI(Matricola,Cognome,Nome,Data di Nascita,Luogo di Nascita,Corso) {Cognome,Nome,Corso} può essere una chiave nel caso che in un dato ateneo (e quindi nella base di dati) non ci siano due studenti con ugual Nome e Cognome iscritti allo stesso corso… ma niente vieta che possa accadere in futuro! Può essere aggiunto un campo ad hoc (ad esempio la matricola) da usare come chiave I campi corrispondenti alla chiave primaria non possono assumere valori nulli Integrità referenziale Le corrispondenze fra i dati in relazioni diverse si stabiliscono per mezzo dei valori di chiavi delle tuple Matricola 672 223 532 Matricola: chiave primaria per AGENTI chiave esterna per INFRAZIONI Codice 174655 156732 456345 Data 25-12-2002 13-05-2003 17-08-2002 Agente 672 223 672 Art 44 12 44 AUTO Prov, Numero: chiave primaria per AUTO chiave esterna per INFRAZIONI Prov FI SI GR Prov FI SI GR Cognome Rossi Verdi Belli Numero M363521 BC637ZY ZA731CD Numero M363521 BC637ZY ZA731CD Nome Mario Francesco Carlo AGENTI INFRAZIONI Proprietario Gilli Luca Tilli Nedo Billi Aldo Indirizzo Via Oro Via Abete Via Sole Vincoli di integrità referenziale Un vincolo di integrità referenziale (foreign key, chiave esterna) fra un insieme di attributi X di una relazione R1 e una relazione R2 è soddisfatto se i valori su X di ciascuna tupla in R1 compaiono come valori della chiave (primaria) dell’istanza di R2 Codice 174655 156732 456345 Data 25-12-2002 13-05-2003 17-08-2002 Agente 672 223 345 Art 44 12 44 Prov FI SI GR ? Numero M363521 BC637ZY ZA731CD Matricola 672 223 532 INFRAZIONI Cognome Rossi Verdi Belli Nome Mario Francesco Carlo AGENTI Occorre definire un vincolo di integrità referenziale fra l’attributo Agente della relazione INFRAZIONI e la relazione AGENTI (chiave primaria Matricola). Un esempio Targa Proprietario Indirizzo BE370TZ Fabio Rossi Via Abete 13 Siena FIG04546 Giovanni Neri Via Moro 7 Firenze AB234TV Michele Bessi Via Sila 4 Terni TV443AZ Maria Bianchi Via Belli 4 Roma AUTOVEICOLI INCIDENTI 1) 2) Codice Targa1 Targa2 Luogo Danni 5434 BE370TZ AB234TV Siena Fari 5534 FIG04546 TV443AZ Monteroni Paraurti vincolo di integrità referenziale fra l’attributo Targa1 della relazione INCIDENTI e la relazione AUTOVEICOLI vincolo di integrità referenziale fra l’attributo Targa2 della relazione INCIDENTI e la relazione AUTOVEICOLI Algebra relazionale È basata su un insieme di operatori definiti su relazioni e che producono relazioni Si possono combinare gli operatori di base per ottenere interrogazioni complesse operatori insiemistici (unione, intersezione, differenza) ridenominazione, selezione, proiezione join (join naturale, prodotto cartesiano, theta–join) Operatori insiemistici 1 Hanno senso solo se si applicano a relazioni con lo stesso schema (con gli stessi attributi) L’unione di due relazioni R1(X) e R2(X) è la relazione R(X)= R1(X) U R2(X) che contiene le tuple che appartengono ad R1 oppure ad R2, oppure ad entrambe Matricola A80010012 A80010200 A80010111 Nome Mario Gianni Fabio Matricola A82010007 A82010345 Cognome Rossi Longhi Verdi Nome Marco Anna Cognome Beni Bianchi Laurea 2° livello Laurea 1° livello Matricola A80010012 A80010200 A80010111 A82010007 A82010345 Nome Mario Gianni Fabio Marco Anna Cognome Rossi Longhi Verdi Beni Bianchi STUDENTI Operatori insiemistici 2 L’intersezione di due relazioni R1(X) e R2(X), definite su un insieme di attributi X, è la relazione R(X)= R1(X) R2(X) contenente le tuple che appartengono sia a R1(X) che a R2(X) La differenza di due relazioni R1(X) e R2(X), definite su un insieme di attributi X, è la relazione R(X)= R1(X) – R2(X) contenente le tuple che appartengono a R1(X) ma non a R2(X) U Matricola 3456575 3432334 3223343 Nome Mario Gianni Fabio Cognome Rossi Longhi Verdi Matricola Nome Cognome 3456576 3223342 3432334 3222122 Anna Isa Gianni Fabio Verdi Belli Longhi Feltri SPECIALIZZATI Matricola 3432334 Nome Gianni LAUREATI Cognome Longhi SPECIALIZZATI LAUREATI Matricola 3456575 3223343 Nome Mario Fabio Cognome Rossi Verdi SPECIALIZZATI – LAUREATI Ridenominazione Con l’operazione di ridenominazione si modifica il nome degli attributi lasciando inalterato il contenuto delle relazioni Matricola 2321112 3432334 Cognome Belli Longhi Agenzia Milano Roma Stipendio 55 45 Matricola 4434556 4568797 Cognome Fabbrica Sordi Monza Bianchi Viterbo IMPIEGATI Matricola 2321112 3432334 Cognome Belli Longhi Salario 35 33 OPERAI Sede Milano Roma Retribuzione 55 45 Sede,RetribuzioneAgenzia,Stipendio(IMPIEGATI) Matricola 4434556 4568797 Cognome Sede Sordi Monza Bianchi Viterbo Retribuzione 35 33 Sede,RetribuzioneFabbrica,Salario(OPERAI) Matricola Cognome Sede Retribuzione 2321112 3432334 4434556 4568797 Belli Longhi Sordi Bianchi 55 45 35 33 Milano Roma Monza Viterbo Sede,RetribuzioneAgenzia,Stipendio(IMPIEGATI) Sede,RetribuzioneFabbrica,Salario(OPERAI) Selezione L’operatore di selezione cond (R) produce una relazione che contiene le tuple della relazione R che soddisfano la condizione cond. Le condizioni di selezione possono prevedere confronti fra attributi e fra attributi e costanti e possono essere costruite combinando condizioni più semplici con i connettivi logici (or), (and) e (not) IMPIEGATI(Cognome,Nome,Età,Stipendio) Età<30 AND Stipendio>2.000(IMPIEGATI) Vengono selezionati i record relativi ad impiegati con età minore di 30 anni e stipendio superiore a 2000€ Esempi di selezione Cognome Rossi Verdi Billi Luti Nome Alberto Luca Paolo Anna Età 25 40 28 29 Stipendio 1.000 2.200 2.100 2.500 Cognome Nome Billi Paolo Luti Anna Età 28 29 Stipendio 2.100 2.500 Età<30 AND Stipendio>2.000(IMPIEGATI) IMPIEGATI Cognome Nome Città di nascita Alberto Firenze Luca Siena Paolo Pisa Anna Prato Residenza Cognome Nome Residenza Rossi Verdi Billi Luti Firenze Pisa Lucca Prato Rossi Luti Firenze Prato CITTADINI Città di nascita Alberto Firenze Anna Prato Città di Nascita=Residenza(CITTADINI) Proiezione Dati una relazione R(X) e un sottoinsieme Y degli attributi in X, la proiezione di R su Y, Y(R), è l’insieme delle tuple su Y ottenute dalle tuple di R considerando solo i valori su Y Cognome Rossi Verdi Billi Luti Nome Alberto Luca Paolo Anna DOCENTI Cat Ric PA PA PO Stipendio 1.000 1.750 1.750 2.500 Cognome Rossi Verdi Billi Luti Nome Alberto Luca Paolo Anna Cognome,Nome(DOCENTI) Cat Ric PA PO Stipendio 1.000 1.750 2.500 Cat,Stipendio(DOCENTI) Join È l’operatore che permette di correlare dati contenuti in relazioni diverse confrontando i valori contenuti in esse join naturale è un operatore che correla dati in relazioni diverse sulla base di valori uguali in attributi con lo stesso nome; il risultato è una relazione che ha per attributi l’unione degli attributi delle relazioni di partenza e le tuple ottenute combinando quelle delle relazioni con valori uguali sugli attributi comuni Impiegato Rossi Verdi Billi Reparto Vendite Produzione Produzione Reparto Produzione Vendite IMPIEGATI IMPIEGATI CAPOREPARTO Capo Mori Bruni CAPOREPARTO Impiegato Rossi Verdi Billi Reparto Vendite Produzione Produzione Capo Bruni Mori Mori Join con tuple pendenti Impiegato Rossi Neri Bianchi Reparto vendite produzione produzione Reparto produzione acquisti Capo Mori Bruni CAPOREPARTO DIPENDENTI Impiegato Neri Bianchi Reparto produzione produzione Capo Mori Mori CAPOREPARTO DIPENDENTI La prima tupla della relazione DIPENDENTI e la seconda della relazione CAPOREPARTO non generano nessuna tupla nel join Un esempio di join Impiegato Rossi Neri Bianchi Progetto A A A Progetto A A Capo Mori Bruni COORDINATORI RICERCATORI Impiegato Rossi Rossi Neri Neri Bianchi Bianchi Progetto A A A A A A Capo Mori Bruni Mori Bruni Mori Bruni RICERCATORI COORDINATORI Ciascuna tupla della prima relazione è combinabile con tutte le tuple dell’altra; il risultato contiene un numero di tuple pari al prodotto dei numeri di tuple nelle due relazioni originarie Infrazioni e auto Codice 343535 343344 342233 332112 334545 Data 12/05/99 14/05/99 22/06/99 27/07/99 07/08/99 Agente 567 456 456 456 567 Art 44 22 44 53 44 AUTOVEICOLI Codice 343535 343344 342233 332112 334545 Data 12/05/99 14/05/99 22/06/99 27/07/99 07/08/99 Agente 567 456 456 456 567 Art 44 22 44 53 44 Prov FI SI FI PI GR Prov FI SI PI GR Prov FI SI FI PI GR INFRAZIONI Numero B04546 345678 B04546 768930 546788 Numero B04546 345678 768930 546788 Numero B04546 345678 B04546 768930 546788 INFRAZIONI Proprietario Paolo Rossi Piero Berti Luca Bianchi Anna Verdi Proprietario Paolo Rossi Piero Berti Paolo Rossi Luca Bianchi Anna Verdi AUTOVEICOLI Indirizzo Via Bixio 5 Prato Via Abete 6 Siena Piazza Po 16 Pisa Viale Europa 4 Firenze Indirizzo Via Bixio 5 Prato Via Abete 6 Siena Via Bixio 5 Prato Piazza Po 16 Pisa Viale Europa 4 Firenze Theta–join È un operatore derivato: corrisponde alla generazione di tutte le possibili combinazioni fra le tuple delle due relazioni seguita da una selezione basata su una condizione F R1 Selezione delle tuple che soddisfano F F R2 = F( R1 R2) Tutte le possibili combinazioni delle tuple È importante dal punto di vista pratico perché è molto utilizzato nei sistemi di basi di dati esistenti Un esempio di theta–join Impiegato Rossi Neri Neri Progetto A A B Codice A B PROGETTI RICERCATORI RICERCATORI PROGETTI Impiegato Rossi Neri Neri Progetto A A B Impiegato Rossi Neri Neri Rossi Neri Neri Codice A A B Nome Venere Marte Progetto A A B A A B Nome Venere Venere Marte Codice A A A B B B Nome Venere Venere Venere Marte Marte Marte RICERCATORI Progetto=Codice PROGETTI Interrogazioni in algebra relazionale 1 Un’interrogazione, o query, a una base di dati produce una serie di record che soddisfano i criteri richiesti È una funzione che, applicata ad un’istanza di base di dati, produce una relazione, ovvero dei dati organizzati come tuple di una relazione Le interrogazioni si possono rappresentare con gli operatori dell’algebra relazionale che forniscono una procedura per calcolarne il risultato Interrogazioni in algebra relazionale 2 Con le query è possibile recuperare i dati dalle tabelle e organizzarli in modo diverso Le query permettono di utilizzare le tabelle in modo dinamico… …mettendo in relazione le informazioni …filtrando i dati di interesse …effettuando ricerche incrociate sui record che rispondono a determinati criteri Un esempio di interrogazione Matricola 101 103 105 110 134 145 149 153 155 Nome Marco Rossi Paolo Bianchi Anna Falchi Gaia Belli Luca Forti Sonia Melli Mario Mori Bruno Bruni Filippo Mei Età 23 34 33 36 27 23 33 35 30 Stipendio 1.500 2.380 1.700 2.500 2.500 1.500 1.800 1.500 2.500 Capo 103 103 103 110 110 134 Impiegato 101 105 145 103 149 153 SUPERVISIONE IMPIEGATI Trovare nome e stipendio dei capi degli impiegati che guadagnano più di 1.700€ I passi dell’interrogazione: 1 Si selezionano gli impiegati che guadagnano più di 1.700€ Stipendio>1.700(IMPIEGATI) Matricola 103 110 134 149 155 Nome Paolo Bianchi Gaia Belli Luca Forti Mario Mori Filippo Mei Età 34 36 27 33 30 Stipendio 2.380 2.500 2.500 1.800 2.500 Si associano gli impiegati trovati con i rispettivi capi Stipendio>1.700(IMPIEGATI) Matricola 103 149 Nome Paolo Bianchi Mario Mori Impiegato=Matricola Età 34 33 Stipendio 2.380 1.800 SUPERVISIONE Capo 110 110 Impiegato 103 149 I passi dell’interrogazione: 2 Si estrae la matricola dei capi Capo( Stipendio>1.700(IMPIEGATI) Impiegato=Matricola SUPERVISIONE) Capo 110 Si associa la matricola con la relazione IMPIEGATI per ottenere le informazioni sui capi e poi si proietta sugli attributi richiesti (Nome, Stipendio) Nome,Stipendio (IMPIEGATI Matricola=Capo Capo( Stipendio>1.700(IMPIEGATI) Nome Gaia Belli ( Impiegato=Matricola Stipendio 2.500 SUPERVISIONE))) Esempio: Azienda Un DBMS, a differenza di un semplice gestore di file, lavora a livello dei singoli campi nei singoli record del file, ovvero agisce a livello dei singoli attributi sulle tuple della tabella relazionale Sia data la tabella IMPIEGATO: ID Nome Età Stipendio_orario Ore Stipendio 86 Giulia Invernizzi 51 16.60 € 94 1560.40 € 123 Francesca Perrera 18 8.50 € 185 1572.50 € 149 Franco Toccasana 43 12.35 € 250 3087.50 € 71 Gianni Calvini 53 17.80 € 245 4361.00 € 165 Bruno Ferri 17 6.70 € 53 355.10 € Esempio: Azienda Un DBMS può eseguire la seguente interrogazione: select id, nome, età, stipendio_orario, ore, stipendio from impiegato where id = 123; che recupera tutte le informazioni relative all’impiegato con ID uguale a 123; ID è la chiave primaria Per localizzare invece tutte le informazioni riguardanti un impiegato con un dato nome… select id, nome, età, stipendio_orario, ore, stipendio from impiegato where nome = ‘Gianni Calvini’; L’attributo Nome può non identificare la tupla univocamente; se nella tabella esistono più impiegati con lo stesso nome, vengono estratti tutti gli elementi rilevanti Esempio: Azienda Se l’interrogazione presuppone l’estrazione solo di alcuni attributi, può essere formulata come… select nome, id, nome, stipendio stipendio from impiegato where nome = ‘Gianni Calvini’; calvini’; che estra solo il nome e lo stipendio dell’impiegato/i con il nome specificato I linguaggi di interrogazione I DBMS richiedono l’uso di linguaggi di interrogazione specialistici, che permettono all’utente o ad altri programmi applicativi di interrogare la base di dati per recuperare informazioni Gli esempi visti sono scritti in SQL — Structured Query Language Gestire una tabella relazionale non significa solo effettuare interrogazioni Si deve essere in grado di aggiungere nuove tuple, cancellarle da una tabella o modificare informazioni in una tupla esistente SQL realizza questi compiti per mezzo dei comandi insert, delete e update Soprattutto per le basi di dati sul Web, sono spesso disponibili maschere user–friendly (capaci anche di verificare la correttezza dell’informazione immessa) atte a nascondere i dettagli della interrogazione I linguaggi di interrogazione Esempio 1 select * from impiegato ordered by id; specifica che occorre considerare tutti i valori degli attributi per tutte le tuple nella tabella IMPIEGATO, ordinata per ID Esempio 2 select * from impiegato where età > 21; seleziona tutte le tuple degli impiegati con età superiore a 21 anni Esempio: Azienda Sia data la tabella ASSICURAZIONE: ID TipoDiPiano DataDiEmissione 86 A4 02/23/78 123 B2 12/03/91 149 A1 06/11/85 71 A4 10/01/72 149 B2 04/23/90 Poiché ID è solo una parte della chiave primaria per ASSICURAZIONE, un dato impiegato potrebbe avere più di un piano assicurativo (es., 149), o nessuno con chiave primaria composta, costituita dagli attributi (ID,TipoDiPiano); l’attributo ID è una chiave esterna della tabella IMPIEGATO: stabilisce la relazione che gli impiegati possono avere piani assicurativi Esempio: Azienda Il DBMS può mettere in relazione informazioni tra varie tabelle attraverso i valori della chiave, ad es. tra la chiave esterna ID nella tabella ASSICURAZIONE e la chiave primaria ID nella tabella IMPIEGATO select impiegato.nome, assicurazione.tipodipiano from impiegato, assicurazione where impiegato.nome = ‘Franco Toccasana’ and impiegato.id = assicurazione.id; descrive il piano assicurativo di Franco Toccasana, il cui risultato sarà: Franco Toccasana A1 Franco Toccasana B2 Note La corrispondenza tra chiavi primarie e chiavi esterne è ciò che crea le associazioni tra le varie entità in una base di dati Il comando SQL per creare una tabella richiede le specifiche dei vari attributi, ovvero nome e tipo di dato, l’identificazione della chiave primaria, l’identificazione di ogni chiave esterna con indicazione esplicita delle tabelle per le quali costituisce chiave primaria Questa informazione è pertinente per la costruzione del file che memorizza i dati delle tuple Esempio: Azienda IMPIEGATO POLIZZA PK ID TipoDiPiano Nome Descrizione Età CostoMensile PK Stipendio_orario Ore usata da Stipendio ha ASSICURAZIONE PK PK: Primary Key FK: Foreign Key ID (FK) TipoDiPiano (FK) DataDiEmissione Esempio: si possono effettuare interrogazioni per trovare il costo mensile dell’assicurazione di Franco Toccasana Le basi di dati distribuite Le basi di dati distribuite permettono ai dati di risiedere in varie locazioni collegate in rete L’utente del sito A pone alla base di dati un’interrogazione che richiede l’accesso a dati che possono essere fisicamente memorizzati nel sito B Il sistema di gestione della base di dati e la rete sottostante realizzano i collegamenti e le associazioni necessarie: l’utente non dovrebbe percepire di lavorare in remoto; tuttavia… … il tempo aumenta per accessi in rete … un guasto della rete o di qualche nodo possono rendere i dati non disponibili agli altri siti … la sicurezza delle informazioni e la protezione da accessi indesiderati sono fondamentali ed hanno pesanti implicazioni sociali, etiche e legali I sistemi ipermediali Un sistema ipermediale è una particolare forma di gestore di basi di dati I dati, in un sistema ipermediale, sono raccolti in una varietà di forme: informazione sonora e visuale, immagini fotografiche, grafica, testo Un’applicazione ipermediale permette all’utente di navigare fra le varie fonti di informazione, in modo non strutturato I “collegamenti” utilizzati fra le fonti di informazione sono simili ai collegamenti tra tabelle relazionali in una base di dati