Basi di dati

12
INTRODUZIONE Una base di dati è una collezione di dati (fatti noti) che ha le seguenti proprietà: - rappresenta un aspetto del mondo reale (Universo del Discorso); - i dati contenuti sono logicamente correlati e consistenti, e non sono una raccolta casuale; - è costruita e popolata per una scopo; - le basi di dati possono essere di qualsiasi dimensione e avere diversa complessità informazione e dato L’informazione è tutto ciò che produce variazioni del patrimonio conoscitivo di un soggetto. Il dato è la registrazione della descrizione di una caratteristica della realtà. ES: dato: “G24” informazione: “in G24 si terrà la lezione” contesto interpretativo: per trasformare un dato in un informazione bisogna dargli un contesto interpretativo. Transazione: è un programma che esegue uno o più accessi alla base di dati per leggere e/o modificare. Query: è l’interrogazione che viene fatta alla base di dati per estrarre informazioni. DBMS Un sistema di gestione di basi di dati DBMS (Data Base Management System), è un sistema software specificamente realizzato per supportare la definizione, costruzione, manipolazione e condivisione di BD. Base di dati significa quindi collezione di dati gestita da un DBMS. Definizione : specificare i tipi, le strutture e i vincoli dei dati che devono essere memorizzati nella BD; Costruzione : popolare la BD, memorizzando i dati su un supporto di memorizzazione gestito dal DBMS; Manipolazione : interrogare la BD (reperire dati) e/o aggiornare la BD (aggiungere, modificare, eliminare dati); Condivisone : più utenti e programmi applicativi possono accedere contemporaneamente ai dati contenuti nella base di dati; Funzionalità dei DBMS - Accesso efficiente a grandi quantità di dati persistenti; le BD possono avere dimensioni anche molto elevate (es., gigabyte) e hanno un tempo di vita superiore a quello di esecuzione delle singole applicazioni; - Gestione delle transazioni: una base di dati è normalmente condivisa e acceduta contemporaneamente da molteplici utenti attraverso transazioni. Il DBMS un controllo della concorrenza , per garantire che transazioni concorrenti operino correttamente sui dati, senza interferenze reciproche. Il DBMS garantisce inoltre funzionalità di salvataggio e ripristino (backup e recovery) dei dati contenuti nella base di dati, per garantire che non ci siano perdite di dati anche in caso di guasti e malfunzionamenti hw/sw durante l’esecuzione di transazioni. - Gestione delle interrogazioni: Al fine ricostruire l’informazione completa in risposta a un’interrogazione, in generale è necessario collegare dati in file diversi. Il DBMS fornisce funzionalità per la formulazione di interrogazioni di alto livello in base alle proprietà dei dati e per l’esecuzione efficiente delle interrogazioni. - Protezione dei dati: controllo di autorizzazione di accesso ai dati. Il DBMS fornisce funzionalità di sicurezza e autorizzazione, secondo privilegi specificati e opportune tabelle di autorizzazione. Catalogo: una BD non contiene solo i dati, ma anche descrizione completa di vincoli, tipi di dati, file, formati. Queste informazioni sono i metadati e sono contenuti nel catalogo. La struttura della BD è memorizzata separatamente dai programmi nel catalogo (indipendenza tra programmi e dati). Viste multiple: la BD ha molti utenti; ogni utente può chiedere una diversa prospettiva o vista. Una vista può essere un sottoinsieme della BD oppure un insieme di dati virtuali che sono derivati dai file memorizzati. Il DMBS offre funzioni per le viste multiple.

description

Appunti di basi di dati (database)

Transcript of Basi di dati

Page 1: Basi di dati

INTRODUZIONE Una base di dati è una collezione di dati (fatti noti) che ha le seguenti proprietà: - rappresenta un aspetto del mondo reale (Universo del Discorso); - i dati contenuti sono logicamente correlati e consistenti, e non sono una raccolta casuale; - è costruita e popolata per una scopo; - le basi di dati possono essere di qualsiasi dimensione e avere diversa complessità informazione e dato L’informazione è tutto ciò che produce variazioni del patrimonio conoscitivo di un soggetto. Il dato è la registrazione della descrizione di una caratteristica della realtà.

ES: dato: “G24” informazione: “in G24 si terrà la lezione”

contesto interpretativo: per trasformare un dato in un informazione bisogna dargli un contesto interpretativo. Transazione: è un programma che esegue uno o più accessi alla base di dati per leggere e/o modificare. Query: è l’interrogazione che viene fatta alla base di dati per estrarre informazioni. DBMS Un sistema di gestione di basi di dati DBMS (Data Base Management System), è un sistema software specificamente realizzato per supportare la definizione, costruzione, manipolazione e condivisione di BD. Base di dati significa quindi collezione di dati gestita da un DBMS.

Definizione: specificare i tipi, le strutture e i vincoli dei dati che devono essere memorizzati nella BD; Costruzione: popolare la BD, memorizzando i dati su un supporto di memorizzazione gestito dal DBMS; Manipolazione: interrogare la BD (reperire dati) e/o aggiornare la BD (aggiungere, modificare, eliminare dati); Condivisone: più utenti e programmi applicativi possono accedere contemporaneamente ai dati contenuti nella base di dati; Funzionalità dei DBMS - Accesso efficiente a grandi quantità di dati persistenti; le BD possono avere dimensioni anche molto elevate (es., gigabyte) e hanno un tempo di vita superiore a quello di esecuzione delle singole applicazioni; - Gestione delle transazioni: una base di dati è normalmente condivisa e acceduta contemporaneamente da molteplici utenti attraverso transazioni. Il DBMS un controllo della concorrenza, per garantire che transazioni concorrenti operino correttamente sui dati, senza interferenze reciproche. Il DBMS garantisce inoltre funzionalità di salvataggio e ripristino (backup e recovery) dei dati contenuti nella base di dati, per garantire che non ci siano perdite di dati anche in caso di guasti e malfunzionamenti hw/sw durante l’esecuzione di transazioni. - Gestione delle interrogazioni: Al fine ricostruire l’informazione completa in risposta a un’interrogazione, in generale è necessario collegare dati in file diversi. Il DBMS fornisce funzionalità per la formulazione di interrogazioni di alto livello in base alle proprietà dei dati e per l’esecuzione efficiente delle interrogazioni. - Protezione dei dati: controllo di autorizzazione di accesso ai dati. Il DBMS fornisce funzionalità di sicurezza e autorizzazione, secondo privilegi specificati e opportune tabelle di autorizzazione. Catalogo: una BD non contiene solo i dati, ma anche descrizione completa di vincoli, tipi di dati, file, formati. Queste informazioni sono i metadati e sono contenuti nel catalogo. La struttura della BD è memorizzata separatamente dai programmi nel catalogo (indipendenza tra programmi e dati). Viste multiple: la BD ha molti utenti; ogni utente può chiedere una diversa prospettiva o vista. Una vista può essere un sottoinsieme della BD oppure un insieme di dati virtuali che sono derivati dai file memorizzati. Il DMBS offre funzioni per le viste multiple.

Page 2: Basi di dati

Attori di una BD Amministratore della base di dati (Data Base Administrator), DBA: – Autorizza l’accesso alla BD – Coordina e monitorare l’uso della BD – Manutiene il sistema BD (es., acquisizione di nuove risorse hw/sw) Progettista della base di dati: – Individua i dati da memorizzare – Sceglie le strutture adeguate per la rappresentazione e memorizzazione – Comunica con gli utenti finali della BD per comprenderne le esigenze (requisiti utente) Analista: – Determina le esigenze degli utenti finali e sviluppare le specifiche per le necessarie transazioni di accesso alla BD (analisti) Programmatore: – Realizza, testa, documenta e manutiene i programmi che implementano le specifiche delle transazioni (programmatori) Progettazione della BD: - definizione e analisi dei requisiti - progettazione concettuale (schema concettuale) - progettazione logica (schema logico) e modello ER - progettazione fisica Modello dei dati Un modello dei dati è un insieme di costrutti e operazioni che descrivono la struttura della BD. L’uso del modello permette al DBMS di fare astrazione dei dati, cioè nasconde agli utenti come vengono strutturati i dati. Il modello si occupa di due aspetti: - come rappresentare i dati; - come rappresentare i legami tra i dati.

Per un modello di dati bisogna quindi determinare: - oggetto - insieme degli oggetti - attributi - associazioni Es dell’università: -oggetto= lo studente -insieme = tutti gli studenti -attributi = matricola, cognome, nome… -associazioni = un certo studente segue un certo corso… Modello relazionale Un esempio di modello dei dati è il modello relazionale. È un modello basato su un singolo costrutto, la relazione. Una relazione si può vedere come un tabella in cui: - le righe sono i record - le colonne sono i campi Terminologia Schema della base di dati: Dato un qualsiasi modello dei dati (quindi anche il modello relazionale) prima di definire la base di dati si crea lo schema della base di dati: esso è la descrizione del contenuto della base di dati; è il primo passo per creare la base di dati; normalmente non varia nel tempo. Stato: Lo stato (insieme delle istanze) della base di dati è l’insieme dei dati in un certo momento. È quindi variabile nel tempo. Il primo caricamento di dati si chiama stato iniziale.

Page 3: Basi di dati

Livelli di astrazione del DMBS Una BD può essere vista a 3 diversi livelli di astrazione, e per ogni livello c’è uno schema: - Schema Logico : descrizione della BD con modello logico (es: relazionale); - Schema Fisico : descrizione della BD con modello fisico (file, indici…); - Schema Esterno o Vista : descrizione della BD o di una parte di essa che costituisce la visione dell’utente. Queste distinzioni permette all’utente e al programmatore di fare riferimento solo allo schema logico. Infatti i dati descritti a livello logico sono memorizzati attraverso strutture fisiche, ma non è necessario conoscerle: ci pensa il DMBS a mantere la corrispondeza tra i 3 schemi (mapping). Componenti di un DBMS • Ottimizzatore: seleziona la strategia di accesso ai dati • Gestore accesso ai dati: esegue la strategia • Gestore buffer: gestisce gli accessi alle pagine • Sottosistema di recovery: gestisce i malfunzionamenti • Sottosistema di controllo della concorrenza: gestisce le interferenze nell’accesso concorrente ai dati. Linguaggi DDL (Data Definition Language) Linguaggio per la definizione di schemi logici, esterni e le autorizzazioni di accesso ai dati. DML (Data Manipulation Language) Linguaggio utilizzato per l’interrogazione e l’aggiornamento delle istanze della base di dati. SQL (Structured Query Language) Linguaggio testuali interattivo, usato per l’accesso ai dati. Architetture centralizzate e client-server del DBMS

Page 4: Basi di dati

IL MODELLO RELAZIONALE Il modello relazionale rappresenta la BD come una collezione di relazioni o una collezione di tabelle. Quando si pensa ad una relazione come una tabella, ogni riga è una collezione di dati collegati. I nomi della tabella e delle colonne aiutano a interpretare il significato dei valori delle righe. Ogni riga è una tupla, il nome della colonna è l’attributo, il nome della tabella è la relazione. Il tipo di dati di ogni attributo è rappresentato da un dominio di possibili valori, e per ogni dominio si specifica il tipo di dato e il formato. (ad es la data è un numero e il formato è gg.mm.aa). Lo schema di relazione R(A1, A2,…,An) è costituito da un nome R e gli attributi Ak. Si definisce anche il grado (o arità) che è il numero di attributi dello schema. Lo schema di relazione si riferisce a una relazione, mentre lo schema della BD si riferisce a tutte le relazioni. L’istanza di una relazione è un insieme di tuple, l’istanza di una BD è un insieme di relazioni. Una relazione r(t1,t2…tn) ha un nome r e delle tuple tk. Ogni tupla tk è l’elenco ordinato di valori vk, in cui ogni vk è un valore appartenente al dominio dell’attributo Ak, oppure assume il valore speciale null. Ordinamento: non c’è alcuno ordine da rispettare, sia per le tuple che per gli attributi. Quello che conta è rispettare l’ordine, una volta stabilito. Null (informazione incompleta): esiste un valore speciale null che può avere diversi significati: - valore sconosciuto - valore esistente ma non disponibile - valore non applicabile per la tupla Vincoli e chiavi Ci sono vincoli o restrizioni sui valori che si possono inserire nella BD - Vincoli di dominio : sono stabiliti dal dominio dell’attributo che va rispettato. Esistono vari tipi di dati da poter inserire: numeri interi, reali, stringhe, caratteri…). - Vincoli di unicità : due tuple non possono avere gli stessi valori per ogni attributo (tuple identiche). - Vincolli di chiave : esiste un sottoinsieme di attributi che serve a identificare univocamente una tupla, e questo sottoinsieme si chiama superchiave. In realtà all’interno della superchiave è possibile che ci siano attributi “di troppo” che servono a identificare ulteriormente la tupla: si parla allora di chiave quando si indica il numero minimo indispensabile di attributi per identificare univocamente una tupla, perciò la chiave è anche detta superchiave minimale. Il vincolo di chiave consiste nel fatto che due tuple non possono avere la stessa combinazione di valori all’iterno della chiave o della superchiave. La condizione ideale è che ci sia un unico attributo che faccia da chiave. In uno schema di relazione ci possono essere diverse chiavi possibili, che si dicono chiavi candidate. Si sceglie allora una chiave, detta chiave primaria, per identificare le tuple. - Vincolo not null : è arbitrario per ogni attributo, obbligatorio per gli attributi della chiave. - Vincolo d’integrità dell’entità : stabilisce che nessun valore della chiave primaria può essere nullo perchè serve a identificare le tuple. - Vincolo d’integrità referenziale : stabilisce che una tupla di una prima relazione che fa da referente a una seconda relazione deve riferirsi a una tupla esistente della seconda relazione. Da qui nasce il concetto di chiave esterna.

Si dice chiave esterna FK (foreign key) un insieme di attributi di R1 che si riferiscono a R2: - gli attributi di FK di R1 hanno gli stessi domini di PK (primary key) di R2; - un valore di FK1 o è presente di PK2 oppure è nullo. Se le due precedenti regole sono rispettate allora c’è vincolo d’integrità referenziale da R1 a R2, dove R1 è la relazione referente e R2 quella referenziata. Forme normali Tipi di attributi: - Attributo semplice: a valori atomici (un valore unico e indivisibile) - Attributo multivalore: valore è un insieme di valori dello stesso dominio - Attributo strutturato: valore è un insieme di valori che appartengono a domini diversi Uno schema di relazione R è detto in prima forma normale (1NF) se ogni suo attributo è semplice.

Page 5: Basi di dati

ALGEBRA E CALCOLO RELAZIONALE L’insieme di operazioni per il modello relazionale è l’algebra relazionale. Il calcolo relazionale specifica le interrogazioni relazionali. Operatori unarie Selezione σ

* Seleziona le righe, quindi le tuple di R. È un filtro che fa partizione orizzontale.

* Si indica σ <condizione selezione > (R) La condizione di selezione o clausola è un’espressione booleana nella forma: <nome_attributo> <op di confronto > < costante > oppure <nome_attributo> <op di confronto > <nome_attributo>

* Operatori di confronto : { =≠<≤≥> } Diverse clausole possono essere unite in un σ attraverso gli operatori booleani AND, OR, NOT. È possibile sempre unire una cascata di selezioni in un’unica selezione tramite AND.

* Il grado della relazione risultante è uguale al grado di quella iniziale. * Vale la proprietà commutativa Proiezione π

* Seleziona le colonne, quindi gli attributi. È un filtro che fa partizione verticale. * Si indica π <lista attributi > (R)

* Eliminazione dei duplicati: facendo proiezione su attributi non chiave, possono presentarsi delle nuove tuple duplicate; la proiezione prevede l’eliminazione di duplicati.

* Il grado della relazione risultante è minore del grado di quella iniziale. * Non vale la proprietà commutativa. Ridenominazione ρ

Operatore che cambia il nome degli attributi nelle interrogazioni (contenuto delle relazioni inalterato). * Si indica ρ <nuovoNome> ← <nomeAttributo> (R) Operatori insiemistici Sono usate per fondere due relazioni diverse. Per poter essere fuse, devono essere compatibili all’unione, cioè devono avere lo stesso grado e, ad attributi corrispondenti, lo stesso dominio. Per convenzione noi scegliamo che gli attributi corrispondenti devono anche avere lo stesso nome, per questo si ricorrerà all’operatore di ridenominazione. Unione: R U S crea una nuova relazione con tutte le tuple di R e di S.+ Intersezione: R ∩ S crea una nuova relazione con le sole tuple che sono sia in R sia in S. Differenza: R – S crea una nuova relazione con le tuple che sono R ma non in S. Unione e intersezioni sono commutativi, non la differenza. Operatori binari Prodotto Cartesiano X

Noto anche come Join Incrociato, si applica a 2 relazioni R e S, e produce una relazione finale Q in cui ogni tupla è combinazione di ogni tupla di R con ogni tupla di S. Per cui data R(a1,a2…an) e S(b1,b2…bm), diremo che R X S = Q (a1,a2…an,b1,b2…bm). Se grado_R = n e grado_S = m allora grado_Q = n+m. Il prodotto cartesiano è poco utile. Correla tuple nel risultato anche se non sono correlate da un punto di vista semantico. In generale è necessario operare una selezione sul risultato del prodotto cartesiano per selezionare un sottoinsieme significativo di tuple.

Page 6: Basi di dati

Join

Il join è un prodotto cartesiano seguito da un’operazione di selezione. Si indica con R <condizione> S

Si chiama Theta Join (θ Join) se la condizione è data da un operatore di confronto. Se l’operatore di confronto è = allora si chiama Equijoin. Da notare che in un Equijoin si hanno sempre una o più coppie di attributi con valori identici; per evitare questa duplicazione si usa il Join Naturale, che si indica con *.

Divisone ÷

Come si vede dalla sequenza, r:s significa prendere tutte le tuple di r contengono tutte le tuple di s, e creare una nuova relazione che ha solo gli attributi che non si trovano in s. Ci deve essere compatibilità sugli attributi (C e D in questo caso). Nell’esempio è bastato cercare tutte le tuple aventi le coppie c1d1 e c2d2. Una richiesta classica in cui si fa la divisione è “trovare i nomi degli impiegati che lavorano a tutti i progetti su cui lavora John Smith.

Page 7: Basi di dati

Progettazione concettuale Dopo l’analisi dei requisiti, si crea uno schema concettuale ER, specificando tipi di entità, attributi, tipi di associazioni, gerarchie. Le strategie per la produzione dello schema possono essere: - top down – si parte da astrazioni di alto livello e si procede con successivi raffinamenti.

- bottom up – si parte da astrazioni di base che descrivono frammenti elementari di realtà e si procede aggregando tali astrazioni o aggiungendone di nuove.

- inside out - Caso particolare della strategia bottom-up: si individuano inizialmente alcuni concetti di maggiore rilevanza e da questi si procede rappresentando via via i concetti vicini a quelli iniziali seguendo i requisiti (procedimento a “macchia d’olio”).

- mixed - Combinazione delle strategie top-down e bottom-up: • Definizione di uno schema scheletro contenente a livello astratto i concetti principali dell’applicazione • Su ciascuna parte dello schema scheletro si può procedere applicando o la strategia top-down oppure quella bottom-up • Adatta a progetti di una certa complessità e/o progetti in cui non sono disponibili da subito tutti i requisiti.

Page 8: Basi di dati

Qualità di uno schema concettuale: Leggibilità Uno schema concettuale e’ leggibile quando presenta i requisiti in maniera facilmente comprensibile scelta di nomi significativi e adeguati minimizzazione di intersezioni (elementi con più legami posizionati centralmente) Minimalità Uno schema concettuale e’ minimale quando non presenta ridondanze (es., presenza di dati derivati), ovvero le specifiche sui dati sono rappresentate una volta sola nello schema si può tollerare la ridondanza come scelta progettuale ma va documentata (vedi prog. logica) Completezza Uno schema concettuale e’ completo quando descrive tutti i requisiti di interesse e le operazioni possono essere eseguite a partire dai concetti contenuti nello schema tutti i requisiti sono rappresentati da qualche concetto nello schema tutti i concetti coinvolti nelle operazioni sono raggiungibili nello schema Correttezza Uno schema concettuale è corretto quando fa un uso proprio dei costrutti del modello concettuale utilizzato errori sintattici uso non ammesso di costrutti (es., generalizzazione su associazioni) errori semantici uso dei costrutti che non rispetta la loro definizione (es., associazione per esprimere specializzazione)

Page 9: Basi di dati

Progettazione logica Dalla progettazione concettuale si passa alla progettazione logica. Le attività compiute sono: - ristrutturazione dello schema concettuale (ER); - traduzione nello schema logico (relazionale); - verifica della ‘normalizzazione’ sullo schema relazionale ottenuto. 1) Ristrutturazione dello schema concettuale (ER) • Analisi dei dati derivati (ridondanza) • Eliminazione delle gerarchie di generalizzazione • Scelta degli identificatori primari • Eliminazione di attributi multi-valore e composti 2) Traduzione nello schema logico (relazionale) • Le entità sono tradotte in relazioni definite sui loro stessi attributi • Le associazioni sono tradotte in relazioni definite sugli identificatori delle entità che partecipano e sugli (eventuali) attributi propri dell’associazione • Dagli indentificatori dell’ER derivano i vincoli di chiave • Si introducono vincoli di integrità referenziale per le relazioni che provengono da associazioni • Dalle cardinalità degli attributi derivano vincoli di NOT NULL

3) Verifica della ‘normalizzazione’ sullo schema relazionale ottenuto.

Page 10: Basi di dati

NORMALIZZAZIONE Dipendenza funzionale: Un attributo B dipende funzionalmente da A se dato un valore di A si deduce un valore di B. Si indica con A→B. Dipendenza funzionale transivita: Dati gli attributi A, B, C, c’è dipendenza transitiva se A→B, B→C, e quindi A→C. 1^ forma normale: una relazione è in 1FN se tutti gli attributi sono atomici. 2^ forma normale: una relazione è in 2FN se è in 1FN e se tutti gli attributi non-chiave dipendono funzionalmente da tutta la chiave (cioè da tutti gli attributi della chiave, e non solo uno). 3^ forma normale: una relazione è in 3FN se è in 2FN e se tutti gli attributi non-chiave NON dipendendono transitivamente dalla chiave.

Page 11: Basi di dati

FORMA NORMALE BOYCE-CODD (BCNF) Una relazione R è in BCNF se per ogni dipendenza A→B l’insieme A contiene una chiave di R Il procedimento di decomposizione non deve causare perdita di informazioni e deve conservare le dipendenze.

DECOMPOSIZIONE SENZA PERDITA Una relazione R si decompone senza perdita se: - data R con attributi X = X1 U X2, il join di R1 e R2 è uguale a R stessa (cioè senza tuple spurie). - l’insieme degli attributi in comune tra R1 e R2 è chiave per almeno una tra R1 e R2.

CONSERVAZIONE DELLE DIPENDENZE Una relazione si decompone con conservazione delle dipendenze se: - gli attributi in dipendenza funzionale in R, compaiono insieme in R1 o R2. Progettazione fisica Il processo di progettazione fisica e’ molto complesso perché prevede la definizione di numerosi parametri (e.g., dimensione iniziale dei file, possibilità di espansione, quantità e dimensione delle aree di transito per scambio di info tra memoria principale e secondaria). Tali scelte sono connesse con lo specifico DBMS utilizzato e difficilmente generalizzabili. La BD è memorizzata in file di dati su dispositivi di memoria. La sua organizzazione può essere primaria o secondaria: - primaria – le tuple (i record) sono collocate nei file, e sono strutture sequenziali o hash. - secondarie – vengono aggiunti gli indici. INDICI Un indice è una struttura ausiliaria, separata dai file di dati, realizzata per migliorare i tempi di ricerca (query) dei dati. Se una tabella non ha indici, ogni ricerca obbliga il sistema a leggere tutti i dati presenti in essa. L'indice consente invece di ridurre l'insieme dei dati da leggere per completare la ricerca. Gli indici hanno anche degli effetti negativi in quanto rendono più lente le operazioni di inserimenti e modifica (update), ed aumentano l'uso della memoria di massa. Un indice si può pensare nella forma <Ki,Pi> dove Ki è il valore dell'attributo chiave e Pi è il puntatore al record di dati. Generalmente il file indice è ordinato secondo i valori del campo Ki affinché sia possibile effettuare una ricerca binaria. Le tipologie di indice sono le seguenti:

• primari: definiti su attributi a valore univoco • secondari: definiti su attributi che possono avere valori ripetuti

• clustered: definiti sull'attributo, secondo i cui valori il file di dati è ordinato • unclustered: definiti sull'attributo, secondo i cui valori il file di dati non è ordinato

• densi: Sono gli indici il cui numero di coppie <Ki,Pi> è uguale al numero di valori chiave dei record • sparsi: Sono gli indici il cui numero di coppie <Ki,Pi> è inferiore al numero di valori chiave dei record

• multilivello: hanno la forma di un albero di ricerca, cioè sono indici che puntano ad altri indici (primo e secondo livello).

Page 12: Basi di dati

Sicurezza Gli obiettivi di sicurezza su una base di dati sono: Segretezza: protezione delle informazioni da letture non autorizzate. Integrità: protezione dei dati da modifiche o cancellazioni non autorizzate. Disponibilità: garanzia che non si verifichino casi in cui ad utenti legittimi venga negato l’accesso ai dati. Tecnica di sicurezza: Controllo dell’accesso: ci sono meccanismi che, per ogni richiesta di accesso ai dati, verificano che l’utente sia autorizzato a compiere l’accesso. Il Reference Monitor è un meccanismo di controllo che ha il compito di stabilire se l’utente può essere autorizzato (totalmente o parzialmente) a compiere l’accesso. Politiche: Le politiche di controllo stabiliscono la limitazione degli accessi, cioè stabiliscono se e come i soggetti possono accedere a quali dati contenuti nel sistema. - Need-To-Know (minimo privilegio): molto restrittiva, permette ad ogni utente l’accesso solo ai dati strettamente necessari per eseguire le proprie attività; offre ottime garanzie di sicurezza, può portare ad un sistema eccessivamente protetto. - Maximized Sharing (massima condivisione): consente agli utenti il massimo accesso alle informazioni nella base di dati, mantenendo comunque informazioni riservate; soddisfa il massimo numero possibile di richieste di accesso. Sistemi aperti e chiusi: Un sistema chiuso implementa la politica del minimo privilegio, un sistema aperto implementa la politica della massima condivisione. Nel sistema aperto l’accesso è permesso a meno che non sia esplicitamente negato. Nel sistema chiuso l’acceso è permesso solo se esplicitamente autorizzato. Attacco Cavallo di Troia:

Y non ha accesso al file f1, ma vuole acquisirne il contenuto. Y inserisce un codice nascosto all’interno di P che legge f1 e scrive f2. Y concede ad X l’autorizzazione a scrivere su f2 (Y è proprietario di f2 e lo può fare). Quindi: X esegue P e le informazioni contenute in f1 (file che Y non può leggere) sono trasferite in f2 (file che Y può leggere). Politiche mandatorie: Regolano l’accesso ai dati mediante la definizione di classi di sicurezza per i soggetti e gli oggetti del sistema: Le classi di sicurezza sono ordinate (es., TS>S>C>U). La classe di sicurezza assegnata ad un oggetto rappresenta il livello di sensitività dell’oggetto: maggiore è la classe assegnata ad un oggetto, più ingente sarà il danno derivante dal rilascio delle informazioni in esso contenute a soggetti non autorizzati. Con questa politica sono vietati flussi (controllo di flusso) da oggetti ad elevata classificazione in oggetti a bassa classificazione (per risolvere il Cavallo di Troia). In questo caso la flessibilità è però ridotta e la circolazione di informazioni tra gli utenti è più difficile. Politiche discrezionali: Per contrasto, queste politiche sono più flessibili: Gli utenti possono a loro discrezione concedere o revocare i diritti di accesso sugli oggetti. Ci sono regole di autorizzazione flessibili ed adatte a numerosi contesti applicativi. Non c’è controllo di flusso.