• Non ci sono risultati.

Informatica II – Basi di Dati (07/08) – Parte 1

N/A
N/A
Protected

Academic year: 2022

Condividi "Informatica II – Basi di Dati (07/08) – Parte 1"

Copied!
13
0
0

Testo completo

(1)

Informatica II – Basi di Dati (07/08) – Parte 1

Gianluca Torta

Dipartimento di Informatica dell’Università di Torino [email protected], 0116706782

3 - Il modello relazionale

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

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

(2)

5

Prodotto cartesiano

  Prodotto cartesiano di due insiemi A e B A x B = {( x1,x2 ) | x1∈A e x2∈B } dove ( x1,x2 ) sono coppie ordinate di

elementi

  Per esempio: A = {1,2,4}, B = {a,b}

A x B = {(1,a),(1,b),(2,a),(2,b),(4,a),(4,b)}

6

Relazione matematica

Relazione matematica su insiemi

A

e

B

(

domini

della relazione) = sottoinsieme di

A

x

B

 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

Relazioni e tabelle

  Domini: per esempio

 I numeri naturali tra 1 e 50 compresi

 Le frase che contengono 255 carattere o meno

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

(3)

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

Relazioni e tabelle

  Relazioni rappresentate graficamente come tabelle

1 1

1 B

4 b

11

Prodotto cartesiano

Prodotto cartesiano di n insiemi

D1, D2, …, Dn

D1

x…x

Dn

= {(

z1,…,zn

) |

z1∈D1,…, zn∈Dn

} dove (

z1,…,zn

) sono n-uple ordinate di elementi

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

(4)

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

Relazione matematica

Relazione matematica sugli insiemi

D1,…,Dn

(

domini

della relazione)

= un sottoinsieme di

D1

x…x

Dn  

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

Relazioni e tabelle

Per esempio: risultati partite di calcio

Juventus Lazio 3 2

Lazio Milan 2 0

Juventus Roma 2 1

Roma Milan 1 2

16

Relazioni e tabelle

Per esempio: risultati partite di calcio

Juventus Lazio 3 2

Lazio Milan 2 0

Juventus Roma 2 1

Roma Milan 1 2

Sequenza di carattere

(stringa) Numero naturale (intero)

(5)

17

Relazioni e tabelle

Per esempio: risultati partite di calcio

Juventus Lazio 3 2

Lazio Milan 2 0

Juventus Roma 2 1

Roma Milan 1 2

Sequenza di carattere

(stringa) Numero naturale (intero)

Questa relazione: un sottoinsieme di Stringa x Stringa x Intero x Intero

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

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

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

(6)

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

Relazioni con attributi

SquadraDiCasa SquadraOspitata RetiCasa RetiOspitata

Juventus Lazio 3 2

Lazio Milan 2 0

Juventus Roma 2 1

Roma Milan 1 2

23

Relazioni con attributi

SquadraDiCasa SquadraOspitata RetiCasa RetiOspitata

Juventus Lazio 3 2

Lazio Milan 2 0

Juventus Roma 2 1

Roma Milan 1 2

D1 D2 D3 D4

Ordinamento di colonne diventa irrilevante:

Non serve più parlare di primo dominio, etc.

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

X A3 D7 D

DOM

(7)

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

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

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

Relazioni con attributi:

esempio

t1, t2, t3, t4: tuple

 t1[SquadraDiCasa]=Juventus

 t1[SquadraOspitata]=Lazio

 t1[RetiCasa]=3

 t1[RetiOspitata]=2

SquadraDiCasa SquadraOspitata RetiCasa RetiOspitata

Juventus Lazio 3 2

Lazio Milan 2 0

Juventus Roma 2 1

Roma Milan 1 2

(8)

29

Relazioni con attributi:

esempio

t1, t2, t3, t4: tuple

 t2[SquadraDiCasa]=Lazio

 t2[SquadraOspitata]=Milan

 t2[RetiCasa]=2

 t2[RetiOspitata]=0

SquadraDiCasa SquadraOspitata RetiCasa RetiOspitata

Juventus Lazio 3 2

Lazio Milan 2 0

Juventus Roma 2 1

Roma Milan 1 2

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

Matricola Cognome Nome DataNascita

276545 Rossi Maria 25/11/1981

485745 Neri Anna 23/04/1982

200768 Verdi Fabio 12/02/1982

587614 Rossi Luca 10/10/1981

937653 Bruni Mario 01/12/1981

Studenti

31

Relazioni e Basi di Dati

Codice Titolo Docente

01 Analisi Giani

03 Chimica Melli

04 Chimica Belli

Studente Voto Corso

276545 28 01

485745 27 04

200768 25 01

587614 24 04

Esami

Corsi

32

Relazioni e Basi di Dati

Sono ammissibile relazione con un solo attributo

 Per esempio:

Si possono rappresentare informazioni complesse mediante tabelle diverse

Matricola 276545 485745 200768 Lavoratori

(9)

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)

Studente Voto Corso

276545 28 01

485745 27 04

200768 25 01

587614 24 04

Esami

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

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

Esempi di relazione

“DA MARIO”

Ricevuta n. 1357 Del 5/2/04 3 coperti 3,00 2 antipasti 6,00 3 primi 12,00 2 bistecche 18,00

Totale 39,00

“DA MARIO”

Ricevuta n. 2334 Del 7/2/04 2 coperti 2,00 1 antipasti 3,00 2 primi 8,00 2 orate 14,00 2 caffè 2,00 Totale 29,00

“DA MARIO”

Ricevuta n. 3002 Del 13/2/04 3 coperti 3,00 2 antipasti 6,00 3 primi 14,00 1 Orate 18,00 1 Caprese 2,00 2 Caffè 2,00 Totale 45,00

(10)

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

Esempi di relazione

Num. Q.tà Descr. Importo

1357 3 Coperti 3,00

1357 2 Antipasti 6,00

1357 3 Primi 12,00

1357 2 Bistecche 18,00

2334 2 Coperti 2,00

2334 1 Antipasti 3,00

2334 2 Primi 8,00

2334 2 Orate 14,00

2334 2 Caffè 2,00

3002 3 Coperti 3,00

3002 2 Antipasti 6,00

3002 3 Primi 14,00

3002 1 Orate 18,00

3002 1 Caprese 2,00

3002 2 Caffè 2,00

Num. Data Totale 1357 5/2/04 39,00 2334 7/2/04 29,00 3002 13/2/04 45,00

Ricevute

Dettaglio

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

Esempi di relazione

Num. Riga Q.tà Descr. Importo

1357 1 3 Coperti 3,00

1357 2 2 Antipasti 6,00

1357 3 3 Primi 12,00

1357 4 2 Bistecche 18,00

2334 1 2 Coperti 2,00

2334 2 1 Antipasti 3,00

2334 3 2 Primi 8,00

2334 4 2 Orate 14,00

2334 5 2 Caffè 2,00

3002 1 3 Coperti 3,00

3002 2 2 Antipasti 6,00

3002 3 3 Primi 14,00

3002 4 1 Orate 18,00

3002 5 1 Caprese 2,00

3002 6 2 Caffè 2,00

Num. Data Totale 1357 5/2/04 39,00 2334 7/2/04 29,00 3002 13/2/04 45,00

Ricevute

Dettaglio

(11)

41

Esempi di relazione

Num. Riga Q.tà Descr. Importo

1357 1 3 Coperti 3,00

1357 2 2 Antipasti 6,00

1357 3 3 Primi 12,00

1357 4 2 Bistecche 18,00

2334 1 2 Coperti 2,00

2334 2 1 Antipasti 3,00

2334 3 2 Primi 8,00

2334 4 2 Orate 14,00

2334 5 2 Caffè 2,00

3002 1 3 Coperti 3,00

3002 2 2 Antipasti 6,00

3002 3 3 Primi 14,00

3002 4 1 Orate 18,00

3002 5 1 Caprese 2,00

3002 6 2 Caffè 2,00

Num. Data Totale 1357 5/2/04 39,00 2334 7/2/04 29,00 3002 13/2/04 45,00

Ricevute

Dettaglio

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

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

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

(12)

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

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

Matricola Cognome Nome DataNascita

276545 Rossi Maria NULL

NULL Neri Anna 23/04/1982

NULL Verdi Fabio 12/02/1982

587614 Rossi Luca 10/10/1981

937653 Bruni Mario 01/12/1981

Studenti

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

Matricola Cognome Nome DataNascita

276545 Rossi Maria NULL

NULL Neri Anna 23/04/1982

NULL Verdi Fabio 12/02/1982

587614 Rossi Luca 10/10/1981

937653 Bruni Mario 01/12/1981

Studenti

OK

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

Matricola Cognome Nome DataNascita

276545 Rossi Maria NULL

NULL Neri Anna 23/04/1982

NULL Verdi Fabio 12/02/1982

587614 Rossi Luca 10/10/1981

937653 Bruni Mario 01/12/1981

Studenti

No: matricola usata per correlare relazione

(13)

49

Informazione incompleta e valori nulli

No: informazione inutile

Codice Titolo Docente

01 Analisi Giani

03 Chimica NULL

NULL Chimica Belli

Studente Voto Corso

276545 28 01

NULL 27 NULL

200768 25 01

587614 24 NULL

Esami

Corsi

50

Informazione incompleta e valori nulli

No: informazione inutile

Codice Titolo Docente

01 Analisi Giani

03 Chimica NULL

NULL Chimica Belli

Studente Voto Corso

276545 28 01

NULL 27 NULL

200768 25 01

587614 24 NULL

Esami

Corsi

51

Informazione incompleta e valori nulli

No: codice usato Per correlare relazione

Codice Titolo Docente

01 Analisi Giani

03 Chimica NULL

NULL Chimica Belli

Studente Voto Corso

276545 28 01

NULL 27 NULL

200768 25 01

587614 24 NULL

Esami

Corsi

52

Informazione incompleta e valori nulli

Codice Titolo Docente

01 Analisi Giani

03 Chimica NULL

NULL Chimica Belli

Studente Voto Corso

276545 28 01

NULL 27 NULL

200768 25 01

587614 24 NULL

Esami

Corsi

OK

Riferimenti

Documenti correlati

-Si definsce il prodotto di una riga per una colonna aventi lo stesso numero di com- ponenti come la somma dei prodotti delle componenti della riga per le corrispondenti componenti

Definiamo il prodotto di una riga a 0 di numeri reali per una colonna b di numeri reali, aventi lo stesso numero di componenti, come il numero reale ottenuto moltiplicando

[r]

Voglio una funzione che sia almeno continua con derivate prime e seconde; in ogni inter- vallo [x j−1 , x j ] chiedo che la funzione sia un polinomio di terzo grado. Nei punti

Voglio una funzione che sia almeno continua con derivate prime e seconde; in ogni inter- vallo [x j−1 , x j ] chiedo che la funzione sia un polinomio di terzo grado. Nei punti

Estrarre i titoli delle opere e i nomi dei personaggi di tutte le coppie di opere che hanno un personaggio in comune. PREFIX

 I nomi nella espressione XPath sono i nomi dei nodi contenuti nel nell’albero del documento XML, che possono essere i nomi di tag (elementi) o nomi di attributi, possibilmente

Un punto di accumulazione di D pu`o essere punto interno o