vuoi
o PayPal
tutte le volte che vuoi
Illustrare, attraverso un esempio, un indice primario di tipo HASH
Mostrare un esempio di anomalia di AGGIORNAMENTO FANTASMA e come il 2PL può prevenire tale
anomalia
Vincolo: x+y+z=10
R1(x) -> R1(y) -> R2(x) -> R2(y) -> R2(z) -> W2(z) -> R1(z)
La T1 vedrà la BD in uno stato inconsistente, a causa della W2(z) sovrapposta all’esecuzione.
Il 2PL può prevenire tale anomalie adottando una politica di locking che obbliga le transazioni a
richiedere tutti i lock sulle risorse prima del loro utilizzo ed a rilasciarli solo dopo averle utilizzate.
Illustrare attraverso un esempio la differenza tra il 2PL ed il 2PL stretto
R1(X), W1(X), R2(X), Rollback(T1), W2(X)
Il 2PL, rilasciando le risorse prima del commit, non risolve l’anomalia della Dirty Read .
[ R2(X) ha letto un valore successivamente eliminato per effetto della Rollback ].
Il 2PL stretto risolve questo problema rilasciando i lock solo dopo il commit/rollback.
Differenza tra SISTEMA INFORMATIVO e SISTEMA INFORMATICO
Per Sistema Informativo si intende l’insieme delle componenti dedicate all’acquisizione, elaborazione,
memorizzazione, recupero e condivisione delle informazioni.
Un Sistema Informatico è la tecnologia di supporto del sistema informativo.
Proprietà ACID delle transazioni
Atomicità: una transazione è eseguita nella sua interezza
Consistenza: una transazione deve lasciare la BD in uno stato consistente
Isolamento: gli effetti parziali delle transazioni incomplete non sono visibili alle altre
Durabilità: gli effetti di una transazione committed sono registrate in modo permanente
Illustrare attraverso un esempio la differenza tra indici di tipo B-TREE e di tipo B+-TREE
Basi di Dati 2 Giuseppe D’Alterio
Gli alberi di tipo B+Tree presentano i RID solo nelle foglie.
Differenza tra Trigger a livello di tupla ed a livello di statement
Un trigger statement-level è attivato una sola volta (anche se 0 tuple sono aggiornate);
un trigger row-level è attivato una volta per ogni riga modificata.
Esempio di un’anomalia di perdita di aggiornamento e possibile risoluzione mediante un algoritmo di
gestione della concorrenza
R1(X), R2(X), W2(X), W1(X)
La Write della T2 è persa perché sovrascritta dalla W1(X).
Una possibile risoluzione potrebbe prevedere l’utilizzo del 2PL, così da rilasciare la risorsa solo dopo il
commit della transazione che la sta utilizzando.
Differenza tra Theta Join, Inner Join ed Equi Join
r r x r
∨¿<¿ =σ (r )
Theta Join: 1 χ 2 χ 1 2
Inner Join intende un Theta Join che esclude i dangling records.
χ
Equi Join è un Theta Join avente come condizione un’uguaglianza.
Vincoli di integrità referenziale
Date due relazioni r1 ed r2, con r1 dotata di chiave esterna FK relativa alla PK di r2, si dice che tra r1
ed r2 sussite un vincolo di integrità referenziale se per ogni occorrenza di FK in t1 r1 esiste t2
∈
r2|t1[FK] = t2[PK] oppure è NULL.
∈
Datawarehouse
Una DWH è una BD relazionale:
- Subject Oriented
- Integrata
- Time Variant
- Non volatile
- Progettata ai fini dell’analisi dei dati
Si illustrino le principali caratteristiche dei sistemi informativi direzionali.
Basi di Dati 3 Giuseppe D’Alterio
Dire quando uno schema di relazione R(X) è in forma normale di Boyce e Codd . Se uno schema non è
in forma normale di quali proprietà deve godere una sua decomposizione effettuata ai fini della
normalizzazione?
- è 1NF
- Ogni dipendenza funzionale non banale Y -> Z, Y è superchiave di R(X)
Approcci alla programmazione di una base di dati
- SQL EMBEDDED: le istruzioni SQL sono nel sorgente dell’applicazione;
- SQL/CLI: le funzioni per comunicare con il DBMS sono racchiuse in apposite librerie driver,
vedendo poi la nascita dello standard ODBC per l’accesso ad una BD da parte di
un’applicazione.
Inoltre, vengono definiti dei linguaggi di programmazione, specifici del DBMS, per arricchire l’SQL con
istruzioni tipiche di linguaggi di programmazione. Ad esempio il PL/SQL di Oracle.
Struttura di un DBMS
Basi di Dati 4 Giuseppe D’Alterio