LibreOffice Base si presenta come una soluzione completa e integrata per la gestione di database, adatta a un'ampia varietà di utenti e contesti. La sua forza risiede nella flessibilità e nella capacità di interfacciarsi con diversi sistemi di gestione di database (DBMS) relazionali, oltre a offrire un motore integrato per esigenze più semplici. Questo articolo esplorerà in dettaglio il processo di creazione di un database relazionale utilizzando LibreOffice Base, partendo dalle basi concettuali fino ad arrivare alla configurazione e all'utilizzo pratico.
Comprendere LibreOffice Base: Caratteristiche e Integrazione
Base è un front-end di database che si integra perfettamente nell'ambiente desktop e offre numerose funzionalità interessanti. È stato progettato per soddisfare le necessità di una vasta gamma di utenti in qualsiasi ambito. Base risponde alle esigenze degli utenti più avanzati e delle imprese, fornendo driver nativi per alcuni dei sistemi di gestione di database più diffusi in ambito multiutente, tra cui MySQL, Adabas D, MS Access e PostgreSQL.
Per gli utenti che necessitano di un database per un singolo utente, Base è già configurato con il motore relazionale HSQL. Questa soluzione è ideale per esigenze semplici e per chi cerca un sistema facile da capire e da usare. In questo scenario, i dati vengono immagazzinati direttamente nel file Base, e vi è anche il supporto nativo per file prodotti in ambiente dBase.
Base è molto più di uno strumento da usare autonomamente; è anche perfettamente integrato con tutte le altre applicazioni della suite LibreOffice. Ad esempio, Base può fornire i dati della rubrica per la stampa unione in Writer, utilizzando il protocollo standard LDAP o altri formati di rubrica.

Pianificazione del Database: Fondamenta per il Successo
Prima di iniziare a realizzare fisicamente il nostro database, è fondamentale avere uno schema ben preciso di come impostarlo. Dobbiamo sapere a priori cosa ci sarà utile includere nel database, di quante tabelle avremo bisogno, e se e quali relazioni sono presenti tra di esse. Un approccio metodico nella fase di progettazione è cruciale per evitare problemi futuri e garantire l'efficienza del database.
Questo schema chiaro, ottenuto con il tradizionale metodo con carta e penna, ci guiderà nella creazione delle tabelle e nella definizione delle loro strutture. La comprensione delle entità (le tabelle), degli attributi (i campi) e delle relazioni tra le entità è il primo passo per costruire un database robusto e funzionale.
Creazione delle Tabelle: Definire Struttura e Campi
Una volta definito lo schema, possiamo procedere con la creazione delle tabelle. Per ogni tabella, dobbiamo iniziare ad inserire i campi che ci saranno utili e definirne il rispettivo tipo di campo.
Campi Chiave e Tipi di Dati
È buona norma iniziare inserendo un campo "ID" a cui attribuiremo come tipo di campo "Intero [INTEGER]" e impostare il "valore automatico" su "sì". Questo campo "ID" fungerà da chiave primaria, garantendo un valore univoco per ogni record inserito.
Esempio di Creazione Tabelle
Consideriamo la creazione della tabella "Fornitori". Cliccando su "Crea tabella in vista struttura", inseriamo i campi:
- ID: Tipo di campo "intero [INTEGER]", valore automatico "sì". Questo sarà la chiave primaria della tabella.
- Ragione Sociale: Tipo di campo "Testo [VARCHAR]".
- Indirizzo: Tipo di campo "Testo [VARCHAR]".
- N. Telefono: Tipo di campo "Testo [VARCHAR]".
- P.iva: Tipo di campo "Testo [VARCHAR]".
- Codice Fiscale: Tipo di campo "Testo [VARCHAR]".
Analizziamo ora la creazione di una tabella "Articoli" (non esplicitamente dettagliata nel testo fornito, ma deducibile dal contesto delle relazioni). Per creare la tabella "Articoli", si procederebbe in modo simile, includendo almeno un campo "IDArticolo" come chiave primaria:
- IDArticolo: Tipo di campo "intero [INTEGER]", valore automatico "sì". Chiave primaria.
- Altri campi pertinenti per descrivere l'articolo, ad esempio: "Descrizione Articolo" (Testo [VARCHAR]), "Prezzo Unitario" (Numero [DECIMAL]), "Unità di Misura" (Testo [VARCHAR]).
È importante notare che ai campi che verranno utilizzati per creare relazioni con altre tabelle, come "IDArticolo" e "IDFornitore", è stato attribuito il tipo di campo "INTEGER". Questo perché, come regola generale, per creare una relazione tra due tabelle, i campi utilizzati devono essere dello stesso tipo.

Creazione della Tabella Clienti
Proseguiamo con la creazione della tabella "Clienti", seguendo una logica analoga:
- ID: Tipo di campo "intero [INTEGER]", valore automatico "sì". Chiave primaria.
- Ragione Sociale/Nome: Tipo di campo "Testo [VARCHAR]".
- Indirizzo: Tipo di campo "Testo [VARCHAR]".
- N. Telefono: Tipo di campo "Testo [VARCHAR]".
- P.iva: Tipo di campo "Testo [VARCHAR]".
- Codice Fiscale: Tipo di campo "Testo [VARCHAR]".
Anche in questo caso, se si prevedono relazioni con altre tabelle (ad esempio, una tabella "Ordini" che faccia riferimento a un cliente), si creerà un campo "IDCliente" di tipo "INTEGER" che fungerà da chiave esterna in quella tabella e sarà collegato alla chiave primaria della tabella "Clienti".
Relazioni tra Tabelle: Collegare i Dati
La potenza di un database relazionale risiede nella capacità di collegare dati tra tabelle diverse. Questo permette di evitare ridondanze e di mantenere la coerenza delle informazioni.
Definizione delle Relazioni
Per creare fisicamente le relazioni, è necessario aprire la finestra delle relazioni. In LibreOffice Base, questo si fa solitamente accedendo alla sezione "Strumenti" e selezionando "Relazioni". Qui possiamo aggiungere le tabelle che dobbiamo mettere in relazione.
Supponiamo di voler collegare la tabella "Articoli" con una tabella ipotetica "Acquisti" attraverso il campo "IDArticolo". Cliccheremmo con il tasto sinistro sulla chiave primaria (IDArticolo) della tabella "Articoli" e, tenendo premuto il tasto, la trascineremmo sulla voce "IDArticoli" nella tabella "Acquisti", rilasciando il tutto. Base riconoscerà che si tratta di una relazione uno-a-molti (un articolo può essere presente in molti acquisti) e creerà il legame.

Regole Generali per le Relazioni
Come accennato, una regola generale fondamentale per creare una relazione tra due tabelle è che i due campi utilizzati per il collegamento debbano essere dello stesso tipo di dato. Solitamente, questo implica l'utilizzo di campi numerici interi (come "INTEGER") per le chiavi primarie ed esterne che stabiliscono il legame.
Formulari: Interfacce Utente Intuitive
I formulari (o maschere) offrono un'interfaccia più gradevole e controllata per l'inserimento, la visualizzazione e la modifica dei dati. Permettono di presentare all'utente solo i campi rilevanti e di semplificare le operazioni.
Creazione Guidata dei Formulari
Per creare un formulario, selezioniamo "Formulari" sulla colonna a sinistra del nostro database e clicchiamo su "Usa procedura guidata per la creazione dei formulari". Seguiamo i passaggi della procedura guidata:
- Clicchiamo su "Avanti".
- Proseguiamo con "Avanti" sulla configurazione di un formulario secondario (se non necessario, si può saltare).
- Scegliamo come disporre i nostri campi nel formulario. Personalmente, la disposizione "In colonna testo fisso a sinistra" è spesso preferita per la sua chiarezza.
- Clicchiamo su "Avanti" sulla selezione del modo di inserimento dei dati.
- Clicchiamo su "Avanti" per confermare.
- Applichiamo lo stile e il colore desiderati.
- Impostiamo un nome significativo per il formulario.
- Clicchiamo su "Fine" per completare la creazione.
Modifica dei Formulari
Anche dopo la creazione del formulario, possiamo modificarne la disposizione delle etichette e dei campi, il colore di sfondo, e altro ancora. Per fare ciò, clicchiamo con il tasto destro sul formulario che vogliamo modificare e selezioniamo "Modifica".
- Per cambiare lo sfondo, andiamo su "Formato" → "Pagina".
- Per modificare le dimensioni delle etichette, dei campi o la loro disposizione, clicchiamo con il tasto destro e andiamo su "Raggruppa" → "Separa" per poter agire sui singoli elementi.
- Per modificare il carattere, la dimensione dell'etichetta, clicchiamo con il tasto destro, selezioniamo "Campo di controllo" e nella sezione "Generale" troveremo la voce "Carattere" per effettuare le modifiche.
Aggiungere Pulsanti di Azione
Nei formulari, possiamo aggiungere pulsanti per facilitare determinate azioni, come l'aggiunta di un nuovo record. Per fare questo, andiamo in modalità modifica del formulario, selezioniamo dalla barra degli strumenti a sinistra la voce "Pulsante" e lo posizioniamo sul formulario. Successivamente, nelle proprietà del pulsante, possiamo configurare l'azione (ad esempio, "Aggiungi nuovo record").
045 - Database su Libre Office Base (2) - Formulari
Gestione delle Chiavi Primarie e Contatori
Il campo "ID" con valore automatico funge da chiave primaria, garantendo l'unicità di ogni record. In LibreOffice Base, il campo contatore (ID numerico auto-incrementante) inizia da 0 (zero), a differenza di altri sistemi come Access che iniziano da 1.
Modificare il Valore Iniziale del Contatore
Di solito, questo non comporta un problema, ma ci sono casi in cui il contatore non può partire da 0. Ad esempio, se si usa il contatore di una tabella come protocollo, questo non può partire da zero. Per fare in modo che il contatore inizi a contare da 1 e non da zero, è necessario che la tabella sia vuota. Successivamente, con un paio di comandi SQL si può convertire il valore iniziale da 0 a 1.
Un esempio di comando SQL per reimpostare il contatore a 1 (supponendo che "prova" sia il nome della tabella e "id" il campo con chiave primaria) potrebbe essere:
ALTER TABLE prova ALTER COLUMN id RESTART WITH 1;Questo comando, eseguito in modalità SQL, riavvia il contatore a 1.
Integrazione con Altre Applicazioni LibreOffice
Perché i dati del database vengano utilizzati dagli altri programmi di LibreOffice (come sorgente dati), è necessario registrarlo attraverso l'apposita procedura.
Registrazione del Database
Aprire Base, andare su "Strumenti" → "Opzioni" → "LibreOffice Base" → "Database". Cliccando su "Nuovo", si aprirà la finestra "File del Database". Tramite il pulsante "Sfoglia", selezioniamo il file del database che vogliamo registrare. È consigliabile creare una cartella specifica per il nostro database dove salvare tutti i file correlati, inclusi quelli per un eventuale menu di navigazione.
Creazione di Collegamenti e Menu
Per creare un collegamento a un altro file (ad esempio, un documento Writer che funge da menu), salviamo il file Writer nella stessa cartella del database. Apriamo il file Writer e abilitiamo le barre degli strumenti "Controlli per formulario" e "Navigazione formulario" tramite "Visualizza" → "Barra degli strumenti".
Per creare il collegamento, all'interno del documento Writer, creiamo un "formulario in vista struttura" vuoto. Inseriamo un "Pulsante". Cliccando con il tasto destro sul pulsante e selezionando "Campo di controllo" → "Generale", nella sezione "Operazione" inseriamo "Apri documento/Pagina web". Nella casella "URL", selezioniamo il file del database precedentemente creato. Salviamo il documento Writer, e il nostro primo collegamento sarà pronto.
Query e Campi Calcolati: Estrarre e Manipolare Dati
Le query sono fondamentali per interrogare il database, estrarre informazioni specifiche e creare report. I campi calcolati permettono di eseguire operazioni sui dati esistenti per ottenere nuovi valori.
Campi Calcolati con COALESCE
In una ricerca (query), dove alcuni valori potrebbero non essere presenti, si può utilizzare l'istruzione SQL COALESCE. Questa funzione inserisce un valore se il campo è presente, altrimenti inserisce un valore predefinito da noi impostato, risolvendo così il problema dei valori mancanti.
Ad esempio, per ottenere la giacenza di un articolo sottraendo la quantità venduta da quella acquistata, possiamo creare una query. Questo può essere fatto sia scrivendo il codice SQL interamente, sia utilizzando la modalità struttura della query.
Esempio di Query per Giacenza
Nella modalità struttura di una query, nella prima colonna "Campi considerati" si deve obbligatoriamente riferire alla tabella "Articoli" e al campo "ID". Nella seconda colonna, inseriremo la tabella "Acquisti" e il campo "IDArticolo", stabilendo la relazione a sinistra (che collega "Acquisti" ad "Articoli"). Successivamente, si definirà un campo calcolato che sottragga le quantità.
Un esempio di query SQL per calcolare la giacenza potrebbe essere:
SELECT a.Descrizione, SUM(ac.QuantitaAcquistata) - SUM(ve.QuantitaVenduta) AS GiacenzaFROM Articoli aLEFT JOIN Acquisti ac ON a.IDArticolo = ac.IDArticoloLEFT JOIN Vendite ve ON a.IDArticolo = ve.IDArticoloGROUP BY a.Descrizione;In questo esempio, si utilizzano le JOIN per combinare le tabelle "Articoli", "Acquisti" e "Vendite", e si raggruppano i risultati per articolo per calcolare la giacenza.
Interfacciarsi con Database Esterni: MySQL e PostgreSQL
LibreOffice Base può accedere ai dati memorizzati in numerosi formati di database. Supporta nativamente alcuni formati semplici come dBase. Per database più complessi come MySQL o PostgreSQL, è necessario configurare una connessione.
Connessione Diretta a MySQL
Le versioni più recenti di LibreOffice Base permettono di collegarsi a un database MySQL in modo diretto.
- Nella finestra "Seleziona database", scegliere "Collega a un database esistente" e selezionare "MySQL" dall'elenco.
- Nella finestra "Configura connessione MySQL", selezionare "Connetti in modo diretto".
- Nella finestra "Configura i dati del server MySQL", inserire il "Nome database" assegnato in fase di creazione.
- Selezionare "Server/porta" e inserire nella casella "Server" il nome del server SQL (ad esempio,
sql.tuodominio.comper Ergonet). - Nella finestra "Configura autenticazione utente", inserire il "Nome utente del database" e selezionare la casella "Password richiesta".
- Nella finestra "Autenticazione richiesta", inserire la password definita in fase di creazione del database.
Se la prova di connessione ha successo, salvare il file di LibreOffice Base. In ambiente Linux, potrebbe essere necessario assicurarsi che il pacchetto libreoffice-sdbc-mysql sia installato.

Gestione di Database Online
Per chi gestisce database online, specialmente tramite un CMS (come Drupal, Joomla!, WordPress), è comune la necessità di gestire comodamente basi di dati. Strumenti come phpMyAdmin sono ottimi per la gestione di database sul web in modo potente e preciso, a patto che sia presente un server SQL.
SQL: Il Linguaggio Standard dei Database Relazionali
Il linguaggio SQL (Structured Query Language) è l'interfaccia standard per la creazione, la manipolazione e il controllo dei database relazionali. Nato negli anni '70, è stato standardizzato da ANSI e ISO negli anni '80 e '90, evolvendosi nel tempo.
SQL può essere suddiviso in quattro sottolinguaggi principali:
- DDL (Data Definition Language): Definisce la struttura delle relazioni del database, la creazione di tabelle e la definizione dei dati al loro interno (es.
CREATE TABLE,ALTER TABLE). - DML (Data Manipulation Language): Permette di modificare i dati contenuti nel database tramite operazioni di inserimento, variazione e cancellazione (es.
INSERT,UPDATE,DELETE). - DCL (Data Control Language): Gestisce i permessi di accesso alle risorse del database (es.
GRANT,REVOKE). - QL (Query Language): Il fulcro di quasi tutte le attività legate ai database, utilizzato per porre interrogazioni ai dati (es.
SELECT).
Esercitazione Guidata con SQL
Un'esercitazione pratica può consolidare la comprensione di SQL. Ad esempio, aprendo LibreOffice Base, salvando il lavoro con un nome appropriato (es. "automobili.odb"), si può accedere alla finestra SQL tramite "Strumenti" → "SQL".
Qui si possono eseguire comandi come:
CREATE TABLE "auto" (targa VARCHAR(7) PRIMARY KEY, modello VARCHAR(50), cilindrata INTEGER);Questo comando crea una tabella chiamata "auto" con i campi specificati. Successivamente, si possono creare altre tabelle e definire relazioni, come visto precedentemente, utilizzando comandi CREATE TABLE e FOREIGN KEY.
Vincoli (Constraints) in SQL
I vincoli (CONSTRAINTS) sono condizioni che devono essere verificate da ogni istanza del database per garantire l'integrità dei dati.
- NOT NULL: L'attributo non può essere lasciato vuoto.
- UNIQUE: Assicura che tutti i valori in una colonna siano diversi.
- PRIMARY KEY: Definisce uno o più campi i cui valori identificano in modo univoco ciascun record della tabella.
- FOREIGN KEY: Permette di creare un legame permanente tra diverse tabelle, facendo riferimento alla chiave primaria di un'altra tabella.
Modifica di una Tabella con ALTER TABLE
La struttura di una tabella può essere modificata con il comando ALTER TABLE. Questo comando consente la variazione degli attributi, del dominio (tipo di dato), degli indici e dei vincoli. Ad esempio, per aggiungere una colonna:
ALTER TABLE auto ADD COLUMN colore VARCHAR(20);È importante notare che la modifica dei domini è subordinata alla compatibilità rispetto al contenuto della tabella. Se, ad esempio, un campo VARCHAR viene modificato in INTEGER, solo i valori numerici verranno trasferiti.
Considerazioni Avanzate
Gestione delle Complessità del Database
La complessità di un database può variare notevolmente. Un database molto semplice potrebbe consistere in un'unica tabella (non relazionale), mentre database più complessi richiedono una progettazione attenta delle relazioni e delle viste.
Alternative a LibreOffice Base
Per chi è abituato a soluzioni proprietarie come Microsoft Office Access, è possibile adattare molte delle procedure descritte. Tuttavia, l'adozione di software open-source come LibreOffice offre vantaggi in termini di costi e flessibilità.
Sicurezza e Accesso Remoto
Quando si gestiscono database online, la sicurezza è fondamentale. Abilitare l'accesso remoto al database con restrizioni basate sull'indirizzo IP può migliorare la sicurezza, consentendo l'accesso solo da fonti autorizzate.
Conclusione
LibreOffice Base offre un ambiente potente e flessibile per la creazione e la gestione di database relazionali. Dalla pianificazione iniziale alla definizione delle tabelle, dalla creazione di relazioni all'utilizzo di formulari intuitivi, fino all'interfacciamento con database esterni tramite SQL, Base fornisce gli strumenti necessari per gestire i dati in modo efficiente e organizzato. La sua integrazione con il resto della suite LibreOffice ne amplifica ulteriormente l'utilità, rendendolo una scelta eccellente per utenti individuali e piccole imprese.
tags: #creare #database #relazionale #con #libreoffice
