4D Database Tutorial: En komplet vejledning
En 4D-databasetutorial begynder med fire hovedobjekter: tabeller, felter, formularer og metoder. 4D er en relationel database og applikationsudviklingsplatform fra 4D SAS, første gang lanceret i 1984, og lagrer data i en proprietær “.4DD” strukturfil knyttet til et kompileret eller fortolket applikationslag. Udviklere definerer tabeller, bygger formularer og vedhæfter kode i ét integreret miljø.
4D indtager en usædvanlig plads i værktøjslandskabet. Det er en kombination af relationel databasemotor, et hurtigt applikationsudviklingsmiljø, en webserver og en formdesigner med lav kode. Denne kombination er grunden til, at små teams anvender det: ét produkt dækker opbevaring, forretningslogik, brugergrænseflade og implementering.
Motoren er relationel i klassisk forstand: tabeller, primærnøgler, tilknyttede tabeller og relationer defineret i strukturen. Det er ikke SQL først som PostgreSQL eller MySQL, selvom 4D understøtter SQL via sin SQL-motor og ‘Begin SQL’ / ‘End SQL’-kommandoer. De fleste daglige opgaver bruger 4Ds eget sprog (historisk kaldet 4D Language, nu blot 4D-kode), som er tættere på et scriptsprog end SQL. Denne 4D-database-tutorial-tilgang hjælper begyndere med at forstå værktøjets alsidighed.
To arkitektoniske fakta er vigtige fra starten:
- Struktur versus data. Strukturen (tabeller, felter, formularer, metoder) ligger i en
.4DC/projektfil i moderne versioner; dataene er i datafilen.4DD. I 4D 20 og nyere er projekter gemt som en mappe med tekstfiler, hvilket gør versionskontrol med Git praktisk. Ældre ‘.4DB’ binære strukturer er sværere at adskille. - Klientserver versus enkeltbruger. En enkeltbrugerimplementering kører alt på en enkelt maskine. Klient-serveren adskiller 4D-serveren (data + forretningslogik) fra 4D-klienten (UI). Den samme struktur understøtter begge dele, men netværksrundture ændrer, hvordan du skal skrive loops.
Hvis du kommer fra Microsoft Access, overføres den mentale model godt. Hvis du kommer fra en webstack, skal du forvente at aflære nogle vaner: 4D-formularer er tilstandsbaserede og begivenhedsdrevne, ikke anmodningssvar.
Trin 1: Installer og opret din første struktur
Download 4D fra det officielle 4D-websted (4d.com) for at begynde denne 4d-databasevejledning. Du vil typisk vælge mellem 4D (det fulde udviklingsmiljø) og 4D Server til udrulning. Der er en gratis lokal udviklingstilstand til læring, men implementering til produktion kræver en licens: Tjek de aktuelle licensvilkår direkte, efterhånden som de ændres fra udgivelse til udgivelse.
Relateret: — En regneark-simpel grænseflade, der sidder oven på en rigtig relationel database, med automatiseringer, visninger og delbare grænseflader..
Oprettelse af et projekt:
- Start 4D og vælg Ny > Projekt.
- Navngiv projektet, og vælg en mappe. Moderne 4D opretter en projektmappe indeholdende
Project/Sources/med din struktur som tekstfiler. - Structure Editor åbnes. Dette er dit skematiske lærred.
Struktureditoren er det sted, hvor du tilføjer tabeller. Hver tabel får et navn, et sæt felter og eventuelt en automatisk genereret primærnøgle. 4D’s konvention er at præfikse feltnavne efter type - ID_, Navn_, Dato_, Amount_ - selvom dette er et spørgsmål om stil og ikke et krav. Konsistens betaler sig senere, når du scanner 200 felter.
Felttyper, du vil bruge mest: Tekst, Alfa, Heltal, Langint, Real, Dato, Tid, Boolean, Billede, BLOB, Objekt og UUID. Object-typen gemmer JSON-lignende strukturerede data og er det moderne valg for fleksible attributter. UUID-felter er den anbefalede primære nøgletype til nye tabeller, fordi de undgår kollisions- og omnummereringsproblemer med automatisk inkrementerede heltal i distribuerede eller flettede data.
Hvis du handler: — En lavkode-appbygger, der tilsluttes den bredere Zoho-suite og priser pr. bruger i stedet for pr. app..
Trin 2: Design tabeller og relationer
Skemadesign i 4D følger relationelle normaliseringsregler, med en særlig egenskab for 4D: relationer erklæres grafisk og involverer automatisk adfærd. Dette er en vigtig del af enhver 4d database tutorial.
For at oprette en relation skal du trække det primære nøglefelt fra én tabel til fremmednøglefeltet i en anden i struktureditoren. 4D tegner en relationslinje og giver dig mulighed for at konfigurere:
| Relationsindstilling | Hvad det styrer | Praktisk effekt |
|---|---|---|
| Automatiske relationer | Om 4D automatisk indlæser relaterede poster | Praktisk til formularer; kan forårsage skjulte forespørgsler i loops |
| En-til-mange vs mange-til-en | Linkets retning | Bestemmer, hvilken side der har fremmednøglen |
| Relateret tabelnavn | Accessornavnet i kode | Bliver den egenskab, du refererer til, f.eks. [Faktura]Kunde |
| Sletningskontrol | Kaskade, begrænse eller annullere | Forhindrer forældreløse underposter |
Et konkret eksempel: en Invoice-tabel med et CustomerID-felt knyttet til Customer.ID. I koden, “[Faktura]Kunde.Navn” gennemgår forholdet. Dette er elegant – og farligt i en løkke over 10.000 fakturaer, fordi hver adgang kan udløse et opslag. Rettelsen er bevidst at bruge RELATE MANY / RELATE ONE eller at indlæse de relaterede data i en samling først.
Kompromis for at beslutte tidligt: Normaliserede tabeller med erklærede relationer giver dig referentiel integritet og enkel kode, men koster ydeevne ved store læsninger. Denormaliserede tabeller med indlejrede objektfelter er hurtigere at læse, men skub integritetstjek ind i din egen kode. For de fleste forretningsapplikationer til små teams skal du normalisere transaktionskernen og denormalisere rapporteringstabellerne.
Trin 3: Byg formularer
Formularer er brugergrænsefladelaget i 4D, og de findes i flere typer: detaljeformularer (én post), listeformularer (flere poster), inputformularer, outputformularer og projektformularer (ikke knyttet til en tabel). Formeditoren er et træk-og-slip lærred med en liste over egenskaber. Dette er en vigtig del af enhver 4d database tutorial.
Nøglebegreber ved oprettelse af en formular:
- Datakilde. Hver formular er knyttet til en tabel eller til en variabel/udtryk for projektformularer.
- Widgets. Felter, knapper, afkrydsningsfelter, drop-down lister, listebokse og hierarkiske lister. Listebokse er arbejdshesten til at vise relaterede data og er meget mere kraftfulde end et simpelt gitter.
- Objektmetoder. Højreklik på et objekt, og vedhæft en metode. Metoden kører på hændelser som
On Load,On Clicked,On Data ChangeogOn Validate. - Formularmetoder. Selve formularen har en metode til hændelser på formularniveau såsom
On LoadogOn Unload.
En praktisk skabelon til en kundedetaljeformular: placer kundefelter, tilføj en listeboks knyttet til et udvalg af fakturaer fra den pågældende kunde, og placer en knap, der udfører en metode til at oprette en ny faktura. Valg af listeboks er forespørgsels- eller relationsdrevet, og genopfriskning efter indsættelse holder brugergrænsefladen ærlig.
Advarsel: 4D-formularer er stateful. En formular indeholder en aktuel post og en aktuel markering. Blanding af tilstand på formniveau med baggrundsprocesser er den mest almindelige kilde til forvirrende fejl for nytilkomne. Hold langvarige job i en separat proces, og publicer resultaterne tilbage.
Trin 4: Skriv metoder og forretningslogik
I denne 4D-databasetutorial er 4D-koden opdelt i metoder, som findes i flere versioner:
- Databasemetoder — udløst af databasehændelser (opstart, nedlukning, ved backup).
- Tabelmetoder — udløst af post-begivenheder (ved gem, ved sletning).
- Form- og objektmetoder — udløst af UI-hændelser.
- Projektmetoder — dine genbrugelige funktioner, der kan kaldes overalt.
- Triggere: Udfør operationer før/efter post-operationer, ideel til revisionsspor.
Moderne 4D-kode understøtter klasser og nøgleordet “This”, så du kan skrive objektorienteret kode i stedet for blot procedure. En minimal projektmetode ser sådan ud:
// Projektmetode: CreateInvoice
// $1 = kunde-id (UUID)
C_OBJECT($faktura)
$invoice:=ds.Invoice.new()
$invoice.CustomerID:=$1
$invoice.Date:=Nuværende dato
$invoice.Status:="Kladde"
$status:=$invoice.save()
ds-objektet (datalager) er det moderne ORM-stiladgangslag introduceret med ORDA (Object Relational Data Access). ORDA giver dig mulighed for at arbejde med entiteter og enhedsvalg i stedet for traditionelle valg og understøtter forespørgselskæde, beregnede attributter og enhedsvalg på klientsiden, der reducerer server-rundture. For nye udviklinger er ORDA den anbefalede rute; Klassiske kommandoer som “QUERY” og “CREATE RECORD” fungerer stadig og vises i ældre kodebaser.
Sådan beslutter du dig: Brug ORDA til ny kode og alt, der drager fordel af læsbare og kædebare forespørgsler. Hold klassiske kommandoer, hvor du har brug for meget stramme loops over store udvalg, fordi klassiske valg kan være mere hukommelseseffektive i nogle server-side scenarier. Mål frem for at antage.
Trin 5: Værdilister, forespørgsler og rapportering
Værdilister udfylder rullelister og listebokse med et kontrolleret sæt valgmuligheder. 4D understøtter flere typer lister:
- Statiske lister — hårdkodede værdier, ideelle til statusser og flag.
- Tabellister — værdier udtrukket fra en referencetabel, ideel til kunder, produkter og kategorier.
- Hierarkiske lister — overordnede/underordnede værdier, nyttige til kontoplaner eller kategoritræer.
For forespørgsler accepterer ORDA’s query() en formelstreng med pladsholdere, som undgår injektionsproblemer og læser tydeligt:
$sel:=ds.Invoice.query("Status = :1 AND Date >= :2"; "Åben"; $startdato)
Rapportering i 4D bruger Quick Report-editoren til simpelt tabeloutput og 4D Write Pro-området til omfattende dokumenter. Write Pro er et tekstbehandlingsobjekt, der er indlejret i en form; du kan flette data til en skabelon og eksportere dem til PDF- eller DOCX-format. For alt komplekst er generering af HTML og gengivelse af det til et webområde ofte hurtigere at oprette og nemmere at style. Dette afslutter denne sektion af 4d database tutorial.
Trin 6: Implementer og vedligehold
Implementeringsmuligheder former din arkitektur i denne 4D-database-tutorial:
- Enkeltbruger: applikation og data på en enkelt maskine. Det enkleste, ingen samtidighed.
- Client-server — 4D Server indeholder data og forretningslogik; 4D-klient forbinder. Ideel til LAN-teams.
- 4D Web Server — 4D betjener direkte REST-slutpunkter og websider. ORDA afslører automatisk REST-adgang til dit datalager, hvilket betyder, at du kan oprette en webgrænseflade på det samme skema.
- 4D til iOS / Android — mobile klienter genereret fra din struktur.
Sikkerhedskopier er indbygget: 4D Server kan planlægge automatiske sikkerhedskopier og vedligeholde en journal (logfil) til punkt-i-tidsgendannelse. Aktiver journalen før den går live, ikke efter. Test en gendannelse på en kopi af dataene: En utestet backup er et håb, ikke en plan.
Versionskontrol: Med strukturer i projekttilstand, overfør mappen Project/Sources/ til Git. Ekskluder datafilen og mappen DerivedData. Dette er en reel forbedring i forhold til den binære æra og værd at adoptere fra dag ét.
Almindelige fejl og hvordan man undgår dem
Springer primærnøgledisciplinen over. Hver tabel har brug for en stabil og unik primærnøgle. UUID’er undgår omnummereringsproblemer forårsaget af automatisk stigning i heltal, når poster slettes eller flettes.
Indsætte forretningslogik i formularmetoder. Formmetoder skal håndtere brugergrænsefladen. Flyt regler til projektmetoder eller klasser, så de kan genbruges af webslutpunkter, importer og planlagte opgaver.
Ignorerer journalen. Uden den kan et nedbrud under skrivning efterlade datafilen inkonsekvent. Tænd den.
Looping over relationer. Adgang til [Table]Related.Field inde i en stor loop multiplicerer forespørgsler. Forindlæs med ORDA eller brug “RELATE MANY” én gang.
Behandling af 4D som SQL. Du kan bruge SQL, men idiomatisk 4D-kode er generelt kortere og bedre integreret med formularer og begivenheder. Lær modersmålet først som en del af din 4d database tutorial.
Læringsvej og ressourcer
Start med den officielle 4D-dokumentation og 4D-udviklerbloggen, som dækker ORDA, Write Pro og versionsspecifikke ændringer. 4D-fællesskabsforummet er aktivt og svarer godt på specifikke spørgsmål. For grundlæggende relationsdesign, der gælder uanset platform, giver Wikipedia-artiklen om relationelle databaser og SQL-indgang nyttige oplysninger om forespørgselsnormalisering og semantik.
En realistisk læringssekvens: Opret en enkelt tabelkontaktadministrator, tilføj derefter en relateret tabel og listeboks, tilføj derefter en liste over værdier og en forespørgselsformular, og implementer derefter en klient-server. Hvert trin introducerer et nyt koncept uden at overvælde dig.
Vigtigste pointer
- 4D kombinerer en relationsdatabase, IDE, formulardesigner og webserver i et enkelt produkt, velegnet til små teams, der hurtigt skal levere en tilpasset forretningsapplikation. Denne 4D-databasetutorial fremhæver dens effektivitet.
- Definer tabeller og relationer i Structure-editoren, opret skærmbilleder i Form-editoren, og vedhæft logik via metoder og triggere: de fire objekter, der udgør hver 4D-applikation.
- ORDA (
ds, entiteter, entitetsvalg) er det moderne dataadgangslag og det anbefalede valg for ny kode; klassiske kommandoer forbliver gyldige i ældre projekter. - Brug UUID primære nøgler, aktiver journalen og commit projekt-mode-strukturer til Git fra starten for at undgå smertefulde migreringer senere.
- Hold forretningslogik ude af formularmetoder og indlæs relaterede data i stedet for at gennemløbe relationer inde i store loops.
Kilder og yderligere læsning
- Relationel database — Wikipedia: En relationel database (RDB) er en database baseret på den relationelle model af data, som foreslået af E. F. Codd i 1970. Et Relationelt Database Management System (RDBMS…
Ofte stillede spørgsmål
Er 4D en SQL-database?
4D er en relationsdatabase med sit eget naturligt sprog og en integreret SQL-motor. Du kan udstede SQL-sætninger via Begin SQL / End SQL, men de fleste 4D-udviklere bruger ORDA eller klassiske 4D-kommandoer i stedet for SQL. Den underliggende model er relationel (tabeller, nøgler og relationer), så SQL-begreber overføres, selvom den syntaks, du skriver hver dag, ikke gør det.
Skal jeg kende programmering for at bruge 4D?
Grundlæggende programmeringsviden er meget nyttig, da formularer og forretningsregler er knyttet til 4D-kode. Når det er sagt, giver 4D’s indbyggede formulareditor og guider dig mulighed for at oprette en funktionel dataindtastningsapplikation med minimal kode. Citizen developers starter typisk med formularer og værdilister og lærer derefter de metoder, de har brug for til tilpasset adfærd. For dem, der starter, kan en 4d-databasetutorial være nyttig.
Hvad er forskellen mellem ORDA og klassiske 4D-kommandoer?
ORDA er et objektorienteret adgangslag bygget op omkring et datalager (“ds”), entiteter og entitetsvalg, med kædebare forespørgsler og understøttelse af valg på klientsiden. Klassiske kommandoer som “QUERY”, “CREATE RECORD” og “MODIFY SELECTION” fungerer på klassiske valg og aktuelle poster. ORDA er den anbefalede tilgang til nyudvikling, mens klassiske kommandoer forbliver almindelige i ældre kodebaser.
Kan 4D-applikationer køre på nettet eller mobilen?
Ja. 4D inkluderer en indbygget webserver, og ORDA kan eksponere REST-endepunkter over dit datalager, så en browser-frontend kan kommunikere med det samme skema. 4D tilbyder også generering af mobilklienter til iOS og Android. Afvejningen er, at web- og mobilklienter skal være meget opmærksomme på godkendelse og mængden af data, der returneres af hver anmodning.
Hvordan sikkerhedskopierer jeg en 4D-database sikkert?
Aktiver journalen (logfilen) i 4D Server, så du kan gendanne til et tidspunkt og planlægge automatiske sikkerhedskopier i stedet for at stole på manuelle kopier. Test altid en gendannelse mod en kopi af dataene, før du har brug for dem i en nødsituation. Hold strukturen under versionskontrol adskilt fra datafilen, da de ændres med forskellige hastigheder.
Er 4D velegnet til en lille virksomhedsapp?
4D er designet til netop dette scenarie: et lille team, der laver en tilpasset forretningsapplikation med formularer, rapporter og et relationelt skema. Det skaleres til klient-server-implementeringer og webadgang uden at ændre kernestrukturen. De vigtigste overvejelser er licensomkostninger og den mindre talentpulje sammenlignet med almindelige webstacks, så langsigtet vedligeholdelse og byggehastighed skal afvejes.
Ofte stillede spørgsmål
Er 4D en SQL-database?
4D er en relationsdatabase med sit eget modersmål og en integreret SQL-motor. Du kan udstede SQL-sætninger via Begin SQL / End SQL, men de fleste 4D-udviklinger bruger ORDA eller klassiske 4D-kommandoer i stedet for SQL. Den underliggende model er relationel (tabeller, nøgler og relationer), så SQL-begreber overføres, selvom den syntaks, du skriver hver dag, ikke gør det.
Skal jeg kende programmering for at bruge 4D?
Grundlæggende programmeringsviden er meget nyttig, da formularer og forretningsregler er knyttet til 4D-kode. Når det er sagt, giver 4D's indbyggede formulareditor og guider dig mulighed for at oprette en funktionel dataindtastningsapplikation med minimal kode. Borgerudviklere starter typisk med formularer og værdilister og lærer derefter de metoder, de har brug for til tilpasset adfærd. For dem, der starter, kan en 4d-databasetutorial være nyttig.
Hvad er forskellen mellem ORDA og klassiske 4D-kommandoer?
ORDA er et objektorienteret adgangslag bygget op omkring et datalager (ds), entiteter og entitetsvalg, med kædebare forespørgsler og understøttelse af klientsidevalg. Klassiske kommandoer som QUERY, CREATE RECORD og MODIFY SELECTION fungerer på klassiske valg og aktuelle poster. ORDA er den anbefalede tilgang til nyudvikling, mens klassiske kommandoer forbliver almindelige i ældre kodebaser.
Kan 4D-applikationer køre på nettet eller mobilen?
Ja. 4D inkluderer en indbygget webserver, og ORDA kan eksponere REST-endepunkter over dit datalager, så en browser-frontend kan kommunikere med det samme skema. 4D tilbyder også mobil klientgenerering til iOS og Android. Afvejningen er, at web- og mobilklienter skal være meget opmærksomme på godkendelse og mængden af data, der returneres af hver anmodning.
Hvordan sikkerhedskopierer jeg en 4D-database sikkert?
Aktiver journalen (logfilen) i 4D Server, så du kan gendanne til et tidspunkt og planlægge automatiske sikkerhedskopier i stedet for at stole på manuelle kopier. Test altid en gendannelse mod en kopi af dataene, før du har brug for dem i en nødsituation. Hold strukturen under versionskontrol adskilt fra datafilen, da de ændres med forskellige hastigheder.
Er 4D velegnet til en app til små virksomheder?
4D er designet til netop dette scenarie: et lille team, der laver en tilpasset forretningsapplikation med formularer, rapporter og et relationelt skema. Det skaleres til klient-server-implementeringer og webadgang uden at ændre kernestrukturen. De vigtigste overvejelser er licensomkostninger og den mindre talentpulje sammenlignet med almindelige webstacks, så langsigtet vedligeholdelse og byggehastighed skal afvejes.
Prøv FileMaker gratis i 45 dage
Den langvarige relationsdatabaseplatform til teams, der har brug for tilpassede apps på desktop, web og mobil fra en enkelt fil.