Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
NULL
o sostituisce un valore ordinario, non noto alla base di dati.
Sconosciuto:
denota l'inesistenza del valore.
Inesistente:
non sappiamo se il valore esista e, in caso affermativo,
Senza informazione:
non lo conosciamo.
Ci troviamo di fronte ad una disgiunzione logica, l'OR.
o Nei sistemi di basi relazionali, ci troviamo spesso nel caso del valore senza
o informazione.
Se prendiamo l'esempio della tabella di esami, corsi e studenti dobbiamo fare però
o delle osservazioni:
Un valore nullo sulla data di nascita è ammissibile perché l'informazione in
questo contesto può non essere essenziale.
Un valore nullo su numero di matricola o codice di un corso genera invece
dei in quanto questi valori, vengono usati per stabilire correlazioni
problemi,
fra tuple di relazioni diverse.
La presenza di valori nulli nella relazione esami, rende addirittura
le relazioni.
inutilizzabili
È necessario controllare la presenza di valori nulli nelle nostre relazioni: solo
configurazioni devono essere ammesse.
alcune
Quando definiamo le relazioni, possiamo specificare che i nulli sono
ammessi solo su alcuni attributi e non su altri (NOT NULL).
Vincoli di integrità:
In molti casi, non è vero che qualsiasi insieme di tuple sullo schema rappresenti
o informazioni corrette per l'applicazione.
Prendiamo ancora una volta l'esempio di esami, corsi e studenti:
o – –
I voti nella relazione esami dovranno essere compresi tra 0 30 o tra 18 30
se consideriamo il superamento dell'esame.
La lode dovrà essere attribuita solo se il voto è 30.
Gli studenti possono avere lo stesso nome e cognome ma il numero di
matricola deve essere diverso.
Allo scopo è stato introdotto il vincolo di integrità, che serve per indicare le
o informazioni corrette per l'applicazione.
Il vincolo è un predicato che associa a ogni istanza il valore:
o True: l'istanza soddisfa il vincolo.
False: l'istanza non soddisfa il vincolo.
I vincoli possono essere classificati in due categorie: intrarelazionale e
o interrelazionale.
Intrarelazionale:
o Il suo soddisfacimento è definito rispetto a singole relazioni della base di
dati.
vincolo che può essere valutato su ciascuna tupla,
Vincolo di tupla:
indipendentemente dalle altre. Una sintassi che si presta a questo tipo di
vincolo è quella delle espressioni booleane: e
AND, OR NOT.
è riferito a singoli valori e impone
Vincolo su valori o vincolo di dominio:
una restrizione sul dominio dell'attributo (voto).
coinvolge più relazioni. È l'esempio del numero di matricola. La
Interrelazionale:
o situazione indesiderata può essere vietata richiedendo che un numero di matricola
compaia nella relazione esami solo se compare in quella studenti.
Chiave:
o Insieme di attributi che identifica univocamente le tuple di una relazione.
Una chiave primaria non può avere valore null.
Ciascuna relazione e ciascuno schema di relazione devono avere sempre una
chiave.
Questo garantisce l'accessibilità a tutti i valori di una base di dati e la loro
univoca identificabilità.
Chiavi e valori nulli:
In presenza di valori nulli non è più vero che i valori delle chiavi permettono di
o identificare univocamente le tuple delle relazioni e di stabilire i riferimenti tra tuple
di relazioni diverse.
Una relazione con valori nulli su tutte le chiavi rende impossibile stabilire se le tuple
o fanno riferimento ad uno stesso valore oppure no.
C'è quindi necessità di la presenza di valori nulli nelle chiavi delle relazioni.
limitare
o La soluzione è quella di adottare una sulla quale si vieta la presenza
chiave primaria
o di valori nulli.
Sulle altre chiavi i nulli sono in genere ammessi, salvo necessità specifiche.
o Gli che costituiscono la chiave primaria vengono indicati con una
attributi
o sottolineatura.
In quasi tutti i casi reali è possibile trovare attributi i cui valori sono identificanti e
o sempre disponibili. Quando ciò non accade, è necessario introdurre un attributo
aggiuntivo, un che viene generato e attribuito a ciascuna tupla all'atto
codice
dell'inserimento.
Vincoli di integrità referenziale:
È anche chiamato foreign key.
o Si ha fra un insieme di attributi X di una relazione R e un'altra relazione R .
o 1 2
È soddisfatto quando i valori su X di ciascuna tupla dell'istanza di R compaiono
o 1
come valori della chiave primaria dell'istanza di R .
2
Nelle relazioni con più chiavi, è opportuno che una delle chiavi sua evidenziata come
o primaria ed è ragionevole che i riferimenti siano diretti verso di essa.
Non tutti i sistemi di gestione di basi di dati sul mercato permettono di indicare
o esplicitamente la chiave primaria, anche se alcuni permettono di specificare più
chiavi. In questi casi, il vincolo di integrità referenziale deve indicare gli attributi che
compongono la chiave a cui si fa riferimento.
ALGEBRA RELAZIONALE
Concetti principali:
Linguaggio costituito da un insieme di operatori definiti su relazioni che producono altre
relazioni come risultati.
I vari operatori sono:
Insiemistici:
o Unione
Intersezione
Differenza
Specifici:
o Ridenominazione
Selezione
Proiezione
Join:
o Naturale
Prodotto cartesiano
Theta-join
Operatori insiemistici:
Le relazioni sono insiemi, quindi ha senso definire su di esse gli operatori insiemistici
tradizionali di unione, intersezione e differenza.
Una relazione è un insieme di tuple cioè definite sugli stessi attributi, quindi non
omogenee,
ha senso definirli con riferimento a relazioni su attributi diversi.
Consideriamo solo le applicazioni degli operatori a coppie di operandi definite
ammissibili
sugli stessi attributi.
relazione che contiene le tuple che appartengono ad una delle due relazioni definite
Unione:
sugli stessi attributi oppure a entrambe.
relazione che contiene le tuple che appartengono alla prima relazione e non alla
Differenza:
seconda.
relazione che contiene le tuple che appartengono ad entrambe le relazioni,
Intersezione:
quelle comuni.
Ridenominazione:
Specifico operatore che consente di cambiare i nomi degli attributi in una tabella
temporanea.
Agisce solo sullo schema e non cambia ne la cardinalità ne il numero di attributi.
Normalmente si applica solo sul risultato finale.
Ciò che cambia sono i nomi degli attributi, mentre i valori rimangono inalterati e associati ai
nuovi attributi.
La è:
sintassi separati da virgole.
vecchioNome AS nuovoNome
o deve essere un attributo della relazione.
vecchioNome
o
Selezione:
Produce un sottoinsieme delle tuple su tutti gli attributi.
Genera decomposizioni orizzontali.
Serve per selezionare alcune ennuple della tabella scartando le altre.
Ha delle condizioni che possono prevedere confronti tra attributi e tra attributi e costanti.
Le condizioni possono anche essere complesse e ottenute combinando condizioni semplici
con i connettivi logici.
Sintassi: σ ondizione R
Semantica:
Il risultato appare con gli attributi tipici della tabella originale.
o L'istanza del risultato è:
o Ennuple della tabella i cui valori soddisfano la condizione.
Cardinalità minore o uguale rispetto alla tabella originale .
È una tabella temporanea, i nomi ed i tipi degli attributi sono ereditati dalle tabelle di basi di
dati.
Proiezione:
Da un risultato cui contribuiscono tutte le tuple ma su un sottoinsieme degli attributi.
Genera decomposizioni verticali, estrae alcune colonne di una tabella.
Sintassi: π lista attri uti R
Semantica:
Lo schema del risultato contiene attributi dello schema originale su cui si effettua la
o proiezione.
L'istanza del risultato contiene una proiezione delle ennuple originali agli attributi
o specificati.
Se nel risultato non sopravvivono chiavi dello schema originale, possono esserci dei
duplicati.
Join:
Il consente di correlare i dati di tabelle diverse, ma genera risultati di
prodotto cartesiano
grandi dimensioni su cui poi bisogna fare una selezione.
Il è l'operatore che permette di correlare i dati contenuti in relazioni diverse
join
confrontando i valori contenuti in esse e usando la caratteristica del modello di essere
basato su valori.
Esistono due versioni dell'operatore riconducibili l'una all'altra:
Join Naturale:
o Utile per riflessioni di tipo astratto.
Operatore binario che correla dati in relazioni diverse sulla base di valori
uguali in attributi con lo stesso nome.
È una relazione definita sull'unione degli insiemi.
Le tuple del risultato sono ottenute combinando tuple degli operandi con
valori uguali sugli attributi comuni.
È molto frequente eseguire join sulla base di valori della chiave di una delle
relazioni coinvolte, esplicitando i riferimenti fra tuple che sono realizzati per
mezzo di valori soprattutto di chiavi.
In molti di questi casi è anche definito un vincolo di integrità referenziale.
Theta-join:
o Più rilevante dal punto di vista pratico.
Un ha solitamente poca utilità perché concatena tuple
prodotto cartesiano
non necessariamente correlate semanticamente e viene spesso seguito da
una selezione che centra l'attenzione su tuple correlate secondo le esigenze.
Viene spesso definito un esprimibile per mezzo di altri
operatore derivato
operatori, come prodotto cartesiano seguito da una selezione.
theta-join in cui la condizione di selezione è una congiunzione di
Equi-join:
atomi di uguaglianza con un attributo della prima relazione e uno della
seconda.
È importante perché la maggior parte dei DBMS non usa nomi di attributo
per correlare le relazioni.
Il permette di elaborare in modo semplice riflessioni che sono
join naturale
estendibili all'equi-join.
Join completi e incompleti:
Completo:
Ciascuna tupla di ciascuno degli operandi contribuisce ad almeno una tupla del
o risultato.
Proprietà non sempre verificata perché richiede una corrispondenza tra le tuple
o delle due relazioni.
Incompleti o dangling:
Alcune tuple degli operandi non contribuiscono al risultato perché la relazione non
o contiene tuple con gl