Anteprima
Vedrai una selezione di 1 pagina su 5
Domande ricorrenti base di dati Pag. 1
1 su 5
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Collocazione delle viste e gestione dei permessi sui dati

Possiamo collocare le viste in corrispondenza del livello esterno dell'architettura ANSI-SPARC: forniscono una visione parziale di tutto lo schema logico del DB. Le viste possono essere utilizzate per gestire i permessi sui dati; ad esempio, se non voglio far visualizzare a tutti gli utenti del DB tutti i campi di una data tabella, posso creare una vista dei soli campi di interesse e dare a specifici utenti i permessi per accedere alla vista creata e non a tutta la tabella.

Definizione di transazione e proprietà ACID

Una transazione è un'unità logica di elaborazione su una base di dati che comprende una o più operazioni di read/write. È bene che una transazione soddisfi le proprietà ACID:

  • Atomicità: le operazioni di una singola transazione o vengono eseguite tutte o nessuna. In caso di successo viene eseguito il commit della transazione, altrimenti si ripristina lo stato precedente attraverso un rollback.

rollback.

Consistenza: ogni transazione porta il DB da uno stato consistente ad un altro stato consistente, preservando i vincoli di integrità. È possibile verificare la consistenza a seguito di ogni singola operazione della transazione o soltanto in corrispondenza del commit finale.

Isolamento: le transazioni non si influenzano reciprocamente, ossia una transazione non può leggere dati intermedi di altre.

Durability (persistenza): i dati prodotti da una transazione devono essere residisponibili persistentemente nel DB nonostante possibili malfunzionamenti di sistema.

Fornire almeno un esempio di anomalia indotta dall'esecuzione concorrente di transazioni e spiegare la relazione tra anomalie e proprietà ACID.

L'esecuzione concorrente di transazioni porta in generale all'avvento di race-conditions; quest'ultime si declinano in tre tipologie fondamentali di anomalie:

Lost update: due transazioni che accedono agli stessi dati

Eseguono operazioni che non rispettano i vincoli di sequenzialità.

  • Temporary Update (Dirty Read): una transazione aggiorna i dati del DB ma fallisce; una seconda transazione utilizza come dati quelli corrotti, prima che la prima transazione possa eseguire un rollback degli stessi.
  • Incorrect Summary: una transazione calcola una funzione aggregata su determinati dati mentre una seconda transazione sta aggiornando gli stessi.

Spiegare l'approccio Call Level Interface. Fornire inoltre e commentare un breve esempio.

L'approccio CLI è alternativo all'SQL embedded e prevede di utilizzare una libreria apposita per dialogare col DBMS in un dato linguaggio di programmazione. Il modo di operare è il seguente:

  1. Creo una connessione al DBMS tramite una chiamata di libreria apposita;
  2. Invio un comando SQL come stringa;
  3. Ottengo una risposta strutturata che potrà essere interpretata tramite funzioni di libreria;
  4. Chiudo la connessione.

Esempio

getConnection(); // fanno riferimento ad una classe esterna
$query = "SELECT * FROM cliente";
$res = sqli_query($query);
$connectionManager->close();
?>

6. Nell'ambito delle modalità utilizzate nei linguaggi di programmazione per sottomettere query a DBMS spiegare la modalità "SQL embedded" e discutere la differenza tra SQL statico e SQL dinamico.

La modalità "SQL embedded" prevede di incapsulare comandi SQL all'interno di istruzioni di un linguaggio procedurale come ad esempio C. Tali comandi vanno preceduti da 'EXEC SQL' e terminati da ';', sintassi che ne permette l'elaborazione da parte di un precompilatore che li converte in chiamate di libreria opportune ed eventualmente ne segnala errori. Per quanto riguarda lo scambio di dati, le variabili a tale scopo

devono essere dichiarate in sezioni apposite; quando vengono utilizzate devono essere precedute da ‘:’. Si può inoltre ricorrere alle variabili predefinite sqlca (communication area) e sqlcode che descrive l’esito dei comandi SQL.

Dato che i linguaggi di programmazione sono spesso tuple-oriented e non set-oriented come SQL, faticano a gestire i risultati prodotti dall’interrogazione. Per ovviare a ciò si utilizzano dei cursori, meccanismi che accedono ai risultati in modo set-oriented e restituiscono al programma una tupla per volta.

L’SQL statico prevede una struttura prefissata per l’interrogazione al momento della stesura stessa del programma. Una famiglia alternativa di comandi SQL embedded permette invece la costruzione di istruzioni SQL al momento dell’esecuzione (SQL dinamico).

Il problema principale è gestire il trasferimento di parametri e risultati (non noti in termini di quantità e valori in fase di compilazione) tra

  1. Il programma e l'ambiente SQL.
  2. SQL dinamico offre due modalità:

    • Esecuzione diretta
    • Preparazione + Esecuzione
  3. Definizione di dipendenza funzionale e terza forma normale e forma di Boyce-Codd nel modello relazionale; differenze tra le due forme normali.
  4. La dipendenza funzionale è un particolare vincolo di integrità che descrive legami di tipo funzionale tra gli attributi di una relazione.

    Data una relazione r su uno schema di relazione R(U) e due sottoinsiemi di attributi non vuoti X e Y di U, si dice che esiste su r una dipendenza funzionale tra X e Y se per ogni coppia di tuple t1 e t2 di r aventi gli stessi valori sugli attributi X, t1 e t2 hanno uguali valori anche sugli attributi Y. Si indica con X → Y.

    Una dipendenza funzionale si dice non banale quando non tutti gli attributi di Y appartengono a X. Nel caso X → A, essa è non banale se A non appartiene a X.

Obiettivo della normalizzazione

L'obiettivo della normalizzazione è garantire qualità eliminando il più possibile ridondanza e inconsistenza.

Forme normali

Di seguito sono riportate alcune forme normali:

Prima forma normale (1NF o flat)

Uno schema di relazione R(X) è detto in prima forma normale se ogni attributo appartenente a X è un attributo semplice. Diversamente è detta strutturata (o nested).

Forma di Boyce-Codd

Una relazione r è in forma normale di Boyce e Codd se, per ogni dipendenza funzionale (non banale) X → Y definita su di essa, X contiene una chiave K di r.

Terza forma normale

Una relazione r è in terza forma normale se, per ogni dipendenza funzionale (non banale) X → Y definita su di essa, è verificata almeno una delle seguenti condizioni:

  1. X contiene una chiave K di r
  2. Ogni attributo in Y è contenuto in almeno una chiave di r

È possibile confrontare le ultime due forme normali in base alla qualità delle decomposizioni, che...

Le decomposizioni di una relazione r su X constano di due aspetti:

  • Decomposizione senza perdita: Una relazione r su X si decompone senza perdita su X1∪ e X2 (con X = X1 X2) se il join delle due proiezioni è uguale a r stessa, cioè non contiene tuple spurie (lossless join). Condizione sufficiente: La decomposizione senza perdita è garantita se gli attributi comuni alle relazioni X1 e X2 contengono una chiave per almeno una delle due relazioni decomposte. In sostanza una decomposizione senza perdita garantisce la ricostruzione delle informazioni originali.
  • Conservazione delle dipendenze: una decomposizione conserva le dipendenze se ciascuna delle dipendenze funzionali dello schema originale coinvolge attributi che compaiono tutti insieme in almeno uno degli schemi decomposti (in modo che la dipendenza sia rispettata in almeno una delle relazioni ottenute).
Dettagli
Publisher
A.A. 2019-2020
5 pagine
SSD Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher worms22 di informazioni apprese con la frequenza delle lezioni di ingegneria del software e base di dati e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Brescia o del prof Melchiori Michele.