Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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)}
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.
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.
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.
● L’istanza di relazione è la fotografia di una delle tabelle in un dato istante, l’elenco degli attributi
contenuti in una tupla.
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].
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
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.
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 )