Informatica Introduzione alle basi di dati Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico: 2005-2006 3 - Il modello relazionale 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 3 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 4 Relazioni e tabelle Domini: per esempio I numeri naturali tra 1 e 50 compresi Le frase che contengono 255 carattere o meno 5 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 6 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 7 Relazioni e tabelle Relazioni rappresentate graficamente come tabelle 1 a 1 b 4 b 8 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)} 9 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)} 10 Relazioni e tabelle Relazione {(0,b,blu), (1,a,rosso), (1,b,rosso), (1,b,blu)} rappresentata graficamente come tabella 0 1 1 1 b a b b blu rosso rosso blu 11 Relazioni e tabelle Per esempio: risultati partite di calcio Juventus Lazio Juventus Lazio Milan Roma 3 2 2 2 0 1 Roma Milan 1 2 12 Relazioni e tabelle Per esempio: risultati partite di calcio Juventus Lazio Juventus Lazio Milan Roma 3 2 2 2 0 1 Roma Milan 1 2 Sequenza di carattere (stringa) Numero naturale (intero) 13 Relazioni e tabelle Per esempio: risultati partite di calcio Juventus Lazio Juventus Lazio Milan Roma 3 2 2 2 0 1 Roma Milan 1 2 Sequenza di carattere (stringa) Numero naturale (intero) Questa relazione: un sottoinsieme di Stringa x Stringa x Intero x Intero 14 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 15 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 16 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 17 Relazioni con attributi In una relazione, ogni dominio rappresenta un ruolo o attributo Usiamo nome di attributo per identificare le rispettive componenti delle n-uple In una tabelle: attributo intestazione di colonne della tabella Per esempio: SquadraDiCasa, SquadraOspitata, RetiCasa, RetiOspitata 18 Relazioni con attributi SquadraDiCasa SquadraOspitata RetiCasa RetiOspitata Juventus Lazio 3 2 Lazio Milan 2 0 Juventus Roma 2 1 Roma Milan 1 2 19 Relazioni con attributi D1 D2 D3 D4 SquadraDiCasa SquadraOspitata RetiCasa RetiOspitata Juventus Lazio 3 2 Lazio Milan 2 0 Juventus Roma 2 1 Roma Milan 1 2 Ordinamento di colonne diventa irrilevante: Non serve più parlare di primo dominio, etc. 20 Relazioni con attributi Dati insieme di attributi X={A1,…,An} e insieme di domini D={D1,…,Dm} X 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 A3 DOM D 21 Relazioni con attributi Tupla su insieme di attributi X è una funzione t che associa a ciascun attributo AX un valore del dominio DOM(A) Per esempio, tupla t, valore per l’attributo SquadraDiCasa: t[SquadraDiCasa]=Juventus Relazione (con attributi) su X è insieme di tuple su X n-uple: elementi individuati per posizione Tuple: elementi individuati per attributo 22 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} 23 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 24 Relazioni con attributi: esempio SquadraDiCasa SquadraOspitata RetiCasa RetiOspitata Juventus Lazio 3 2 Lazio Milan 2 0 Juventus Roma 2 1 Roma Milan 1 2 t1, t2, t3, t4: tuple t1[SquadraDiCasa]=Juventus t1[SquadraOspitata]=Lazio t1[RetiCasa]=3 t1[RetiOspitata]=2 25 Relazioni con attributi: esempio SquadraDiCasa SquadraOspitata RetiCasa RetiOspitata Juventus Lazio 3 2 Lazio Milan 2 0 Juventus Roma 2 1 Roma Milan 1 2 t1, t2, t3, t4: tuple t2[SquadraDiCasa]=Lazio t2[SquadraOspitata]=Milan t2[RetiCasa]=2 t2[RetiOspitata]=0 26