Sei sulla pagina 1di 8

Modello Relazionale

Il modello relazionale è descritto da semplicità e potenza perché ci sono solide basi matematiche che si
fondano sul concetto di relazione che è un sottoinsieme del prodotto cartesiano. E’ semplice perché
rappresentato con tabella che è immediata da capire.

Inizialmente non ha avuto molto successo perché rispetto ai modelli reticolari e gerarchici era molto più
astratto.
Si affermò comunque perché fu il primo modello ad introdurre l’indipendenza dei dati

Il modello relazionale si basa su due concetti fondamentali:


● Relazione, concetto matematico, teoria degli insiemi → potenza
● Tabella, concetto semplice ed intuitivo → semplicità

Perché la relazione è definita dal prodotto cartesiano?


Dati due insiemi D1 e D2, si chiama prodotto cartesiano D1xD2 (che è ordinato) l’insieme di tutte le
coppie ordinate di valori provenienti da tali insiemi.
Una relazione matematica è un sottoinsieme delle coppie, sottoinsieme perché hanno un legame
osservabile nella realtà, la relazione diventa l’insieme delle coppie che soddisfano un legame definito
e osservabile.

Una relazione matematica è un sottoinsieme delle coppie originate dal prodotto cartesiano di due
insiemi, la relazione diventa l’insieme delle coppie con un legame definito e osservabile nella
realtà.

esempio:

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

R1 = {(1,a),(4,b)}
R2 = {(1,b),(4,a),(4,b)}

La relazione si rappresenta con tabelle.


● Grado: il numero di domini coinvolti, le colonne
● Dominio: l’insieme su cui è definita la relazione (gli attributi che sono coinvolti, String x String).
● Cardinalità: numero di elementi della relazione (il numero di elementi che soddisfano la relazione,
numero di n-uple, righe)

Quando usiamo le relazioni per rappresentare i dati ogni n-upla contiene dati fra loro collegati.
Nella definizione di relazione matematica è fondamentale l'ordine (è posizionale)
La relazione matematica rappresenta solo la descrizione estensionale dei dati (gli elementi senza intestazione).

→ Le relazione informatiche non sono posizionali, utilizziamo degli attributi e lo schema per
descrivere le relazioni. I nomi degli attributi devono essere univoci.

● Colonne: i valori di ciascuna colonna devono appartenere allo stesso dominio, sono tra loro
omogenei. Le intestazioni delle colonne sono diverse tra loro. Il numero di colonne è detto grado.
● Righe: le righe sono diverse tra loro (in un insieme non possiamo avere elementi duplicati), il loro
ordine è irrilevante. Il numero delle righe è detto cardinalità.

In una base di dati relazionale, le relazioni/tabelle sono utilizzate per organizzare i dati
Si possono creare corrispondenze fra relazioni con valori comuni degli attributi, cioè una colonna può
avere valori comuni, si chiama ridondanza.
Un minimo di ridondanza ci serve perché per fare relazioni
serve anche una chiave esterna

La chiave primaria di una tabella messa in un’altra tabella diventa chiave esterna, così si crea una
corrispondenza tra le due tabelle.

L'interrogazione da parte di un utente di un database, strutturato tipicamente secondo il


modello relazionale, per compiere determinate operazioni sui dati è detta Query

SQL aggrega e filtra i dati.

Design concettuale
L’analisi dei requisiti è uno step fondamentale per la rappresentazione di un database. Per fare questo uno dei
tool comunemente utilizzati è
Modello E-R (entity-relationship model) è un modello concettuale per la rappresentazione della realtà. E’
molto usato per il design dei database.
I principi su cui si basa il modello sono: entity, associazione, attributo, identificatori, cardinalità, regole e
gerarchia.

Vantaggi dei valori al posto dei puntatori


Il modello relazionale è migliore perché non presenta record e puntatori, quindi:
- il modello rappresenta solo ciò che è rilevante, significativo, i puntatori sono superflui per
l’applicazione
- la rappresentazione logica non fa riferimento alla rappresentazione fisica, indipendenza dei dati
(in questo caso fisica)
- Aumenta la portabilità dei dati: l’informazione è contenuta tutta nei valori, quindi il
trasferimento dei dati non è complicato dai puntatori. Con i puntatori dovrei fare nuovi
collegamenti ogni volta che trasferisco i dati.

● Eliminazione rappresentazioni superflue


● Introduzione indipendenza dei dati (fisica)
● Aumento della portabilità

I riferimenti sono inseriti nei valori, ciò permette di utilizzare i valori per fare riferimenti da una tabella
all’altra.

La chiave univoca in una tabella viene detta chiave primaria, quando questa chiave viene utilizzata in
un’altra tabella viene detta chiave esterna.

→ I puntatori sarebbero più efficienti, sarebbe più veloce trovare un record con puntatori. I legami per i
valori NON è orientato.

Matricola è la chiave primaria di studenti, la quale diventa chiave esterna in esami.

● Lo schema della base di dati descrive attributi del database: Poli(Strudenti,Corsi,Esami);


Lo schema di una base dati è l’insieme degli schemi delle relazioni con nomi diversi.

● L’istanza di base dati è l’insieme delle relazioni.


● Lo schema della relazione è formato da un simbolo R, detto nome della relazione, e un insieme di
attributi X, ognuno dei quali associato a un dominio, per esempio: Esami(Strudente,Voto,Corso);
Generalmente: nome relazione(chiave, lista attributi, chiave esterna)

● L’istanza di relazione è la fotografia di una delle tabelle in un dato istante, l’elenco degli attributi
contenuti in una tupla.

Valore degli attributi di una tupla.


Le relazioni sono come fossero degli insiemi, la tabella è l’insieme che contiene le istanze, le tuple della
relazione.

n-upla → tanti attributi posizionali


tupla → diversi attributi non posizionali

1 tupla = 1 riga

I valori Null
Il modello relazionale è a struttura fissa e impone però un certo grado di rigidità, in quanto le informazioni
devono essere rappresentate per mezzo di tuple di dati omogenee.

Non sempre esiste un valore del dominio e la distinzione tra valori veri e non veri non è visibile se non ai
programmatori, inoltre non sarebbe corretto utilizzare un valore del dominio per rappresentare l'assenza di
informazione, in quanto si potrebbe in tal modo generare confusione.
Per questo si utilizza il valore “speciale” NULL.

Per esempio una data, non possiamo mettere un dato anomalo perché la data in sé ha una sua formattazione
e, a parte il null, non possiamo utilizzare dei valori diversi.

La chiave primaria è l’unico attributo che non può essere null perché altrimenti andrebbe a mancare al
suo ruolo di chiave primaria di distinguere in modo univoco una tupla da un’altra.

● Valore non conosciuto, il null sostituisce un dato ordinario, non noto alla base dati
● Valore inesistente, l’attributo non è applicabile, non esiste un valore per quell’attributo
● Assenza di informazione, non sappiamo se esista o no, e se esiste non sappiamo quale sia

→ Null non fa parte di alcun dominio, rappresenta sia un valore ignoto che non definito, in alcune
situazioni non può essere utilizzato.

Vincoli di Integrità
Proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l’applicazione.
I vincoli si classificano principalmente in due categorie:

● intrarelazionali, coinvolge una sola relazione, sono i vincoli di tupla e vincoli di chiave

Vincoli di tupla
Esprimono condizioni sui valori di ciascuna tupla indipendentemente dalle altre tuple.

Possono essere rappresentati con espressioni booleane: le tuple che non verificano la condizione
non vengono accettate dal DBMS.

Vincoli di chiave
Una chiave è un particolare insieme di attributi che permettono di distinguere in modo univoco
una tupla da un’altra.

Esiste sempre una chiave primaria, al più è costituita da tutti gli attributi (una relazione è un
insieme quindi non ci possono essere due righe uguali).

Un insieme k di attributi è una superchiave di una relazione r se r non contiene due tuple distinte
t1 e t2 con t1[k] = t2[k].

● K è chiave se è una superchiave minimale di r.


● Non esiste un’altra superchiave che sia contenuta in k come sottoinsieme proprio.

Una superchiave NON è una chiave.


Una chiave è una superchiave minimale.

La chiave (sia superchiave che chiave) è un vincolo. Per trovarla cerco nel mondo reale.
Chiave candidata, è l’insieme delle possibili chiave primarie; se è possibile scegliere tra due
attributi, entrambi univoci, scelgo quale delle due utilizzare come chiave primaria.

La chiave primaria si sottolinea con un linea continua, la chiave eterna si sottolinea con una linea
tratteggiata

Con la chiave primaria posso accedere in modo univoco alle tuple, riesco ad identificare una
tupla da un’altra relazione, garantisce la possibilità di creare corrispondenze tra relazioni. Con
una superchiave non minimale dovrei utilizzare più attributi come chiave esterna (NON
FATTIBILE).
● interrelazionali, coinvolgono più relazioni contemporaneamente, sono i vincoli di integrità
referenziale

Vincolo di integrità Referenziale


Un vincolo di integrità referenziale (foreign key) fra un insieme di attributi X di una relazione
R1 e una relazione R2 è soddisfatto se i valori su X di ciascuna tupla dell’istanza R1 compaiono
come valori della chiave primaria dell’istanza R2.
Il corso x che è chiave esterna deve per forza fare riferimento a una tabella nella quale x è chiave
primaria.

La chiave esterna di una tabella è per forza TUTTA la chiave primaria di un’altra tabella.
Avessimo una chiave composta come chiave primaria in R1 e volessimo riferirci a un record di
questa tabella in un’altra tabella, R2, dovremmo utilizzare tutta la chiave primaria di R1 come
chiave esterna di R2.

Se possiamo utilizzare solo una parte della chiave primaria di R1 come chiave esterna in R2 allora
vuol dire che abbiamo mappato male la realtà, componendo una superchiave invece che una
chiave primaria.

tabella referenziata/principale → tabella a cui viene fatto riferimento (Docenti)


tabella referenziante/correlata → tabella che fa riferimento ad un’altra tabella (Corsi)

Come faccio data una relazione Docente- Corso a dare la possibilità a più docenti di tenere lo stesso corso?

Cambio la chiave, utilizzo due campi per formare la chiave primaria (per esempio codice corso + matricolare
docente) in modo tale che il codice del corso possa essere ripetuto più volte mantenendo comunque
l’univocità delle tuple, cambiando la matricola docente.

Parte descrittiva (teoria, definizione) + esercizi pratici (tabelle + descrizione realtà + modifica tabella e
conseguenze).

ESEMPIO:
proprietario → p
immobile → Im

1p ha +Im
1Im ha +p
Relazione N:M → 1-N / 1-M

Facciamo una tabella con i proprietari e una tabella con gli immobili. Poi andremo a creare una terza tabella
contenente soltanto le chiavi primarie delle due tabelle.
→ Dobbiamo fare questa operazione perché mettendo la chiave primaria di una nell’altra e viceversa,
dovremmo ripetere tutta la descrizione dei singoli elementi delle due tabelle molte volte.

Per esempio, se Mario Rossi ha 28 anni, 5 figli e 4 case, e queste quattro case avessero 3 proprietari l’una,
dovremmo ripetere 4 volte che Mario Rossi ha 28 anni e 5 figli, stessa cosa per i 4 immobili. Questo
metodo sarebbe molto ridondante perciò creiamo una terza tabella contenente soltanto le chiavi primarie
delle due tabelle precedentemente create.

Vincolo di dominio → coerenza con il tipo dell’attributo ( es, una data non può avere giono 32 Novembre )

Potrebbero piacerti anche