Salta al contenuto principale
HPO Software Guide passo passo per creare database 4D e app low-code: dalla prima tabella a un'applicazione aziendale completa.

Alcuni link in questo sito sono link di affiliazione: se acquisti tramite questi, potremmo ricevere una commissione senza alcun costo aggiuntivo per te. Questo non influisce mai sui nostri consigli. Consulta la nostra informativa sugli affiliati per i dettagli. Informativa sulle affiliazioni.

Tutorial sul database 4D: una guida completa

Un tutorial sul database 4D inizia con quattro oggetti principali: tabelle, campi, moduli e metodi. 4D è un database relazionale e una piattaforma di sviluppo di applicazioni di 4D SAS, lanciato per la prima volta nel 1984, che memorizza i dati in un file di struttura proprietario “.4DD” legato a un livello di applicazione compilato o interpretato. Gli sviluppatori definiscono tabelle, creano moduli e allegano codice in un unico ambiente integrato.

Il 4D occupa un posto insolito nel panorama degli strumenti. È una combinazione di motore di database relazionale, ambiente di sviluppo rapido di applicazioni, server Web e progettista di moduli a basso codice. Questa combinazione è il motivo per cui viene adottato da piccoli team: un prodotto copre archiviazione, logica aziendale, interfaccia utente e distribuzione.

Il motore è relazionale nel senso classico: tabelle, chiavi primarie, tabelle associate e relazioni definite nella struttura. Non è SQL first come PostgreSQL o MySQL, sebbene 4D supporti SQL tramite il suo motore SQL e i comandi “Begin SQL” / “End SQL”.

La maggior parte delle attività quotidiane utilizza il linguaggio 4D (storicamente chiamato 4D Language, ora semplicemente codice 4D), che è più vicino a un linguaggio di scripting che a SQL. Questo approccio tutorial sul database 4D aiuta i principianti a comprendere la versatilità dello strumento.

Due fatti architettonici contano fin dall’inizio:

  • Struttura e dati. La struttura (tabelle, campi, moduli, metodi) risiede in un file .4DC/progetto nelle versioni moderne; i dati si trovano nel file di dati “.4DD”. In 4D 20 e versioni successive, i progetti vengono archiviati come una cartella di file di testo, rendendo pratico il controllo della versione con Git. Le strutture binarie .4DB più vecchie sono più difficili da differenziare.
  • Client-server rispetto a utente singolo. Una distribuzione per utente singolo esegue tutto su un singolo computer. Il client-server separa il server 4D (dati + logica aziendale) dal client 4D (UI). La stessa struttura supporta entrambi, ma i roundtrip di rete cambiano il modo in cui è necessario scrivere i loop.

Se provieni da Microsoft Access, il modello mentale si trasferisce bene. Se provieni da uno stack web, aspettati di disimparare alcune abitudini: i moduli 4D sono stateful e guidati dagli eventi, non dalla richiesta-risposta.

Correlato: — Un'interfaccia semplice come un foglio di calcolo posizionata sopra un vero database relazionale, con automazioni, visualizzazioni e interfacce condivisibili..

Passaggio 1: installa e crea la tua prima struttura

Scarica 4D dal sito Web ufficiale 4D (4d.com) per iniziare questo tutorial sul database 4D. In genere sceglierai tra 4D (l’ambiente di sviluppo completo) e 4D Server per la distribuzione. Esiste una modalità di sviluppo locale gratuita per l’apprendimento, ma la distribuzione in produzione richiede una licenza: controlla direttamente i termini di licenza attuali, poiché cambiano da una versione all’altra.

Creazione di un progetto:

  1. Avvia 4D e scegli Nuovo > Progetto.
  2. Assegna un nome al progetto e scegli una cartella. Il moderno 4D crea una cartella di progetto contenente “Progetto/Sorgenti/” con la tua struttura come file di testo.
  3. Si apre l’Editor della struttura. Questa è la tua tela schematica.

L’editor della struttura è il luogo in cui aggiungi le tabelle. A ogni tabella viene assegnato un nome, una serie di campi e, facoltativamente, una chiave primaria generata automaticamente. La convenzione di 4D prevede di prefissare i nomi dei campi in base al tipo — “ID_”, “Nome_”, “Data_”, “Importo_” - sebbene questa sia una questione di stile e non un requisito. La coerenza ripaga in seguito quando si scansionano 200 campi.

Se stai facendo acquisti: — Un generatore di app a basso codice che si collega alla più ampia suite Zoho e prezzi per utente anziché per app..

Tipi di campo che utilizzerai di più: Testo, Alfa, Intero, Longint, Reale, Data, Ora, Booleano, Immagine, BLOB, Oggetto e UUID. Il tipo Object archivia dati strutturati di tipo JSON ed è la scelta moderna per attributi flessibili. I campi UUID sono il tipo di chiave primaria consigliato per le nuove tabelle perché evitano problemi di collisione e rinumerazione con numeri interi incrementati automaticamente nei dati distribuiti o uniti.

Passaggio 2: Progettazione di tabelle e relazioni

La progettazione dello schema in 4D segue regole di normalizzazione relazionale, con una particolarità specifica del 4D: le relazioni sono dichiarate graficamente e comportano un comportamento automatico. Questa è una parte fondamentale di qualsiasi tutorial sul database 4D.

Per creare una relazione, trascina il campo della chiave primaria da una tabella al campo della chiave esterna di un’altra nell’editor della struttura. 4D disegna una linea di relazione e consente di configurare:

Impostazione della relazioneCosa controllaEffetto pratico
Relazioni automaticheSe 4D carica automaticamente i record correlatiConveniente per i moduli; può causare query nascoste nei loop
Uno a molti vs molti a unoDirezione del collegamentoDetermina quale lato detiene la chiave esterna
Nome della tabella correlataIl nome dell’accessore nel codiceDiventa la proprietà a cui fai riferimento, ad es. [Fattura]Cliente
Controllo della cancellazioneCascade, limita o annullaPreviene i record secondari orfani

Un esempio concreto: una tabella “Invoice” con un campo “CustomerID” collegato a “Customer.ID”. Nel codice, “[Fattura]Cliente.Nome” percorre la relazione. Questo è elegante – e pericoloso in un ciclo di oltre 10.000 fatture, perché ogni accesso può attivare una ricerca. La soluzione consiste nell’utilizzare deliberatamente RELATE MANY / RELATE ONE o nel caricare prima i dati correlati in una raccolta.

Compromesso per decidere in anticipo: Le tabelle normalizzate con relazioni dichiarate offrono integrità referenziale e codice semplice, ma riducono le prestazioni in caso di letture di grandi dimensioni. Le tabelle denormalizzate con campi oggetto incorporati sono più veloci da leggere ma inseriscono controlli di integrità nel tuo codice. Per la maggior parte delle applicazioni aziendali per piccoli team, normalizza il nucleo transazionale e denormalizza le tabelle di reporting.

Passaggio 3: crea moduli

I moduli sono il livello dell’interfaccia utente di 4D e sono disponibili in diversi tipi: moduli di dettaglio (un record), moduli di elenco (più record), moduli di input, moduli di output e moduli di progetto (non collegati a una tabella). L’editor del modulo è un’tela drag-and-drop con un elenco di proprietà. Questa è una parte fondamentale di qualsiasi tutorial sul database 4D.

Correlato: — Un generatore di rivolto a portali, directory e strumenti interni, con prezzi forfettari anziché tariffe per utente..

Concetti chiave durante la creazione di un modulo:

  • Sorgente dati. Ogni modulo è collegato a una tabella o a una variabile/espressione per i moduli di progetto.
  • Widget. Campi, pulsanti, caselle di controllo, elenchi a discesa, caselle di riepilogo ed elenchi gerarchici. Le caselle di riepilogo sono il cavallo di battaglia per la visualizzazione dei dati correlati e sono molto più potenti di una semplice griglia.
  • Metodi oggetto. Fare clic con il pulsante destro del mouse su qualsiasi oggetto e allegare un metodo. Il metodo viene eseguito su eventi come “On Load”, “On Clicked”, “On Data Change” e “On Validate”.
  • Metodi del modulo. Il modulo stesso dispone di un metodo per eventi a livello di modulo come “On Load” e “On Unload”.

Un pratico modello per un modulo dei dettagli del cliente: posiziona i campi del cliente, aggiungi una casella di riepilogo collegata a una selezione di fatture di quel cliente e posiziona un pulsante che esegue un metodo per creare una nuova fattura. La selezione della casella di riepilogo è basata su query o relazioni e l’aggiornamento dopo l’inserimento mantiene l’interfaccia utente onesta.

Avvertenza: i moduli 4D sono stateful. Un modulo contiene un record corrente e una selezione corrente. Mescolare lo stato a livello di modulo con i processi in background è la fonte più comune di bug confusi per i nuovi arrivati. Mantieni i lavori di lunga durata in un processo separato e pubblica nuovamente i risultati.

La nostra scelta: — La piattaforma di database relazionale di lunga durata per i team che necessitano di app personalizzate su desktop, Web e dispositivi mobili da un singolo file..

Passaggio 4: scrivere metodi e logica aziendale

In questo tutorial sul database 4D, il codice 4D è suddiviso in metodi, disponibili in diverse versioni:

  • Metodi del database: attivati da eventi del database (avvio, arresto, backup).
  • Metodi tabella: attivati ​​da eventi del record (al salvataggio, all’eliminazione).
  • Metodi modulo e oggetto: attivati ​​da eventi dell’interfaccia utente.
  • Metodi di progetto: le tue funzioni riutilizzabili, richiamabili da qualsiasi luogo.
  • Trigger: esegue operazioni prima/dopo le operazioni sul record, ideale per gli audit trail.

Il moderno codice 4D supporta le classi e la parola chiave “This”, consentendo di scrivere codice orientato agli oggetti anziché solo procedurale. Un metodo di progetto minimo è simile a:

// Metodo del progetto: CreateInvoice
// $1 = ID cliente (UUID)

C_OBJECT($fattura)
$fattura:=ds.Fattura.new()
$fattura.IDCliente:=$1
$fattura.Date:=Current date
$fattura.Status:="Bozza"
$stato:=$fattura.salva()

L’oggetto ds (archivio dati) è il moderno livello di accesso in stile ORM introdotto con ORDA (Object Relational Data Access). ORDA ti consente di lavorare con entità e selezioni di entità anziché con selezioni tradizionali e supporta il concatenamento di query, attributi calcolati e selezioni di entità lato client che riducono i round trip del server. Per nuovi sviluppi, ORDA è il percorso consigliato; I comandi classici come “QUERY” e “CREATE RECORD” funzionano ancora e compaiono nelle codebase più vecchie.

Come decidere: utilizza ORDA per il nuovo codice e tutto ciò che trae vantaggio da query leggibili e concatenabili. Mantieni i comandi classici laddove sono necessari cicli molto stretti su selezioni di grandi dimensioni, perché le selezioni classiche possono essere più efficienti in termini di memoria in alcuni scenari lato server. Misurare piuttosto che supporre.

Passaggio 5: liste valori, query e report

Gli elenchi di valori popolano elenchi a discesa e caselle di riepilogo con un insieme controllato di scelte. 4D supporta diversi tipi di elenchi:

  1. Elenchi statici: valori codificati, ideali per stati e flag.
  2. Elenchi di tabelle: valori estratti da una tabella di riferimento, ideali per clienti, prodotti e categorie.
  3. Elenchi gerarchici: valori padre/figlio, utili per il piano dei conti o gli alberi delle categorie.

Per le query, query() di ORDA accetta una stringa di formula con segnaposto, che evita problemi di injection e si legge chiaramente:

$sel:=ds.Invoice.query("Stato = :1 AND Data >= :2"; "Aperto"; $startDate)

I report in 4D utilizzano l’editor Quick Report per un semplice output tabellare e l’area 4D Write Pro per documenti complessi. Write Pro è un oggetto di elaborazione testi incorporato in un modulo; puoi unire i dati in un modello ed esportarli in formato PDF o DOCX. Per qualsiasi cosa complessa, generare HTML e renderizzarlo in un’area web è spesso più veloce da creare e più facile da stilizzare. Questo conclude questa sezione del tutorial sul database 4d.

Passaggio 6: distribuzione e manutenzione

Le opzioni di distribuzione modellano la tua architettura in questo tutorial sul database 4d:

  • Utente singolo: applicazione e dati su una sola macchina. Il più semplice, senza concorrenza.
  • Client-server: 4D Server contiene dati e logica aziendale; Il client 4D si connette. Ideale per i team LAN.
  • Server Web 4D: 4D serve direttamente endpoint REST e pagine Web. ORDA espone l’accesso REST automatico al tuo archivio dati, il che significa che puoi creare un’interfaccia web sullo stesso schema.
  • 4D per iOS / Android: client mobili generati dalla tua struttura.

I backup sono integrati: 4D Server può pianificare backup automatici e mantenere un journal (file di registro) per il ripristino point-in-time. Abilita il journal prima di andare in diretta, non dopo. Testare un ripristino su una copia dei dati: un backup non testato è una speranza, non un piano.

Controllo della versione: con le strutture in modalità progetto, esegui il commit della cartella Project/Sources/ su Git. Escludere il file di dati e la cartella “DerivedData”. Questo è un vero miglioramento rispetto all’era binaria e vale la pena adottarlo fin dal primo giorno.

Errori comuni e come evitarli

Saltare la disciplina della chiave primaria. Ogni tabella necessita di una chiave primaria stabile e univoca. Gli UUID evitano problemi di rinumerazione causati da numeri interi con incremento automatico quando i record vengono eliminati o uniti.

Inserimento della logica aziendale nei metodi del modulo. I metodi del modulo dovrebbero gestire l’interfaccia utente. Sposta le regole nei metodi o nelle classi del progetto in modo che possano essere riutilizzate da endpoint Web, importazioni e attività pianificate.

Ignorare il diario. Senza di esso, un arresto anomalo durante la scrittura può lasciare il file di dati incoerente. Attivalo.

Ciclo sulle relazioni. L’accesso a [Tabella]Related.Field all’interno di un ciclo di grandi dimensioni moltiplica le query. Precaricare con ORDA o utilizzare “RELATE MANY” una volta.

Trattare 4D come SQL. È possibile utilizzare SQL, ma il codice idiomatico 4D è generalmente più breve e meglio integrato con moduli ed eventi. Impara prima la linguaggio nativo come parte del tutorial sul database 4d.

Percorso di apprendimento e risorse

Inizia con la documentazione ufficiale 4D e il blog degli sviluppatori 4D, che copre ORDA, Write Pro e le modifiche specifiche della versione. Il forum della community 4D è attivo e risponde bene a domande specifiche. Per i fondamenti della progettazione relazionale che si applicano indipendentemente dalla piattaforma, l’articolo di Wikipedia sui database relazionali e la voce SQL forniscono informazioni utili sulla normalizzazione e sulla semantica delle query.

Una sequenza di apprendimento realistica: crea un gestore di contatti a tabella singola, quindi aggiungi una tabella correlata e una casella di riepilogo, quindi aggiungi un elenco di valori e un modulo di query, quindi distribuisci un client-server. Ogni passaggio introduce un nuovo concetto senza travolgerti.

Punti chiave

  • 4D combina un database relazionale, un IDE, un form designer e un server Web in un unico prodotto, adatto a piccoli team che necessitano di fornire rapidamente un’applicazione aziendale personalizzata. Questo tutorial sul database 4D ne evidenzia l’efficienza.
  • Definisci tabelle e relazioni nell’editor di struttura, crea schermate nell’editor di moduli e collega la logica tramite metodi e trigger: i quattro oggetti che compongono ogni applicazione 4D.
  • ORDA (“ds”, entità, selezioni di entità) è il moderno livello di accesso ai dati e la scelta consigliata per il nuovo codice; i comandi classici rimangono validi nei progetti legacy.
  • Utilizza le chiavi primarie UUID, abilita il journal e conferma le strutture in modalità progetto su Git fin dall’inizio per evitare migrazioni dolorose in seguito.
  • Mantieni la logica aziendale fuori dai metodi del modulo e precarica i dati correlati invece di scorrere le relazioni all’interno di ampi cicli.

Fonti e ulteriori letture

  • Database relazionale — Wikipedia: un database relazionale (RDB) è un database basato sul modello relazionale dei dati, come proposto da E. F. Codd nel 1970. Un sistema di gestione di database relazionale (RDBMS…

Domande frequenti

4D è un database SQL?

4D è un database relazionale con un proprio linguaggio nativo e un motore SQL integrato. Puoi emettere istruzioni SQL tramite “Begin SQL” / “End SQL”, ma la maggior parte dello sviluppo 4D utilizza ORDA o comandi 4D classici anziché SQL. Il modello sottostante è relazionale (tabelle, chiavi e relazioni), quindi i concetti SQL vengono trasferiti, anche se la sintassi che scrivi ogni giorno no.

È necessario conoscere la programmazione per utilizzare il 4D?

La conoscenza di base della programmazione è molto utile, poiché i moduli e le regole aziendali sono collegati al codice 4D. Detto questo, l’editor di moduli e le procedure guidate integrati di 4D ti consentono di creare un’applicazione di immissione dati funzionale con un codice minimo.

I citizen developer in genere iniziano con moduli ed elenchi di valori, quindi apprendono i metodi di cui hanno bisogno per un comportamento personalizzato. Per chi è alle prime armi, può essere utile un tutorial sul database 4d.

Qual è la differenza tra ORDA e i classici comandi 4D?

ORDA è un livello di accesso orientato agli oggetti costruito attorno a un archivio dati (“ds”), entità e selezioni di entità, con query concatenabili e supporto per selezioni lato client. I comandi classici come “QUERY”, “CREATE RECORD” e “MODIFY SELECTION” funzionano su selezioni classiche e record correnti. ORDA è l’approccio consigliato per i nuovi sviluppi, mentre i comandi classici rimangono comuni nelle codebase più vecchie.

Le applicazioni 4D possono essere eseguite sul Web o sui dispositivi mobili?

Sì. 4D include un server Web integrato e ORDA può esporre endpoint REST sull’archivio dati, in modo che un front-end del browser possa comunicare con lo stesso schema. 4D offre anche la generazione di client mobili per iOS e Android. Il compromesso è che i client web e mobili devono prestare molta attenzione all’autenticazione e alla quantità di dati restituiti da ciascuna richiesta.

Come posso eseguire il backup sicuro di un database 4D?

Abilita il journal (file di registro) in 4D Server in modo da poter eseguire il ripristino in un determinato momento e pianificare backup automatici anziché fare affidamento su copie manuali. Testa sempre un ripristino rispetto a una copia dei dati prima di averne bisogno in caso di emergenza. Mantieni la struttura sotto il controllo di versione separatamente dal file di dati, poiché cambiano a velocità diverse.

Il 4D è adatto per un’app per piccole imprese?

4D è progettato esattamente per questo scenario: un piccolo team che crea un’applicazione aziendale personalizzata con moduli, report e uno schema relazionale. Si adatta alle distribuzioni client-server e all’accesso Web senza modificare la struttura principale. Le considerazioni principali sono i costi di licenza e il pool di talenti più piccolo rispetto agli stack web tradizionali, quindi è necessario soppesare la manutenzione a lungo termine e la velocità di creazione.

Domande frequenti

4D è un database SQL?

4D è un database relazionale con un proprio linguaggio nativo e un motore SQL integrato. È possibile emettere istruzioni SQL tramite Begin SQL/End SQL, ma la maggior parte dello sviluppo 4D utilizza ORDA o comandi 4D classici anziché SQL. Il modello sottostante è relazionale (tabelle, chiavi e relazioni), quindi i concetti SQL vengono trasferiti, anche se la sintassi che scrivi ogni giorno no.

È necessario conoscere la programmazione per utilizzare il 4D?

La conoscenza di base della programmazione è molto utile, poiché i moduli e le regole aziendali sono collegati al codice 4D. Detto questo, l'editor di moduli e le procedure guidate integrati di 4D ti consentono di creare un'applicazione di immissione dati funzionale con un codice minimo. Gli sviluppatori cittadini in genere iniziano con moduli ed elenchi di valori, quindi apprendono i metodi di cui hanno bisogno per un comportamento personalizzato. Per chi è alle prime armi, può essere utile un tutorial sul database 4d.

Qual è la differenza tra ORDA e i classici comandi 4D?

ORDA è un livello di accesso orientato agli oggetti costruito attorno a un archivio dati (ds), entità e selezioni di entità, con query concatenabili e supporto per selezioni lato client. I comandi classici come QUERY, CREATE RECORD e MODIFY SELECTION funzionano su selezioni classiche e record correnti. ORDA è l'approccio consigliato per i nuovi sviluppi, mentre i comandi classici rimangono comuni nelle codebase più vecchie.

Le applicazioni 4D possono essere eseguite sul Web o sui dispositivi mobili?

SÌ. 4D include un server Web integrato e ORDA può esporre endpoint REST sull'archivio dati, in modo che un front-end del browser possa comunicare con lo stesso schema. 4D offre anche la generazione di client mobili per iOS e Android. Il compromesso è che i client web e mobili devono prestare molta attenzione all'autenticazione e alla quantità di dati restituiti da ciascuna richiesta.

Come posso eseguire il backup di un database 4D in modo sicuro?

Abilita il journal (file di registro) in 4D Server in modo da poter eseguire il ripristino in un determinato momento e pianificare backup automatici anziché fare affidamento su copie manuali. Testare sempre un ripristino rispetto a una copia dei dati prima di averne bisogno in caso di emergenza. Mantieni la struttura sotto il controllo della versione separatamente dal file di dati, poiché cambiano a velocità diverse.

Il 4D è adatto per un'app per piccole imprese?

4D è progettato esattamente per questo scenario: un piccolo team che crea un'applicazione aziendale personalizzata con moduli, report e uno schema relazionale. Si adatta alle distribuzioni client-server e all'accesso Web senza modificare la struttura principale. Le considerazioni principali sono i costi di licenza e il pool di talenti più piccolo rispetto agli stack web tradizionali, quindi è necessario soppesare la manutenzione a lungo termine e la velocità di creazione.


Prova FileMaker gratuitamente per 45 giorni

La piattaforma di database relazionale di lunga durata per i team che necessitano di app personalizzate su desktop, Web e dispositivi mobili da un singolo file.