Databasemodello relazionale
Una relazione matematica sugli insiemi D1, D2, …, Dn è un sottoinsieme del prodotto cartesiano D1 x D2 x … x Dn, quindi:
- Il numero di n-uple corrisponde alla cardinalità della relazione
- Essendo un insieme non vi è ordinamento ed ogni n-upla è diversa dall’altra, il sistema però è posizionale
Nel modello relazionale ogni relazione è una tabella nella quale ogni componente rappresenta un attributo, ognuno dei quali è rappresentato da un nome ed un insieme di valori (detto dominio dell’attributo).
Notazione: t[A] (oppure t.A) => valore della tupla t in corrispondenza dell’attributo A
OSS non esistono distinzioni tra i tipi di valori NULL, possono indicare: valori sconosciuti, inesistenti o la semplice mancanza di informazioni.
Vincoli di integrità
Un vincolo di integrità è una condizione che si esprime a livello di schema e si intende debba essere soddisfatta da tutte le istanze della base di dati, poiché individua una condizione necessaria per tutte quelle istanze della base di dati che rappresentano situazioni corrette per l’applicazione.
Vincoli intrarelazionali
- Vincolo di tupla => esprimono condizioni sui valori di ciascuna tupla di una relazione, indipendentemente dalle altre tuple.
- Vincoli di chiave => specifica che un insieme non vuoto di attributi è chiave della relazione.
Le chiavi
Una chiave di una relazione è un insieme non vuoto di attributi che identificano le ennuple di una relazione, può essere:
- Superchiave => insieme di attributi che formano una chiave per la relazione, usata nel caso in cui ogni attributo abbia delle ripetizioni (ci possono essere più superchiavi nella stessa relazione)
- Chiave => superchiave minimale (superchiave con il minor numero di attributi)
- Chiave primaria => chiave senza valori NULL
Vincoli interrelazionali
- Vincoli di integrità referenziale (foreign key) => informazioni in relazioni differenti sono correlate attraverso valori comuni, in particolare, attraverso valori delle chiavi.
Una foreign key fra una sequenza non vuota X di n attributi di una relazione R1 ed una sequenza Y di n attributi che formano una chiave di una relazione R2 impone che ogni combinazione di valori su X presenti in R1 compaia come combinazione di valori su Y in R2.
OSS generalizzato diventa vincolo di inclusione. In pratica ad ogni valore della tabella in un determinato attributo corrisponde lo stesso valore nell’altra tabella, se il valore non è presente si ha violazione del vincolo.
Algebra relazionale
Insieme di valori ed operazioni chiusi nell’insieme.
Operatori insiemistici
A livello estensionale le relazioni sono insiemi di tuple, quindi si possono usare:
- Unione => tabella risultante ha tutte le tuple delle relazioni, tenendo conto che, essendo un insieme, le tuple in comune si prendono una volta sola.
- Intersezione => tabella risultante ha solo le tuple in comune tra le relazioni.
- Differenza => tabella risultante ha solo le tuple della prima relazione che non sono contenute nella seconda relazione.
ATTENZIONE: applicabili solo con relazioni con definizioni uguali (stessi attributi).
Ridenominazione
Lo schema della relazione “operando” viene modificato sostituendo il nome A di ogni attributo con il corrispettivo nuovo nome B.
OSS permette quindi operazioni insiemistiche su schemi apparentemente diversi.
Selezione
Permette di selezionare solo le tuple di “operando” che rispettano “condizione”, condizione corrisponde ad un espressione booleana.
Proiezione
Permette di proiettare solo gli attributi di “operando” contenuti in “listaAttributi”, il numero di tuple rimane inalterato.
OSS: selezione e proiezioni sono operazioni ortogonali.
Join
Permette di correlare dati tra relazioni differenti, può essere:
- Join naturale => la tabella risultante contiene le tuple aventi i valori di uno o più attributi in comune nelle 2 relazioni, ovvero: R1 JOIN R2 è una relazione su X1 X X2 il cui insieme di ennuple è: |{t su X1 X X2 esistono t ∈ R1 e t ∈ R2 tali che t[X1] = t e t[X2] = t}|
ATTENZIONE: se ho tutti attributi diversi nelle 2 relazioni il risultato è prodotto cartesiano.
- Theta join => combinazione del JOIN naturale e dell’operazione di selezione, indispensabile per relazioni non aventi attributi in comune.
- OSS: con condizione di uguaglianza “=” prende il nome di EQUI-JOIN.
- Join esterno => permette di mantenere ennuple che verrebbero scartate in caso di JOIN estendendole con valori nulli, può essere:
- Sinistro => mantiene solo ennuple in più dell’operando sinistro
- Destro => mantiene solo ennuple in più dell’operando destro
- Completo => mantiene le ennuple in più di entrambi gli operandi
Extra null
Nell’algebra relazionale le condizioni valgono solo per i valori non nulli, quindi nel caso di una condizione su un attributo avente valori null, questi verranno sicuramente scartati.
Si ha quindi: ⋃SEL (tabella) SEL (tabella) ≠ tabellaattributo>numero attributo≤numero
Per riferirsi ai valori null ed eventualmente includerli si usano le condizioni:
- IS NULL
- IS NOT NULL
OSS: due espressioni si dicono equivalenti se producono lo stesso risultato qualunque sia l’istanza della base di dati sulla quale vengono valutate.
Progettazione concettuale
Modello entità-relazione (ER)
Modello concettuale di dati utilizzato per i database, diviso in:
- Livello intensionale => schema concettuale, ne descrive la struttura (tabelle)
- Livello estensionale => istanze dello schema (tuple che compongono la tabella)
Entità
Una entità è una classe di oggetti con esistenza autonoma e proprietà comuni.
Semantica: Dato uno schema S in cui è definita un’entità E, in ogni istanza I dello schema S è associato un insieme di oggetti {e1, e2, e3, …} detto estensione di E nell’istanza I dello schema S (istanze(I,E)).
Attributo di entità
Un attributo di entità è una proprietà locale dell’entità, associa ad ogni sua istanza un valore appartenente ad un insieme, detto dominio dell’attributo.
Semantica: data I istanza di uno schema S dove A è un attributo dell'entità E su un istanze(I,A), istanze(I,E), dominio D, è un in
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.