Sei sulla pagina 1di 7

INTRO: DBMS

Un DBMS è un sistema software che gestisce grandi quantità di dati, persistenti e condivisi: per questo
richiede efficienza, affidabilità, controllo degli accessi (autorizzazioni) e controllo della concorrenza.

L’astrazione logica con cui i dati vengono resi disponibili all’utente definisce un modello dei dati; più
precisamente: un modello dei dati è una collezione di concetti che vengono utilizzati per descrivere i
dati, le loro associazioni, e i vincoli che questi devono rispettare.

Vari meccanismi che possono essere usati per strutturare i dati: esistono modelli in cui i dati sono
descritti (solo) sotto forma di alberi (modello gerarchico), di grafi (modello reticolare) e di oggetti
complessi (modello a oggetti).

In ogni DB si hanno due componenti:


- Lo schema, che descrive la struttura dei dati (la cosiddetta parte intensionale del DB)
- L’istanza, ovvero i dati veri e propri (la parte estensionale del DB)
In generale, mentre un’istanza varia nel tempo, lo schema tende a restare invariato, e variazioni dello
schema comportano una ristrutturazione più o meno semplice del DB.

Un DBMS deve fornire caratteristiche di:


- Indipendenza fisica: l’organizzazione fisica dei dati dipende da considerazioni legate all’efficienza
delle organizzazioni adottate. La riorganizzazione fisica dei dati non deve comportare effetti
collaterali sui programmi applicativi.
- Indipendenza logica: pur in presenza di uno schema logico integrato non è utile o conveniente
che ogni utente ne abbia una visione uniforme.

Soluzione: ARCHITETTURA A 3 LIVELLI

Livello fisico: dove è memorizzato il DB


Livello logico: strutture logiche che non
dipendono dallo schema fisico
Livello delle viste/esterno: viste che descrivono parte
dello schema logico secondo le esigenze dei diversi utenti

Si possono usare vari linguaggi per interagire coi DB:

- DDL (Data Definition Language): Serve per definire gli schemi (logici, esterni, interni)
- DML (Data Manipulation Language): Serve per interrogare e modificare le istanze dei DB
- DCL (Data Control Language): Include comandi di vario tipo, ad es. per il controllo degli accessi
SQL riunisce in sé le istruzioni di tutti e tre.
ALGEBRA RELAZIONALE
Algebra relazionale = linguaggio procedurale di tipo algebrico i cui operandi sono relazioni.
- Operatori di base unari: selezione, proiezione e ridenominazione
- Operatori di base binari: join (naturale), unione e differenza
- Operatori derivati
L’operatore di selezione, σ, permette di selezionare un sottoinsieme delle tuple di una
relazione, applicando a ciascuna di esse una formula booleana F.
L’operatore di proiezione, π, è ortogonale alla selezione, in quanto permette di selezionare
un sottoinsieme Y degli attributi di una relazione
L’operatore di join naturale, ⋈, combina le tuple di due relazioni sulla base dell’uguaglianza dei
valori degli attributi comuni alle due relazioni.
- È possibile che una tupla di una delle relazioni operande non faccia match con nessuna
tupla dell’altra relazione; in tal caso tale tupla viene detta “dangling”. Nel caso limite è
quindi possibile che il risultato del join sia vuoto; all’altro estremo è possibile che ogni
tupla di r1 si combini con ogni tupla di r2.
- Quando le due relazioni hanno lo stesso schema (X1 = X2), allora due tuple fanno
match se e solo se hanno lo stesso valore per tutti gli attributi, ovvero sono identiche,
per cui, se X1 = X2 il join naturale equivale all’intersezione delle due relazioni.
- Viceversa, quando non ci sono attributi in comune (X1 X2 = Ø), allora due tuple fanno
sempre match, per cui: se X1 X2 = Ø il join naturale equivale al prodotto Cartesiano.
Poiché le relazioni sono insiemi, sono ben definite le operazioni di unione, U, e differenza, -
L’operatore di ridenominazione, ρ, modifica lo schema di una relazione, cambiando i nomi
di uno o più attributi.

- La definizione formale, oltremodo complessa, si omette; è sufficiente ricordare che


ρY←X(r), con r su R(XZ), cambia lo schema in YZ, lasciando invariati i valori delle
tuple, e che nel caso si cambi più di un attributo, allora l’ordine in cui si elencano è
significativo.
La ridenominazione permette di eseguire il join di una relazione con se stessa (“self-join”) in
modo significativo (si ricordi che r⋈r = r!)

Quello che anche i DBMS normalmente fanno è eliminare il prima possibile gli attributi che “non
servono più”: un attributo A “serve” se è richiesto in output o se è utilizzato da qualche operatore che
deve ancora essere eseguito. → PUSH-DOWN DI SELEZIONE E PROIEZIONE:

Algebra con valori nulli


Proiezione, unione e differenza continuano a comportarsi usualmente, quindi due tuple sono uguali
anche se ci sono dei NULL.
Per la selezione il problema è stabilire se, in presenza di NULL, un predicato è vero o meno per una data tupla →
Oltre ai valori di verità Vero (V) e Falso (F), si introduce “Sconosciuto” (Unknown, ?).
Una selezione produce le sole tuple per cui l’espressione di predicati risulta vera.

- Per lavorare esplicitamente con i NULL si introduce l’operatore di confronto IS (“A IS NULL”)

Il join naturale non combina due tuple se queste hanno entrambe valore nullo su un attributo in comune (e valori
uguali sugli eventuali altri attributi comuni). → Join ≠ intersezione con valori nulli!

In assenza di valori nulli, l’intersezione di r1 e r2 si può esprimere

- mediante il join naturale, r1 ∩ r2 = r1⋈ r2

oppure

- sfruttando l’uguaglianza r1 ∩ r2 = r1 – (r1 – r2)

In presenza di valori nulli, dalle definizioni date si ha che nel primo caso il risultato non contiene tuple
con valori nulli, nel secondo caso, viceversa, tali tuple compaiono nel risultato.

In alcuni casi è utile che anche le tuple dangling di un join compaiano nel risultato. A tale scopo si
introduce l’outer join (join “esterno”) che “completa” con valori nulli le tuple dangling.

Esistono tre varianti:

- Left (=⋈): solo tuple dell’operando sinistro sono riempite con NULL
- Right (⋈=): idem per l’operando destro
- Full (=⋈=): si riempiono con NULL le tuple dangling di entrambi gli operandi
TRADUZIONE E/R
Traduzione di associazioni

Potrebbero piacerti anche