Fondamenti dei Sistemi di Database: Concetti, Modelli e SQL
Inviato da Javi e classificato in Informatica
Scritto il in
con una dimensione di 5,25 KB
Cos'è un sistema di database
Un sistema di database è costituito da:
- Database: Una raccolta di dati correlati. È composto da:
- Dizionario dei dati: contiene una descrizione della struttura del BD, i "metadati".
- Dati: le informazioni memorizzate.
- Sistema di gestione di database (DBMS): un insieme di programmi che consente di definire, creare, manipolare e controllare l'accesso al database.
- Utenti: amministratori, progettisti, utilizzatori finali, ecc.
Vantaggi dell'utilizzo di un DBMS
- Abbattimento della ridondanza e controllo dei dati.
- Prevenzione delle incoerenze (evitando diverse copie degli originali).
- Mantenimento dell'integrità (correttezza delle informazioni) tramite vincoli di integrità (tipo di dati, lunghezza, ecc.).
- Facilità di sviluppo e mantenimento delle relazioni tra i dati.
- Controllo degli accessi, sicurezza e gestione della concorrenza.
- Facilità di backup e correzione degli errori.
- Flessibilità: possibilità di modificare la struttura senza alterare i dati memorizzati.
Modelli di dati
Il modello di dati di un DB è un insieme di concetti che descrivono i tipi di dati, le relazioni e le restrizioni, oltre alle operazioni di interrogazione e modifica. Si divide in:
- Concettuale: vicino al mondo reale, basato su entità e attributi. Esempio: UML.
- Logico: descrive la struttura globale, comprensibile dagli utenti ma vicino all'organizzazione fisica. Esempio: relazionale o orientato agli oggetti.
- Fisico: descrive la struttura fisica, come memorizzare e accedere ai record, blocchi, ecc.
Schema e stato
- Schema: specifica la progettazione del database (i metadati).
- Stato: l'insieme di dati contenuti nel database in un momento particolare. Il gestore deve garantire che sia sempre coerente.
Linguaggi e interfacce
- LDD (Linguaggio di Definizione dei Dati): per specificare la struttura concettuale.
- LDA (Linguaggio di Definizione di Stoccaggio): per definire la memorizzazione.
- LDV (Linguaggio di Definizione di Vista): permette all'utente di definire punti di vista.
- DML (Linguaggio di Manipolazione dei Dati): consente l'accesso, l'inserimento, la cancellazione e la modifica dei dati. Può essere procedurale o dichiarativo.
Modello relazionale dei dati
È il modello più utilizzato. Ecco una corrispondenza tra terminologia formale e SQL:
| Formale | SQL | Descrizione |
|---|---|---|
| Rapporto | Tabella | Rappresenta un'entità generica |
| Tuple | Riga | Rappresenta una particolare entità |
| Attributo | Colonna | - |
| Dominio | Dominio | Valori atomici che un attributo può assumere |
Proprietà delle relazioni
- Non ci sono tuple ripetute.
- Le tuple non sono ordinate.
- Gli attributi non sono ordinati.
- I valori degli attributi sono atomici.
Regole di integrità
- Chiavi candidate, primarie e alternative: Sottoinsieme di attributi che soddisfa il vincolo di esclusività e non contiene valori nulli.
- Chiavi esterne: Insieme di attributi che fa riferimento alla chiave primaria di un'altra relazione. Consente di collegare le tabelle.
Algebra relazionale
Raccolta di operatori che utilizzano le relazioni come operandi. Le operazioni principali includono: Unione, Intersezione, Differenza, Prodotto cartesiano, Restrizione, Proiezione, Incontro (Join), Divisione e Funzioni di aggregazione.
Transazioni
Una transazione è una sequenza di azioni che legge o aggiorna il database. Proprietà (ACID):
- Atomicità: tutto o niente.
- Integrità: passaggio da uno stato coerente all'altro.
- Isolamento: le modifiche non sono visibili finché non sono confermate.
- Durabilità: i cambiamenti persistono anche dopo un guasto.
Controllo della concorrenza
Problemi comuni: Aggiornamento perso, Lettura sporca (dirty read), Riassunto sbagliato e Lettura non ripetibile. Si utilizzano metodi di bloccaggio (condiviso o esclusivo) e protocolli come il Two-Phase Locking (2PL) per garantire la serializzabilità.
Recupero (Failover)
Il gestore deve garantire l'atomicità e la durata. Si utilizzano file di log, checkpoint e strategie di aggiornamento (immediato o differito) per ripristinare il database in uno stato corretto dopo un guasto.
SQL e LDD
Il linguaggio SQL permette la manipolazione (SELECT, INSERT, UPDATE, DELETE) e la definizione (CREATE, ALTER, DROP) di schemi, tabelle, viste e indici. Le viste sono tabelle derivate che non vengono create fisicamente, garantendo dati sempre aggiornati.