La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Informatica II – Basi di Dati (07/08) – Parte 1 Gianluca Torta Dipartimento di Informatica dell’Università di Torino

Presentazioni simili


Presentazione sul tema: "Informatica II – Basi di Dati (07/08) – Parte 1 Gianluca Torta Dipartimento di Informatica dell’Università di Torino"— Transcript della presentazione:

1 Informatica II – Basi di Dati (07/08) – Parte 1 Gianluca Torta Dipartimento di Informatica dell’Università di Torino

2 3 - Il modello relazionale

3 3 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

4 4 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

5 5 Prodotto cartesiano Prodotto cartesiano di due insiemi A e B AxB = {(x1,x2) | x1  A e x2  B} 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)}

6 6 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)}

7 7 Relazioni e tabelle Domini: per esempio I numeri naturali tra 1 e 50 compresi Le frase che contengono 255 carattere o meno

8 8 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

9 9 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

10 10 Relazioni e tabelle Relazioni rappresentate graficamente come tabelle 11 1B 4b

11 11 Prodotto cartesiano Prodotto cartesiano di n insiemi D1, D2, …, Dn D1x…xDn = {(z1,…,zn) | z1  D1,…, zn  Dn} dove (z1,…,zn) sono n-uple ordinate di elementi

12 12 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}?

13 13 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)}

14 14 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)}

15 15 Relazioni e tabelle Per esempio: risultati partite di calcio JuventusLazio32 Milan20 JuventusRoma21 Milan12

16 16 Relazioni e tabelle Per esempio: risultati partite di calcio JuventusLazio32 Milan20 JuventusRoma21 Milan12 Sequenza di carattere (stringa) Numero naturale (intero)

17 17 Relazioni e tabelle Per esempio: risultati partite di calcio JuventusLazio32 Milan20 JuventusRoma21 Milan12 Sequenza di carattere (stringa) Numero naturale (intero) Questa relazione: un sottoinsieme di Stringa x Stringa x Intero x Intero

18 18 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

19 19 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

20 20 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

21 21 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

22 22 Relazioni con attributi SquadraDiCasaSquadraOspitataRetiCasaRetiOspitata JuventusLazio32 Milan20 JuventusRoma21 Milan12

23 23 Relazioni con attributi SquadraDiCasaSquadraOspitataRetiCasaRetiOspitata JuventusLazio32 Milan20 JuventusRoma21 Milan12 D1D2D3D4 Ordinamento di colonne diventa irrilevante: Non serve più parlare di primo dominio, etc.

24 24 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 A  X un dominio DOM(A)  D XD A3 D7 DOM

25 25 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

26 26 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}

27 27 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

28 28 Relazioni con attributi: esempio t1, t2, t3, t4: tuple t1[SquadraDiCasa]=Juventus t1[SquadraOspitata]=Lazio t1[RetiCasa]=3 t1[RetiOspitata]=2 SquadraDiCasaSquadraOspitataRetiCasaRetiOspitata JuventusLazio32 Milan20 JuventusRoma21 Milan12

29 29 Relazioni con attributi: esempio t1, t2, t3, t4: tuple t2[SquadraDiCasa]=Lazio t2[SquadraOspitata]=Milan t2[RetiCasa]=2 t2[RetiOspitata]=0 SquadraDiCasaSquadraOspitataRetiCasaRetiOspitata JuventusLazio32 Milan20 JuventusRoma21 Milan12

30 30 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 MatricolaCognomeNomeDataNascita RossiMaria25/11/ NeriAnna23/04/ VerdiFabio12/02/ RossiLuca10/10/ BruniMario01/12/1981 Studenti

31 31 Relazioni e Basi di Dati CodiceTitoloDocente 01AnalisiGiani 03ChimicaMelli 04ChimicaBelli StudenteVotoCorso Esami Corsi

32 32 Relazioni e Basi di Dati Sono ammissibile relazione con un solo attributo Per esempio: Si possono rappresentare informazioni complesse mediante tabelle diverse Matricola Lavoratori

33 33 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) StudenteVotoCorso Esami

34 34 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)}

35 35 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)

36 36 Esempi di relazione “DA MARIO” Ricevuta n Del 5/2/04 3coperti3,00 2antipasti6,00 3primi12,00 2bistecche18,00 Totale39,00 “DA MARIO” Ricevuta n Del 7/2/04 2coperti2,00 1antipasti3,00 2primi8,00 2orate14,00 2caffè2,00 Totale29,00 “DA MARIO” Ricevuta n Del 13/2/04 3coperti3,00 2antipasti6,00 3primi14,00 1Orate18,00 1Caprese2,00 2Caffè2,00 Totale45,00

37 37 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

38 38 Esempi di relazione Num.Q.tàDescr.Importo 13573Coperti3, Antipasti6, Primi12, Bistecche18, Coperti2, Antipasti3, Primi8, Orate14, Caffè2, Coperti3, Antipasti6, Primi14, Orate18, Caprese2, Caffè2,00 Num.DataTotale 13575/2/0439, /2/0429, /2/0445,00 Ricevute Dettaglio

39 39 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

40 40 Esempi di relazione Num.RigaQ.tàDescr.Importo Coperti3, Antipasti6, Primi12, Bistecche18, Coperti2, Antipasti3, Primi8, Orate14, Caffè2, Coperti3, Antipasti6, Primi14, Orate18, Caprese2, Caffè2,00 Num.DataTotale 13575/2/0439, /2/0429, /2/0445,00 Ricevute Dettaglio

41 41 Esempi di relazione Num.RigaQ.tàDescr.Importo Coperti3, Antipasti6, Primi12, Bistecche18, Coperti2, Antipasti3, Primi8, Orate14, Caffè2, Coperti3, Antipasti6, Primi14, Orate18, Caprese2, Caffè2,00 Num.DataTotale 13575/2/0439, /2/0429, /2/0445,00 Ricevute Dettaglio

42 42 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

43 43 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

44 44 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

45 45 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

46 46 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 MatricolaCognomeNomeDataNascita RossiMariaNULL NeriAnna23/04/1982 NULLVerdiFabio12/02/ RossiLuca10/10/ BruniMario01/12/1981 Studenti

47 47 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 MatricolaCognomeNomeDataNascita RossiMariaNULL NeriAnna23/04/1982 NULLVerdiFabio12/02/ RossiLuca10/10/ BruniMario01/12/1981 Studenti OK

48 48 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 MatricolaCognomeNomeDataNascita RossiMariaNULL NeriAnna23/04/1982 NULLVerdiFabio12/02/ RossiLuca10/10/ BruniMario01/12/1981 Studenti No: matricola usata per correlare relazione

49 49 Informazione incompleta e valori nulli No: informazione inutile CodiceTitoloDocente 01AnalisiGiani 03ChimicaNULL ChimicaBelli StudenteVotoCorso NULL27NULL NULL Esami Corsi

50 50 Informazione incompleta e valori nulli No: informazione inutile CodiceTitoloDocente 01AnalisiGiani 03ChimicaNULL ChimicaBelli StudenteVotoCorso NULL27NULL NULL Esami Corsi

51 51 Informazione incompleta e valori nulli No: codice usato Per correlare relazione CodiceTitoloDocente 01AnalisiGiani 03ChimicaNULL ChimicaBelli StudenteVotoCorso NULL27NULL NULL Esami Corsi

52 52 Informazione incompleta e valori nulli CodiceTitoloDocente 01AnalisiGiani 03ChimicaNULL ChimicaBelli StudenteVotoCorso NULL27NULL NULL Esami Corsi OK


Scaricare ppt "Informatica II – Basi di Dati (07/08) – Parte 1 Gianluca Torta Dipartimento di Informatica dell’Università di Torino"

Presentazioni simili


Annunci Google