DBMS Flashcards
Nell’ambito del modello relazional, data una relazione, esiste sempre una superchiave?
Si,sempre
Nell’ambito del modello relazionale, quale dei seguenti tipi di vincoli necessità tipicamente per la sua verifica di un controllo su più relazioni?
Integrità referenziale
Quale di queste sequenza di attività descrive meglio la realizzazione di un database?
Prima schema concettuale,poi logico e poi esterno
A cosa serve una DDL (Data Definition Language)?
Per la definizione e modifica di schemi (logici,esterni,fisici)
A cosa serve un DML (Data Manipulation Language)?
Per l’interrogazione e l’aggiornamento di istanze nell base di dati
In quali casi la modalità di memorizazione dei record “Column store” è preferibile a “Row store”?
Quando si devono fare frequentemente query che coinvolgono un’unica colonna delle tuple della tabella
Cosa si intende dicendo che “il modello relazionale è basato sui valori”?
Si intende che i riferimenti tra tuple contenenti informazioni che si riferiscono allo stesso individuo sono realizati in base ai valori di uno o più attributi.
Nel livello fisico del DBMS, quale è il vantaggio dell’organizzazione ordinata dei record su disco rispetto a quella disordinata?
L’organizzazione ordinata dei record su disco consente di migliorare l’efficienza nelle operazioni di lettura sequenziale. Quando i record sono ordinati in base a un attributo (come una chiave), il DBMS può eseguire ricerche e accessi sequenziali in modo più rapido, riducendo il numero di accessi al disco. Questo tipo di organizzazione è utile soprattutto per query che richiedono di scorrere i dati in ordine, come ricerche per intervallo o operazioni di scansione.
In quali casi la modalità di memorizzazione dei record “Row Store” è preferibile a “Column Store”?
Quando si devono fare frequentemente query che coinvolgono tutte le colonne delle righe della tabella.
Nel livello fisico del DBMS, quale è il vantaggio dell’organizzazione disordinata dei record su disco rispetto a quella ordinata
L’organizzazione disordinata è piu efficiente in caso di inserimenti, modifiche e cancellazioni
Cosa si intende per indipendenza logica e fisica dei dati?
-Indipendenza fisica significa che le modifiche apportate al livello fisico dei dati (come la struttura dei file su disco) non influenzano il livello logico. Ad esempio, il cambiamento dell’algoritmo di accesso ai dati non dovrebbe influire sulle tabelle e sulle relazioni.
Indipendenza logica: indica che le modifiche allo schema logico (come l’aggiunta di un attributo a una tabella) non devono influenzare le applicazioni che usano il database. Consente agli sviluppatori di cambiare la struttura logica dei dati senza dover modificare il codice delle applicazioni.
Cosa si intende per “schema esterno” di un DBMS? Per quali motivi è utile in alcuni casi creare delle viste? Che ruolo hanno le viste riguardo alle garanzie di privatezza che un DBMS deve garantire?
- Schema esterno: rappresenta le viste personalizzate dei dati per utenti o applicazioni specifiche, limitando l’accesso solo alle informazioni rilevanti.
- Motivi per creare delle viste: semplificano l’accesso, migliorano le prestazioni (pre-filtrando o aggregando dati), e nascondono la complessità della struttura sottostante.
- Ruolo delle viste per la privatezza: possono limitare l’accesso a dati sensibili, esponendo solo le informazioni necessarie e proteggendo i dati riservati o sensibili.
Cosa si intende per “schema concettuale” di un DBMS?
- Lo schema concettuale è il modello di dati che rappresenta una visione globale e astratta della base di dati. Descrive l’organizzazione e la struttura dei dati a livello concettuale, cioè quali entità e relazioni esistono nel sistema, senza considerare i dettagli tecnici specifici (ad esempio, non specifica le tabelle o i campi).
Cosa si intende per “schema logico” di un DBMS?
- Lo schema logico rappresenta la struttura logica globale della base di dati ed è indipendente dalla struttura fisica. Definisce le tabelle, i campi, i vincoli di integrità, le chiavi e le relazioni tra le tabelle. Lo schema logico è visibile agli amministratori e ai progettisti di database ed è una rappresentazione dettagliata dei dati e delle relazioni tra essi.
Nel modello relazionale delle basi di dati, data una qualunque relazione R, è sempre vero che R ha almeno una chiave S? Se sì, dimostrarlo. Se no, mostrare l’esempio di un caso in cui R non abbia chiavi.
In generale, ogni relazione RRR ha almeno una chiave, anche se composta da tutti gli attributi della relazione. Tuttavia, esiste un caso in cui una relazione potrebbe non avere chiavi: una relazione vuota (senza tuple) o con un solo attributo costantemente uguale in ogni riga non avrebbe una chiave unica.
Quali sono i principali ruoli dei professionisti che lavorano nell’ambito delle basi di dati, e quali compiti svolgono?
-Progettisti e sviluppatori, che lavorano a livello fisico;
→ Progettisti e amministratori della base di dati (DBA), che lavorano a livello logico, esterno e concettuale e un po’ anche a livello fisico;
→ Analisti, progettisti e sviluppatori di applicazioni, che lavorano a livello esterno;
→ Utenti, non accedono direttamente al db ma tramite interfacce
Il Database administrator (DBA) in particolare è una persona o un gruppo di persone responsabile del controllo centralizzato e della gestione del sistema, delle prestazioni, dell’affidabilità, delle autorizzazioni. Le funzioni del DBA includono quelle di progettazione, anche se in progetti complessi ci possono essere distinzioni.
Analogie e differenze tra la relazione matematica e la relazione del modello relazionale di una base di dati.
- Relazione matematica: In matematica, una relazione è un insieme di coppie ordinate o n-uple, che rispettano certe proprietà. È più astratta e non specifica la struttura o l’organizzazione dei dati.
- Relazione nel modello relazionale: In un DBMS, una relazione è una tabella in cui i dati sono organizzati in righe (tuple) e colonne (attributi). Ogni riga rappresenta un’entità specifica, e le colonne rappresentano gli attributi o le caratteristiche.
- Esempio: Una tabella Libro con colonne ISBN, Titolo, Autore è una relazione nel modello relazionale. Ogni riga rappresenta un libro unico.
Quale è la semantica del valore null? Cosa succede se in una selezione si applica una dcondizione (ad esempio Select where stipendio > 50000) su un attributo che ha valore NULL?
-* NULL: In un database, NULL indica un valore sconosciuto o mancante. Non significa zero o una stringa vuota; è una condizione di assenza di valore.
* Impatto nelle query: Quando si applica una condizione come stipendio > 50000 in una query, le righe con stipendio = NULL non vengono considerate vere o false e quindi vengono escluse dal risultato.
Considerare la relazione R(A, B,C). Da quali tuple è composta la relazione SEL A->B(r)
-Le tuple di R in cui il valore di A e di B è diverso da NULL e il valore di A è maggiore di quello di B
Nella scrittura dei record su file system, un DBMS può usare unatecnica spanned oppure nspanned. Spiegare cosa si intende per tecnica spanned e unspanned, e discutere vantaggi e svantaggi di entrambe.
-* Spanned: Consente a un record di estendersi su più blocchi di memoria, utile per gestire record molto grandi.
* Esempio: Un record con una grande quantità di dati (come un articolo con molto testo) potrebbe non entrare in un solo blocco, quindi verrebbe suddiviso su più blocchi.
Vantaggi:
* Maggiore efficienza nello spazio: consente di evitare sprechi, poiché i record che superano la dimensione di un blocco possono essere divisi e scritti su blocchi contigui.
* Capacità di gestire record di grandi dimensioni: permette la memorizzazione di record molto grandi senza limitazioni dalla dimensione del blocco.
Svantaggi:
* Maggior complessità di gestione: per accedere a un record, è necessario ricostruirlo a partire dai vari blocchi in cui è stato diviso.
* Performance di lettura più lenta: può aumentare i tempi di accesso, poiché i blocchi devono essere letti in successione e i frammenti di record ricostruiti.
- Unspanned: Ogni record è contenuto in un solo blocco, più semplice da gestire, ma meno efficiente in termini di spazio.
- Vantaggi:
- Semplicità di gestione: ogni record può essere letto interamente da un solo blocco, rendendo più semplice e veloce l’accesso.
- Efficienza di lettura: poiché ogni record è contenuto in un singolo blocco, non è necessaria la ricostruzione del record, migliorando i tempi di accesso.
- Svantaggi:
- Spreco di spazio: se un record è leggermente più piccolo della dimensione del blocco, lo spazio rimanente nel blocco rimane inutilizzato.
- Limitazioni sui record di grandi dimensioni: se un record supera la dimensione di un blocco, non può essere memorizzato con la tecnica unspanned.
Nella scrittura dei record su file system, un DBMS può usare un formato dei record fisso oppure autodescrittivo. Spiegare cosa si intende per formato dei record fisso e auto-descrittivo, e discutere vantaggi e svantaggi di entrambi
- Formato fisso: I record hanno sempre la stessa struttura e lunghezza, rendendo più veloce l’accesso ma meno flessibile.
Esempio: Una tabella Ordini con colonne ID, Data, Quantità in cui ogni record ha esattamente 30 byte di lunghezza.
- Formato fisso: I record hanno sempre la stessa struttura e lunghezza, rendendo più veloce l’accesso ma meno flessibile.
- Formato auto-descrittivo: Ogni record contiene anche le informazioni sulla sua struttura, rendendolo più flessibile ma più lento da leggere.
In base a cosa si calcola il costo di una operazione su un dbms? Nell’architettura di un DBMS quale processo di ottimizzazione attua l’ottimizzatore delle query? Speigare cosa si intende per euristica ‘ Push selections down’ e ‘Push projection down’ e perché queste euristiche possono diminuire il costo di esecuzione di una query.
Il costo di un’operazione in un DBMS dipende principalmente da diversi fattori, e uno dei più importanti è il numero di accessi alla memoria secondaria (come il disco), poiché le operazioni di lettura e scrittura su disco sono generalmente molto più lente rispetto alle operazioni che avvengono in memoria principale (RAM).
Quando il DBMS esegue un’operazione, come recuperare o aggiornare dati, deve caricare i dati dalla memoria secondaria in blocchi, che sono unità di lettura/scrittura. Ogni blocco può contenere uno o più record, a seconda della loro dimensione. Più blocchi devono essere letti, maggiore è il tempo di esecuzione dell’operazione, poiché ogni accesso al disco richiede tempo.
* Push Selections Down: significa applicare i filtri (le condizioni di selezione) il prima possibile nel processo di esecuzione della query. Filtrare presto riduce il numero di righe da gestire nei passaggi successivi, velocizzando l’operazione.
* Esempio: Se vuoi cercare solo le persone di una certa età, questa condizione viene applicata subito, così da evitare di lavorare con persone che non rientrano nel filtro.
* Push Projection Down: vuol dire selezionare solo le colonne necessarie il prima possibile. Così facendo, si trasferisce e si lavora solo con i dati rilevanti, riducendo l’uso di memoria e tempo.
* Esempio: Se hai bisogno solo del nome e non di altre informazioni, il sistema seleziona solo quella colonna sin dall’inizio.
E’ sempre utile creare un indice su una colonna (o su più colonne) del DBMS? In quali casi in genere si ritiene utile indicizzare una colonna? Perché non avrebbe senso indicizzare una colonna di una tabella di cui si vuole normalmente recuperare tramite query più della metà delle righe?
Quando una query restituisce solo una piccola parte delle righe (ad esempio il 5-10%), l’indice aiuta a trovare i dati velocemente. Se invece la query restituisce molte righe (oltre il 50%), leggere direttamente la tabella senza usare l’indice è più veloce, perché l’indice aggiunge solo un passaggio extra senza risparmi reali.
In sintesi, l’indicizzazione è vantaggiosa quando si cerca un ago in un pagliaio, ma non quando si vuole l’intera pagliaia.
hash, bitmap, B-tree e B+-tree.
-
Indice Hash
Descrizione: Un indice hash utilizza una funzione di hashing per mappare i valori delle chiavi a posizioni specifiche in una tabella hash. Ogni chiave è convertita in un “hash” che punta direttamente a una posizione in cui si trovano i dati.
Vantaggi:
- Accesso molto rapido per operazioni di ricerca puntuale (es. SELECT * WHERE id = 123
).
- Semplice da implementare e molto efficiente per confronti di uguaglianza.
Svantaggi:
- Non supporta efficacemente ricerche per range (es. trovare valori compresi tra due limiti).
- Collisions: quando più chiavi hanno lo stesso valore di hash, possono verificarsi conflitti, portando a una diminuzione delle prestazioni.
- Gestione dinamica: ridimensionare una tabella hash può essere complesso.
-
Indice Bitmap
Descrizione: Un indice bitmap rappresenta le chiavi di un insieme di dati come bit. Ad esempio, per una colonna con valori distinti, ogni valore è rappresentato da un bit in un array.
Vantaggi:
- Efficiente per colonne con una bassa cardinalità (pochi valori distinti, come sesso
o stato civile
).
- Operazioni logiche rapide (es. AND
, OR
, NOT
) per combinare più bitmap e filtrare dati.
- Buona compressione e uso efficiente dello spazio per tabelle di grandi dimensioni con poche variazioni nei dati.
Svantaggi:
- Non ideale per colonne con alta cardinalità (molti valori distinti).
- Aggiornamenti costosi: poiché gli indici bitmap devono essere aggiornati ogni volta che un valore cambia, possono risultare inefficienti in tabelle con frequenti modifiche.
-
Indice B-tree
Descrizione: Un B-tree è una struttura ad albero bilanciata in cui i dati sono organizzati in nodi. Ogni nodo contiene più chiavi e figli, mantenendo l’albero bilanciato per garantire una profondità limitata.
Vantaggi:
- Supporta efficientemente ricerche per range (es. SELECT * WHERE valore BETWEEN x AND y
).
- Bilanciamento automatico per mantenere prestazioni costanti durante le operazioni di inserimento, cancellazione e ricerca.
- Accesso logaritmico ai dati grazie alla struttura gerarchica.
Svantaggi:
- Maggior overhead rispetto agli indici hash per confronti di uguaglianza.
- Struttura più complessa da implementare rispetto agli indici hash.
-
Indice B+-tree
Descrizione: È una variante del B-tree in cui tutte le chiavi e i dati sono conservati solo nelle foglie dell’albero, mentre i nodi interni contengono solo puntatori e chiavi per la navigazione.
Vantaggi:
- Più efficiente per la scansione sequenziale dei dati, dato che le foglie sono collegate tra loro in una lista collegata.
- Ricerca, inserimento e cancellazione hanno prestazioni prevedibili e logaritmiche.
- Mantiene tutti i record ordinati e offre accesso diretto per ricerche sia puntuali che per intervalli.
Svantaggi:
- Richiede più spazio in memoria rispetto a un semplice B-tree, poiché deve memorizzare i puntatori tra le foglie.
- L’aggiornamento dell’indice richiede una gestione leggermente più complessa.
Riepilogo dei vantaggi e svantaggi
- Hash: Molto veloce per ricerche di uguaglianza, ma limitato per ricerche per range e più complicato da gestire con collisioni.
- Bitmap: Ideale per colonne a bassa cardinalità e query con operazioni logiche, ma inefficiente per colonne con alta cardinalità o frequenti aggiornamenti.
- B-tree: Bilanciato e adatto per ricerche complesse e range, ma con un leggero overhead rispetto agli hash.
- B+-tree: Simile al B-tree, ma ottimizzato per scansioni sequenziali e accesso ai dati nelle foglie. Migliore per grandi volumi di dati ordinati, ma richiede più memoria.