520 likes | 640 Views
Informatica II – Basi di Dati (07/08) – Parte 1. Gianluca Torta Dipartimento di Informatica dell’Universit à di Torino torta@di.unito.it , 0116706782. 3 - Il modello relazionale. Il modello relazionale. Modello logico dei dati basato su concetti relazione e tabella
E N D
Informatica II – Basi di Dati (07/08) – Parte 1 Gianluca Torta Dipartimento di Informatica dell’Università di Torino torta@di.unito.it, 0116706782
Il modello relazionale • Modello logico dei dati basato su concetti relazione e tabella • Relazione: da teoria degli insiemi • Tabella: rappresentazione grafica di una relazione; un concetto intuitivo
Il modello relazionale • Garantisce indipendenza dei dati • Utenti che accedono ai dati e programmatori che sviluppano applicazioni fanno riferimento al livello logico dei dati • Cioè, agli utenti e ai programmatori, non serve sapere come i dati sono memorizzati fisicamente
Prodotto cartesiano • Prodotto cartesiano di due insiemi A e B AxB = {(x1,x2) | x1A e x2B} dove (x1,x2) sono coppie ordinate di elementi • Per esempio: A = {1,2,4}, B= {a,b} AxB = {(1,a),(1,b),(2,a),(2,b),(4,a),(4,b)}
Relazione matematica • Relazione matematica su insiemi A e B (domini della relazione) = sottoinsieme di AxB • Per esempio: AxB = {(1,a),(1,b),(2,a),(2,b),(4,a),(4,b)} Una relazione matematica su insieme A e B potrebbe essere: R={(1,a),(1,b),(4,b)}
Relazioni e tabelle • Domini: per esempio • I numeri naturali tra 1 e 50 compresi • Le frase che contengono 255 carattere o meno
Relazioni e tabelle • Assumiamo che i DB siano costituiti da relazioni finite su domini eventualmente infiniti • Finito o infinito? Per esempio: • {z|z è un numero naturale} è un insieme infinito • {y|y è un numero naturale tra 1 e 50 compresi} è un insieme finito • {x|x è una frase che contiene 255 carattere o meno} è un insieme finito
Relazioni e tabelle • In un DB non possono esserci insiemi infiniti • Sistemi di calcolo gestiscono solo insiemi finiti • Ma è utile ammettere domini infiniti per permettere ad ogni istante di assumere esistenza di un valore non presente nel DB
Relazioni e tabelle • Relazioni rappresentate graficamente come tabelle
Prodotto cartesiano • Prodotto cartesiano di n insiemi D1, D2, …, Dn D1x…xDn = {(z1,…,zn) | z1D1,…,znDn} dove (z1,…,zn) sono n-uple ordinate di elementi
Prodotto cartesiano • Per esempio: • n=3: D1={0,1}, D2={a,b}, D3={rosso,blu} • Che cos’è D1xD2xD3? • Cioè, che cos’è {0,1}x{a,b}x{rosso,blu}?
Prodotto cartesiano • Per esempio: • n=3: D1={0,1}, D2={a,b}, D3={rosso,blu} • Che cos’è D1xD2xD3? • Cioè, che cos’è {0,1}x{a,b}x{rosso,blu}? {(0,a,rosso), (0,a,blu), (0,b,rosso), (0,b,blu), (1,a,rosso), (1,a,blu), (1,b,rosso), (1,b,blu)}
Relazione matematica • Relazione matematica sugli insiemi D1,…,Dn (domini della relazione) = un sottoinsieme di D1x…xDn • Per esempio: un relazione sugli insiemi {0,1}, {a,b}, {rosso,blu} potrebbe essere {(0,b,blu), (1,a,rosso), (1,b,rosso), (1,b,blu)}
Relazioni e tabelle • Per esempio: risultati partite di calcio
Relazioni e tabelle • Per esempio: risultati partite di calcio Sequenza di carattere (stringa) Numero naturale (intero)
Relazioni e tabelle • Per esempio: risultati partite di calcio Sequenza di carattere (stringa) Numero naturale (intero) Questa relazione: un sottoinsieme di Stringa x Stringa x Intero x Intero
Relazioni e tabelle • n-upla di relazione contiene dati tra loro collegati, che verificano la relazione • n-uple sono ordinate: ordine dei loro elementi è significativo • Per esempio: (Juventus,Lazio,3,2) significa che il risultato della partita Juventus-Lazio, giocata in casa dalla Juventus, è 3 a 2
Relazioni e tabelle • Una relazione è un insieme: • n-uple della relazione devono essere distinte (no righe ripetute in tabella) • n-uple non sono tra loro ordinate (tabelle con stesse righe ordinate in modo diverso rappresentano la stessa relazione) Insieme: collezione di elementi • L’ordine degli elementi non è importante • Un insieme non contiene duplicati
Relazioni con attributi • Ordinamento dei domini di una relazione impone ordinamento posizionale degli elementi di n-uple • Nella gestione di dati, preferenza per ordinamenti non posizionali • … in cui si può far riferimento alle componenti delle n-uple in modo non ambiguo
Relazioni con attributi • In una relazione, ogni dominio rappresenta un ruolo o attributo • Usiamo nome di attributo per identificare le rispettive componenti delle n-ple • In una tabelle: attributo intestazione di colonne della tabella • Per esempio: • SquadraDiCasa, SquadraOspitata, RetiCasa, RetiOspitata
Relazioni con attributi D1 D2 D3 D4 Ordinamento di colonne diventa irrilevante: Non serve più parlare di primo dominio, etc.
Relazioni con attributi • Dati insieme di attributi X={A1,…,An} e insieme di domini D={D1,…,Dm} • Stabiliamo corrispondenza tra attributi e domini mediante funzione DOM: X D • Cioè, la funzione DOM associa a ciascun attributo AX un dominio DOM(A) D D7 X D A3 DOM
Relazioni con attributi • Tupla su insieme di attributi X è una funzione t che associa a ciascun attributo A X un valore del dominio DOM(A) • Per esempio: t[SquadraDiCasa]=Juventus • Relazione (con attributi) su X è insieme di tuple su X • n-uple: elementi individuati per posizione • Tuple: elementi individuati per attributo
Relazioni con attributi: esempio • DOM:{SquadraDiCasa, SquadraOspitata, Reti Casa, RetiOspitata} {Stringa, Intero} • Cioè: • Insieme di attributi X = {SquadraDiCasa, SquadraOspitata, Reti Casa, RetiOspitata} • Insieme di attributi D = {Stringa, Intero}
Relazioni con attributi: esempio • DOM:{SquadraDiCasa, SquadraOspitata, Reti Casa, RetiOspitata} {Stringa, Intero} • DOM(SquadraDiCasa) = Stringa • DOM(SquadraOspitata) = Stringa • DOM(Reti Casa) = Intero • DOM(RetiOspitata) = Intero
Relazioni con attributi: esempio • t1, t2, t3, t4: tuple • t1[SquadraDiCasa]=Juventus • t1[SquadraOspitata]=Lazio • t1[RetiCasa]=3 • t1[RetiOspitata]=2
Relazioni con attributi: esempio • t1, t2, t3, t4: tuple • t2[SquadraDiCasa]=Lazio • t2[SquadraOspitata]=Milan • t2[RetiCasa]=2 • t2[RetiOspitata]=0
Relazioni e Basi di Dati • Un DB è solitamente costituito da più relazioni (tabelle) le cui tuple contengono valori comuni (usati per stabilire corrispondenza tra tuple) • Per esempio: tabelle che descrivono studenti, esami e corsi Studenti
Relazioni e Basi di Dati Esami Corsi
Relazioni e Basi di Dati • Sono ammissibile relazione con un solo attributo • Per esempio: • Si possono rappresentare informazioni complesse mediante tabelle diverse Lavoratori
Schemi di relazioni e di DB • Schema di relazione: R(X) • Costituita da simbolo R (nome della relazione) e da insieme di nomi di attributi X={A1,…,An} • Per esempio: • Esami(Studente,Voto,Corso) Esami
Schemi di relazioni e di DB • Schema di base di dati: R={R1(X1),…,Rn(Xn)} • Insiemi di schemi di relazione con nomi diversi • Per esempio: • Università = {Studenti(Matricola,Cognome,Nome,DataNascita), Esami(Studente,Voto,Corso), Corso(Codice,Titolo,Docente)}
Schemi di relazioni e di DB • Istanza di relazione su schema R(X) • Insieme r di tuple su X • Istanza di base di dati su schema R={R1(X1),…,Rn(Xn)} • Insieme r di relazione r={r1,…,rn} dove ogni ri è una relazione sullo schema Ri(Xi)
Esempi di relazione • Le ricevute hanno una struttura che prevede alcune informazioni fisse • Numero, data e totale • … e un numero di righe variabile • Non è possibile rappresentare l’insieme delle ricevute con un’unica relazione • Non sarebbe possibile rappresentare le righe in un numero non predeterminato
Esempi di relazione Dettaglio Ricevute
Esempi di relazione • La base di dati nella slide precedente rappresenta correttamente le ricevute solo a due condizioni: • Non interessa mantenere traccia dell’ordine con cui le righe compaiono in ciascuna ricevuta • In un ricevuta non compaiono due righe uguali • In entrambi i casi, si può risolvere il problema aggiungendo un attributo, che indica la posizione della riga sulla ricevuta
Esempi di relazione Dettaglio Ricevute
Esempi di relazione Dettaglio Ricevute
Informazione incompleta e valori nulli • In una tupla di una relazione un attributo può non avere valore • Per esempio: Mario Rossi non ha telefono in Persone(Cognome,Nome,Indirizzo,Telefono) • Oppure il valore di un attributo potrebbe esistere ma essere sconosciuto a chi inserisce i dati nel DB • Per esempio: Mario Rossi ha telefono, ma non ne conosciamo il numero
Informazione incompleta e valori nulli • NULL: valore nullo • Assegnato agli elementi di tuple inesistenti o sconosciuti • NULL è valore aggiuntivo rispetto al dominio di un attributo
Informazione incompleta e valori nulli • In basi di dati, i due casi sopra trattati come assenza di informazione • In assenza di informazione su un attributo bisogna usare NULL perché non si confonde con altri valori del dominio dell’attributo
Informazione incompleta e valori nulli • Per esempio: • Numero di telefono sconosciuto potrebbe essere rappresentato con 0 (numero che nessun telefono può avere). Però questa convenzione non è generale • Inoltre, per altri attributi, potrebbe non esistere valore di dominio che non si può assegnare mai: usare NULL
Informazione incompleta e valori nulli • Non tutti gli attributi di una relazione devono poter assumere valore nullo • In definizione di relazione, si può specificare quali attributi non devono mai essere nulli nelle tuple Studenti
Informazione incompleta e valori nulli • Non tutti gli attributi di una relazione devono poter assumere valore nullo • In definizione di relazione, si può specificare quali attributi non devono mai essere nulli nelle tuple OK Studenti
Informazione incompleta e valori nulli • Non tutti gli attributi di una relazione devono poter assumere valore nullo • In definizione di relazione, si può specificare quali attributi non devono mai essere nulli nelle tuple Studenti No: matricola usata per correlare relazione
Informazione incompleta e valori nulli Esami No: informazione inutile Corsi
Informazione incompleta e valori nulli Esami No: informazione inutile Corsi