Sistemi per il recupero delle informazioni PARTE - V MODELLO RELAZIONALE DEI DATI PROGETTAZIONE Ricordiamo le fasi della progettazione di una Base di Dati ESEMPIO ESEMPIO VIENE TRADOTTO NELLO SCHEMA MUSEI (NomeM, Città, Indirizzo, Direttore) ARTISTI (NomeA, Nazionalità, DataN, DataM) OPERE (Codice, Anno, Titolo, NomeM*, NomeA*) PERSONAGGI (Personaggio, Codice*) DIPINTI (Codice*, Tipo, Larghezza, Altezza) SCULTURE (Codice*, Materiale, Altezza, Peso) ENNUPLA E RELAZIONE I meccanismi per definire una base di dati con il modello relazionale sono solo due: • l’ennupla • la relazione. Ennupla. È un insieme finito di coppie (Attributo, valore atomico) Relazione. È un insieme finito (eventualmente vuoto) di ennuple con la stessa struttura. I campi di un’ennupla sono atomici (numeri, stringhe o il valore NULL). Un’ennupla si usa per rappresentare entità e la relazione si usa per rappresentare classi di entità. TERMINOLOGIA - I attributo: corrisponde (non sempre) ad un attributo del modello E-R. Diversamente dal modello E-R, gli attributi sono sempre univoci (ad un sol valore) ed atomici (non composti) L’ordine degli attributi non è significativo dominio (di un attributo): è l’insieme dei valori che può assumere un attributo. chiave primaria di una relazione: un attributo che identifica univocamente le ennuple della relazione. Gli attributi della chiave primaria vengono sottolineati TERMINOLOGIA - II Una relazione si definisce dandole un nome ed elencando fra parentesi tonde il tipo delle sue ennuple. La definizione di una relazione è detta schema della relazione R(A1:T1, A2:T2,..., An:Tn) R è il nome della relazione A1, A2,... sono gli attributi della relazione T1, T2,... sono i tipi degli attributi (interi, reali, booleani, stringhe) Per semplicità omettiamo la specifica dei tipi, per cui lo schema di relazione è R(A1, A2,...,An) TERMINOLOGIA - III Lo schema della relazione è la descrizione della struttura di una relazione Un’istanza di uno schema di relazione è un insieme finito di ennuple. osserviamo che tutte le ennuple di una relazione hanno la stessa struttura Lo schema relazionale è la descrizione della struttura di una base di dati insieme di schemi di relazione insieme di vincoli RELAZIONE E TABELLA Orario Insegnamento Analisi matem. I Basi di dati Chimica Fisica I Fisica II Sistemi inform. Docente Luigi Neri Piero Rossi Nicola Mori Mario Bruni Mario Bruni Piero Rossi Aula N1 N2 N1 N1 N3 N3 Ora 8:00 9:45 9:45 11:45 9:45 8:00 ORARIO (Insegnamento, Docente, Aula, Ora) Relazione e tabella sono sinonimi SCHEMA Orario Insegnamento Analisi matem. I Basi di dati Chimica Fisica I Fisica II Sistemi inform. Docente Luigi Neri Piero Rossi Nicola Mori Mario Bruni Mario Bruni Piero Rossi Aula N1 N2 N1 N1 N3 N3 Ora 8:00 9:45 9:45 11:45 9:45 8:00 ORARIO (Insegnamento, Docente, Aula, Ora) Le colonne della tabella formano lo schema della relazione ISTANZE Orario Insegnamento Analisi matem. I Basi di dati Chimica Fisica I Fisica II Sistemi inform. Docente Luigi Neri Piero Rossi Nicola Mori Mario Bruni Mario Bruni Piero Rossi Aula N1 N2 N1 N1 N3 N3 Ora 8:00 9:45 9:45 11:45 9:45 8:00 ORARIO (Insegnamento, Docente, Aula, Ora) I contenuti delle righe della tabella formano le istanze della relazione Schema di Base di dati R= {CORSI(Corso, Docente, Aula), AULE(Nome, Edificio, Piano), CORSISEDI(Corso, Aula, Edificio, Piano) DATABASE Corsi Aule Docente Aula Corso Basi di dati Rossi DS3 Neri N3 Sistemi Bruni N3 Reti Bruni G Controlli CorsiSedi Nome DS3 N3 G Edificio Piano OMI Terra OMI Terra Pincherle Primo Corso Aula Edificio Piano Sistemi Reti N3 N3 OMI OMI Terra Terra Controlli G Pincherle Primo Un database e’ un insieme di tabelle CHIAVI ESTERNE Le associazioni tra i dati sono rappresentate attraverso i valori di opportuni campi, chiamati chiavi esterne, che assumono come valori quelli della chiave primaria di un’altra relazione. In altre parole una chiave esterna è un attributo (od un insieme di attributi) di una relazione R che assume i valori della chiave primaria di un’altra relazione S. Serve a rappresentare un’associazione tra R ed S ESEMPIO ESEMPIO Il dominio di SiglaCDS* nella relazione STUDENTI coincide col dominio di SiglaCDS nella relazione CDS Se in una istanza di STUDENTI l’attributo SiglaCDS assume il valore “XYZ”, deve esistere, nella istanza di CDS una ennupla con SiglaCDS = “XYZ”. Il motivo è ovvio; se una studente è iscritto a “XYZ”, deve esistere il Corso di Studi “XYZ” Tale proprietà si chiama Vincolo di integrità referenziale, e deve essere sempre soddisfatto da una chiave esterna: DA MODELLO A OGGETTI A MODELLO RELAZIONALE La trasformazione di uno schema a oggetti in uno schema relazionale avviene eseguendo i seguenti passi: 1. 2. 3. 4. 5. 6. rappresentazione delle classi rappresentazione delle associazioni uno a uno e uno a molti; rappresentazione delle associazioni molti a molti o non binarie; rappresentazione delle gerarchie di inclusione; rappresentazione degli attributi multivalore; appiattimento gli attributi composti 1. Rappresentazione delle classi Una classe C è rappresentata da una relazione R i cui attributi sono quelli di C si traduce in Studenti(Matricola, Nome, AnnoImmatric) 2. Rappresentazione delle associazioni uno a uno e uno a molti Come abbiamo già visto nell’esempio degli studenti e dei corsi di studi, le associazioni uno a molti si rappresentano aggiungendo agli attributi della relazione rispetto a cui l’associazione è univoca una chiave esterna che riferisce l’altra relazione. ESEMPIO: la relazione tra corsi di studi e studenti, essendo univoca rispetto ai corsi di studi, si rappresenta aggiungendo agli studenti una chiave esterna SiglaCDS. Quando l’associazione è uno ad uno la chiave esterna si aggiunge ad una qualunque delle due relazioni, preferendo quella rispetto a cui l’associazione è totale. Se l’associazione ha degli attributi, questi vanno aggiunti alla relazione a cui si aggiunge la chiave esterna. ESEMPIO Studenti(Matricola, Nome, AnnoImmatric, Codice*) CorsidiLa(Codice, Nome, Tipo) la chiave esterna Codice* rappresenta l’associazione è_iscritto N.B. È un grave errore fare il contrario. Lo schema: Studenti(Matricola, Nome, AnnoImmatric) CorsidiLa(Codice, Nome, Tipo, Matricola*) rappresenta Corsi di Laurea ai quali può essere iscritto un solo studente! 3. Rappresentazione delle associazioni molti a molti o non binarie Un’associazione molti a molti tra due classi si rappresenta aggiungendo allo schema una nuova relazione che contiene due chiavi esterne che riferiscono le due relazioni coinvolte. precisamente: se A è un’associazione multivalore da R ad S e da S ad R, A è rappresentata con uno schema di relazione in cui gli attributi sono le chiavi primarie pkR di R e pkS di S. A (pkR*, pkS*) Se l’associazione ha degli attributi, questi attributi vengono aggiunti alla nuova relazione, e non vanno a far parte della chiave della nuova relazione. ESEMPIO CorsidiLa(Codice,Nome,Facoltà,Tipo) Docenti(CodDoc, Settore) Insegna(Codice*, CodDoc*) Una ennupla di Insegna rappresenta una coppia (Corso_di_Lurea, Docente) di oggetti in associazione. Il docente identificato dal CodDoc 1592 insegna ai corsi di laurea identificati dai codici Inf, SBC e Mat , il docente identificato dal CodDoc 3014 insegna al corso di laurea identificato dai codici Inf, ecc... 4. Rappresentazione delle gerarchie fra classi Partizionamento orizzontale Si definiscono tre relazioni RA(XA), RB(XA,XB), RC(XA, XC), dove RA contiene solo gli elementi della classe A che non stanno in nessuna delle sottoclassi, mentre RB ed RC contengono tutti gli elementi di B e di C NOTA: se le sottoclassi costituiscono una copertura, la relazione RA(XA) non viene definita perché sarebbe sempre vuota. ESEMPIO: trattandosi di sottoclassi che non soddisfano il vincolo di copertura si definiscono le relazioni Persone con attributi CodFisc, Nome, Telefono, Studenti con attributi CodFisc, Nome, Telefono, Matricola e Facoltà e la relazione Lavoratori con attributi CodFisc, Nome, Telefono, Attività e Reddito. La relazione Persone contiene le informazioni delle persone che non sono né studenti né lavoratori, la relazione Studenti contiene le informazioni degli studenti e la relazione Lavoratori contiene le informazioni dei lavoratori. Persone(CodFisc, Nome, Telefono) Lavoratori(CodFisc*, Attività, Reddito) Studenti(CodFisc*, Matricola, Facoltà) 23 ESEMPIO Tre schemi indipendenti, uno per ogni classe, contenenti tutti gli attributi di ciascuna classe Anche con questa soluzione viene ignorata la gerarchia: si perde la superclasse Si osservi che con nessuna delle tre soluzioni è in generale possibile esprimere i vincoli strutturali della gerarchia, vale a dire i vincoli di disgiunzione e di totalità 5. Rappresentazione delle proprietà multivalore Una proprietà multivalore di una classe C si rappresenta eliminando il corrispondente attributo da C e creando una relazione con due attributi: una chiave esterna che fa riferimento alla chiave primaria di C ed un attributo che corrisponde all’attributo multivalore da trasformare. Un oggetto con chiave primaria K ed in cui l’attributo assume valore A1, ..., An si rappresenta poi inserendo nella nuova relazione n coppie (K, A1), ..., (K,An). ESEMPIO: si immagini che un utente abbia attributi Codice, Cognome e Telefoni, con Telefoni multivalore. Applicando la trasformazione, si ottengono le due seguenti relazioni: Utenti(Codice, Cognome) TelefoniUtenti(Codice*, Telefono) ESEMPIO Film(CodFilm,Titolo,Regista,Anno) Attori(CodFilm*, Attore) 6. Appiattimento degli attributi composti Se un attributo A di uno schema di relazione è di tipo strutturato con campi Ai, si sostituisce A con gli attributi Ai. Se A faceva parte della chiave primaria dello schema di relazione, si sostituisce A con gli attributi Ai nella chiave, e poi si verifica che non esista un sottoinsieme degli attributi della nuova chiave primaria che è esso stesso una chiave. Sullo schema relazionale ottenuto si ripetono questa trasformazione e la precedente finché esistono schemi di relazioni con proprietà composte e proprietà multivalore. ESEMPIO: se gli Utenti hanno un attributo strutturato Indirizzo con attributi Via, CAP e Città, applicando la trasformazione alla relazione Utenti(Codice, Cognome, Indirizzo) si ottiene lo schema di relazione Utenti(Codice, Cognome, Via, CAP, Città) Riassumendo Le regole di traduzione Entità: diventano tabelle ed i loro identificatori chiavi primarie Associazioni 1-1: se obbligatorie si procede come per le 1-N scegliendo il lato in cui includere gli attributi e la chiave esterna; se una opzionale si includono gli attributi e la chiave esterna sul lato“obbligatorio”; se entrambe opzionali si costruisce una tabella autonoma come per il caso N-N. Associazioni1-N:gli attributi dell’associazione e la chiave primaria della tabella relativa all’entità dal lato “N” sono inclusi nella tabella relativa all’entità dal lato“1”. Associazioni N-N: diventano tabelle con chiave primaria formata dall’unione delle chiavi delle entità coinvolte Confronto tra modello E-R e modello Relazionale Nonostante una evidente analogia tra Classe e Relazione Oggetto e Ennupla Attributo(E-R) e Attributo(Rel) sussiste in realtà una significativa differenza tra i concetti nei due modelli Non sempre una relazione rappresenta una classe: può rappresentare una associazione o un attributo multivalore Non sempre un’ ennupla rappresenta un oggetto: può rappresentare una coppia di oggetti in associazione o un possibile valore di un attributo multivalore Non sempre un attributo Rel rappresenta un attributo E-R: può rappresentare un oggetto di un’altra classe (chiave esterna) Esercizio La segreteria di un corso di laurea deve gestire alcune informazioni relative all’orario delle lezioni. informazioni: aule, corsi, lezioni le aule sono identificate da un codice, di ogni aula interessa il numero dei posti, l’edificio in cui è situata, se ha o non ha proiettore alcune aule sono dotate di calcolatori, in questo caso interessa sapere il numero dei pc i corsi sono identificati da un codice; di ogni corso interessa il nome e il docente le lezioni sono caratterizzate da un’ora d’inizio, un’ora di fine, un giorno della settimana, il semestre ogni lezione è tenuta in un’aula e si riferisce ad un corso Informazione incompleta ll modello relazionale impone ai dati una struttura rigida: - le informazioni sono rappresentate per mezzo di ennuple - solo alcuni formati di ennuple sono ammessi: quelli che corrispondono agli schemi di relazione I dati disponibili possono non corrispondere al formato previsto Es: PERSONE(Nome, SecondoNome, Cognome) Nome Franklin SecondoNome Delano Cognome Roosevelt Winston Charles Churchill De Gaulle Josip Stalin Informazione incompleta: soluzioni? Non conviene (anche se spesso si fa) usare valori del dominio (0, stringa nulla, “99”, ...): potrebbero non esistere valori “non utilizzati” - in fase di utilizzo (nei programmi) sarebbe necessario ogni volta tener conto del “significato” di questi valori - Tecnica rudimentale ma efficace: - valore nullo: denota l’assenza di un valore del dominio (e non è un valore del dominio) - si possono (e debbono) imporre restrizioni sulla presenza di valori nulli Troppi valori nulli studenti Matricola Cognome Nome Data di nascita 6554 Rossi Mario 05/12/1978 9283 Verdi Luisa 12/11/1979 NULL Rossi Maria 01/02/1978 esami corsi Studente Voto Corso NULL 30 NULL NULL 24 02 9283 28 01 Codice Titolo Docente 01 Analisi Mario 02 Chimica NULL NULL Chimica Verdi Tipi di valore nullo (almeno) tre casi differenti valore sconosciuto valore inesistente valore senza informazione Citta’ IndirizzoPrefettura Roma Genova Ovada Prato Via Quattro Novembre NULL NULL NULL Vincoli, schemi e istanze I vincoli corrispondono a proprietà del mondo reale modellato dalla base di dati interessano a livello di schema (con riferimento cioè a tutte le istanze) Ad uno schema associamo un insieme di vincoli e consideriamo corrette (valide, ammissibili) le istanze che soddisfano tutti i vincoli Un'istanza può soddisfare altri vincoli La Conoscenza Astratta nel modello Relazionale Nel modello relazionale si possono esprimere i seguenti vincoli: Vincolo di chiave Vincolo di chiave esterna Tipo di un attributo Attributo obbligatorio Vincoli strutturali delle associazioni (non completamente) Una base di dati "scorretta" Esami Studenti Studente Voto Lode Corso 276545 32 276545 30 e lode 02 787643 27 e lode 03 739430 24 01 04 Matricola Cognome Nome 276545 Rossi Mario 787643 Neri Piero 787643 Bianchi Luca Vincolo di integrità Proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l’applicazione Un vincolo è una funzione booleana (un predicato): associa ad ogni istanza il valore vero o falso Perchè? descrizione più accurata della realtà contributo alla “qualità dei dati” utili nella progettazione (vedremo) usati dai DBMS nella esecuzione delle interrogazioni Tipi di vincoli Vincoli intrarelazionali: coinvolgono database. Esempi - vincoli di ennupla - vincoli di chiave - vincoli su valore una singola relazione del Vincoli interrelazionali: coinvolgono diverse relazioni del database. Esempio: vincoli di integrità referenziale Vincoli di ennupla Esprimono condizioni sui valori di ciascuna indipendentemente dalle altre ennuple Caso particolare: vincoli di dominio: coinvolgono un solo attributo ennupla, Una possibile sintassi: espressione booleana di atomi che confrontano valori di attributo o espressioni aritmetiche su di essi (Voto 18) AND (Voto 30) (Voto = 30) OR NOT (Lode = "e lode") Vincoli di ennupla, esempio Stipendi Impiegato Lordo Ritenute Netto Rossi 55.000 12.500 42.500 Neri 45.000 10.000 35.000 Bruni 47.000 11.000 36.000 Lordo = (Ritenute + Netto) Importanza delle chiavi L’esistenza delle chiavi garantisce l’accessibilità a ciascun dato della base di dati Le chiavi permettono di correlare i dati in relazioni diverse: il modello relazionale è basato su valori In presenza di valori nulli, i valori della chiave non permettono di identificare le ennuple di realizzare facilmente i riferimenti da altre relazioni Chiave primaria Chiave su cui non sono ammessi nulli Notazione: sottolineatura Matricola Cognome Nome Corso Nascita 86765 NULL Mario Ing Inf 5/12/78 78763 Rossi Mario Ing Civile 3/11/76 65432 Neri Piero Ing Mecc 10/7/79 87654 Neri Mario Ing Inf NULL 43289 Neri Mario NULL 5/12/78 Integrità referenziale Informazioni in relazioni diverse sono correlate attraverso valori comuni in particolare, valori delle chiavi (primarie) le correlazioni debbono essere "coerenti" Esempio Codice 34321 53524 64521 73321 Infrazioni Vigili Auto Data 1/2/95 4/3/95 5/4/96 5/2/98 Vigile 3987 3295 3295 9345 Prov Numero MI 39548K TO E39548 PR 839548 PR 839548 Matricola Cognome Nome 3987 Rossi Luca 3295 Neri Piero 9345 Neri Mario 7543 Mori Gino Prov Numero Cognome Nome MI 39548K Rossi Mario TO E39548 Rossi 25/06/2017 839548 Neri Mario PR Luca Infrazioni Codice Data Vigile Prov Numero 34321 1/2/95 3987 MI 39548K 53524 4/3/95 3295 TO E39548 64521 5/4/96 3295 PR 839548 73321 5/2/98 9345 PR 839548 Vigili Matricola Cognome Nome 3987 Rossi Luca 3295 Neri Piero 9345 Neri Mario 7543 Mori Gino Vincolo di integrità referenziale Un vincolo di integrità referenziale (“foreign key”) fra gli attributi X di una relazione R1 e un’altra relazione R2 impone ai valori su X in R1 di comparire come valori della chiave primaria di R2 ES: vincoli di integrità referenziale fra: l’attributo Vigile della relazione INFRAZIONI e la relazione VIGILI Violazione di vincolo di integrità referenziale Infrazioni Codice Data Vigile Prov Numero 34321 1/2/95 3987 MI 39548K 53524 4/3/95 3295 TO E39548 64521 5/4/96 3295 PR 839548 73321 5/2/98 9345 PR 839548 Auto Prov Numero Cognome Nome MI E39548 Rossi Mario TO F34268 Rossi Mario PR 839548 Neri Luca Integrità referenziale e valori nulli Impiegati Progetti Matricola Cognome Progetto 34321 Rossi IDEA 53524 Neri XYZ 64521 Verdi NULL 73032 Bianchi IDEA Codice Inizio Durata Costo IDEA 01/2000 36 200 XYZ 07/2001 24 120 BOH 09/2001 24 150 Azioni compensative Esempio: Viene eliminata una ennupla causando una violazione Comportamento “standard”: Rifiuto dell'operazione Azioni compensative: Eliminazione in cascata Introduzione di valori nulli Eliminazione in cascata Impiegati Progetti Matricola Cognome Progetto 34321 Rossi IDEA 53524 Neri XYZ 64521 Verdi NULL 73032 Bianchi IDEA Codice Inizio Durata Costo IDEA 01/2000 36 200 XYZ 07/2001 24 120 BOH 09/2001 24 150 Introduzione di valori nulli Impiegati Progetti Matricola Cognome Progetto 34321 Rossi IDEA 53524 Neri NULL XYZ 64521 Verdi NULL 73032 Bianchi IDEA Codice Inizio Durata Costo IDEA 01/2000 36 200 XYZ 07/2001 24 120 BOH 09/2001 24 150 Sistemi per il recupero delle informazioni PARTE - VI ALGEBRA RELAZIONALE: operazioni BASE DI DATI Una base di dati può essere utilizzata con due modalità: interattivamente: l’utente interagisce direttamente con la base di dati. L’utente presenta al sistema una richiesta di dati. Tale richiesta prende il nome di interrogazione (query). L’interrogazione viene interpretata dal sistema, che in risposta restituisce i dati richiesti. Nella richiesta devono essere specificate le proprietà dei dati che interessano. Se ad es. vogliamo l’elenco dei libri scritti da Calvino, nella richiesta deve essere specificata questa proprietà. L’interrogazione deve essere formulata per mezzo di un linguaggio formale mediante programmi: questo uso è riservato ad utenti programmatori. Le interrogazioni fanno parte di un programma applicativo che può essere eseguito dal sistema numerose volte, ed il risultato delle interrogazioni può essere utilizzato dal programma per successive elaborazioni LINGUAGGI RELAZIONALI Come esempio di linguaggi per l’uso interattivo di basi di dati, relazionali, vediamo l’algebra relazionale: insieme di operatori su relazioni che danno come risultato relazioni. Non si usa come linguaggio di interrogazione dei DBMS ma come rappresentazione interna delle interrogazioni. il linguaggio SQL (Structured Query Language), che offre una sintassi per l’algebra relazionale. Il termine algebra è dovuto al fatto che sono previsti operatori (query) che agiscono su relazioni e producono altre relazioni come risultato. Gli operatori possono essere combinati per formare espressioni complesse. ESEMPI DI QUERY NOME Mario Rossi MATRICOL 123456 INDIRIZZO Via Etnea 1 TELEFONO 222222 Ugo Bianchi 234567 Via Roma 2 333333 Teo Verdi 345678 Via Enna 3 444444 CORSO Programmazione Architetture Matematica Discreta CORSO Programmazione Architetture Programmazione Matematica Discreta Architettura MATRICOLA 345678 123456 234567 345678 VOTO 27 30 18 22 345678 30 PROFESSORE Ferro Pappalardo Lizzio PROFESSORE CORSO Programmazione Ferro Architetture Pappalardo Quali Professori hanno dato piu' di 24 a Teo Verdi ed in quali corsi? Algebra relazionale Insieme di operatori su relazioni che producono relazioni (tabelle) e possono essere composti per svolgere operazioni più complesse OPERATORI FONDAMENTALI Gli operatori fondamentali dell’algebra relazionale sono: Ridenominazione; Unione; Intersezione; Differenza; Proiezione; Restrizione (o Selezione); Prodotto. I simboli R,S,... denotano relazioni, A, B,…attributi e X,Y,…insiemi di attributi RIDENOMINAZIONE Operatore unario Modifica il nome di un attributo senza cambiarne il valore: restituisce la relazione ottenuta sostituendo in R gli attributi A, B,… con gli attributi A’, B’,… DEFINIZIONE OPERATORIALE: AA’ (R) ESAMI Corso Programmazione EINN Matricola 123456 23456 Voto 27 28 MatricolaCodice Studente(Esami) ESAMI Corso Programmazione EINN ESEMPIO Codice Studente 123456 23456 Voto 27 28 Paternità Padre Figlio Adamo Abele Adamo Caino Abramo Isacco Genitore Padre (Paternità) Genitore Padre Figlio Adamo Abele Adamo Caino Abramo Isacco OPERATORI INSIEMISTICI Le relazioni sono degli insiemi, quindi possiamo applicare gli operatori sugli insiemi I risultati debbono essere relazioni E’ possibile applicare unione, intersezione, differenza solo a relazioni definite sugli stessi attributi UNIONE, INTERSEZIONE, DIFFERENZA Siano R ed S relazioni dello stesso tipo allora L’unione di R con S restituisce una relazione dello stesso tipo con le ennuple che stanno in R in S, o in entrambe. L’intersezione di R con S restituisce una relazione dello stesso tipo con le ennuple che stanno contemporaneamente sia in R sia in S. La differenza di R con S restituisce una relazione dello stesso tipo con le ennuple che stanno in R ma non in S. DEFINIZIONE OPERATORIALE R S RS R-S ESEMPIO DI UNIONE ESEMPIO DI INTERSEZIONE ESEMPIO DI DIFFERENZA ESEMPIO: UNIONE? Maternità Madre ??? “Paternita’” e “Maternità” sono attributi con nomi diversi ma entrambi sono “Genitori” Soluzione: ridenominare gli attributi ESEMPIO: RIDENOMINAZIONE E UNIONE Impiegati Operai Cognome Ufficio Stipendio Rossi Roma 55 Neri Milano 64 Cognome Fabbrica Salario Bruni Monza 45 Verdi Latina 55 Sede, Retribuzione Ufficio, Stipendio (Impiegati) Sede, Retribuzione Fabbrica, Salario (Operai) Cognome Sede Retribuzione Rossi Roma 55 Neri Milano 64 Bruni Monza 45 Verdi Latina 55 selezione proiezione operatori "ortogonali“ selezione: decomposizione orizzontale proiezione: decomposizione verticale PROIEZIONE Produce risultati: su un sottoinsieme degli attributi dell’operando con valori da tutte le n-uple della relazione Data la relazione R su insieme di attributi X={A1,A2,…An} e un sottoinsieme Y di X, la proiezione di R su Y è la relazione ottenuta da R considerando solo i valori sugli attributi di Y DEFINIZIONE OPERATORIALE: La cardinalità di Y(R), cioè il numero degli elementi che lo compongono, puo’ essere minore di R nel caso di duplicati Y(R) ESEMPIO PROIEZIONE cognome e filiale di tutti gli impiegati Matricola Cognome Filiale Stipendio 7309 Neri Napoli 55 5998 Neri Milano 64 9553 Rossi Roma 44 5698 Rossi Roma 64 Cognome, Filiale (Impiegati) ESEMPIO PROIEZIONE - II per tutti gli impiegati: • matricola e cognome Si riduce la cardinalita’ del risultato rispetto all’operando SELEZIONE (o RESTRIZIONE) Produce risultati: con lo stesso schema dell’operando con un sottoinsieme delle ennuple dell’operando: quelle che soddisfano la condizione Data la relazione R la restrizione di R alla condizione C restituisce una relazione dello stesso tipo di R avente per valori gli elementi di R che soddisfano la condizione C. La condizione di selezione è formata da operatori booleani (AND, OR, NOT) condizione atomiche: termini che possono contenere confronti fra attributi (per esempio, Stipendio>Tasse, dove Stipendio e Tasse sono attributi) confronti fra attributi e costanti (per esempio, Età 60, dove Età è un attributo) DEFINIZIONE OPERATORIALE: Condizione(R) ESEMPIO RESTRIZIONE Impiegati che • guadagnano più di 50 • guadagnano più di 50 e lavorano a Milano • hanno lo stesso nome della filiale presso cui lavorano Selezione: sintassi e semantica sintassi Condizione (Operando) Condizione: espressione booleana (come quelle dei vincoli di ennupla) semantica il risultato contiene le ennuple dell'operando che soddisfano la condizione Operatori booleani Connettivi logici (AND), (OR), (NOT) Operatori di confronto = (uguale) (diverso) (maggiore) (minore) (maggiore o uguale) (minore o uguale) impiegati che guadagnano più di 50 Impiegati Matricola Cognome Filiale Stipendio 7309 Rossi Roma 55 5998 Neri Milano 64 9553 5698 Milano Neri Milano Napoli 44 64 5698 Neri Napoli 64 Stipendio > 50 (Impiegati) impiegati che guadagnano più di 50 e lavorano a Milano Impiegati Matricola Cognome Filiale Stipendio 7309 5998 Rossi Neri Milano Roma 55 64 5998 Neri Milano 64 9553 Milano Milano 44 5698 Neri Napoli 64 Stipendio > 50 AND Filiale = 'Milano' (Impiegati) impiegati che hanno lo stesso nome della filiale presso cui lavorano Impiegati Matricola Cognome Filiale Stipendio 7309 9553 Milano Rossi Milano Roma 55 44 5998 Neri Milano 64 9553 Milano Milano 44 5698 Neri Napoli 64 Cognome = Filiale(Impiegati) Selezione e proiezione Combinando selezione e proiezione, possiamo estrarre interessanti informazioni da una relazione matricola e cognome degli impiegati che guadagnano più di 50 Matricola Cognome 7309 Rossi 5998 Neri 9553 5698 Milano Neri 5698 Neri Filiale Roma Milano Milano Napoli Napoli Stipendio 55 64 44 64 64 Matricola,Cognome (Stipendio > 50 )(Impiegati) PRODOTTO (Join) Date le relazioni R ed S con attributi diversi, il prodotto di R con S restituisce una relazione con attributi quelli di R e di S ed elementi la copia delle ennuple del prodotto cartesiano di R e S, ovvero ogni ennupla di R è concatenata con tutte le ennuple di S. DEFINIZIONE OPERATORIALE: Se R ha n elementi ed S ne ha m il prodotto ne ha m*n RxS Numero Voto Numero Candidato 1 25 1 Mario Rossi 2 13 2 Nicola Russo 3 27 3 Mario Bianchi 4 28 4 Remo Neri Numero Candidato Voto 1 Mario Rossi 25 2 Nicola Russo 13 3 Mario Bianchi 27 4 Remo Neri 28 JOIN NATURALE operatore binario (generalizzabile) produce un risultato sull'unione degli attributi degli operandi con ennuple costruite ciascuna a partire da una ennupla di ognuno degli operandi Permette di combinare ennuple da relazioni diverse basandosi sui valori degli attributi Sia R con attributi XY ed S con attributi YZ. Il join naturale produce una relazione di attributi XYZ; ennuple del risultato sono ottenute combinando le ennuple di R e S che hanno gli stessi valori negli attributi con lo stesso nome ESEMPIO - I join completo: ogni ennupla contribuisce al risultato ESEMPIO - II Join non completo: alcuni valori tra gli attributi comuni non coincidono, quindi, alcune ennuple non partecipano al JOIN ESEMPIO - III Join vuoto: caso limite potrebbe anche succedere che nessuna ennupla trovi il corrispettivo ESEMPIO - IV L’altro caso estremo del JOIN ogni ennupla di R1 si combina con ogni ennupla di R2 la cardinalita’ del risultato e’ il prodotto delle cardinalita’ Cardinalità del join Il join di R1 e R2 contiene un numero di ennuple compreso fra zero e il prodotto di |R1| e |R2| se il join coinvolge una chiave di R2, allora il numero di ennuple è compreso fra zero e |R1| se il join coinvolge una chiave di R2 e un vincolo di integrità referenziale, allora il numero di ennuple è pari a |R1| R1(A,B) , R2 (B,C) in generale 0 |R1 JOIN R2| |R1| |R2| se B è chiave in R2 0 |R1 JOIN R2| |R1| se B è chiave in R2 ed esiste vincolo di integrità referenziale fra B (in R1) e R2: |R1 JOIN R2| = |R1| Join, una difficoltà Impiegato Reparto Reparto Capo Rossi A B Mori Neri B C Bruni Bianchi B Impiegato Reparto Capo Neri B Mori Bianchi B Mori alcune ennuple non contribuiscono al risultato: vengono "tagliate fuori" Join esterno Il join esterno estende, con valori nulli, le ennuple che verrebbero tagliate fuori da un join (interno) esiste in tre versioni: sinistro, destro, completo Join esterno sinistro: mantiene tutte le tuple del primo operando, estendendole con valori nulli, se necessario destro: ... del secondo operando ... completo: … di entrambi gli operandi ... Impiegati Impiegato Reparto Rossi A Neri B Bianchi B Reparti Reparto B C Impiegati JOINLEFT Reparti Impiegato Reparto Neri B Bianchi B Rossi A Capo Mori Mori NULL Capo Mori Bruni Impiegati Impiegato Reparto Rossi A Neri B Bianchi B Reparti Reparto B C Impiegati JOINRIGHT Reparti Impiegato Reparto Neri B Bianchi B NULL C Capo Mori Mori Bruni Capo Mori Bruni Impiegati Impiegato Reparto Rossi A Neri B Bianchi B Reparti Reparto B C Impiegati JOINFULL Reparti Impiegato Reparto Neri B Bianchi B Rossi A NULL C Capo Mori Mori NULL Bruni Capo Mori Bruni Join e proiezioni Impiegato Reparto Rossi A Neri B Bianchi B Reparto B C Impiegato Reparto Neri B Bianchi B Impiegato Reparto Neri B Bianchi B Capo Mori Bruni Capo Mori Mori Reparto B Capo Mori Proiezioni e join Impiegato Reparto Capo Neri B Mori Bianchi B Bruni Verdi A Bini Impiegato Reparto Reparto Capo Neri B B Mori Bianchi B B Bruni Verdi A A Bini Impiegato Neri Bianchi Neri Bianchi Verdi Reparto B B B B A Capo Mori Bruni Bruni Mori Bini Join e proiezioni R 1(X1), R 2(X2) PROJX1 (R 1 JOIN R2 ) R 1 R(X), X = X1 X2 (PROJX1 (R)) JOIN (PROJX2 (R)) R Prodotto cartesiano un join naturale su relazioni senza attributi in comune contiene sempre un numero di tuple pari al prodotto delle cardinalità degli operandi (le tuple sono tutte combinabili ) Impiegati Reparti Impiegato Reparto Codice Capo Rossi A A Mori Neri B B Bruni Bianchi B Impiegati JOIN Reparti Impiegato Reparto Codice Capo Rossi A A Mori Rossi A B Bruni Neri B A Mori Neri B B Bruni Bianchi B A Mori Bianchi B B Bruni Il prodotto cartesiano, in pratica, ha senso (quasi) solo se seguito da selezione: SELCondizione (R1 JOIN R2) L'operazione viene chiamata theta-join e indicata con R1 JOINCondizione R2 La condizione C è spesso una congiunzione (AND) di atomi di confronto A1 A2 dove è uno degli operatori di confronto (=, >, <, …) se l'operatore è sempre l'uguaglianza (=) allora si parla di equi-join Impiegati Impiegato Reparto Rossi A Neri B Bianchi B Reparti Codice A B Capo Mori Bruni Impiegati JOINReparto=Codice Reparti Impiegato Reparto Codice Rossi A A Rossi A Neri B B Neri A Bianchi B B Neri B B Bianchi B A Bianchi B B Capo Mori Bruni Mori Bruni Bruni Mori Bruni Esempi Impiegati Matricola Nome 7309 Rossi 5998 Bianchi 9553 Neri 5698 Bruni 4076 Mori 8123 Lupi Supervisione Età 34 37 42 43 45 46 Impiegato 7309 5998 9553 5698 4076 Stipendio 45 38 35 42 50 60 Capo 5698 5698 4076 4076 8123 Trovare matricola, nome, età e stipendio degli impiegati che guadagnano più di 40 milioni Matricola Nome 7309 Rossi 5998 5698 Bianchi Bruni 9553 4076 Mori Neri 5698 8123 Bruni Lupi 4076 Mori 8123 Lupi Età 34 37 43 42 45 43 46 45 46 SELStipendio>40(Impiegati) Stipendio 45 38 42 35 50 42 60 50 60 Trovare matricola, nome ed età degli impiegati che guadagnano più di 40 milioni Matricola Nome 7309 Rossi 5998 5698 Bianchi Bruni 9553 4076 Mori Neri 5698 8123 Bruni Lupi 4076 Mori 8123 Lupi Età 34 37 43 42 45 43 46 45 46 Stipendio 45 38 42 35 50 42 60 50 60 PROJMatricola, Nome, Età (SELStipendio>40(Impiegati)) Selezione con valori nulli Impiegati Matricola Cognome 7309 Rossi 5998 Neri 9553 Bruni Filiale Roma Milano Milano Età 32 45 NULL SEL Età > 40 (Impiegati) • la condizione atomica è vera solo per valori non nulli Un risultato non desiderabile SEL Età>30 (Persone) SEL Età30 (Persone) Persone Perché? Perché le selezioni vengono valutate separatamente! Ma anche SEL Età>30 Età30 (Persone) Persone Perché? Perché anche le condizioni atomiche vengono valutate separatamente! Selezione con valori nulli: soluzione SEL Età > 40 (Impiegati) la condizione atomica è vera solo per valori non nulli per riferirsi ai valori nulli esistono forme apposite di condizioni: IS NULL IS NOT NULL si potrebbe usare (ma non serve) una "logica a tre valori" (vero, falso, sconosciuto) Quindi: SEL Età>30 (Persone) SEL Età30 (Persone) SEL Età IS NULL (Persone) = SEL Età>30 Età30 Età IS NULL (Persone) = Persone Impiegati Matricola Cognome 7309 5998 Rossi Neri 5998 9553 Bruni Neri 9553 Bruni Filiale Milano Roma Milano Milano Età 32 45 NULL 45 NULL SEL (Età > 40) OR (Età IS NULL) (Impiegati) Sistemi per il recupero delle informazioni DATABASE MANAGEMENT SYSTEM (DBMS) INTRODUZIONE In questa sezione chiariremo qual è il significato tecnico del termine basi di dati e le funzionalità che offrono i sistemi che ne consentono la definizione e l’uso. Iniziamo col chiarire cosa si intende per “base di dati”, visto che spesso questo termine viene usato per riferirsi ad un qualsiasi insieme di dati archiviati con un calcolatore. INTRODUZIONE Gli archivi costituiscono una memoria di lavoro indispensabile per gestire quantità ingenti di informazioni, 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 erano gestiti in forma cartacea, con schedari e registri, che permettevano di catalogare e ordinare i dati in base ad un unico criterio di ricerca e rendevano piuttosto disagevole il recupero e l’analisi dell’informazione. L’avvento dei computer nella gestione degli archivi ha notevolmente migliorato i processi di memorizzazione e recupero dei dati: la creazione di software specifici per la gestione di banche dati, chiamati DBMS (Data Base Management System), ha infatti permesso di unificare in un unico programma le funzionalità di archiviazione e gestione dei dati. Se all’inizio i software per la gestione di database occupavano grande spazio di memoria e risultavano abbastanza complessi da utilizzare, oggi programmi come Microsoft Access uniscono sofisticate funzioni di archiviazione, ricerca e analisi dei dati a un interfaccia amichevole, e consentono un utilizzo versatile adatto alle più svariate esigenze. Archivi e basi di dati Gestione orario lezioni Database Gestione ricevimento DATABASE Accezione generica, metodologica Insieme organizzato di dati utilizzati per il supporto allo svolgimento delle attività di un ente (azienda, ufficio, persona) Accezione specifica, metodologica e tecnologica Insieme di dati gestito da un DBMS COS’E’ UNA BASE DATI Una base di dati è una raccolta di dati permanenti suddivisi in due categorie: I METADATI I DATI COS’E’ UNA BASE DATI I METADATI i metadati, ovvero lo schema della base di dati, sono una raccolta di definizioni che descrivono la struttura di alcuni insiemi dati, le restrizioni sui valori ammissibili dei dati le relazioni esistenti fra gli insiemi. Lo schema va definito prima di creare i dati ed è indipendente dalle applicazioni che usano la base di dati. COS’E’ UNA BASE DATI I DATI i dati, le rappresentazioni dei fatti conformi alle definizioni dello schema, con le seguenti caratteristiche: a) sono organizzati in insiemi omogenei, fra i quali sono definite delle relazioni. b) sono molti, in assoluto e rispetto ai metadati, e non possono essere gestiti in memoria temporanea; c) sono permanenti, cioè, una volta creati, continuano ad esistere finché non sono esplicitamente rimossi; d) sono accessibili mediante transazioni; e) sono protetti sia da accesso da parte di utenti non autorizzati, sia da corruzione dovuta a malfunzionamenti hardware e software; f) sono utilizzabili contemporaneamente da utenti diversi. ESEMPIO DATI e METADATI Si consideri la base di dati degli studenti ed esami superati definiti dagli schemi di relazioni: Studenti(Matricola, Cognome, Città, AnnoNascita) Esami(Materia, Candidato, Voto, Data) Dovrebbe essere chiaro che una base di dati contiene i dati immessi, meno ovvio è il fatto che in una base di dati si memorizzano anche informazioni sui dati definiti, chiamati metadati. Esempi di queste informazioni sono: 1. i nomi delle relazioni definite; 2. il tipo delle ennuple delle relazioni; 3. le chiavi primarie ed esterne definite; 4. i vincoli sui valori ammissibili degli attributi. Queste informazioni sono memorizzate in tabelle predefinte che sono gestite automaticamente dal sistema. RIEPILOGO I dati sono strutturati, cioè hanno un formato predefinito I dati sono raggruppati in insiemi omogenei, in relazione fra loro, e sono previsti operatori per estrarre elementi da un insieme e per conoscere quelli che, in altri insiemi, sono in relazione con essi. I dati sono molti e sono memorizzati in una memoria permanente, tipicamente a dischi magnetici. I dati sono una risorsa condivisa e disponibile per usi molteplici che spesso hanno un’importanza relativa variabile nel tempo. I dati sono protetti da usi non autorizzati e da malfunzionamenti hardware e software. DataBase Management System (DBMS) - I Le caratteristiche delle basi di dati sono garantite da un sistema per la gestione di basi di dati (DBMS, Data Base Management System), che ha il controllo dei dati e li rende accessibili agli utenti autorizzati. Un DBMS è un sistema centralizzato o distribuito che offre opportuni linguaggi a) per definire lo schema della base di dati, b) per scegliere le strutture dati per la memorizzazione dei dati, c) per usare la base di dati interattivamente o da programmi. DataBase Management System (DBMS) - II Un sistema di gestione di basi di dati è un sistema software in grado di gestire collezioni di dati che siano grandi, condivise e persistenti, assicurando la loro affidabilità e privatezza. Un DBMS deve essere efficiente ed efficace. Esempi di prodotti software disponibili sul mercato: Access, DB2, Oracle, Informix, Sybase, SQLServer I DATABASE SONO... grandi dimensioni (molto) maggiori della memoria centrale dei sistemi di calcolo utilizzati il limite deve essere solo quello fisico dei dispositivi persistenti hanno un tempo di vita indipendente dalle singole esecuzioni dei programmi che le utilizzano condivisi ogni organizzazione è divisa in settori o comunque svolge diverse attività . Ciascun settore/attività ha un (sotto) sistema informativo (non necessariamente disgiunto) Una base di dati e' una risorsa integrata, condivisa fra applicazioni Conseguenze: Attivita' diverse su dati condivisi: meccanismi di autorizzazione Accessi di più utenti ai dati condivisi:controllo della concorrenza I DBMS GARANTISCONO… PRIVATEZZA Si possono definire meccanismi di autorizzazione l'utente A è autorizzato a leggere tutti i dati e a modificare quelli sul ricevimento l'utente B è autorizzato a leggere X e a modificare Y AFFIDABILITA` (per le basi di dati): resistenza a malfunzionamenti hardware e software una base di dati è una risorsa pregiata e quindi deve essere conservata a lungo termine I DBMS DEVONO ESSERE … EFFICIENTI Cercano di utilizzare al meglio le risorse di spazio di memoria (principale e secondaria) e tempo (di esecuzione e di risposta) I DBMS, con tante funzioni, rischiano l'inefficienza e per questo ci sono grandi investimenti e competizione L’efficienza è anche il risultato della qualità delle applicazioni EFFICACI Cercano di rendere produttive le attività dei loro utilizzatori, offrendo funzionalità articolate, potenti e flessibili: il corso è in buona parte dedicato ad illustrare come i DBMS perseguono l'efficacia DBMS VS FILESYSTEM La gestione di insiemi di dati grandi e persistenti è possibile anche attraverso sistemi più semplici — gli ordinari file system dei sistemi operativi I file system prevedono forme rudimentali di condivisione: "tutto o niente" I DBMS estendono le funzionalità dei file system, fornendo più servizi ed in maniera integrata Nei programmi tradizionali che accedono a file, ogni programma contiene una descrizione della struttura del file stesso, con i conseguenti rischi di incoerenza fra le descrizioni (ripetute in ciascun programma) e i file stessi Nei DBMS, esiste una porzione della base di dati (il catalogo o dizionario) che contiene una descrizione centralizzata dei dati, che può essere utilizzata dai vari programmi FUNZIONALITA’ DEI DBMS Un DBMS offre specifiche funzionalità per i seguenti scopi: – definizione di basi di dati; – uso dei dati; – controllo dei dati; – amministrazione della base di dati; – distribuzione dei dati. ARCHITETTURA STANDARD - I utente utente Livello esterno utente Livello esterno Livello logico Livello interno database utente utente Livello esterno ARCHITETTURA STANDARD - II Nei DBMS la base di dati è descritta separatamente dai programmi applicativi che ne fanno uso ed è utile distinguere tre diversi livelli di descrizione dei dati: livello logico: descrizione dell’intera base di dati nel modello logico “principale” del DBMS livello interno (o fisico): rappresentazione dello schema logico per mezzo di strutture fisiche di memorizzazione (es.: files) livello esterno (di vista logica): descrizione di parte della base di dati in un modello logico (“viste” parziali, derivate, anche in modelli diversi) ESEMPIO: differenze fra le descrizioni dei dati Si consideri una base di dati per gestire informazioni sui docenti di un’università, di supporto alle attività dell’ufficio stipendi e della biblioteca. Al livello di vista logica, l’ufficio stipendi richiede una vista dei dati sui docenti che include i seguenti campi: Nome e cognome, Codice fiscale, Parametro e Stipendio. La biblioteca richiede invece una vista dei dati sui docenti che include i seguenti campi: Nome e cognome, Recapito telefonico. Al livello logico, i dati sui docenti sono descritti da un unico insieme di ennuple che includeranno i campi diversi che occorrono nelle due viste. Grazie al meccanismo degli schemi esterni, ogni applicazione vedrà poi solo i dati di sua competenza. Infine, al livello fisico, il progettista della base di dati fisserà un’organizzazione fisica per l’insieme dei dati dei docenti descritto al livello logico, scegliendone una fra quelle previste dal DBMS. LIVELLO ESTERNO: ESEMPIO Corsi Docente Aula Corso Basi di dati Rossi DS3 Neri N3 Sistemi Bruni N3 Reti Bruni G Controlli CorsiSedi Aule Nome DS3 N3 G Corso Aula Sistemi Reti Controlli N3 N3 G Edificio Piano OMI Terra OMI Terra Pincherle Primo Edificio Piano OMI Terra OMI Terra Pincherle Primo INDIPENDENZA DEI DATI L‘approccio con tre livelli di descrizione dei dati è stato proposto come un modo per garantire le proprietà di indipendenza logica e fisica dei DBMS l’accesso avviene solo tramite il livello esterno (che può coincidere con il livello logico) due forme: indipendenza fisica indipendenza logica INDIPENDENZA FISICA indipendenza delle applicazioni dall‘organizzazione fisica dei dati; i programmi applicativi non devono essere modificati in seguito a modifiche dell‘organizzazione fisica dei dati il livello logico e quello esterno sono indipendenti da quello fisico una relazione è utilizzata nello stesso modo qualunque sia la sua realizzazione fisica la realizzazione fisica può cambiare senza che debbano essere modificati i programmi INDIPENDENZA LOGICA indipendenza delle applicazioni dall‘organizzazione logica dei dati; i programmi applicativi non devono essere modificati in seguito a modifiche dello schema logico. Le modifiche possono essere l‘aggiunta di nuove definizioni, la modifica o l’eliminazione di alcune di quelle esistenti il livello esterno è indipendente da quello logico aggiunte o modifiche alle viste non richiedono modifiche al livello logico modifiche allo schema logico che lascino inalterato lo schema esterno sono trasparenti Uso dei dati Come conseguenza dell’integrazione dei dati, un DBMS deve prevedere più modalità d’uso per soddisfare le esigenze delle diverse categorie di utenti che possono accedere alla base di dati. Distinguiamo tre categorie di utenti con differente approccio ai dati. Un programmatore delle applicazioni ha bisogno di accedere alla base di dati da programmi sviluppati con linguaggi di programmazione diversi. Gli utenti non programmatori sono coloro che richiedono un linguaggio interattivo a sè stante, di facile uso, per fare principalmente ricerche di dati. Infine, gli utenti delle applicazioni sono coloro che richiedono delle modalità molto semplici per attivare un numero predefinito di operazioni,senza avere nessuna competenza informatica: l’utente agisce selezionando una delle possibili scelte proposte (menu), e fornisce i valori degli argomenti riempendo campi di opportune “maschere”. LINGUAGGI PER DATABASE 138 Un altro contributo all’efficacia: disponibilità di vari linguaggi e interfacce linguaggi testuali interattivi (SQL) comandi (SQL) immersi in un linguaggio ospite (Pascal, Java, C ...) comandi (SQL) immersi in un linguaggio ad hoc, con anche altre funzionalità (p.es. per grafici o stampe strutturate) con interfacce amichevoli (senza linguaggio testuale) 25/06/2017 Controllo dei dati Una caratteristica molto importante dei DBMS è il tipo di meccanismi offerti per garantire le seguenti proprietà di una base di dati: integrità affidabilità sicurezza Controllo dei dati: integrità I DBMS prevedono dei meccanismi per controllare che i dati inseriti, o modificati, siano conformi alle definizioni date nello schema, in modo da garantire che la base di dati si trovi sempre in uno stato che rispetti i vincoli dichiarati. Esempi di vincoli discussi in precedenza sono le chiavi primarie ed esterne. 140 Controllo dei dati: affidabilità I DBMS devono disporre di meccanismi per proteggere i dati da malfunzionamenti hardware o software e da interferenze indesiderate dovute all’accesso contemporaneo ai dati da parte di più utenti. Per quanto riguarda la protezione da malfunzionamenti, un DBMS prevede che le interazioni con la base di dati avvengano per mezzo di transazioni, cioè con un meccanismo che garantisce il buon esito delle operazioni delle applicazioni nel caso di funzionamento normale, e che esclude effetti parziali dovuti all’interruzione delle applicazioni per una qualsiasi ragione. Controllo dei dati: affidabilità Una transazione è un programma sequenziale costituito da un insieme di azioni di lettura e scrittura in memoria permanente e di elaborazioni di dati in memoria temporanea, con le seguenti proprietà: – Atomicità: solo le transazioni che terminano normalmente fanno transitare la base di dati in un nuovo stato. Le transazioni che terminano prematuramente sono trattate dal sistema come se non fossero mai iniziate; pertanto eventuali loro effetti sulla base di dati sono annullati. – Serializzabilità: l’effetto sulla base di dati dell’esecuzione contemporanea di più transazioni è equivalente ad una esecuzione seriale delle transazioni, cioè ad una esecuzione in cui le transazioni vengono eseguite una dopo l’altra in un qualche ordine. – Persistenza: le modifiche sulla base di dati di una transazione terminata normalmente sono permanenti, cioè non sono alterabili da eventuali malfunzionamenti. TRANSAZIONI (PER L‘UTENTE) Esempi: versamento presso uno presso sportello bancario emissione di certificato anagrafico dichiarazione presso l’ufficio di stato civile prenotazione aerea Due accezioni Per l'utente: programma a disposizione, da eseguire per realizzare una funzione di interesse Per il sistema: sequenza indivisibile di operazioni Controllo dei dati: affidabilità Un malfunzionamento è un evento a causa del quale la base di dati può trovarsi in uno stato scorretto. Si distinguono tre tipi di malfunzionamenti: fallimenti di transazioni: interruzioni di transazioni che non comportano perdite di dati in memoria temporanea o permanente. fallimenti di sistema: interruzioni del suo funzionamento dovuti ad un’anomalia hardware o software dell’unità centrale o di una periferica, con conseguente interruzione di tutte le transazioni attive. Si assume che il contenuto della memoria permanente sopravviva, mentre si considera perso il contenuto della memoria temporanea. disastri: sono malfunzionamenti che danneggiano la memoria permanente contenente la base di dati FUNZIONALITA’ DEI DBMS Controllo dei dati: affidabilità Quando si verifica un malfunzionamento vengono attivate, in modo utomatico o semi-automatico, opportune procedure per garantire che la base di dati contenga soltanto quelle modifiche apportate dalle transazioni terminate con successo prima dell’occorrenza del malfunzionamento. Per poter eseguire queste procedure un DBMS mantiene una copia di sicurezza della base di dati e tiene traccia di tutte le modifiche fatte sulla base di dati dal momento in cui è stata eseguita l’ultima copia di sicurezza. Grazie a questi dati, quando si verifica un malfunzionamento il DBMS può ricostruire una versione corretta dei dati utilizzando l’ultima copia e rieseguendo tutte le operazioni che hanno 145 modificato i dati e di cui ha mantenuto traccia. Controllo dei dati: affidabilità - ESEMPIO Si supponga che Antonio e Giovanna condividano un conto corrente contemporaneamente facciano un prelievo e un versamento da sportelli diversi. e che Sia 350 il saldo, 400 la somma che Giovanna versa e 50 la somma che Antonio preleva. Supponiamo che sulla base di dati si verifichino i seguenti eventi, nell’ordine mostrato: – il cassiere di Giovanna legge il saldo 350, – il cassiere di Antonio legge il saldo 350, – il cassiere di Giovanna modifica il saldo in 750, – il cassiere di Antonio modifica il saldo in 300. L’effetto dell’operazione di Giovanna è annullato da quello dell’operazione di Antonio e il saldo finale è di 300 Per evitare interferenze indesiderate il DBMS deve, invece, coordinare opportunamente l’esecuzione concorrente di un insieme di transazioni T1, …, Tn, intercalando opportunamente nel tempo le azioni sulla base di dati di ogni transazione, in modo che l’effetto dell’esecuzione sia quello ottenibile eseguendo le transazioni isolatamente, in un qualche ordine. Controllo dei dati: sicurezza I DBMS prevedono meccanismi sia per controllare che solo persone autorizzate accedano ai dati, sia per restringere i dati accessibili e le operazioni che si possono fare su di essi. Esempi del primo tipo sono la “identificazione” degli utenti autorizzati, con parole di riconoscimento, oppure la possibilità di proteggere i dati da furti mediante crittografia. Amministrazione della base di dati L’amministratore della base di dati (Data Base Administrator (DBA)) è una persona (o un gruppo di persone) che dopo aver partecipato allo studio di fattibilità per decidere l’impiego di un DBMS, ne seleziona uno, lo mette in funzione, lo mantiene in esercizio e segue ogni applicazione dalla progettazione all’impiego. L’amministratore della base di dati ha bisogno di: – analisi dei requisiti di nuove applicazioni e progettazione, sviluppo e manutenzione di basi di dati e delle applicazioni che ne fanno uso; – definizione degli schemi di basi di dati (logici, fisici ed esterni), delle autorizzazioni e modalità di accesso ai dati per ogni classe di utenti e delle politiche per la sicurezza dei dati; – definizione delle procedure per il caricamento dei dati, la creazione di copie di sicurezza, il ripristino dei dati dopo malfunzionamenti di sistema o dei dischi; – controllo del funzionamento del sistema per decidere eventuali riorganizzazioni della struttura logica e fisica dei dati al fine di migliorare le prestazioni delle applicazioni. Distribuzione dei dati Un DBMS moderno deve garantire la possibilità di distribuire i dati gestiti dal sistema su più elaboratori collegati tra di loro da una rete locale o geografica, eventualmente replicando alcuni dati. La distribuzione dei dati su reti locali è molto utile per sostituire i costosi calcolatori di grandi dimensioni, tradizionalmente usati per i DBMS, con reti di calcolatori di costo più ridotto. La distribuzione dei dati su reti geografiche è utile ad aziende con più sedi per poter gestire in ogni sede i dati di interesse locale, mantenendo la possibilità di accedere a tutti i dati dell’organizzazione. Infine, entrambi i tipi di distribuzione, se combinati con la replicazione di alcuni dati, permettono di continuare ad operare sui dati anche quando un elaboratore sia fuori servizio. La distribuzione dei dati aumenta la complessità dei DBMS che devono essere in grado di gestire transazioni eseguite su nodi diversi della rete e garantire la 149 coerenza di eventuali dati duplicati. FUNZIONALITA’ DEI DBMS Da questa rapida presentazione delle funzionalità dei DBMS si dovrebbe intuire come essi siano dei prodotti complessi e costosi. Attualmente i DBMS relazionali sono disponibili su tutte le categorie di calcolatori con differenze che riguardano: – la quantità di dati memorizzabili; – il numero di utenti che possono accedere contemporaneamente ai dati; – i meccanismi offerti per il controllo dei dati, per l’integrità e l’affidabilità; – le tecniche per la gestione dei dati nelle memorie permanenti; – i tipi di linguaggi per l’uso dei dati da parte degli specialisti; – i tipi di prodotti per l’utente finale; – le prestazioni 150 – gli strumenti per l’amministrazione della base di dati. PERSONAGGI E INTERPRETI progettisti e realizzatori di DBMS progettisti del database e amministratori del database progettisti e programmatori di applicazioni utenti utenti finali (terminalisti): eseguono applicazioni predefinite (transazioni) utenti casuali: eseguono operazioni non previste a priori, usando linguaggi interattivi DATABASE ADMINISTRATOR (DBA) Persona o gruppo di persone responsabile del controllo centralizzato e della gestione del sistema, delle prestazioni, dell’affidabilità, delle autorizzazioni Le funzioni del DBA includono quelle di progettazione, anche se in progetti complessi ci possono essere distinzioni VANTAGGI E SVANTAGGI DEI DBMS - I Pro dati come risorsa comune, database come modello della realtà gestione centralizzata con possibilità di standardizzazione ed “economia di scala” disponibilità di servizi integrati riduzione di ridondanze e inconsistenze indipendenza dei dati (favorisce lo sviluppo e la manutenzione delle applicazioni) Contro costo dei prodotti e della transizione verso di essi non scorporabilità delle funzionalità (con riduzione di efficienza)