Questo sito utilizza cookie per raccogliere dati statistici.
Privacy Policy
# Database
## Introduzione
I **dati** sono le **conoscenze elementari** che caratterizzano una situazione reale, una persona o un’entità, rappresentate in una forma tale da semplificarne la memorizzazione e la conservazione in vista di un futuro utilizzo.
Le **informazioni** sono le conoscenze che si possono ottenere elaborando i dati attraverso operazioni di selezione, raggruppamento, ordinamento, calcolo o confronto.
Un **archivio** è un insieme organizzato di dati che hanno tra loro un nesso logico e che sono registrati su un supporto (cartaceo o digitale), dove è possibile scrivere e leggere. Essi sono rappresentati con un formato che ne facilita l’interpretazione e sono organizzati in modo da rendere veloce il loro reperimento.
<ex>
Un archivio di dati anagrafici contiene i dati sulle persone: Cognome, Nome, Data di nascita, Codice Fiscale, Città.

</ex>
Ognuno di questi dati si chiama campo o **attributo**.
L’insieme dei campi che si riferiscono a una singola persona o entità forma un **record** (letteralmente “registrazione”).
L’archivio è quindi un insieme di record.
In informatica, le operazioni sugli archivi sono operazioni di I/O (Input/Output): dal supporto alla memoria centrale del computer (lettura) e dalla memoria centrale al supporto (scrittura).
Le **principali operazioni** che si possono effettuare su un archivio di dati sono:
* La creazione dell’archivio sul supporto.
* La manipolazione delle informazioni in esso contenute (inserimento, modifica, cancellazione).
* La consultazione e interrogazione dell’archivio fornendo i risultati con visualizzazioni o stampe.
Gli archivi necessari alla gestione di un ente o un’azienda sono normalmente in numero elevato e sono utilizzati da **molte persone contemporaneamente**.

Mettere a disposizione gli **stessi archivi** per persone diverse, che lavorano a uno stesso progetto o in una stessa azienda, significa creare una base di dati per tutti.
In questo modo, le operazioni possono disporre di dati sicuramente **aggiornati** perché le variazioni all’archivio (inserimenti, modifiche o cancellazioni) apportate da un utente sono visibili immediatamente anche agli altri.
Una **base di dati** è un insieme integrato di archivi che possono costituire una base comune di lavoro per utenti diversi con applicazioni diverse.
Questo concetto è fondamentale nella gestione dei database, dove la coerenza e l'aggiornamento dei dati sono critici per assicurare l'affidabilità e l'efficienza delle informazioni.
## Creazione del Database
La costruzione di una base di dati deve essere preceduta da un’attenta analisi e progettazione. Queste prime fase consentono di definire il modello dei dati, cioè identificare le caratteristiche fondamentali della realtà che si vuole automatizzare e gli obiettivi che si vogliono raggiungere.
A tale scopo, osservando una realtà è possibile riconoscere gli elementi che la caratterizzano.
<ex>
Una scuola è caratterizzata dagli studenti e le studentesse, il personale docente e non docente, le materie, le prove di verifica ecc
</ex>
Ognuno di questi elementi costituisce un’**entità** utile a rappresentare la gestione automatizzata della realtà osservata. L’entità possiede poi gli **attributi**, cioè le proprietà che la identificano e la caratterizzano. Tra le entità si stabiliscono le relazioni o associazioni, cioè i collegamenti.
<ex>
Gli attributi dell’entità Studente sono la matricola, il cognome, il nome, la data di nascita, la classe ecc. L’entità Prova ha come attributi il voto, la data di svolgimento, la materia a cui si riferisce. Per conoscere a quale studente o studentessa si riferiscono le prove occorre fissare un collegamento, cioè una relazione, tra l’entità Prova e l’entità Studente.

</ex>
Con la definizione delle entità, degli attributi e delle relazioni si costruisce il **modello concettuale** della realtà osservata.
<ex>
Ecco un esempio di un modello concettuale:

</ex>
Dal modello concettuale si può poi derivare il **modello logico**, cioè le strutture di dati adatte a contenere le informazioni che si riferiscono alle diverse entità.
Il **modello logico** che organizza un insieme di dati attraverso le tabelle, fatte di righe e colonne, si chiama **modello relazionale**
Ogni entità diventa una tabella in cui i titoli delle colonne rappresentano gli attributi, mentre le righe contengono i dati che si riferiscono a uno specifico esemplare dell’entità.
<ex>

</ex>
<im>
Ogni tabella corrisponde a un archivio del database, le righe sono i record dell’archivio e le colonne sono i campi (o attributi) del record.
</im>
Tutte le tabelle hanno un campo **chiave primaria**, costituito da un codice alfanumerico o da un numero identificativo (ID), per distinguere ciascuna riga all’interno della tabella.
Per stabilire poi i collegamenti tra le tabelle occorre aggiungere le **chiavi esterne**.
La chiave primaria e la chiave esterna esprimono due importanti vincoli di integrità:
* **chiave primaria** (**univocità**): data una tabella **non** è possibile inserire in essa due righe uguali.
* **chiave esterna** (**integrità referenziale**): date due tabelle T1 e T2 dove la chiave primaria K1 di T1 corrisponde alla chiave esterna K2 di T2, è possibile inserire in T2 una riga **solo se** il valore assunto dagli attributi di K2 è uguale a un valore assunto dagli attributi di K1 in T1 (che, se esiste, è unico).
L’**indice** è l’elenco delle chiavi associate a ciascun record: l’elenco è mantenuto ordinato secondo i valori crescenti delle chiavi per rendere più veloci le successive operazioni di ritrovamento di un record. Si può definire un indice anche su un campo non chiave per accedere più rapidamente ai dati.
<ac>
**DATABASE PER GESTIRE I PRODOTTI IN UN CENTRO ARREDAMENTI**
Realizza un database per automatizzare la gestione di un Centro Arredamenti.
**Progettare le tabelle:** Individua le entità che caratterizzano la gestione del Centro Arredamenti e definisci una tabella per ogni entità:
- la tabella *Reparti* per organizzare i dati sui reparti del Centro (cucine, bagni, camere ecc.), con codice identificativo, nome del reparto e una breve descrizione;
- la tabella *Fornitori* per i dati sulle aziende che producono o distribuiscono i prodotti, con codice, nome della società, indirizzo, città, CAP, nazione, telefono, email (per brevità nella tabella alla pagina seguente sono state inserite solo le colonne principali);
- la tabella *Prodotti* per il catalogo dei mobili e degli accessori venduti nel Centro Arredamenti, con codice, nome del prodotto, prezzo unitario.

</ac>
## Software per la gestione del database
Il **DBMS** (DataBase Management System) è il software che consente di costruire e gestire una base di dati, realizzando nella pratica su memoria di massa, a partire dal modello logico dei dati.

Le funzioni del DBMS sono:
* l’**implementazione** del modello logico, cioè la definizione delle tabelle con le colonne e l’organizzazione fisica dei dati sui supporti di memorizzazione;
* la **manipolazione** dei dati (inserimento, modifica e cancellazione);
* le **interrogazioni** al database per ritrovare i dati che servono;
* il controllo dell’**integrità** dei dati, cioè la garanzia della consistenza dei dati durante le operazioni di manipolazione;
* la **protezione** dei dati contro malfunzionamenti, interventi dolosi e accessi non autorizzati.
## Creazione delle tabelle
Una tabella è un insieme di dati relativi a una stessa entità. I dati di una tabella vengono rappresentati suddivisi in colonne e righe; nella terminologia informatica convenzionale le colonne vengono denominate campi e le righe record.
Ogni tabella di un database rappresenta una sola tra le entità che caratterizzano la realtà osservata, in modo da mantenere distinti i dati ed evitare anomalie durante le operazioni su un database.
<ex>
Nel database del Centro Arredamenti le informazioni sui reparti sono conservate in una tabella specifica. Le righe dei prodotti non contengono il riferimento al nome del reparto, ma al suo codice: quando si vuole ottenere l’elenco dei prodotti di un reparto, si può essere sicuri di ottenere tutti i dati richiesti, perché il riferimento è scritto in modo uguale per tutti i prodotti di quel reparto. Inoltre, se per qualche motivo il nome del reparto venisse modificato, non si sarebbe costretti ad aggiornarlo in tutte le righe dei prodotti di quel reparto.
</ex>
Per creazione di tabelle si intende la descrizione della struttura della tabella, specificando obbligatoriamente per ogni colonna:
* il **nome** della colonna;
* il **tipo** di dati che essa contiene:
* *testo* (per esempio nomi, titoli, descrizioni);
* *numero* (stipendi, importi);
* *data/ora* (date di nascita, date di registrazione);
* *sì/no* (campi di controllo come pagato, registrato, superato).
Le proprietà del campo possono essere ulteriormente precisate impostando:
* la **dimensione** massima (in byte) prevista per i dati da inserire nella colonna;
* il **formato**, cioè le caratteristiche dei valori che il campo può assumere (per esempio lunghezza in caratteri per i campi di testo, numero intero o reale per i campi numerici);
* il **valore predefinito** (valore di default) che viene inserito nel campo in mancanza di diversa specificazione;
* l’**obbligatorietà** dell’assegnazione di un valore per il campo (richiesto) nel caso in cui il campo debba essere valorizzato e non possa essere lasciato vuoto.
Per avere una rappresentazione precisa delle entità del database e per facilitare le operazioni di ritrovamento dei dati, ogni colonna deve contenere un **dato** **elementare**, non ulteriormente scomponibile: un campo non può avere sottocampi e non ci devono essere campi ripetuti.
<ex>
Le informazioni anagrafiche di una persona sono rappresentate con diversi campi separati: Indirizzo, CAP, Città, Nazione, Telefono, Email. In questo modo un’interrogazione al database consente di ottenere immediatamente l’elenco delle persone di una nazione, perché il dato è disponibile in una colonna specifica.
</ex>