Hoppa till huvudinnehåll
HPO Software Steg-för-steg-guider för 4D-databaser och low-code-appar – från din första tabell till en färdig företagsapp.

Vissa länkar på denna webbplats är affiliatelänkar: om du handlar via dem kan vi få en provision utan extra kostnad för dig. Detta påverkar aldrig våra rekommendationer. Se vår affiliatedeklaration för mer information. Ansvarsfriskrivning för affiliate.

4D Databas Handledning: En komplett guide

En 4D-databashandledning börjar med fyra huvudobjekt: tabeller, fält, formulär och metoder. 4D är en relationsdatabas och applikationsutvecklingsplattform från 4D SAS, som först lanserades 1984, som lagrar data i en proprietär “.4DD”-strukturfil kopplad till ett kompilerat eller tolkat applikationslager. Utvecklare definierar tabeller, bygger formulär och bifogar kod i en integrerad miljö.

4D intar en ovanlig plats i verktygslandskapet. Det är en kombination av relationsdatabasmotor, snabb applikationsutvecklingsmiljö, webbserver och formdesigner med låg kod. Denna kombination är anledningen till att små team använder det: en produkt täcker lagring, affärslogik, användargränssnitt och driftsättning.

Motorn är relationell i klassisk mening: tabeller, primärnycklar, tillhörande tabeller och relationer definierade i strukturen. Det är inte SQL först som PostgreSQL eller MySQL, även om 4D stöder SQL via sin SQL-motor och kommandon Begin SQL / End SQL. De flesta dagliga uppgifter använder 4D:s eget språk (historiskt kallat 4D Language, nu helt enkelt 4D-kod), vilket är närmare ett skriptspråk än SQL. Denna 4D-databashandledningsmetod hjälper nybörjare att förstå verktygets mångsidighet.

Två arkitektoniska fakta är tidigt viktiga:

  • Struktur kontra data. Strukturen (tabeller, fält, formulär, metoder) finns i en .4DC/projektfil i moderna versioner; data finns i datafilen .4DD. I 4D 20 och senare lagras projekt som en mapp med textfiler, vilket gör versionskontroll med Git praktisk. Äldre “.4DB” binära strukturer är svårare att skilja på.
  • Klientserver kontra en användare. En enanvändardistribution kör allt på en enda dator. Klientservern separerar 4D-servern (data + affärslogik) från 4D-klienten (UI). Samma struktur stöder båda, men nätverksanrop ändrar hur du behöver skriva loopar.

Om du kommer från Microsoft Access överförs den mentala modellen bra. Om du kommer från en webbstack, förvänta dig att lära dig några vanor: 4D-formulär är statistiska och händelsedrivna, inte request-response.

Steg 1: Installera och skapa din första struktur

Ladda ner 4D från den officiella 4D-webbplatsen (4d.com) för att börja denna 4d-databashandledning. Du kommer vanligtvis att välja mellan 4D (den fullständiga utvecklingsmiljön) och 4D Server för distribution. Det finns ett gratis lokalt utvecklingsläge för inlärning, men distribution till produktion kräver en licens: kontrollera de aktuella licensvillkoren direkt, eftersom de ändras från utgåva till utgåva.

Relaterat: — Den långvariga relationsdatabasplattformen för team som behöver anpassade appar på skrivbordet, webben och mobilen från en enda fil..

Skapa ett projekt:

  1. Starta 4D och välj Nytt > Projekt.
  2. Namnge projektet och välj en mapp. Modern 4D skapar en projektmapp som innehåller Project/Sources/ med din struktur som textfiler.
  3. Strukturredigeraren öppnas. Det här är din schematiska duk.

Strukturredigeraren är där du lägger till tabeller. Varje tabell får ett namn, en uppsättning fält och eventuellt en automatiskt genererad primärnyckel. 4D:s konvention är att prefixa fältnamn efter typ — ID_, Namn_, Datum_, Amount_ – även om detta är en stilfråga och inte ett krav. Konsekvens lönar sig senare när du skannar 200 fält.

Fälttyper du kommer att använda mest: Text, Alpha, Heltal, Longint, Real, Date, Time, Boolean, Picture, BLOB, Object och UUID. Typen Object lagrar JSON-liknande strukturerad data och är det moderna valet för flexibla attribut. UUID-fält är den rekommenderade primärnyckeltypen för nya tabeller eftersom de undviker kollisions- och omnumreringsproblem med automatiskt inkrementerade heltal i distribuerade eller sammanslagna data.

Om du handlar: — En appbyggare med låg kod som ansluts till den bredare Zoho-sviten och priser per användare snarare än per app..

Steg 2: Designa tabeller och relationer

Schemadesign i 4D följer regler för relationell normalisering, med en särart som är specifik för 4D: relationer deklareras grafiskt och involverar automatiskt beteende. Detta är en viktig del av alla 4d-databashandledningar.

För att skapa en relation, dra det primära nyckelfältet från en tabell till det främmande nyckelfältet i en annan i strukturredigeraren. 4D ritar en relationslinje och låter dig konfigurera:

RelationsinställningVad den kontrollerarPraktisk effekt
Automatiska relationerHuruvida 4D automatiskt laddar relaterade posterBekvämt för formulär; kan orsaka dolda frågor i loopar
En-till-många vs många-till-enLänkens riktningBestämmer vilken sida som har den främmande nyckeln
Relaterat tabellnamnAccessornamnet i kodenBlir den egendom du refererar, t.ex. [Faktura]Kund
RaderingskontrollKaskadera, begränsa eller upphävaFörhindrar föräldralösa underposter

Ett konkret exempel: en Faktura-tabell med ett CustomerID-fält kopplat till Customer.ID. I koden, “[Faktura]Customer.Name” går relationen. Detta är elegant – och farligt i en slinga över 10 000 fakturor, eftersom varje åtkomst kan utlösa en uppslagning. Korrigeringen är att medvetet använda RELATE MANY / RELATE ONE, eller att ladda relaterade data till en samling först.

Kompromissa för att bestämma tidigt: Normaliserade tabeller med deklarerade relationer ger dig referensintegritet och enkel kod, men kostar prestanda vid stora läsningar. Denormaliserade tabeller med inbäddade objektfält är snabbare att läsa men flytta integritetskontroller i din egen kod. För de flesta affärsapplikationer för små team, normalisera transaktionskärnan och denormalisera rapporttabellerna.

Steg 3: Skapa formulär

Formulär är användargränssnittslagret i 4D och de finns i flera typer: detaljformulär (en post), listformulär (flera poster), inmatningsformulär, utdataformulär och projektformulär (ej länkat till en tabell). Formulärredigeraren är en dra-och-släpp-duk med en lista över egenskaper. Detta är en viktig del av alla 4d-databashandledningar.

Nyckelbegrepp när du skapar ett formulär:

Relaterat: — En databasbyggare utan kod som syftar till portaler, kataloger och interna verktyg – med schablonpris i stället för avgifter per användare..

  • Datakälla. Varje formulär är länkat till en tabell, eller till en variabel/uttryck för projektformulär.
  • Widgets. Fält, knappar, kryssrutor, rullgardinslistor, listrutor och hierarkiska listor. Listrutor är arbetshästen för att visa relaterad data och är mycket kraftfullare än ett enkelt rutnät.
  • Objektmetoder. Högerklicka på ett objekt och bifoga en metod. Metoden körs på händelser som On Load, On Clicked, On Data Change och On Validate.
  • Formulärmetoder. Själva formuläret har en metod för formulärnivåhändelser som On Load och On Unload.

En praktisk mall för ett kunddetaljformulär: placera kundfält, lägg till en listruta länkad till ett urval av fakturor från den kunden och placera en knapp som utför en metod för att skapa en ny faktura. Valet av listruta är fråge- eller relationsdrivet, och om du uppdaterar det efter infogning håller användargränssnittet uppdaterat.

Varning: 4D-formulär är statistiska. Ett formulär innehåller en aktuell post och ett aktuellt urval. Att blanda tillstånd på formnivå med bakgrundsprocesser är den vanligaste källan till förvirrande buggar för nykomlingar. Behåll långvariga jobb i en separat process och publicera resultaten tillbaka.

Steg 4: Skriv metoder och affärslogik

I denna 4D-databashandledning är 4D-koden uppdelad i metoder, som finns i flera versioner:

Vårt val: — Ett enkelt kalkylarksgränssnitt som sitter ovanpå en riktig relationsdatabas, med automatiseringar, vyer och delbara gränssnitt..

  • Databasmetoder — utlöses av databashändelser (start, avstängning, vid säkerhetskopiering).
  • Tabellmetoder — utlöses av posthändelser (vid spara, vid radering).
  • Formulär och objektmetoder — triggas av UI-händelser.
  • Projektmetoder — dina återanvändbara funktioner, anropbara från var som helst.
  • Triggers: Utför operationer före/efter postoperationer, idealiskt för revisionsspår.

Modern 4D-kod stöder klasser och nyckelordet “This”, vilket gör att du kan skriva objektorienterad kod snarare än bara procedur. En minimal projektmetod ser ut så här:

// Projektmetod: CreateInvoice
// $1 = kund-ID (UUID)

C_OBJECT($faktura)
$invoice:=ds.Invoice.new()
$invoice.CustomerID:=$1
$invoice.Date:=Aktuellt datum
$invoice.Status:="Utkast"
$status:=$invoice.save()

ds-objektet (datalagret) är det moderna åtkomstskiktet i ORM-stil som introducerats med ORDA (Object Relational Data Access). ORDA låter dig arbeta med entiteter och entitetsval istället för traditionella val, och stöder frågekedja, beräknade attribut och entitetsval på klientsidan som minskar serverns tur och retur. För nya utvecklingar är ORDA den rekommenderade vägen; Klassiska kommandon som “QUERY” och “CREATE RECORD” fungerar fortfarande och visas i äldre kodbaser.

Hur man bestämmer sig: Använd ORDA för ny kod och allt som drar nytta av läsbara och kedjabara frågor. Behåll klassiska kommandon där du behöver mycket snäva loopar över stora urval, eftersom klassiska val kan vara mer minneseffektiva i vissa scenarier på serversidan. Mät istället för att anta.

Steg 5: Värdelistor, frågor och rapportering

Värdelistor fyller rullgardinslistor och listrutor med en kontrollerad uppsättning val. 4D stöder flera typer av listor:

  1. Statiska listor — hårdkodade värden, idealiska för statuser och flaggor.
  2. Tabelllistor — värden extraherade från en referenstabell, idealiska för kunder, produkter och kategorier.
  3. Hierarkiska listor — överordnade/underordnade värden, användbara för kontoplaner eller kategoriträd.

För frågor accepterar ORDAs query() en formelsträng med platshållare, som undviker injektionsproblem och läser tydligt:

$sel:=ds.Invoice.query("Status = :1 AND Date >= :2"; "Öppen"; $startDatum)

Rapportering i 4D använder Quick Report-redigeraren för enkel utdata i tabellform och området 4D Write Pro för omfattande dokument. Write Pro är ett ordbehandlingsobjekt inbäddat i en form; du kan slå samman data till en mall och exportera den till PDF- eller DOCX-format. För allt som är komplext är det ofta snabbare att skapa HTML och rendera det till ett webbområde och enklare att utforma. Detta avslutar det här avsnittet av 4d-databasens handledning.

Steg 6: Distribuera och underhålla

Implementeringsalternativ formar din arkitektur i denna 4d-databashandledning:

  • En användare: applikation och data på en enda maskin. Det enklaste, ingen samtidighet.
  • Client-server — 4D Server innehåller data och affärslogik; 4D-klienten ansluter. Idealisk för LAN-team.
  • 4D webbserver — 4D betjänar REST-slutpunkter och webbsidor direkt. ORDA exponerar automatisk REST-åtkomst till ditt datalager, vilket innebär att du kan skapa ett webbgränssnitt på samma schema.
  • 4D för iOS / Android — mobila klienter genererade från din struktur.

Säkerhetskopieringar är inbyggda: 4D Server kan schemalägga automatiska säkerhetskopieringar och underhålla en journal (loggfil) för punkt-i-tid återställning. Aktivera journalen innan den går live, inte efter. Testa en återställning på en kopia av data: En oprövad säkerhetskopia är ett hopp, inte en plan.

Versionskontroll: Med strukturer i projektläge, överför mappen Project/Sources/ till Git. Uteslut datafilen och mappen DerivedData. Detta är en verklig förbättring jämfört med den binära eran och värt att anta från dag ett.

Vanliga misstag och hur man undviker dem

Hoppa över huvudnyckeldisciplin. Varje tabell behöver en stabil och unik primärnyckel. UUID:er undviker omnumreringsproblem som orsakas av automatiskt ökande heltal när poster tas bort eller slås samman.

Inför affärslogik i formulärmetoder. Formulärmetoder bör hantera användargränssnittet. Flytta regler till projektmetoder eller klasser så att de kan återanvändas av webbslutpunkter, importer och schemalagda uppgifter.

Ignorera journalen. Utan den kan en krasch under skrivning göra datafilen inkonsekvent. Slå på den.

Slinga över relationer. Att få åtkomst till [Table]Related.Field i en stor loop multiplicerar frågor. Förladda med ORDA eller använd “RELATE MANY” en gång.

Behandla 4D som SQL. Du kan använda SQL, men idiomatisk 4D-kod är i allmänhet kortare och bättre integrerad med formulär och händelser. Lär dig modersmålet först som en del av din 4d-databashandledning.

Inlärningsväg och resurser

Börja med den officiella 4D-dokumentationen och 4D-utvecklarbloggen, som täcker ORDA, Write Pro och versionsspecifika ändringar. 4D-gemenskapsforumet är aktivt och svarar bra på specifika frågor. För grunderna i relationsdesign som gäller oavsett plattform, ger Wikipedia-artikeln om relationsdatabaser och SQL-post användbar information om frågenormalisering och semantik.

En realistisk inlärningssekvens: skapa en kontakthanterare för en enda tabell, lägg sedan till en relaterad tabell och listruta, lägg sedan till en värdelista och ett frågeformulär och distribuera sedan en klient-server. Varje steg introducerar ett nytt koncept utan att överväldiga dig.

Viktiga slutsatser

  • 4D kombinerar en relationsdatabas, IDE, formulärdesigner och webbserver i en enda produkt, lämplig för små team som snabbt behöver leverera en anpassad affärsapplikation. Denna 4d-databashandledning belyser dess effektivitet.
  • Definiera tabeller och relationer i strukturredigeraren, skapa skärmar i formulärredigeraren och bifoga logik via metoder och triggers: de fyra objekten som utgör varje 4D-applikation.
  • ORDA (ds, entiteter, entitetsval) är det moderna dataåtkomstlagret och det rekommenderade valet för ny kod; klassiska kommandon förblir giltiga i äldre projekt.
  • Använd UUID-primärnycklar, aktivera journalen och commit-a strukturer i projektläge till Git från början för att undvika smärtsamma migreringar senare.
  • Håll affärslogiken utanför formulärmetoder och förladda relaterade data istället för att traversera relationer inuti stora loopar.

Källor & vidare läsning

  • Relationsdatabas — Wikipedia: En relationsdatabas (RDB) är en databas baserad på den relationella modellen av data, som föreslogs av E. F. Codd 1970. A Management System (RDBMS…

Vanliga frågor

Är 4D en SQL-databas?

4D är en relationsdatabas med ett eget inbyggt språk och en integrerad SQL-motor. Du kan utfärda SQL-satser via Begin SQL / End SQL, men det mesta av 4D-utvecklingen använder ORDA eller klassiska 4D-kommandon snarare än SQL. Den underliggande modellen är relationell (tabeller, nycklar och relationer), så SQL-begrepp överförs, även om syntaxen du skriver varje dag inte gör det.

Behöver jag kunna programmering för att kunna använda 4D?

Grundläggande programmeringskunskaper är mycket användbara, eftersom formulär och affärsregler är kopplade till 4D-kod. Som sagt, 4D:s inbyggda formulärredigerare och guider låter dig skapa en funktionell datainmatningsapplikation med minimal kod. Citizen developers börjar vanligtvis med formulär och värdelistor och lär sig sedan de metoder de behöver för anpassat beteende. För de som börjar kan en 4d-databashandledning vara till hjälp.

Vad är skillnaden mellan ORDA och klassiska 4D-kommandon?

ORDA är ett objektorienterat åtkomstlager byggt kring ett datalager (ds), entiteter och entitetsval, med kedjebara frågor och stöd för val på klientsidan. Klassiska kommandon som “QUERY”, “CREATE RECORD” och “MODIFY SELECTION” fungerar på klassiska val och aktuella poster. ORDA är det rekommenderade tillvägagångssättet för nyutveckling, medan klassiska kommandon fortfarande är vanliga i äldre kodbaser.

Kan 4D-applikationer köras på webben eller mobilen?

Ja. 4D inkluderar en inbyggd webbserver och ORDA kan exponera REST-slutpunkter över ditt datalager, så ett webbläsargränssnitt kan kommunicera med samma schema. 4D erbjuder även mobil klientgenerering för iOS och Android. Avvägningen är att webb- och mobilklienter måste vara mycket uppmärksamma på autentisering och mängden data som returneras av varje begäran.

Hur säkerhetskopierar jag en 4D-databas på ett säkert sätt?

Aktivera journalen (loggfilen) i 4D Server så att du kan återställa till en tidpunkt och schemalägga automatiska säkerhetskopieringar istället för att förlita dig på manuella kopior. Testa alltid en återställning mot en kopia av data innan du behöver den i en nödsituation. Håll strukturen under versionskontroll separat från datafilen, eftersom de ändras i olika takt.

Är 4D lämplig för en app för småföretag?

4D är designat för exakt detta scenario: ett litet team som skapar en anpassad affärsapplikation med formulär, rapporter och ett relationsschema. Det skalas till klient-server-distributioner och webbåtkomst utan att ändra kärnstrukturen. De viktigaste övervägandena är licenskostnader och den mindre talangpoolen jämfört med vanliga webbstackar, så långsiktigt underhåll och utvecklingshastighet måste vägas.

Vanliga frågor

Är 4D en SQL-databas?

4D är en relationsdatabas med ett eget modersmål och en integrerad SQL-motor. Du kan utfärda SQL-satser via Begin SQL / End SQL, men de flesta 4D-utvecklingar använder ORDA eller klassiska 4D-kommandon snarare än SQL. Den underliggande modellen är relationell (tabeller, nycklar och relationer), så SQL-begrepp överförs, även om syntaxen du skriver varje dag inte gör det.

Behöver jag kunna programmering för att använda 4D?

Grundläggande programmeringskunskaper är mycket användbara, eftersom formulär och affärsregler är kopplade till 4D-kod. Som sagt, 4D:s inbyggda formulärredigerare och guider låter dig skapa en funktionell datainmatningsapplikation med minimal kod. Medborgarutvecklare börjar vanligtvis med formulär och värdelistor och lär sig sedan de metoder de behöver för anpassat beteende. För de som börjar kan en 4d-databashandledning vara till hjälp.

Vad är skillnaden mellan ORDA och klassiska 4D-kommandon?

ORDA är ett objektorienterat åtkomstlager byggt kring ett datalager (ds), entiteter och entitetsval, med kedjebara frågor och stöd för val på klientsidan. Klassiska kommandon som QUERY, CREATE RECORD och MODIFY SELECTION fungerar på klassiska val och aktuella poster. ORDA är det rekommenderade tillvägagångssättet för nyutveckling, medan klassiska kommandon fortfarande är vanliga i äldre kodbaser.

Kan 4D-applikationer köras på webben eller mobilen?

Ja. 4D inkluderar en inbyggd webbserver och ORDA kan exponera REST-slutpunkter över ditt datalager, så ett webbläsargränssnitt kan kommunicera med samma schema. 4D erbjuder även mobil klientgenerering för iOS och Android. Avvägningen är att webb- och mobilklienter måste vara mycket uppmärksamma på autentisering och mängden data som returneras av varje begäran.

Hur säkerhetskopierar jag en 4D-databas på ett säkert sätt?

Aktivera journalen (loggfilen) i 4D Server så att du kan återställa till en tidpunkt och schemalägga automatiska säkerhetskopieringar istället för att förlita dig på manuella kopior. Testa alltid en återställning mot en kopia av data innan du behöver den i en nödsituation. Håll strukturen under versionskontroll separat från datafilen, eftersom de ändras i olika takt.

Är 4D lämplig för en app för småföretag?

4D är designat för exakt detta scenario: ett litet team som skapar en anpassad affärsapplikation med formulär, rapporter och ett relationsschema. Det skalas till klient-server-distributioner och webbåtkomst utan att ändra kärnstrukturen. De viktigaste övervägandena är licenskostnader och den mindre talangpoolen jämfört med vanliga webbstackar, så långsiktigt underhåll och bygghastighet måste vägas.


Bygg din första bas på några minuter

Ett enkelt kalkylarksgränssnitt som sitter ovanpå en riktig relationsdatabas, med automatiseringar, vyer och delbara gränssnitt.