4D-databaseopplæring: En komplett veiledning
En 4D-databaseopplæring begynner med fire hovedobjekter: tabeller, felt, skjemaer og metoder. 4D er en relasjonsdatabase og applikasjonsutviklingsplattform fra 4D SAS, først lansert i 1984, og lagrer data i en proprietær “.4DD”-strukturfil knyttet til et kompilert eller tolket applikasjonslag. Utviklere definerer tabeller, bygger skjemaer og legger ved kode i ett integrert miljø.
4D inntar en uvanlig plass i verktøylandskapet. Det er en kombinasjon av relasjonsdatabasemotor, raskt applikasjonsutviklingsmiljø, webserver og lavkode-aktig skjemadesigner. Denne kombinasjonen er grunnen til at små team tar det i bruk: ett produkt dekker lagring, forretningslogikk, brukergrensesnitt og distribusjon.
Motoren er relasjonell i klassisk forstand: tabeller, primærnøkler, tilhørende tabeller og relasjoner definert i strukturen. Det er ikke SQL først som PostgreSQL eller MySQL, selv om 4D støtter SQL via sin SQL-motor og ‘Begin SQL’ / ‘End SQL’-kommandoer. De fleste daglige oppgaver bruker 4Ds eget språk (historisk kalt 4D Language, nå ganske enkelt 4D-kode), som er nærmere et skriptspråk enn SQL. Denne 4d-databaseopplæringstilnærmingen hjelper nybegynnere å forstå verktøyets allsidighet.
To arkitektoniske fakta betyr tidlig:
- Struktur versus data. Strukturen (tabeller, felt, skjemaer, metoder) ligger i en
.4DC/prosjektfil i moderne versjoner; dataene er i datafilen.4DD. I 4D 20 og senere lagres prosjekter som en mappe med tekstfiler, noe som gjør versjonskontroll med Git praktisk. Eldre ‘.4DB’ binære strukturer er vanskeligere å diffe. - Klient-server versus enkeltbruker. En enkeltbruker-distribusjon kjører alt på en enkelt maskin. Klientserveren skiller 4D-serveren (data + forretningslogikk) fra 4D-klienten (UI). Den samme strukturen støtter begge, men nettverksrundturer endrer hvordan du trenger å skrive looper.
Hvis du kommer fra Microsoft Access, overføres den mentale modellen godt. Hvis du kommer fra en web-stack, kan du forvente å avlære noen vaner: 4D-skjemaer er tilstandsbaserte og hendelsesdrevne, ikke forespørselssvar.
Trinn 1: Installer og lag din første struktur
Last ned 4D fra det offisielle 4D-nettstedet (4d.com) for å starte denne 4d-databaseopplæringen. Du vil vanligvis velge mellom 4D (det fullstendige utviklingsmiljøet) og 4D Server for distribusjon. Det er en gratis lokal utviklingsmodus for læring, men distribusjon til produksjon krever en lisens: sjekk gjeldende lisensvilkår direkte, ettersom de endres fra utgivelse til utgivelse.
Relatert: — Et regneark-enkelt grensesnitt som sitter på toppen av en ekte relasjonsdatabase, med automatiseringer, visninger og delbare grensesnitt..
Opprette et prosjekt:
- Start 4D og velg Ny > Prosjekt.
- Gi prosjektet et navn og velg en mappe. Moderne 4D lager en prosjektmappe som inneholder
Project/Sources/med strukturen din som tekstfiler. - Strukturredigeringen åpnes. Dette er ditt skjematiske lerret.
Struktureditoren er der du legger til tabeller. Hver tabell får et navn, et sett med felt og eventuelt en automatisk generert primærnøkkel. 4Ds konvensjon er å prefiksere feltnavn etter type - ID_, Navn_, Dato_, Beløp_ – selv om dette er et spørsmål om stil og ikke et krav. Konsistens lønner seg senere når du skanner 200 felt.
Felttyper du vil bruke mest: Tekst, Alfa, Heltall, Langint, Reell, Dato, Tid, Boolsk, Bilde, BLOB, Objekt og UUID. Objekt-typen lagrer JSON-lignende strukturerte data og er det moderne valget for fleksible attributter. UUID-felt er den anbefalte primærnøkkeltypen for nye tabeller fordi de unngår kollisjons- og omnummereringsproblemer med automatisk inkrementerte heltall i distribuerte eller sammenslåtte data.
Hvis du handler: — En som kobles til den bredere Zoho-pakken og priser per bruker i stedet for per app..
Trinn 2: Design tabeller og relasjoner
Skjemadesign i 4D følger relasjonelle normaliseringsregler, med en særegenhet som er spesifikk for 4D: relasjoner deklareres grafisk og involverer automatisk oppførsel. Dette er en viktig del av enhver 4d-databaseopplæring.
For å opprette en relasjon, dra primærnøkkelfeltet fra én tabell til fremmednøkkelfeltet til et annet i strukturredigeringen. 4D tegner en relasjonslinje og lar deg konfigurere:
| Relasjonsinnstilling | Hva den kontrollerer | Praktisk effekt |
|---|---|---|
| Automatiske relasjoner | Hvorvidt 4D automatisk laster relaterte poster | Praktisk for skjemaer; kan forårsake skjulte spørringer i løkker |
| En-til-mange vs mange-til-en | Retning av lenken | Bestemmer hvilken side som har fremmednøkkelen |
| Beslektet tabellnavn | Accessornavnet i kode | Blir eiendommen du refererer til, f.eks. [Faktura]Kunde |
| Slettekontroll | Kaskade, begrense eller oppheve | Forhindrer foreldreløse barneposter |
Et konkret eksempel: en Faktura-tabell med et CustomerID-felt knyttet til Customer.ID. I koden går «[Faktura]Kunde.navn» gjennom forholdet. Dette er elegant – og farlig i en løkke over 10 000 fakturaer, fordi hver tilgang kan utløse et oppslag. Rettingen er å bevisst bruke RELATE MANY / RELATE ONE, eller å laste de relaterte dataene inn i en samling først.
Kompromiss for å bestemme tidlig: Normaliserte tabeller med erklærte relasjoner gir deg referanseintegritet og enkel kode, men koster ytelse ved store avlesninger. Denormaliserte tabeller med innebygde objektfelt er raskere å lese, men skyver integritetssjekker inn i din egen kode. For de fleste forretningsapplikasjoner for små team, normaliser transaksjonskjernen og denormaliser rapporteringstabellene.
Trinn 3: Lag skjemaer
Skjemaer er brukergrensesnittlaget til 4D og de kommer i flere typer: detaljskjemaer (én post), listeskjemaer (flere poster), inndataskjemaer, utdataskjemaer og prosjektskjemaer (ikke knyttet til en tabell). Skjemaredigeringsprogrammet er et dra-og-slipp-lerret med en liste over egenskaper. Dette er en viktig del av enhver 4d-databaseopplæring.
Nøkkelbegreper når du lager et skjema:
- Datakilde. Hvert skjema er knyttet til en tabell, eller til en variabel/uttrykk for prosjektskjemaer.
- Widgets. Felt, knapper, avmerkingsbokser, rullegardinlister, listebokser og hierarkiske lister. Listebokser er arbeidshesten for å vise relaterte data og er mye kraftigere enn et enkelt rutenett.
- Objektmetoder. Høyreklikk på et objekt og legg ved en metode. Metoden kjører på hendelser som
On Load,On Clicked,On Data ChangeogOn Validate. - Skjemametoder. Skjemaet i seg selv har en metode for hendelser på skjemanivå som
On LoadogOn Unload.
En praktisk mal for et kundedetaljskjema: plasser kundefelt, legg til en listeboks knyttet til et utvalg fakturaer fra den kunden, og plasser en knapp som utfører en metode for å opprette en ny faktura. Valg av listeboks er spørrings- eller relasjonsdrevet, og oppdatering etter innsetting holder brukergrensesnittet ærlig.
Advarsel: 4D-skjemaer er tilstandsbaserte. Et skjema inneholder en gjeldende post og et gjeldende utvalg. Blanding av tilstand på formnivå med bakgrunnsprosesser er den vanligste kilden til forvirrende feil for nykommere. Hold langvarige jobber i en egen prosess og publiser resultatene tilbake.
Trinn 4: Skriv metoder og forretningslogikk
I denne 4D-databaseopplæringen er 4D-koden delt opp i metoder, som kommer i flere versjoner:
- Databasemetoder — utløst av databasehendelser (oppstart, avslutning, ved sikkerhetskopiering).
- Tabellmetoder — utløst av posthendelser (ved lagring, ved sletting).
- Form- og objektmetoder — utløst av UI-hendelser.
- Prosjektmetoder - dine gjenbrukbare funksjoner, som kan kalles fra hvor som helst.
- Triggere: Utfør operasjoner før/etter registreringsoperasjoner, ideelt for revisjonsspor.
Moderne 4D-kode støtter klasser og nøkkelordet “This”, slik at du kan skrive objektorientert kode i stedet for bare prosedyre. En minimal prosjektmetode ser slik ut:
// Prosjektmetode: CreateInvoice
// $1 = kunde-ID (UUID)
C_OBJECT($faktura)
$invoice:=ds.Invoice.new()
$invoice.CustomerID:=$1
$invoice.Date:=Gjeldende dato
$invoice.Status:="Utkast"
$status:=$invoice.save()
ds-objektet (datalager) er det moderne tilgangslaget i ORM-stil introdusert med ORDA (Object Relational Data Access). ORDA lar deg jobbe med enheter og enhetsvalg i stedet for tradisjonelle valg, og støtter spørringskjeding, beregnede attributter og enhetsvalg på klientsiden som reduserer server rundturer. For nye utbygginger er ORDA den anbefalte ruten; Klassiske kommandoer som “QUERY” og “CREATE RECORD” fungerer fortsatt og vises i eldre kodebaser.
Hvordan bestemmer du deg: Bruk ORDA for ny kode og alt som drar nytte av lesbare og kjedebare søk. Hold klassiske kommandoer der du trenger veldig tette løkker over store utvalg, fordi klassiske valg kan være mer minneeffektive i enkelte serverside-scenarier. Mål heller enn å anta.
Trinn 5: Verdilister, spørringer og rapportering
Verdilister fyller ut rullegardinlister og listebokser med et kontrollert sett med valg. 4D støtter flere typer lister:
- Statiske lister — hardkodede verdier, ideelle for statuser og flagg.
- Tabelllister — verdier hentet fra en referansetabell, ideell for kunder, produkter og kategorier.
- Hierarkiske lister — overordnede/underordnede verdier, nyttig for kontoplaner eller kategoritrær.
For spørringer godtar ORDAs query() en formelstreng med plassholdere, som unngår injeksjonsproblemer og leser tydelig:
$sel:=ds.Invoice.query("Status = :1 OG Dato >= :2"; "Åpen"; $startDate)
Rapportering i 4D bruker Quick Report-redigeringsprogrammet for enkel tabellform og 4D Write Pro-området for rike dokumenter. Write Pro er et tekstbehandlingsobjekt innebygd i et skjema; du kan slå sammen data til en mal og eksportere den til PDF- eller DOCX-format. For alt som er komplekst, er generering av HTML og gjengivelse til et webområde ofte raskere å lage og enklere å style. Dette avslutter denne delen av 4d-databaseopplæringen.
Trinn 6: Distribuer og vedlikehold
Implementeringsalternativer former arkitekturen din i denne 4d-databaseopplæringen:
- Enkeltbruker: applikasjon og data på en enkelt maskin. Det enkleste, ingen samtidighet.
- Client-server — 4D Server inneholder data og forretningslogikk; 4D-klient kobler til. Ideell for LAN-team.
- 4D Web Server — 4D betjener REST-endepunkter og nettsider direkte. ORDA avslører automatisk REST-tilgang til datalageret ditt, noe som betyr at du kan lage et webgrensesnitt på samme skjema.
- 4D for iOS / Android — mobilklienter generert fra strukturen din.
Sikkerhetskopier er innebygd: 4D Server kan planlegge automatiske sikkerhetskopier og vedlikeholde en journal (loggfil) for punkt-i-tidsgjenoppretting. Aktiver journalen før den går live, ikke etter. Test en gjenoppretting på en kopi av dataene: En uprøvd sikkerhetskopi er et håp, ikke en plan.
Versjonskontroll: Med strukturer i prosjektmodus, overgi mappen Project/Sources/ til Git. Ekskluder datafilen og mappen DerivedData. Dette er en reell forbedring i forhold til den binære æraen og verdt å ta i bruk fra dag én.
Vanlige feil og hvordan du unngår dem
Hopp over primærnøkkeldisiplin. Hver tabell trenger en stabil og unik primærnøkkel. UUID-er unngår omnummereringsproblemer forårsaket av automatisk økende heltall når poster slettes eller slås sammen.
Sett forretningslogikk inn i skjemametoder. Skjemametoder skal håndtere brukergrensesnittet. Flytt regler til prosjektmetoder eller klasser slik at de kan gjenbrukes av webendepunkter, importer og planlagte oppgaver.
Ignorerer journalen. Uten den kan et krasj under skriving gjøre datafilen inkonsekvent. Slå den på.
Sløyfe over relasjoner. Å få tilgang til [Table]Related.Field inne i en stor sløyfe multipliserer spørringer. Forhåndslast med ORDA eller bruk «RELATE MANY» én gang.
Behandle 4D som SQL. Du kan bruke SQL, men 4D idiomatisk kode er generelt kortere og bedre integrert med skjemaer og hendelser. Lær morsmålet først som en del av 4d-databaseopplæringen.
Læringsvei og ressurser
Start med den offisielle 4D-dokumentasjonen og 4D-utviklerbloggen, som dekker ORDA, Write Pro og versjonsspesifikke endringer. 4D-fellesskapsforumet er aktivt og svarer godt på spesifikke spørsmål. For grunnleggende relasjonsdesign som gjelder uavhengig av plattform, gir Wikipedia-artikkelen om relasjonsdatabaser og SQL-oppføring nyttig informasjon om spørringsnormalisering og semantikk.
En realistisk læringssekvens: opprett en enkelt tabellkontaktbehandler, legg deretter til en relatert tabell og listeboks, legg deretter til en liste over verdier og et spørringsskjema, og distribuer deretter en klient-server. Hvert trinn introduserer et nytt konsept uten å overvelde deg.
Viktige takeaways
- 4D kombinerer en relasjonsdatabase, IDE, skjemadesigner og webserver i ett enkelt produkt, egnet for små team som raskt trenger å levere en tilpasset forretningsapplikasjon. Denne 4d-databaseopplæringen fremhever effektiviteten.
- Definer tabeller og relasjoner i Structure-editoren, lag skjermer i Form-editoren, og legg ved logikk via metoder og triggere: de fire objektene som utgjør hver 4D-applikasjon.
- ORDA (
ds, entities, entity selections) er det moderne datatilgangslaget og det anbefalte valget for ny kode; klassiske kommandoer forblir gyldige i eldre prosjekter. - Bruk UUID primærnøkler, aktiver journalen og commit prosjektmodusstrukturer til Git fra starten for å unngå smertefulle migreringer senere.
- Hold forretningslogikk ute av formmetoder og forhåndslast relaterte data i stedet for å traversere relasjoner inne i store sløyfer.
Kilder og videre lesing
- Relasjonell database — Wikipedia: En relasjonsdatabase (RDB) er en database basert på relasjonsmodellen av data, som foreslått av E. F. Codd i 1970. Et relasjonsdatabasestyringssystem (RDBMS…
Vanlige spørsmål
Er 4D en SQL-database?
4D er en relasjonsdatabase med sitt eget innebygde språk og en integrert SQL-motor. Du kan utstede SQL-setninger via Begin SQL / End SQL, men det meste av 4D-utvikling bruker ORDA eller klassiske 4D-kommandoer i stedet for SQL. Den underliggende modellen er relasjonell (tabeller, nøkler og relasjoner), så SQL-begreper overføres, selv om syntaksen du skriver hver dag ikke gjør det.
Trenger jeg å kunne programmering for å bruke 4D?
Grunnleggende programmeringskunnskap er svært nyttig, da skjemaer og forretningsregler er knyttet til 4D-kode. Når det er sagt, lar 4Ds innebygde skjemaredigering og veivisere deg lage en funksjonell dataregistreringsapplikasjon med minimalt med kode. Citizen-utviklere starter vanligvis med skjemaer og verdilister, og lærer deretter metodene de trenger for tilpasset oppførsel. For de som starter, kan en 4d-databaseopplæring være nyttig.
Hva er forskjellen mellom ORDA og klassiske 4D-kommandoer?
ORDA er et objektorientert tilgangslag bygget rundt et datalager (ds), entities og entity selections, med kjedebare spørringer og støtte for valg på klientsiden. Klassiske kommandoer som “QUERY”, “CREATE RECORD” og “MODIFY SELECTION” fungerer på klassiske valg og gjeldende poster. ORDA er den anbefalte tilnærmingen for nyutvikling, mens klassiske kommandoer fortsatt er vanlige i eldre kodebaser.
Kan 4D-applikasjoner kjøres på nettet eller mobilen?
Ja. 4D inkluderer en innebygd webserver og ORDA kan eksponere REST-endepunkter over datalageret ditt, slik at et nettlesergrensesnitt kan kommunisere med samme skjema. 4D tilbyr også mobilklientgenerering for iOS og Android. Avveiningen er at nett- og mobilklienter må følge nøye med på autentisering og mengden data som returneres av hver forespørsel.
Hvordan sikkerhetskopierer jeg en 4D-database på en sikker måte?
Aktiver journalen (loggfilen) i 4D Server slik at du kan gjenopprette til et tidspunkt og planlegge automatiske sikkerhetskopier i stedet for å stole på manuelle kopier. Test alltid en gjenoppretting mot en kopi av dataene før du trenger dem i en nødssituasjon. Hold strukturen under versjonskontroll separat fra datafilen, da de endres med forskjellige hastigheter.
Er 4D egnet for en liten bedriftsapp?
4D er designet for akkurat dette scenariet: et lite team som lager en tilpasset forretningsapplikasjon med skjemaer, rapporter og et relasjonsskjema. Den skaleres til klient-server-distribusjoner og nettilgang uten å endre kjernestrukturen. Hovedhensynene er lisenskostnader og den mindre talentmassen sammenlignet med vanlige web-stacker, så langsiktig vedlikehold og byggehastighet må veies.
Ofte stilte spørsmål
Er 4D en SQL-database?
4D er en relasjonsdatabase med sitt eget morsmål og en integrert SQL-motor. Du kan utstede SQL-setninger via Begin SQL / End SQL, men de fleste 4D-utviklinger bruker ORDA eller klassiske 4D-kommandoer i stedet for SQL. Den underliggende modellen er relasjonell (tabeller, nøkler og relasjoner), så SQL-begreper overføres, selv om syntaksen du skriver hver dag ikke gjør det.
Trenger jeg å kunne programmering for å bruke 4D?
Grunnleggende programmeringskunnskap er svært nyttig, da skjemaer og forretningsregler er knyttet til 4D-kode. Når det er sagt, lar 4Ds innebygde skjemaredigering og veivisere deg lage en funksjonell dataregistreringsapplikasjon med minimalt med kode. Innbyggerutviklere starter vanligvis med skjemaer og verdilister, og lærer deretter metodene de trenger for tilpasset oppførsel. For de som starter, kan en 4d-databaseopplæring være nyttig.
Hva er forskjellen mellom ORDA og klassiske 4D-kommandoer?
ORDA er et objektorientert tilgangslag bygget rundt et datalager (ds), enheter og enhetsvalg, med kjedebare spørringer og støtte for valg på klientsiden. Klassiske kommandoer som QUERY, CREATE RECORD og MODIFY SELECTION fungerer på klassiske valg og gjeldende poster. ORDA er den anbefalte tilnærmingen for nyutvikling, mens klassiske kommandoer fortsatt er vanlige i eldre kodebaser.
Kan 4D-applikasjoner kjøres på nettet eller mobilen?
Ja. 4D inkluderer en innebygd webserver og ORDA kan eksponere REST-endepunkter over datalageret ditt, slik at en nettlesergrensesnitt kan kommunisere med det samme skjemaet. 4D tilbyr også mobilklientgenerering for iOS og Android. Avveiningen er at nett- og mobilklienter må følge nøye med på autentisering og mengden data som returneres av hver forespørsel.
Hvordan sikkerhetskopierer jeg en 4D-database trygt?
Aktiver journalen (loggfilen) i 4D Server slik at du kan gjenopprette til et tidspunkt og planlegge automatiske sikkerhetskopier i stedet for å stole på manuelle kopier. Test alltid en gjenoppretting mot en kopi av dataene før du trenger dem i en nødssituasjon. Hold strukturen under versjonskontroll separat fra datafilen, da de endres med forskjellige hastigheter.
Er 4D egnet for en liten bedriftsapp?
4D er designet for akkurat dette scenariet: et lite team som lager en tilpasset forretningsapplikasjon med skjemaer, rapporter og et relasjonsskjema. Den skaleres til klient-server-distribusjoner og nettilgang uten å endre kjernestrukturen. Hovedhensynene er lisenskostnader og den mindre talentmassen sammenlignet med vanlige webstabler, så langsiktig vedlikehold og byggehastighet må veies.
Prøv FileMaker gratis i 45 dager
Den langvarige relasjonsdatabaseplattformen for team som trenger tilpassede apper på skrivebord, nett og mobil fra én enkelt fil.