1 Il Modello relazionale Il modello relazionale si basa sul concetto di relazione così come è definito nella teoria degli insiemi. Si dice che r è una relazione su una sequenza di insiemi D ,D ,...,D (non necessariamente distinti) se è un sottoinsieme 1 2 n del prodotto cartesiano D x D x...x D . In simboli si scrive: 1 2 n r D xD x...xD . 1 2 n D ,D ,...,D sono detti domini della relazione, ed n è detto grado della relazione. 1 2 n Una relazione r è quindi un insieme di ennuple di valori <d ,d ,...d > tali che ogni d appartiene al dominio D . Il numero 1 2 n j j delle ennuple è detto cardinalità della relazione, tale numero nella realtà delle applicazioni delle basi di dati è finito, poiché ogni applicazione tratta un numero finito di dati. Ad ogni dominio viene associato un nome detto attributo che lo identifica univocamente all'interno della relazione; questo permette di trascurare l'ordinamento dei domini all'interno della stessa. Dal punto di vista intensionale una relazione è caratterizzata da un nome e dalla lista dei suoi attributi che è detto schema di relazione. Un insieme di schemi di relazione è uno schema di base di dati relazionale. Supponiamo di voler rappresentare le informazioni relative a dei libri e loro venditori per una libreria. La base di dati relazionale potrà avere il seguente schema: LIBRO (codice_libro,autore,titolo,prezzo) VENDITA(venditore,codice_libro,quantità) Una relazione può anche essere rappresentata per mezzo di una tabella, dove ogni riga è una ennupla ed ogni colonna è costituita dai valori dell'attributo corrispondente. LIBRO Codice_libro 01 02 03 04 VENDITA Venditore Rossi Rossi Bianchi autore Eco Svevo Rich Sciascia Codice_libro 01 02 04 titolo Il nome della rosa La coscienza di Zeno Intelligenza Artificiale La scomparsa di Majorana prezzo 12000 11000 35000 8000 Quantità 5000 7000 3500 Osservando una relazione rappresentata per mezzo di una tabella si può osservare che: I valori di ogni colonna sono tra loro omogenei, ne consegue che i valori di un attributo appartengono allo stesso dominio (interi, stringhe. etc.) Le righe sono fra loro diverse: non esistono ennuple uguali. L'ordinamento delle colonne è irrilevante poiché esse sono identificate per nome e non per posizione. L'intestazione della tabella corrisponde allo schema di relazione Si è affermato che una relazione può essere usata per modellare una conoscenza acquisita sulla realtà. Ciò implica che non un qualsiasi insieme finito di ennuple può essere una relazione valida dal punto di vista interpretativo, anche se le ennuple sono del giusto grado e i valori appartengono ai domini giusti. Consideriamo ad esempio la seguente relazione: Iscrizione Studente Rossi Bianchi Poli Matricola 0263 5567 2323 Età 20 250 23 Non è possibile che la relazione iscritto contenga ennuple in cui un valore dell'attributo età sia 250, così come non è possibile che due ennuple abbiano il valore dell'attributo matricola uguale. Modellare una realtà significa quindi anche 2 esplicitare i vincoli che devono essere rispettati dalle ennuple che entrano a far parte di una base di dati. Per cui uno schema di relazione deve essere corredato da vincoli che rendono valide, dal punto di vista interpretativo, le ennuple appartenenti alla relazione stessa. Uno dei vincoli che sempre e comunque deve essere rispettato è la presenza di una chiave primaria. Diamo ora la definizione di chiave candidata: "Un sottoinsieme di attributi di una relazione r è detto chiave candidata se soddisfa le seguenti proprietà: Univocità: un valore definito della chiave K individua univocamente una ennupla della relazione: quindi due ennuple distinte non possono avere lo stesso valore su K. Non ridondanza: nessuno degli attributi della chiave può essere eliminato senza che questa perda la proprietà precedente". Si può osservare che una chiave candidata esiste sempre, è quella composta da tutti gli attributi della relazione. Tra queste quella con il minor numero di attributi diventa la chiave primaria. I Linguaggi Relazionali Per consentire operazioni sulle basi di dati, come interrogazioni, cancellazioni, modifiche e aggiunte, vengono definiti opportuni linguaggi per la manipolazione dei dati. In particolare rivestono un ruolo fondamentale le operazioni di interrogazione sulle basi di dati, ruolo fondamentale rispetto all'interazione con l'utente, e spesso queste costituiscono un linguaggio separato detto query language. I linguaggio relazionali proposti si dividono in linguaggi algebrici e linguaggi basati sul calcolo dei predicati. L'algebra relazionale ed il calcolo relazionale che esemplificano rispettivamente i due linguaggi, sono stati descritti da Codd. Nell'algebra relazionale, data una collezione di operatori e una base di dati relazionale, ogni operazione ha come risultato una relazione derivata dalla base di dati a cui è stata applicata una sequenza di operatori relazionali. La collezione di operatori è composta da operatori tradizionali su insiemi (unione, intersezione, differenza, etc) e da operatori specifici su relazioni (proiezione, selezione, join naturale). Gli operatori insiemistici possono operare solo su coppie di relazioni definite nello stesso schema o su schemi compatibili, cioè con ugual grado e attributi a due a due appartenenti allo stesso dominio . Vediamo di seguito le varie operazioni. Unione Date due relazioni R e S con stesso schema o schema compatibile, l'unione di R e S è la relazione costituita da tutte le ennuple che appartengono solo a S o solo a R o ad entrambe. Lo schema della relazione ottenuta o lo stesso di R o S. union(R, S) R S r| r R or r S Differenza Date due relazioni R e S con stesso schema o schema compatibile, la differenza tra R e S è la relazione composta da tutte le ennuple di R che non appartengono a S. Lo schema della relazione così ottenuta e lo stesso di R o S. difference(R, S) R S r| r R and r S Intersezione Date due relazioni R e S con stesso schema o schema compatibile, l'intersezione tra R e S e la relazione composta dalle ennuple che appartengono sia a R che a S. Lo schema della relazione così ottenuta è lo stesso di R o S intersect(R, S) = R S = r| r R and r S Prodotto cartesiano 3 Date due relazioni R e S il loro prodotto è la relazione costituita da tutte le possibili coppie (r,s), dove r appartiene a R e s appartiene a S. Lo schema della relazione risultante è la concatenazione dello schema di R e S. Se n1 e n2 sono il grado e m1 e m2 la cardinalità rispettivamente di R e S, la relazione ottenuta dal prodotto di R e S avrà grado n1+n2 e cardinalità m1xm2. RxS = t| t = r conc s, r R, s S Esempio R A a b c B b a b C c f f RxS A a a b b c c B b b a a b b C c c f f f f S D b d b d b d D b d E g q E g q g q g q Selezione Sia R una relazione ed F una formula proposizionale in cui gli operandi sono nomi di attributi o costanti e gli operatori sono quelli di confronto , =, >=, <=,>,< , con possibilità di concatenazione per mezzo degli operatori logici and, or, not. La selezione su R per mezzo di F, rappresentata da (R) F è una relazione T che ha lo stesso schema di R ed è costituita dalla tuple di R che soddisfano il predicato F, e si scrive anche: (R)={tR|F(t)=vero} F Esempio: sia data la relazione esemplare Nome_comune Giraffa Giraffa Leone Elefante Codice_inventario 01 02 01 01 Data_arrivo 20/05/1953 20/05/1953 01/02/1960 01/02/1960 Codice_anagrafico G01 G02 L01 E01 se usiamo la seguente operazione di selezione NomeComune=Giraffa (esemplare) otteniamo la seguente realzione: Nome_comune Giraffa Giraffa Proiezione Codice_inventario 01 02 Data_arrivo 20/05/1953 20/05/1953 Codice_anagrafico G01 G02 4 Sia R una relazione e X un sottoinsieme degli attributi nello schema di R, la proiezione di R sugli attributi X, rappresentata da X(R) è una relazione che ha come schema X, e le cui ennuple sono costituite dai valori di X in R; le eventuali ennuple duplicate devono essere eliminate. Esempio Riprendiamo la relazione esemplare vista nell'esempio precedente. Allora NomeComune,DataArrivo Nome_comune Giraffa Leone Elefante (esemplare)= Data_arrivo 20/05/1953 01/02/1960 01/02/1960 Join naturale Siano R e S due relazioni tali che i due schemi abbiano un sottoinsieme di attributi in comune, allora il join naturale di R con S, rappresentato da r*s è una relazione nella quale ciascuna ennupla è una concatenazione di una ennupla di R con una ennupla di S che hanno gli stessi valori nel sottoinsieme degli attributi in comune. Esempio Siano date le relazioni: R R*S Genere Giraffa Leone Orso Zebra Genere Giraffa Leone Orso Casa Recinto Tana Grotta Steccato Casa Recinto Tana Grotta S Addetto Bini Mori Dea Casa Recinto Tana Grotta Addetto Bini Mori Dea Le Forme Normali Il modello relazionale mette a disposizione del progettista solo le relazioni per modellare la realtà. Le forme normali sono state introdotte per fornire un criterio di scelta tra i vari schemi che possono modellare una porzione della realtà, in modo tale da trovare quello e quelli "ottimi". Il concetto di ottimo nella teoria relazionale è legato alla capacità dello schema di evitare delle anomalie di comportamento a fronte di operazioni sui dati. La prima forma normale (1NF) 5 La prima cosa da notare è che gli attributi di una relazione devono essere atomici, cioè una relazione non deve avere attributi multipli e/o composti. "Una relazione si dice in 1NF se tutti gli attributi sono atomici". Esempi La seguente relazione ha gli attributi nome e classe composti Studenti Cognome e Nome Rossi Mario Bianchi Carlo Classe 3B 5B Risultato promosso respinto portare in 1NF la relazione è semplice: Studenti Cognome Rossi Bianchi Nome Mario Carlo Classe 3 5 Sezione B B Risultato promosso respinto Vediamo ora un esempio di relazione con un attributo multiplo: Farmaci Farmaco F1 F2 Quantità Q1 Q2 Indicazioni M1,M2 M3,M4,M5 l'attributo indicazioni è multiplo, per portare la relazione farmaci in 1NF bisogna scomporla in due relazioni: Farmaci Farmaco F1 F2 Indicazioni Farmaco F1 F1 F2 F2 F2 Quantità Q1 Q2 Indicazioni M1 M2 M3 M4 M5 Anomalie Abbiamo parlato precedentemente di anomalie, vediamo ora quali possono essere le anomalie riscontrabili su una relazione. Prendiamo in esame la relazione Forniture: questo schema di relazione presenta vari problemi. Forniture Fornitore Indirizzo Città Prodotto Peso Data_consegna Quantità Prezzo Italacciaio Via Dante,32 Roma dado 10 121095 300 100 Italacciaio Via Dante,32 Roma vite 15 151195 250 120 Italacciaio Via Dante,32 Roma bullone 30 151195 500 150 Rossi Via Verdi,1 Parma dado 10 151095 1000 105 Rossi Via Verdi,1 Parma bullone 35 151295 125 150 Campicoop Via Trento,5 Milano vite 10 101195 200 75 Infatti possiamo individuare le seguenti anomalie: Ridondanza Una stessa informazione può essere rappresentata più di una volta. Ad esempio, l'indirizzo e la città di un fornitore sono ripetute tante volte quante sono le forniture fatte dallo stesso; ugualmente il peso di un singolo articolo è ripetuto tante volte quante sono le forniture di tale articolo. 6 Anomalie da modifica Come visto prima l'indirizzo di un fornitore può risultare ripetuto più volte, ciò significa che se il fornitore cambia il proprio indirizzo, questo deve essere modificato in tutte le ennuple dove compare. Anomalie da inserzione Non è possibile inserire informazioni riguardanti un prodotto se non ne è stata fatta almeno una fornitura. In modo analogo si riscontra il solito problema per le informazioni che riguardano un fornitore. Anomalie da cancellazione Se si vogliono cancellare tutte le ennuple riguardanti il prodotto "vite", si perderanno le informazioni del fornitore "Campicoop". In generale si perderanno le informazioni relative ad un fornitore se vengono cancellate tutte le sue forniture. La seconda forma normale (2NF) Prendiamo come esempio la seguente porzione di un data base relazionale per descrivere uno zoo: Esemplare (Nome comune,Codice inventario,Data arrivo, Codice anagrafico) Collocazione (Nome comune,Codice inventario,Area, Gabbia,Casa,Addetto,Responsabile) L'esempio riportato è in 1NF poiché ogni elemento è atomico. Prendiamo ora in esame la relazione collocazione. Si possono evidenziare le seguenti anomalie: Anomalia di inserimento di nuove ennuple: informazioni sull'area e sulla casa di un genere non possono essere inserite se non si conosce il codice di inventario di uno specifico esemplare. Anomalia di cancellazione di ennuple esistenti: l'eliminazione di tutti gli esemplari di un genere fa si che si perdano le informazioni sella casa di quel genere. Anomalie di aggiornamento di ennuple esistenti: se cambia l'addetto alla casa di un genere di esemplari bisogna aggiornare tutte le ennuple contenenti le occorrenze di esemplari di quel genere. Tali anomalie sono in parte legate a ridondanze presenti nella relazione: - la casa destinata ad un genere di esemplari ed il suo addetto sono ripetuti per ogni esemplare del genere. - l'area in cui una casa è collocata ed il suo responsabile sono ripetuti per tutti gli esemplari che vivono in quella casa. Da questi particolari si può dedurre la generalità: si è voluto rappresentare in un'unica relazione concetti diversi (nell'esempio la collocazione di un genere e la collocazione di un singolo esemplare). Infatti se alla relazione originale sostituiamo i due schemi che seguono: collocazione_esemplare (Nome comune,codice inventario, gabbia) collocazione_genere (Nome comune,area,casa,addetto, responsabile) le anomalie sopra presentate scompaiono. Lo studio dei problemi di eliminazione delle anomalie ha portato alla definizione di forme normali che sono espresse in termini di proprietà dette dipendenze funzionali. - Dati due insiemi X e Y di una relazione R, si dice che Y dipende funzionalmente da X se ad ogni insieme dei valori di X corrisponde un unico insieme di valori di Y. Dati due insiemi X e Y di una relazione R, tali che Y dipende funzionalmente da X, la dipendenza si dice completa se Y non dipende funzionalmente da alcun sottoinsieme di X. "Una relazione è in 2NF se è in 1NF e ogni attributo non appartenente alla chiave dipende funzionalmente e completamente dalla chiave". Nell'esempio abbiamo che: Bini dipende funzionalmente da Giraffa 01 se prendiamo un sottoinsieme della chiave, ad esempio Giraffa, notiamo che Bini dipende funzionalmente sia dalla prima che dalla seconda istanza, per cui non siamo in 2NF. La terza forma normale (3NF) Consideriamo la relazione 7 Collocazione_genere (Nome comune,casa,addetto,area, responsabile) La relazione è in 2NF poiché è in 1NF e la sua chiave è costituita da un unico attributo, quindi tutti gli altri attributi dipendono funzionalmente da essa. Si presentano comunque altre anomalie: Anomalia di inserimento: non è possibile inserire che una casa è gestita da un particolare addetto senza conoscere almeno un genere destinato a quella casa. Anomalia di cancellazione: se un genere si estingue si perde l'informazione che lega la casa, destinata a quel genere, e l'area in cui è ubicata. Anomalia di modifica: se cambia il responsabile di una certa area dobbiamo modificare tutte le ennuple che contengono tale area. Anche in questo caso le anomalie sono dovute al fatto che si vogliono rappresentare in un'unica relazione concetti diversi (la collocazione di un genere, gli addetti alle case, i responsabili di area). Per eliminare tali anomalie introduciamo il concetto di dipendenza transitiva. Addetto e area dipendono funzionalmente da Nome comune: Addetto,Area dipende funzionalmente da Nome comune si può notare che: Casa dipende funzionalmente Nome comune Addetto,Area dipende funzionalmente Casa abbiamo cioè una dipendenza transitiva. Ugualmente Area dipende funzionalmente Nome comune Responsabile dipende funzionalmente Area Definizione di dipendenza transitiva. Un attributo A di una relazione R dipende transitivamente da un insieme di attributi Y di R, se R contiene un altro insieme di attributi Z tale che Z dipende funzionalmente da Y A dipende funzionalmente da Z Definizione di terza forma normale "Una relazione è in 3FN se è in 2FN ed ogni attributo non chiave è dipendente in modo non transitivo dalla chiave". Quindi ogni attributo non appartenente a chiavi non dipende nè parzialmente nè transitivamente da una chiave. Se sostituiamo la relazione collocazione_genere con le seguenti relazioni: Collocazione_genere (Nome comune, casa) Info_casa (Casa,area,addetto) Info_area (Area,responsabile) ci troviamo di fronte ad uno schema in 3FN. Bibliografia. "Basi di dati. Stato dell'arte e prospettive". A cura di P.Tiberio. Masson. C.J.Date. "An Introduction to Database System". Addison Wesley.