Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Introduzione ai Database Relazionali: Schemi, Vincoli e Operazioni, Appunti di Basi di Dati

Estrema sintesi appunti Basi di dati

Tipologia: Appunti

2019/2020

Caricato il 03/09/2020

Utente sconosciuto
Utente sconosciuto 🇮🇹

1 documento

1 / 5

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
MODELLO RELAZIONALE
Il modello relazionale è basato sui valori e presenta diversi vantaggi nel suo utilizzo:
Richiede di rappresentare solo ciò che è rilevante dal punto di vista dell’applicazione.
La rappresentazione logica dei dati non fa alcun riferimento a quella fisica che, può cambiare nel
tempo. Questo ci garantisce l’indipendenza fisica dei fati.
È sempre possibile trasferire i dati da un contesto ad un altro.
Nel modello relazionale i puntatori non sono visibili a livello logico.
Uno schema di relazione è costituito da un simbolo R, detto nome della relazione e da un insieme di
attributi X = {A1, A2, …, An} e viene indicato come R(X). A ciascun attributo è associato un dominio.
Uno schema di base di dati è un insieme di schemi di relazione con nome diversi
R = {R1(X1), …, Rn(Xn)}. I nomi delle relazioni hanno lo scopo di distinguere relazioni l’una dall’altra.
Un’istanza di relazione su uno schema R(X) è un insieme di r tuple su X.
Un’istanza di base di dati su uno schema R = {R1(X1), …, Rn(Xn)} è un insieme di relazioni
r = {r1, …, rn} per cui ogni Ri con i = 1, ..., n è una relazione sullo schema Ri(Xi).
Una relazione è un insieme.
Non è definito alcun ordinamento fra le tuple. Due tabelle con le stesse righe ma in ordine diverso
rappresentano la stessa relazione.
Le n-uple di una relazione sono distinte l’una dall’altra. Una tabella rappresenta una relazione se e
solo se le sue righe sono l’una diversa dall’altra.
VALORI NULLI
Le informazioni devono essere rappresentate per mezzo di tuple di dati omogenee. In ogni relazione
possiamo rappresentare solo tuple corrispondenti allo schema della relazione stessa.
I dati potrebbero non corrispondere esattamente al formato previsto.
Non è corretto usare valori del dominio per rappresentare l’assenza di informazione.
A tal proposito il concetto di relazione viene esteso prevedendo che una tupla possa assumere su ciascun
attributo, o un valore del dominio o un valore apposito detto valore nullo che indica l’assenza di
informazione. Tale valore viene indicato come NULL.
Moderare la presenza di valori nulli è importante.
VINCOLI DI INTEGRITA’
Un vincolo di integrità è una proprietà che deve essere soddisfatta dalle istanze che rappresentano
informazioni corrette per l’applicazione. Ad uno schema di base di dati associamo un insieme di vincoli e
consideriamo corrette le istanze che soddisfano tutti i vincoli.
Un vincolo è intrarelazionale se il suo soddisfacimento è definito rispetto a singole relazioni della
base di dati. Un vincolo di tupla è un vincolo che può essere valutato su ciascuna tupla
indipendentemente dalla altre. Un vincolo definito con riferimento ai singoli valori è detto vincolo
di dominio.
Un vincolo è interrelazionale se coinvolge più relazioni.
pf3
pf4
pf5

Anteprima parziale del testo

Scarica Introduzione ai Database Relazionali: Schemi, Vincoli e Operazioni e più Appunti in PDF di Basi di Dati solo su Docsity!

MODELLO RELAZIONALE

Il modello relazionale è basato sui valori e presenta diversi vantaggi nel suo utilizzo:

  • Richiede di rappresentare solo ciò che è rilevante dal punto di vista dell’applicazione.
  • La rappresentazione logica dei dati non fa alcun riferimento a quella fisica che, può cambiare nel tempo. Questo ci garantisce l’indipendenza fisica dei fati.
  • È sempre possibile trasferire i dati da un contesto ad un altro. Nel modello relazionale i puntatori non sono visibili a livello logico.
  • Uno schema di relazione è costituito da un simbolo R, detto nome della relazione e da un insieme di attributi X = {A1, A2, …, An} e viene indicato come R(X). A ciascun attributo è associato un dominio.
  • Uno schema di base di dati è un insieme di schemi di relazione con nome diversi R = {R1(X1), …, Rn(Xn)}. I nomi delle relazioni hanno lo scopo di distinguere relazioni l’una dall’altra.
  • Un’istanza di relazione su uno schema R(X) è un insieme di r tuple su X.
  • Un’istanza di base di dati su uno schema R = {R1(X1), …, Rn(Xn)} è un insieme di relazioni r = {r1, …, rn} per cui ogni Ri con i = 1, ..., n è una relazione sullo schema Ri(Xi). Una relazione è un insieme.
  • Non è definito alcun ordinamento fra le tuple. Due tabelle con le stesse righe ma in ordine diverso rappresentano la stessa relazione.
  • Le n-uple di una relazione sono distinte l’una dall’altra. Una tabella rappresenta una relazione se e solo se le sue righe sono l’una diversa dall’altra. VALORI NULLI Le informazioni devono essere rappresentate per mezzo di tuple di dati omogenee. In ogni relazione possiamo rappresentare solo tuple corrispondenti allo schema della relazione stessa. I dati potrebbero non corrispondere esattamente al formato previsto. Non è corretto usare valori del dominio per rappresentare l’assenza di informazione. A tal proposito il concetto di relazione viene esteso prevedendo che una tupla possa assumere su ciascun attributo, o un valore del dominio o un valore apposito detto valore nullo che indica l’assenza di informazione. Tale valore viene indicato come NULL. Moderare la presenza di valori nulli è importante. VINCOLI DI INTEGRITA’ Un vincolo di integrità è una proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l’applicazione. Ad uno schema di base di dati associamo un insieme di vincoli e consideriamo corrette le istanze che soddisfano tutti i vincoli.
  • Un vincolo è intrarelazionale se il suo soddisfacimento è definito rispetto a singole relazioni della base di dati. Un vincolo di tupla è un vincolo che può essere valutato su ciascuna tupla indipendentemente dalla altre. Un vincolo definito con riferimento ai singoli valori è detto vincolo di dominio.
  • Un vincolo è interrelazionale se coinvolge più relazioni.

CHIAVI

Una chiave è un insieme di attributi che serve ad identificare in modo univoco le tuple di una relazione. Formalmente valgono le seguenti due:

  • un insieme di K attributi è superchiave di una relazione r se r non contiene due tuple distinte t1 e t con t1[K] = t2[K]
  • K è chiave di r se è una superchiave minima di r ovverosia se non esiste un’altra superchiave K’ di r che sia contenuta in K con sottoinsieme proprio. Ciascuna relazione e ciascun schema di relazione hanno sempre una chiave. Per ogni relazione R(X), l’insieme X di tutti gli attributi su cui è definita è una superchiave per essa. Tale insieme può essere o non essere una chiave. Se non lo è allora si può determinare un sottoinsieme che è chiave o che non è chiave ma che contiene sicuramente una chiave. Poiché, su ciascun schema di relazione è definita una chiave, sono garantite l’accessibilità a tutti i valori di una base di dati e, la loro unica identificabilità sono garantite. Con i valori nulli, non è più vero che i valori delle chiavi permettono l’identificazione univoca delle tuple. Dunque, limitiamo la presenza di valori nulli nelle relazioni, vietando che compaiano sugli attributi che formano la chiave primaria. VINCOLI DI INTEGRITA’ REFERENZIALE Una chiave esterna tra un insieme di attributi X su una relazione R1 e un’altra relazione R2 è soddisfatta se i valori su X di ciascuna tupla dell’istanza di R1 compaiono come valori della chiave(primaria) dell’istanza di R1. ALGEBRA RELAZIONALE L’algebra relazionale è un linguaggio procedurale basato su concetti di tipo algebrico. È costituito da un insieme di operatori definiti su relazioni e che producono relazioni come risultati. È possibile costruire espressioni complesse coinvolgendo più operatori contemporaneamente. Le operazioni fondamentali per l’algebra relazionale sono:
  • unione, intersezione, differenza;
  • ridenominazione, selezione, proiezione;
  • join, join naturale, theta join, equi join. Esaminiamo le operazioni:
  • Unione: l’unione di due relazioni r1 e r2 definite sullo stesso insieme di attributi X è indicata con r1 U r2 ed è una relazione ancora su X che contiene le tuple che appartengono ad r1 oppure a r oppure ad entrambe.
  • Intersezione: l’intersezione di due relazioni r1 e r2 è indicata con r1 ꓵ r2 ed è una relazione su X contenente le tuple che appartengono ad r1 e a r2.
  • Differenza: la differenza di r1(X) e r2(X) è indicata con r1 – r2 ed è una relazione su X contenente le tuple di r1 che non appartengono a r2. Una relazione non è in generale un insieme di tuple ma, un insieme di tuple omogenee ossia definite sugli stessi attributi. Questo ci porta alla necessità di introdurre l’operazione di ridenominazione degli attributi di tupla.

NORMALIZZAZIONE

Incorriamo in ridondanza, anomalie di aggiornamento, anomalie di cancellazione e anomalie di inserimento se stiamo utilizzando un’unica relazione per rappresentare informazioni eterogenee. È possibile che alcuni dati debbano essere ripetuti in diverse tuple, senza aggiungere informazioni significative. Se alcune informazioni sono ripetute in modo ridondante il relativo aggiornamento deve essere ripetuto per ciascuna occorrenza dei relativi dati. La cancellazione di una tupla può comportare l’eliminazione di tutti i concetti in questione (non è può valido l’insieme dei concetti). L’inserimento di informazioni relative ad uno solo dei concetti di pertinenza per una relazione non è possibili se non esiste un intero insieme di concetti in grado di costituire una tupla completa. Dipendenza funzionale: particolare vincolo di integrità che descrive legami di tipo funzionale tra gli attributi di una relazione. Data una relazione r su uno schema R(X) e due sottoinsiemi di attributi non vuoti Y e Z di X, diremo che esiste su r una dipendenza funzionale tra Y e Z se per ogni coppia di tuple t1 e t2 di r aventi gli stessi valori sugli attributi di Y, risulta che t1 e t2 hanno gli stessi valori anche su Z. Se prendiamo una chiave K di una relazione r si può verificare che esiste una dipendenza funzionale tra K e ogni altro attributo dello schema r. Il vincolo di dipendenza funzionale generalizza il vincolo di chiave. Una dipendenza funzionale Y - > Z su uno schema R(X) degenera nel vincolo di chiave se l’unione di Y e Z è pari a X quindi se Y è una (super)chiave per R(X). Le ridondanze e le anomalie sono causate dalle dipendenza funzionali X - > A che permettono la presenza di più tuple tra loro uguali sugli attributi di X, cioè sono causate dalle dipendenze funzionali X - > A tali che X non contiene una chiave. Una relazione r è in forma normale di Boyce – Codd se per ogni dipendenza funzionale non banale X - > A definita su di essa, X contiene una chiave K di r, cioè X è una superchiave per r. Decomposizione: se una relazione rappresenta più concetti indipendenti allora va decomposta in relazioni più piccole, una per ogni concetto. Decomposizione senza perdita (lossless): data una relazione r su un insieme di attributi X, se X1 e X2 sono due sottoinsiemi di X, la cui unione sia pari a X stesso, allora il join delle due relazioni ottenuto per proiezione da r su X1 e X2 rispettivamente, è una relazione che contiene tutte le tuple di r più eventualmente altre che possiamo chiamare “spurie”. Diremo che r si decompone senza perdita su X1 e X2 se, il join delle due proiezioni è uguale a r stessa, cioè se non contiene spurie. Condizione sufficiente ma non strettamente necessaria: sia r una relazione su X e siano X1 e X2 sottoinsiemi di X per cui X1 U X2 = X e sia Xo = X1 ꓵ X2; r si decompone senza perdita su X1 e X2 se soddisfa la dipendenza funzionale Xo - > X1 oppure la dipendenza funzionale Xo - > X2. Dunque, r si decompone senza perdita su due relazioni se l’insieme degli attributi comuni alle due relazioni è chiave per almeno una delle relazioni decomposte.

Ogni volta che decomponiamo una relazione in due parti, se l’insieme degli attributi comuni è chiave per una delle due relazioni allora possiamo essere certi che tutte le istanze della relazione si decompongano senza perdita. Conservazione delle dipendenze: in ogni decomposizione ciascuna delle dipendenze funzionali dello schema originario dovrebbe coinvolgere attributi che compaiono tutti insieme in uno degli schemi decomposti. Ciò significa garantire sullo schema decomposto il soddisfacimento degli stessi vincoli, il cui soddisfacimento è garantito dallo schema originario. Se tale proprietà è soddisfatta allora garantiamo la conservazione delle dipendenze dello schema originario. RECAP: le decomposizioni devono sempre soddisfare le proprietà di decomposizione senza perdita e conservazione delle dipendenze. Decomposizione senza perdita: garantisce che le informazioni nella relazione originaria siano visualizzabili con precisione a partire da quelle rappresentate nelle relazioni decomposte. Questo significa che interrogando le relazioni decomposte otteniamo gli stessi risultati che otterremmo interrogando la relazione originaria. Conservazione delle dipendenze: le relazioni decomposte hanno la stessa capacità della relazione originaria di rappresentare vincoli di integrità e quindi di rilevare aggiornamenti illeciti. Sono dunque possibili ulteriori aggiornamenti sulle relazioni decomposte, legati ai singoli concetti rappresentati da ciascuna di esse che, non hanno un corrispettivo sulla relazione originaria, senza però corrispondere a violazioni di vincoli.