Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno :Modello Relazionale (2)-Relazioni e DB, valori nulli Prof. Alberto Postiglione Università degli Studi di Salerno RELAZIONI E BASI DI DATI Atzeni, cap. 2.1.4 1
Il modello è basato su valori Una Base di Dati è generalmente costituita da più di una Tabella Le corrispondenze fra dati presenti in tabelle diverse sono rappresentate per mezzo di valori comuni che compaiono in tuple appartenenti a tali tabelle. In altri modelli (Gerarchico e Reticolare) le corrispondenze tra i dati presenti in strutture diverse è fatta tramite riferimenti espliciti (i puntatori) # 3 Prof Alberto Postiglione Università Salerno Esempio STUDENTI Matricola Cognome Nome 276545 Rossi Maria 485745 Neri Anna 200768 Verdi Fabio 587614 Rossi Luca 937653 Bruni Mario ESAMI Studente 276545 Data di Nascita 25/11/1971 23/04/1972 12/02/1972 10/10/1971 Voto 01/12/1971 Corso 28 01 CORSI Codice Titolo Docente 01 03 04 Analisi Chimica Chimica Giani Melli Belli 276545 937653 200768 27 25 24 04 01 04 # 4 Prof Alberto Postiglione Università Salerno 2
Esempio STUDENTI Matricola Cognome Nome 276545 Rossi Maria 485745 Neri Anna 200768 Verdi Fabio 587614 Rossi Luca 937653 Bruni Mario ESAMI Studente Data di Nascita 25/11/1971 23/04/1972 12/02/1972 Voto 28 27 25 24 10/10/1971 01/12/1971 Corso CORSI Codice 01 03 04 Titolo Analisi Chimica Chimica Docente Giani Melli Belli # 5 Prof Alberto Postiglione Università Salerno Vantaggi della struttura basata su valori Si rappresenta solo ciò che è rilevante dal punto di vista dell applicazione i puntatori sono aggiuntivi rispetto ai dati veri e propri La rappresentazione logica dei dati non fa riferimento a quella fisica, che può cambiare nel tempo, permettendo quindi di ottenere l indipendenza fisica dei dati E l assenza di puntatori che permette al modello relazionale il raggiungimento dell indipendenza fisica I dati sono portabili facilmente da un sistema ad un altro i puntatori (che, alla fine, non sono che indirizzi di memoria) sono spesso legati al singolo computer # 6 Prof Alberto Postiglione Università Salerno 3
Schema di Relazione e di Database SCHEMA DI RELAZIONE un nome R con un insieme di (nomi di) attributi R(A 1,A 2,...,A n ) A 1,A 2,...,A n A ciascun attributo è associato un dominio SCHEMA DI DATABASE (RELAZIONALE) insieme di tutti gli schemi di relazione: R = {R 1 (A 1,A 2,...,A n ), R 2 (B 1,B 2,...,B m ),..., R k (K 1,K 2,...,K r )} Lo Schema della Base di Dati dell esempio precedente è la seguente: R={STUDENTI(Matricola, Cognome, Nome, Data di Nascita), ESAMI(Studente, Voto, Corso), CORSI (Codice, Titolo, Docente)} # 7 Prof Alberto Postiglione Università Salerno Istanza di Relazione e di Database ISTANZA DI RELAZIONE su uno schema R(A 1,A 2,...,A n ) insieme r di tuple su A 1,A 2,...,A n ISTANZA DI BASE DI DATI su uno schema R = {R 1 (A 1,A 2,...,A n ), R 2 (B 1,B 2,...,B m ),..., R k (K 1,K 2,...,K r )} insieme di tutte le tuple presenti nelle Relazioni all interno del Database Una tupla su un insieme di attributi X è una funzione che associa a ciascun attributo A in X un valore del dominio di A t[a] denota il valore della tupla t sull'attributo A # 8 Prof Alberto Postiglione Università Salerno 4
Tabelle con un solo attributo Presente in DB con più tabelle, in cui la tabella con un solo attributo contiene valori che appaiono come valore di attributo di un altra tabella studenti Matricola Cognome Nome Data di nascita 6554 Rossi Mario 05/12/1978 8765 Neri Paolo 03/11/1976 9283 Verdi Luisa 12/11/1979 3456 Rossi Maria 01/02/1978 studenti lavoratori Matricola 6554 3456 # 9 Prof Alberto Postiglione Università Salerno Tabelle con struttura nidificata Da Filippo Via Roma 2, Roma Ricevuta Fiscale del 18/11/2002 3 Coperti 3,00 2 Antipasti 6,20 3 Primi 12,00 2 Bistecche 18,00 Da Filippo Via Roma 2, Roma Ricevuta Fiscale 1240 del 19/11/2002 2 Coperti 2,00 2 Antipasti 7,00 2 Primi 8,00 2 Orate 20,00 2 Caffè 2,00 Totale 39,20 Totale 39,00 # 10 Prof Alberto Postiglione Università Salerno 5
Tabelle con struttura nidificata Frasi Prestampate Informazioni Fisse Informazioni variabili (ognuna relativa a un insieme di portate omogenee) Da Filippo Via Roma 2, Roma Ricevuta Fiscale del 18/11/2002 3 Coperti 3,00 2 Antipasti 6,20 3 Primi 12,00 2 Bistecche 18,00 Totale 39,20 # 11 Prof Alberto Postiglione Università Salerno Tabelle con struttura nidificata Poiché le Tabelle hanno un numero fisso di attributi non è possibile rappresentare l informazione contenuta nelle ricevute utilizzando una sola tabella a meno di non sprecare una quantità enorme di spazio creando un numero di colonne pari al numero massimo di portate E possibile rappresentare le informazioni per mezzo di due tabelle, la prima contenente i dati fissi e la seconda quelli variabili (un record per ogni elemento) # 12 Prof Alberto Postiglione Università Salerno 6
Tabelle con struttura nidificata Ricevute Numero Data 12/10/2000 Totale 39,20 1240 13/10/2000 39,00 Dettaglio Numero Qtà Coperti 3,00 3 Coperti 3,00 2 Antipasti 6,20 3 Primi 12,00 2 Bistecche 18,00 1240 2 Coperti 2,00 # 13 Prof Alberto Postiglione Università Salerno Tabelle con struttura nidificata Abbiamo rappresentato veramente tutti gli aspetti delle ricevute? Dipende da che cosa ci interessa! l'ordine delle righe èrilevante? possono esistere linee ripetute in una ricevuta? Basta aggiungere un ulteriore attributo che indica la posizione della riga sulla ricevuta I DATI DA RAPPRESENTARE NELLA BASE DI DATI POSSONO ESSERE DIVERSI A SECONDA DEGLI OBIETTIVI CHE CI SI PREFIGGE DI RAGGIUNGERE # 14 Prof Alberto Postiglione Università Salerno 7
Rappresentazione alternativa di strutture Ricevute Numero Data 12/10/2000 Totale 39,20 1240 13/10/2000 39,00 Dettaglio Numero Riga Qtà Descrizione Importo 1 2 3 4 3 Coperti 3,00 2 Antipasti 6,20 3 Primi 12,00 2 Bistecche 18,00 1240 1 2 Coperti 2,00 # 15 Prof Alberto Postiglione Università Salerno INFORMAZIONE INCOMPLETA E VALORI NULLI Atzeni, cap. 2.1.5 8
Informazione incompleta ll modello relazionale impone ai dati una struttura rigida: le informazioni sono rappresentate per mezzo di tuple sono ammesse solo le tuple che corrispondono agli schemi di relazione I dati effettivamente disponibili possono non corrispondere esattamente al formato previsto Ad esempio, in una relazione sullo schema PERSONE (Cognome, Nome, Indirizzo, Telefono) il valore di Telefono potrebbe non essere disponbile per tutte le tuple. # 17 Prof Alberto Postiglione Università Salerno Informazione incompleta: soluzioni? non è opportuno usare valori del dominio (0, stringa vuota, 99,...) perchè si potrebbe generare confusione. Infatti: potrebbero non esistere valori del dominio non utilizzati (come nel caso delle date) i programmi che accedono alla Base di Dati devono poter distinguere i valori effettivi da quelli fittizi, e questo implica una complicazione degli stessi software. valori non utilizzati potrebbero, con il tempo, diventare significativi # 18 Prof Alberto Postiglione Università Salerno 9
Informazione incompleta nel relazionale Si adotta una tecnica semplice ma efficace: valore nullo: denota l assenza di un valore del dominio Non èunvaloredel dominio, maè un valore aggiuntivo rispetto a quelli del dominio # 19 Prof Alberto Postiglione Università Salerno Tipi di valore nullo Città Roma Firenze Tivoli Prato Indirizzo Prefettura Via Quattro Novembre NULL NULL NULL (almeno) tre casi differenti valore sconosciuto (Firenze certamente ha una Prefettura. Se non compare nella Relazione significa che al momento non ci è nota) valore inesistente (Tivoli non è capoluogo di provincia e quindi non ha Prefettura. In questo caso il valore è inesistente) valore senza informazione (Prato è stata da poco istituita come Provincia per cui non si sa se già esiste una Prefettura. Siamo in uno dei due casi precedenti, ma non sappiamo quale) # 20 Prof Alberto Postiglione Università Salerno 10
Valori Nulli I DBMS non distinguono i tipi di valore nullo, in pratica per un DBMS il valore nullo è sempre del terzo tipo (assenza di informazione, cioè non si sa se è inesistente o sconosciuto) ATTENZIONE Non sempre è possibile inserire un valore nullo in una relazione. Bisogna controllare attentamente la presenza di valori nulli in una relazione I Vincoli di Integrità ci vengono in aiuto. # 21 Prof Alberto Postiglione Università Salerno Troppi valori nulli (errore nelle tuple) AMMISSIBILE studenti Rende INUTILIZZABILE la tupla (che non fornisce alcuna informazione utile) PROBLEMATICA (l attributo stabilisce una correlazione tra tuple direlazioni diverse) Le due tuple potrebbero essere addirittura identiche Matricola Cognome Nome Data di nascita 276545 Rossi Maria NULL NULL Neri Anna 23/04/1972 NULL Verdi Fabio 12/02/1972 esami corsi Studente Voto Corso 276545 28 01 NULL 27 NULL 200768 24 NULL Codice Titolo Docente 01 Analisi Gianni 03 Chimica NULL NULL Chimica Belli # 22 Prof Alberto Postiglione Università Salerno 11