Un database (o base di dati) è un sistema organizzato per raccogliere, archiviare, e gestire dati in modo che possano essere facilmente accessibili, gestiti e aggiornati. Può essere visto come una raccolta di informazioni strutturate in modo che gli utenti o le applicazioni possano manipolarle e consultarle rapidamente.
Componenti principali di un database:
- Tabelle: Un database è generalmente composto da tabelle, che sono strutture organizzate in righe e colonne. Ogni riga rappresenta un record (un’istanza di dati), e ogni colonna rappresenta un campo (un attributo del record).
Ad esempio, una tabella di clienti potrebbe avere colonne come “Nome”, “Cognome”, “Indirizzo” e “Email”, e ogni riga rappresenta un cliente con i suoi dati. - Record (o Tupla): Ogni riga in una tabella è chiamata record o tupla. Un record è una raccolta di valori, ognuno dei quali corrisponde a un attributo definito dalla colonna.
- Campi (o Colonne): Ogni colonna in una tabella rappresenta un tipo di dato specifico, come numeri, date o stringhe di testo. I campi definiscono le caratteristiche dei dati che vengono archiviati in una tabella. Ogni record nella tabella avrà un valore per ciascun campo.
- Chiavi: Una chiave è un campo o un insieme di campi che identificano univocamente ogni record in una tabella. Esistono vari tipi di chiavi:
- Chiave primaria: È il campo (o insieme di campi) che identifica univocamente ogni record in una tabella. Non può avere valori duplicati o NULL.
- Chiave esterna: È un campo che collega una tabella con un’altra, creando una relazione tra i dati. Si riferisce alla chiave primaria di un’altra tabella.
- Indici: Gli indici sono strutture speciali che velocizzano la ricerca dei dati. Permettono di accedere rapidamente a specifici record basandosi su una o più colonne.
- Relazioni: I database relazionali (i più comuni) organizzano i dati in tabelle e definiscono relazioni tra di esse. Le relazioni possono essere:
- Uno a uno: Un record in una tabella è associato a uno e solo uno record in un’altra tabella.
- Uno a molti: Un record in una tabella è associato a più record in un’altra tabella.
- Molti a molti: Più record in una tabella sono associati a più record in un’altra tabella (solitamente gestito tramite una tabella intermedia).
Tipi di database:
- Database Relazionale (RDBMS – Relational Database Management System):
Questi database organizzano i dati in tabelle e sono basati su un linguaggio di query chiamato SQL (Structured Query Language). Esempi di RDBMS includono:- MySQL
- PostgreSQL
- Oracle Database
- Microsoft SQL Server
- Database NoSQL:
I database NoSQL (Not Only SQL) sono progettati per gestire grandi quantità di dati non strutturati o semi-strutturati, spesso usati per applicazioni moderne come quelle web e mobile. Esempi includono:- MongoDB (documento)
- Cassandra (colonne)
- Redis (chiave-valore)
- Neo4j (grafico)
- Database a Grafo:
Questi database sono ottimizzati per rappresentare e navigare attraverso reti di dati interconnessi. Ad esempio, Neo4j è un database grafico che gestisce dati come reti sociali o mappe di collegamenti. - Database In-Memory:
Questi database memorizzano i dati direttamente nella memoria RAM per una velocità di accesso più rapida. Ad esempio:- Redis (utilizzato per caching e operazioni veloci)
- Memcached (utilizzato per memorizzare oggetti in memoria)
Funzionalità principali di un database:
- Creazione: I dati vengono immagazzinati creando tabelle e definendo le strutture necessarie per l’archiviazione.
- Lettura: I dati possono essere letti e consultati tramite query.
- Aggiornamento: I dati possono essere modificati o aggiornati, ad esempio, inserendo nuovi record o aggiornando quelli esistenti.
- Cancellazione: I dati possono essere eliminati quando non sono più necessari.
Linguaggio di Query SQL:
Il linguaggio di query standard per i database relazionali è SQL (Structured Query Language). Con SQL, è possibile:
- SELECT: estrarre dati.
- INSERT: inserire nuovi dati.
- UPDATE: aggiornare dati esistenti.
- DELETE: eliminare dati.
Perché usare un database?
- Organizzazione: I database consentono di archiviare i dati in modo strutturato e organizzato, facilitando la gestione.
- Efficienza: Con un buon sistema di gestione del database (DBMS), è possibile ottenere prestazioni elevate nella gestione di grandi quantità di dati.
- Integrità dei dati: I database garantiscono la consistenza e la validità dei dati attraverso vincoli (come le chiavi primarie e le chiavi esterne).
- Scalabilità: I database possono crescere facilmente con l’aumento dei dati, soprattutto i sistemi NoSQL che sono progettati per scalare orizzontalmente (su più server).
