Il 0% ha trovato utile questo documento (0 voti)
18 visualizzazioni6 pagine

BDD - Modello Relazionale

Caricato da

andreatardioli03
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
18 visualizzazioni6 pagine

BDD - Modello Relazionale

Caricato da

andreatardioli03
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 6

martedì 3 dicembre 2024

BASI DI DATI - MODELLO RELAZIONALE

Cos’è il modello relazionale?


Proposto da E. F. Codd nel 1970 per favorire l’indipendenza dei dati,
disponibile in DBMS reali a partire dagli anni ‘80
Si basa su due concetti: il concetto matematico di relazione, proprio
della teoria degli insiemi ed il concetto intuitivo di tabella, le relazioni
hanno naturale rappresentazione per mezzo di tabelle.
E’ importante che ci sia una separazione tra il livello logico e il livello
sico,in particolare deve essere possibile interagire con il livello logico
senza conoscere i dettagli del livello sico (indipendenza sica).
I modelli preesistenti il modello relazionale (gerarchico e reticolare) non
garantivano l’indipendenza dei dati, in quanto includevano riferimenti
alla struttura realizzativa (uso di puntatori).

Relazioni
- Caso R2. Siano D1 e D2 due insiemi, il prodotto cartesiano D1×D2 di
D1 e D2: è l’insieme di tutte le coppie ordinate (v1,v2), tali che v1 è un
elemento di D1 e v2 è un elemento di D2, viene indicato come: D1 ×
D2 ={ (v1,v2) | v1∈ D1, v2 ∈ D2}. Una relazione (matematica) su D1 e
D2 è un sottoinsieme di D1×D2.
- Caso Rn. D1,D2,…Dn (n insiemi anche non distinti), il prodotto
cartesiano D1×D2 × …×Dn di D1,D2,…Dn è l’insieme di tutte le n-ple
ordinate (v1,v2,…,vn), tali che vi è un elemento di Di (i=1,2,…,n); viene
indicato come D1 × D2 ×…× Dn ={ (v1,v2,…,vn) | v1∈D1, v2∈D2,…,vn
∈ Dn}. Una relazione (matematica) su D1, D2,…,Dn è un sottoinsieme
di D1 × D2 ×…× Dn
Le relazioni possono essere rappresentate facilmente sotto forma
tabellare; ogni colonna rappresenta uno degli n domini Di, ogni riga
rappresenta un elemento della relazione

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


A × B = { (1,a),(1,b),(2,a),(2,b),(4,a),(4,b)}. Una possibile relazione su A e
B è {(1,a),(2,a) (4,a)}

1
fi
fi
fi
1 A

1 B 1 A

2 A 2 A

2 B 4 A

4 A

4 B

Una relazione matematica è un insieme di n-uple ordinate (d1,…, dn) tali


che d1∈D1, …, dn ∈ Dn
una relazione è un insieme; quindi dove non c'è ordinamento fra le n-
uple; le n-uple sono distinte e ciascuna n-upla è ordinata, ovvero l’ i-
esimo valore proviene dall’ i-esimo dominio.
La proprietà delle relazioni di essere ordinate è una caratteristica non
soddisfacente quando vogliamo usare una relazione per rappresentare i
dati
È preferibile avere una notazione non posizionale, in cui ciascun dato
possa essere identi cato indipendentemente dalla propria posizione
nella n-pla; possiamo ottenere una notazione non posizionale
associando a ciascun dominio su cui è de nita la relazione, un nome
(attributo) che ne descrive il “ruolo

SQ.CASA SQ.OSPITE RETI CASA RETI OSPITE

Juventus Lazio 3 1

Lazio Milan 2 0

Juventus Roma 1 2

Roma Milan 0 1

De niamo una funzione Dom: X → D che associa ad ogni attributo A ∈ X


un dominio DOM(A) ∈ D
Una tupla su un insieme di attributi X è una funzione t che associa a
ciascun attributo A ∈ X un valore del dominio DOM(A) ∈ D.
t[A] denota il valore della tupla t sull’attributo A
Una relazione su X è un insieme di tuple su X
La di erenza tra questa de nizione di relazione e la precedente
(relazione matematica) sta nella di erenza tra ennupla e tupla:
- In una n-pla gli elementi sono individuati per posizione
- In una tupla gli elementi sono individuati per mezzo degli attributi

2
fi
ff
fi
fi
ff
fi
Grazie a questa notazione in una tabella che rappresenta una relazione
l’ordinamento tra le righe etra le colonne è irrilevante.
Una istanza di relazione su uno schema R(X) è un insieme r di tuple su
X
Una istanza di base di dati su uno schema R= {R1(X1), ..., Rn(Xn)}:
insieme di relazioni r = {r1,..., rn} (con ri istanza di relazione su Ri)

MATRICOLA COGNOME NOME DATA DI NASCITA

6554 Rossi Mario 5/12/1978

8765 Neri Paolo 3/11/1976

9283 Verdi Luisa 12/11/1979

3456 Rossi Maria 1/2/1978

Informazione Incompleta
ll modello relazionale impone ai dati una struttura rigida:le informazioni
sono rappresentate per mezzo di tuple, solo alcuni formati di tuple sono
ammessi: quelli che corrispondono agli schemi di relazione
Però i dati disponibili POSSONO NON corrispondere al formato previsto

NOME SECONDO NOME COGNOME

Franklin Dedelano Roosevelt

Charles Churchill

Josip De Gaulle

Non conviene (anche se spesso si fa) usare valori del dominio (0, stringa
nulla, “99”, ...): potrebbero non esistere valori “non utilizzati” che
potrebbero diventare signi cativi; proprio per questo motivo in fase di
utilizzo (nei programmi) sarebbe necessario ogni volta tener conto del
“signi cato” di questi valori.
Si adotta una tecnica rudimentale ma e cace: l‘utilizzo del valore
nullo: denota l’assenza di un valore del dominio (e non è un valore del
dominio)
t[A], per ogni attributo A, è un valore del dominio Dom(A) oppure il
valore nullo NULL
Si possono (e debbono) imporre restrizioni sulla presenza di valori nulli

3
fi
fi
ffi
Vincoli di integrità
Esistono istanze di basi di dati che, pur sintatticamente corrette, non
rappresentano informazioni possibili per l’applicazione di interesse.
I vincoli di integrità sono delle proprietà che devono essere soddisfatte
dalle istanze che rappresentano informazioni corrette per l’applicazione
Un vincolo è una funzione booleana (un predicato): associa ad ogni
istanza il valore vero o falso.
Esistono diversi tipi di vincoli:
- Vincoli intrarelazionali, sono de niti su una singola relazione.
Possiamo ulteriormente distinguere: vincoli di tupla (valutabili su
ciascuna tupla) e vincoli su valori/dominio (valutabili su un singolo
valore)
- Vincoli interrelazionali: sono de niti su più relazioni

Esempio di vincoli di integrità


STUDENTE VOTO LODE CORSO

276545 32 No 1

276545 30 Si 2

787643 27 Si 3

739430 24 No 4

MATRICOLA COGNOME NOME


Vincolo di dominio:
(Voto ≥ 18) AND (Voto ≤ 30) 276545 Rossi Mario

787643 Neri Piero


Vincolo di tupla:
739430 Bianchi Luca
(Voto = 30) OR NOT (Lode=“Sì”)

Una chiave è un insieme di attributi che identi cano le tuple di una


relazione.
Un insieme K di attributi è superchiave per un‘istanza di relazione r se
r NON contiene due tuple distinte t1 e t2 con t1[K] = t2[K]
Un insieme K è chiave per r se è una superchiave minimale per r
(cioè non contiene un’altra superchiave)

4
fi
fi
fi
Nell’esempio precedente Matricola è chiave, è superchiave, contiene un
solo attributo, dunque è superchiave minimale

TEOREMA ESISTENZA DELLA CHIAVE: Una relazione non può


contenere tuple distinte ma uguali.
Ogni relazione ha come superchiave l’insieme degli attributi su cui è
de nita e quindi ha (almeno) una chiave.

La presenza di un vincolo di chiave garantisce l’esistenza di un insieme


di attributi (quelli che formano la chiave) che consentono di identi care
univocamente le tuple della relazione.
La presenza delle chiavi garantisce quindi l’accessibilità a ciascun dato
della base di dati
Le chiavi permettono di correlare i dati in relazioni diverse: il modello
relazionale è basato su valori.
In presenza di valori nulli, i valori della chiave non permettono:
di identi care le tuple e di realizzare facilmente i riferimenti ad altre
relazioni

Integrità referenziale
Informazioni in relazioni diverse sono correlate attraverso valori comuni
In particolare, valori delle chiavi (primarie), le correlazioni debbono
essere “coerenti”.
Un vincolo di integrità referenziale (“foreign key”) fra gli attributi X di
una relazione R1 e un’altra relazione R2 impone ai valori su X in R1
di comparire come valori della chiave primaria di R2
INFRAZIONI
CODICE DATA VIGILE PROV NUMERO

34321 1/2/95 3987 MI 39548K

53524 4/3/95 3295 TO E39548

64521 5/4/96 3295 PR 839548

73321 5/2/98 9345 PR 839548

AUTO
PROV NUMERO COGNOME NOME

MI 39548K Rossi Mario

TO E39548 Rossi Mario

PR 839548 Neri Luca

5
fi
fi
fi
I vincoli di Integrità referenziale giocano un ruolo fondamentale nel
concetto di “modello basato su valori.”
In presenza di valori nulli i vincoli possono essere resi meno restrittivi
Attenendosi rigorosamente alla de nizione un attributo sottoposto a
vincolo di integrità referenziale non dovrebbe poter assumere valori nulli
In alcuni casi è però ragionevole ammettere la presenza di valori nulli
anche in corrispondenza di attributi sottoposti a vincolo di integrità
referenziale
I DBMS o rono la possibilità di speci care delle azioni compensative
che devono essere intraprese quando si veri ca una violazione di un
vincolo di integrità referenziale a seguito di una modi ca/cancellazione
Supponiamo di cancellare Neri Luca dalla tabella AUTO dell’ex prec.,
allora di conseguenza verranno cancellate le righe riguardanti Neri Luca
nella tabella INFRAZIONI

6
ff
fi
fi
fi
fi

Potrebbero piacerti anche