Introduzione all'archiviazione dei dati ed ai sistemi
informativi
L'essere umano da sempre è alla ricerca di un sistema
informativo che possa raccogliere le informazioni facenti parte
della quotidianità (scambi commerciali, avvenimenti storici,
riflessioni filosofiche).
Un sistema informativo può essere definito come un sistema,
costituito da persone, dati, procedure e tecnologie, che è atto alla
raccolta, memorizzazione, elaborazione e distribuzione delle
informazioni.
Pensiamo, ad esempio, ad un database come a un grande archivio
elettronico ben strutturato, come un registro scolastico digitale, un
catalogo di una biblioteca ecc.
Alla base di un sistema informativo vi sono le seguenti funzioni:
• recuperare informazioni
• effettuare analisi di tipo statistico andando a correlare i dati
• creare modelli predittivi che vadano ad analizzare lo scenario
futuro del determinato contesto cui questi dati afferiscono (es.
mercati finanziari, tasso di natalità di una popolazione ecc.)
Il sistema informatico rappresenta la parte automatizzata del
sistema informativo e si avvale di dispositivi hardware (pc, tastiera,
mouse, hard disk) e software (interfacce grafiche, software
gestionali), e di sistemi telematici (reti di condivisione), al fine di
elaborare i dati.
Nella nostra epoca, diviene sempre maggiore il bisogno di
scambiare dati, e per tale motivo occorre organizzarli e conservarli
in modo opportuno; a tale scopo, si ricorre a sistemi quali:
• flat file o liste (database testuali)
• database strutturati (si rifanno alla logica SQL)
• database non strutturati (si rifanno alla logica NoSQL)
I flat file sono collezioni di dati, organizzati in forma tabellare e
salvati come file di testo, ed ogni riga (record), contiene tutti i
valori delle colonne (attributi) che la descrivono. Distinguiamo due
tipologie di flat file:
• file con separatore decimale (comma separated value o CSV),
con valori separati da virgole
• ad ampiezza fissa, che assegna a ciascun campo un numero di
caratteri fisso
L'accesso ai dati basato su file presenta limitazioni quali:
• scarsa efficienza dovuta all'accesso sequenziale ai file
• ridondanza e dunque ripetizione e duplicazione dei dati
• mancanza di politiche che mettano in sicurezza i dati raccolti
Possono sussistere anche anomalie, le più importanti delle quali
sono:
• anomalie di inserimento, in cui in riga potrebbero esserci valori
anomali raccolti
• anomalie di aggiornamento, coi dati che potrebbero non
essere aggiornati all'ultima modifica
• anomalie di cancellazione, in cui la cancellazione di un record
può comportare la perdita totale di dati
Un database (base di dati) è una raccolta persistente di dati, utile
a descrivere un certo dominio di interesse, e cioè un campo di
conoscenza, ed esso si occupa di:
• immagazzinare dati
• organizzare i dati mediante l'impiego di metadati che ne
descrivono struttura, vincoli e relazioni logiche
• fornire meccanismi per inserire, modificare, cancellare e
recuperare i dati
A tal proposito sono nati i sistemi DBMS (database management
system), atti a fornire all'utente un'interfaccia che consente di
creare, gestire e interrogare i database (ad esempio, Microsoft
Access, MySQL ecc.)
Essi si avvalgono del modello CRUD (create, retrieve, update,
delete), in quanto è possibile creare record, reperire informazioni,
aggiornare il contenuto e cancellare eventualmente informazioni
obsolete.
Lo schema di una base di dati descrive le strutture e le
proprietà dei dati, e rappresenta una parte che non varia nel
tempo.
L'istanza di una base di dati invece, è costituita dai valori
effettivamente presenti nel database in un dato momento, e
dunque è soggetta a mutazione notevole nel tempo.
Per progettare e usare un database, ci si avvale di alcuni
strumenti fondamentali:
1. Modello Entità-Relazione (E-R)
Il modello Entità-Relazione è uno schema grafico che ci aiuta a
progettare visivamente il contenuto del database, prima ancora di
crearlo fisicamente.
Esso consente una progettazione concettuale, che si ottiene
tracciando graficamente le entità e le associazioni che le legano.
Concetti principali:
- Entità: sono oggetti reali o concettuali di cui vogliamo salvare
informazioni. Esempi: Studente, Libro, Insegnante.
- Attributi: sono le caratteristiche di un'entità. Esempi: lo studente
ha Nome, Cognome, Data di nascita.
- Relazioni: sono i legami tra due o più entità. Esempio: uno
studente "prenota" un libro.
Esempio:
- Entità: Studente, con attributi (Matricola, Nome, Età)
- Entità: Libro, con attributi (Codice, Titolo, Prezzo)
- Relazione: Prenota, tra Studente e Libro
Nel diagramma E-R, le entità si disegnano come rettangoli, gli
attributi come cerchi collegati all'entità o alla relazione a cui
afferiscono, e le relazioni come rombi.
Le relazioni tra entità sono delle ennuple, e cioè delle tuple
ordinate di n oggetti, con il grado di associazione che ne indica il
numero di entità coinvolte nell'associazione; questo può essere:
• associazione unaria, di grado 1;
• associazione binaria, di grado 2 (la più frequente);
• associazione ternaria, di grado 3;
• associazione n-ria, di grado n
Due entità possono essere legate da una o più relazioni; ad
esempio, nel diritto italiano, le entità cittadino e comune sono
legate dalle relazioni domicilio e residenza.
La cardinalità rappresenta il numero di istanze delle entità che
sono coinvolte nella partecipazione alla determinata relazione,
e a tal proposito essa viene espressa con due numeri, che ne
indicano rispettivamente cardinalità minima e cardinalità massima.
Quella minima può presentare i valori 0 (e dunque alcune istanze
dell'entità potrebbero non partecipare alla relazione), o 1 (ogni
istanza dell'entità partecipa alla relazione).
Quella massima rappresenta invece il grado massimo di
partecipazione, e dunque è contrassegnata dai valori 1 (un'istanza
può entrare in relazione al massimo con una sola altra istanza
dell'altra entità) oppure n (un'istanza può entrare in relazione con
un numero qualunque di istanze dell'altra entità)
Questa cardinalità può essere altresì espressa per ogni singolo
attributo delle varie entità, andando a definire il numero minimo o
massimo associato a ciascuno di esso (ad esempio, un'entità
utente, che ha come attributi quelli di email e numero di telefono,
potrebbe avere 0 oppure n numeri di telefono).
L'attributo chiave è uno o un insieme di più attributi, atti a
caratterizzare in modo univoco la determinata entità (es
l'entità persona è caratterizzata dal suo codice fiscale).
Anche una relazione può avere degli attributi, rappresentati allo
stesso modo di quelli delle entità.
Talvolta potrebbe verificarsi invece che una certa entità non abbia
un attributo caratterizzante, e quindi è debole: al fine di poter
caratterizzarla, si ricorre quindi agli attributi esterni, i quali sono
legati sia all'entità che alla relazione (es un giocatore che
appartiene ad una squadra, è identificato da un numero, che è
attributo comune del giocatore e della relazione "appartiene").
Possono esserci generalizzazioni e specializzazioni tra entità,
secondo la stessa logica della programmazione orientata ad oggetti,
e questo si ha in base a:
• grado di copertura, che può essere totale (ogni istanza dell'entità
genitore è istanza dell'entità figlia), o parziale (non tutte le istanze
dell'entità genitore sono istanze dell'entità figlia)
• appartenenza, a sua volta esclusiva (ogni istanza dell'entità
genitore è al massimo istanza dell'entità figlia), o sovrapposta
(alcune istanze dell'entità genitore sono istanze
contemporaneamente di più entità figlia)
2. Modello Relazionale
Una volta creato il modello E-R, lo trasformiamo nel modello
relazionale, cioè in un insieme di tabelle; questo rappresenta la
progettazione logica, in quanto va a costruire, a partire dallo
schema concettuale, uno schema logico che lega insieme le tabelle
che andranno a contenere i dati.
Struttura delle tabelle:
- Ogni entità diventa una tabella.
- Gli attributi diventano colonne della tabella.
- Ogni riga rappresenta un record, cioè un caso specifico (es.
uno studente).
Relazioni nel Modello Relazionale
Nel modello relazionale, una relazione rappresenta una
connessione logica tra due (o più) tabelle, cioè tra due entità.
Queste relazioni sono fondamentali per collegare i dati tra loro in
modo coerente e strutturato, e per creare queste connessioni, si
usano le chiavi primarie e chiavi esterne (foreign key).
Esempio di tabelle:
Tabella Studenti
| Matricola | Nome | Età |
|-----------|--------|-----|
| S001 | Luca | 17 |
| S002 | Giulia | 16 |
Tabella Corsi
| CodiceCorso | NomeCorso |
|-------------|---------------|
| C01 | Matematica |
| C02 | Informatica |
Tabella Iscrizioni (Relazione)
| MatricolaStudente | CodiceCorso |
|-------------------|-------------|
| S001 | C01 |
| S002 | C02 |
Tipi di Relazioni
1. Uno a Uno (1:1)
Ogni riga di una tabella è collegata a una sola riga dell'altra.
Esempio: uno studente ha una sola tessera sanitaria.
2. Uno a Molti (1:N)
Una riga della prima tabella può essere collegata a più righe della
seconda.
Esempio: un insegnante può tenere più corsi.
Ma ogni corso ha un solo insegnante.
3. Molti a Molti (N:N)
Più righe della prima tabella possono essere collegate a più righe
della seconda.
Per rappresentarla, si usa una terza tabella (tabella di relazione).
Esempio: uno studente può seguire più corsi, e ogni corso può
essere seguito da più studenti.
Serve una tabella intermedia (es. Iscrizioni) con le chiavi esterne.
Aggiungere un vincolo di integrità conferisce la possibilità di
valutare il corretto rispetto di una data proprietà del database, e
questo può essere:
• intra-relazionale, distinguendosi in vincolo sui valori (ogni vincolo
riguarda un singolo attributo), e vincolo di ennupla (riguarda i valori
su due o più domini ed attributi di una tupla)
• inter-relazionali (referenziali), che riguardano i valori di tuple che
sono contenute in due relazioni diverse
All'interno dei record, possono essere presenti dei valori NULL,
imputabili al fatto che:
• il valore non esista
• il valore non sia conosciuto
• vi sia una mancanza di informazioni circa quel determinato campo
Chiavi e Relazioni
- Superchiave: insieme di uno o più attributi, i cui valori
identificano in modo univoco le tuple di una relazione
- Chiave: superchiave minimale, e cioè un insieme non ridondante
di attributi, per identificare univocamente le tuple della relazione
- Chiave primaria (PK): identifica in modo univoco una riga in una
tabella.
Esempio: Matricola nella tabella Studenti.
- Chiave esterna (FK): è un campo che punta alla chiave primaria di
un’altra tabella.
Serve a creare il legame tra due tabelle.
3. Algebra Relazionale
L’algebra relazionale è un linguaggio matematico per
descrivere operazioni che possiamo fare sulle tabelle del database.
Serve per capire come vengono combinati i dati prima di scrivere
query in SQL.
Operazioni fondamentali:
- Selezione (σ): Filtra le righe di una tabella. Esempio: tutti gli
studenti con età > 16.
- Proiezione (π): Sceglie solo alcune colonne. Esempio: solo i nomi
degli studenti.
- Join (⨝): Combina due tabelle sulla base di un campo comune.
Esempio: unisci Studenti e Prenotazioni.
- Unione, Intersezione, Differenza: Operazioni tra due insiemi di
righe (simile alla teoria degli insiemi).
Esempio:
π Nome (σ Età > 16 (Studenti)) → mostra i nomi degli studenti
maggiori di 16 anni.
4. SQL – Structured Query Language
L’SQL è il linguaggio standardizzato impiegato per lavorare
con un database: per creare le tabelle, inserire dati, fare ricerche
e modifiche.
Comandi base SQL:
-- Creazione della tabella Studenti
CREATE TABLE Studenti (
Matricola TEXT PRIMARY KEY,
Nome TEXT,
Età INTEGER
);
-- Inserimento di un record
INSERT INTO Studenti VALUES ('S001', 'Luca', 17);
-- Ricerca di dati: nomi degli studenti con età > 16
SELECT Nome FROM Studenti WHERE Età > 16;
-- Visualizzazione completa della tabella Libri
SELECT * FROM Libri;
Cose da ricordare:
- I nomi delle tabelle e dei campi devono essere scritti
correttamente.
- I comandi SQL non fanno distinzione tra maiuscole e
minuscole.
- Ogni comando termina con un punto e virgola ';'.
La tabella riassuntiva di seguito riportata, sintetizza i vari strumenti
utilizzati per costruire una base di dati, mettendoli a confronto:
| Strumento | A cosa serve
|
|---------------------------|---------------------------------------------- |
| Modello E-R | Per progettare visivamente le entità e
relazioni|
| Modello relazionale | Per organizzare i dati in tabelle
|
| Algebra relazionale | Per descrivere le operazioni tra tabelle
|
| SQL | Per interrogare e modificare il
database |
Questi strumenti permettono di progettare, costruire e gestire basi
di dati reali: da una biblioteca scolastica, a un sistema di
prenotazione online, fino ai grandi social network o siti di e-
commerce.