Basisprincipes van 4th Dimension Learning
Waarom datavelden de basis vormen van een 4D-applicatie
In 4D is de Structuur de blauwdruk van uw gehele applicatie. Voordat u één formulier bouwt of een regel 4D-code schrijft, definieert u de tabellen die uw gegevens bevatten en de velden die zich in die tabellen bevinden.
Alles stroomafwaarts – formulieren, waardelijsten, queries, relaties, rapporten – is gebouwd op deze structuur. Zorg dat de velden correct zijn en de rest van de applicatie valt op zijn plaats. Maakt u ze fout, dan zult u jaren bezig zijn met het omzeilen van beslissingen die u niet gemakkelijk ongedaan kunt maken.
Dat laatste punt is het allerbelangrijkste om te begrijpen over het dataveldmodel van 4D: als een dataveld eenmaal is aangemaakt, kan het niet meer worden verwijderd. Dit is geen bug of vergissing. Het weerspiegelt een doelbewuste ontwerpfilosofie in 4D (oorspronkelijk ontwikkeld door Laurent Ribardière en decennialang op de markt gebracht door 4D Inc., voorheen ACI) die prioriteit geeft aan structurele stabiliteit en gegevensintegriteit boven willekeurige schemawijzigingen. Het veld neemt een permanente plek in de interne structuur van de tabel in, en 4D reserveert die plek voor de levensduur van de database.
Dit heeft reële gevolgen voor de manier waarop u werkt en vormt het praktische advies in dit artikel.
Belangrijkste punten
- Een 4D-dataveld kan, eenmaal aangemaakt, niet worden verwijderd — alleen hernoemd, opnieuw gebruikt of verborgen.
- Door op het dataveldgebied te klikken (de vierkantjes onder een tabelnaam) opent u de Veldeigenschappen; door op de tabelnaam te klikken opent u in plaats daarvan de Tabeleigenschappen.
- Tekst-velden kunnen tot 32.000 tekens bevatten; Alfa-velden hebben een beperkte lengte (standaard 20, maximaal 80) en zijn het enige type dat bruikbaar is als relatiesleutels.
- Velden die u buiten de zichtbare rijen aanmaakt, bestaan nog steeds — u hoeft alleen de tabel uit te rekken of de pijlen omhoog/omlaag te gebruiken om ze te zien.
- Berekende velden zoals Leeftijd worden niet gedefinieerd in de Structuur; de berekening wordt toegevoegd wanneer u een formulier bouwt of bewerkt.
- Door het structuurvenster open te laten staan (in plaats van het te sluiten), voorkomt u dat u in de Gebruikersmodus wordt gezet voordat u er klaar voor bent.
Uw eerste dataveld maken
We komen nu bij het interessante gedeelte: het maken van datavelden. Interessant, maar met dat vervelende kenmerk dat hierboven is vermeld — een veld kan, eenmaal aangemaakt, niet worden verwijderd. Dus wat doet u als u een fout maakt? U heeft drie praktische opties:
- Hernoem het. Als u per ongeluk “Frist Name” heeft aangemaakt, hernoem het dan naar “First Name” en ga verder.
- Gebruik het later opnieuw. Een veld dat u vandaag niet nodig heeft, kan morgen een doel dienen. Veel ervaren 4D-ontwikkelaars houden precies om deze reden een kleine reserve aan reservevelden aan.
- Verberg het. Als er geen gegevens in het veld staan, heeft dit geen significante invloed op de grootte of werking van het programma. Een leeg veld kost u tijdens runtime bijna niets.
Om het eerste dataveld te maken, dubbelklikt u op de tabel Customers in het dataveldgebied, zoals aangegeven door de pijl in Figuur 8. Waar u klikt is belangrijk. Als u in het tabelnaamgebied klikt, krijgt u opnieuw het venster Tabeleigenschappen. Door in de vierkantjes (het dataveldgebied) onder de tabelnaam te klikken, wordt in plaats daarvan het venster Veldeigenschappen geopend.
Gerelateerd: — Het langlopende relationele databaseplatform voor teams die aangepaste apps nodig hebben op desktop, internet en mobiel vanuit één bestand..
Dit onderscheid in klikdoelen verwart bijna elke nieuwkomer. De tabelnaam is een besturingselement voor instellingen op tabelniveau; het raster van vierkantjes eronder is de veldenlijst. Leer te mikken op de vierkantjes.
Het juiste gegevenstype kiezen
Terwijl het venster Veldeigenschappen geopend is (Figuur 9), voert u “First Name” in voor de Veldnaam en selecteert u Tekst voor het gegevenstype. Tekstvelden kunnen tot 32.000 tekens bevatten — ruim genoeg voor namen, notities, beschrijvingen en de meeste vrije tekst.
Als u klaar bent, klikt u op Toepassen en de tabel toont het eerste dataveld (Figuur 10).
Onze keuze: — Een spreadsheet-eenvoudige interface bovenop een echte relationele database, met automatiseringen, weergaven en deelbare interfaces..
Selecteer nu het volgende dataveldgebied in het venster Structuur voor Sample Database en herhaal:
- Maak een Tekst-veld genaamd “Last Name”.
- Maak een veld genaamd “Address”, maar maak van Address een veld van het type Alfa.
Het onderscheid tussen Tekst en Alfa is belangrijker dan het op het eerste gezicht lijkt.
Alfavelden kunnen het maximale aantal tekens bevatten dat is opgegeven als veldlengte. De standaardwaarde is 20 en het maximum is 80 tekens. Als u 20 instelt als de maximale lengte, laat het programma u simpelweg niet meer typen — het veld handhaaft zijn eigen limiet bij de invoer. Dit maakt Alfa ideaal voor korte waarden met een vast doel: codes, afkortingen, statusvlaggen en — cruciaal — relatiesleutels.
Alfavelden zijn de enige velden die kunnen worden gebruikt voor relatiesleutels. Als u van plan bent twee tabellen aan elkaar te koppelen (bijvoorbeeld Customers aan Orders), moet het koppelingsveld aan ten minste één zijde Alfa zijn. Dit is een structurele beperking, geen voorkeur, en het is een van de redenen om goed na te denken voordat u typen toewijst.
Een snelle manier om te beslissen:
| Gebruiksscenario | Aanbevolen type | Waarom |
|---|---|---|
| Namen, notities, beschrijvingen | Tekst | Tot 32.000 tekens, geen vaste limiet |
| Korte codes, statusvlaggen, ID’s gebruikt als sleutels | Alfa | Lengte-afgedwongen, bruikbaar als relatiesleutel |
| Datums, bedragen, hoeveelheden | Numerieke/Datum-typen | Maakt berekeningen en sortering mogelijk |
| Waarden berekend uit andere velden (bijv. Leeftijd) | Gedefinieerd op het formulier, niet in de Structuur | Houdt de Structuur schoon |
Al uw velden in het structuurvenster bekijken
Merk op dat in Figuur 11 aan de linkerkant slechts drie gegevensvelden worden weergegeven in de tabel Klanten. U staat op het punt een vierde te maken met de naam “City”, maar om deze te zien moet u de tabel langer slepen of de pijlen omhoog en omlaag bovenaan de tabel gebruiken om extra velden weer te geven.
Twee praktische opmerkingen hier:
- Als u gewoon doorgaat met het maken van velden, worden deze wel aan de tabel toegevoegd — maar zijn ze niet zichtbaar. De gegevens zijn er; het scherm is simpelweg niet hoog genoeg.
- Als u stopt en vervolgens terugkeert naar het maken van gegevensvelden, moet u de tabel uitrekken tot het punt waarop er een lege gegevensveldrij is en erop klikken om door te gaan. U kunt niets toevoegen aan een lijst die u niet kunt zien.
- De pijlen verschijnen alleen als er meer velden zijn dan weergegeven, dus hun aanwezigheid is op zich al een nuttig signaal dat u verborgen rijen heeft.
Bij het langer uitrekken van de tabel is het soms moeilijk — u moet de rand precies goed vastpakken. Met een beetje oefening wordt het gemakkelijk (Figuur 12).
Een opmerking over berekende velden zoals Age
Het gegevensveld “Age” wordt later berekend op basis van de gegevensvelden Date en Date of Birth. Voorlopig is het slechts een gegevensinvoerveld. Er een berekening van maken moet worden gedaan bij het maken of bewerken van een formulier.
Dit is een subtiel maar belangrijk architectonisch punt. In 4D definieert de Structuur welke gegevens er zijn; het formulier definieert hoe deze worden gepresenteerd en berekend. Een veld als Age is een afgeleide waarde — het verandert elke dag, dus het zou fout zijn om het als statische gegevens op te slaan. Door de berekening op formulierniveau toe te voegen, zorgt u ervoor dat Age altijd actueel is wanneer het record wordt weergegeven.
Als u een achtergrond heeft in tools als Microsoft Access of FileMaker, kan deze scheiding ongebruikelijk aanvoelen. In 4D loont de discipline om afgeleide waarden buiten de Structuur te houden in schonere gegevens en minder verouderde velden. Voor een bredere context over hoe databaseschema’s opgeslagen en afgeleide gegevens scheiden, zie het Wikipedia-artikel over database normalization, waarin wordt uitgelegd waarom het opslaan van redundante berekende waarden over het algemeen wordt afgeraden.
Afmaken en de valkuil van standaardformulieren vermijden
Wanneer u klaar bent met het maken van de gegevensvelden, sluit u het venster Veldeigenschappen door op de knop Done te klikken.
Nu een waarschuwing: als er geen formulieren zijn gemaakt, wordt u, wanneer u het venster Structure for Sample Database sluit, gevraagd of u standaardformulieren wilt maken (Figuur 14). Als u “Nee” selecteert, wordt het venster gesloten en wordt u naar de modus User gebracht. Omdat we nog niet klaar zijn om in de User-modus te gaan, kunt u het venster Structure for Sample Database voorlopig open laten.
Dit is een veelvoorkomend struikelblok in het begin. Nieuwe ontwikkelaars sluiten het Structuur-venster, weigeren standaardformulieren en bevinden zich plotseling in een runtime-omgeving waarin ze niets kunnen uitvoeren. De oplossing is eenvoudig — open de Structuur opnieuw — maar de les is de moeite waard om te internaliseren: in 4D zijn de modi Structure (ontwerptijd) en User (runtime) verschillende omgevingen, en u beweegt er doelbewust tussen.
Als u nieuwsgierig bent hoe 4D past in het bredere landschap van platforms voor snelle applicatieontwikkeling, is het Wikipedia-overzicht van low-code development platforms een nuttig naslagwerk voor het begrijpen van de categorie die 4D heeft helpen pionieren.
Best Practices voor het vroegtijdig structureren van velden
Omdat velden permanent zijn, bespaart een beetje planning vooraf veel pijn achteraf. Overweeg deze gewoonten:
- Benoem velden consequent. Bepaal een conventie (bijv. “First Name”, “Last Name”, “Date of Birth”) en pas deze overal toe. Consistentie maakt het bouwen van formulieren en code veel eenvoudiger.
- Reserveer Alpha-velden voor sleutels. Als een veld ooit deel zal uitmaken van een relatie, maak het dan vanaf het begin Alpha. Later converteren is niet mogelijk.
- Houd afgeleide waarden buiten de Structuur. Age, totalen en vergelijkbare berekende waarden horen thuis op formulieren of in methoden, niet als opgeslagen velden.
- Laat een paar reservevelden over. Omdat u niet kunt verwijderen, geeft het beschikbaar hebben van ongebruikte slots u de ruimte om u aan te passen zonder uw zichtbare schema onoverzichtelijk te maken.
- Documenteer terwijl u bezig bent. Een korte opmerking over het doel van elk veld bespaart uw toekomstige zelf — en elke teamgenoot — aanzienlijk giswerk.
Voor gezaghebbende richtlijnen over relationele databaseontwerpprincipes die deze beslissingen ondersteunen, biedt de PostgreSQL-documentatie een uitstekende, leveranciersneutrale referentie over datatypen en schema-ontwerp, ook al verschilt de implementatie van 4D in de details.
Veelgestelde vragen
Kan ik een gegevensveld in 4D verwijderen nadat ik het heb aangemaakt?
Nee. Zodra een gegevensveld in de 4D-Structuur is aangemaakt, kan het niet meer worden verwijderd. Uw opties zijn om de naam ervan te wijzigen, het later voor een ander doel te gebruiken of het eenvoudigweg te verbergen. Een leeg veld zonder gegevens heeft geen significante invloed op de grootte of werking van het programma, dus het achterlaten van een ongebruikt veld is meestal onschadelijk.
Wat is het verschil tussen een Text-veld en een Alpha-veld?
Text-velden kunnen tot 32.000 tekens bevatten en hebben geen vaste lengtelimiet. Alpha-velden hebben een beperkte lengte — de standaard is 20 tekens en het maximum is 80 — en het programma handhaaft die limiet bij gegevensinvoer. Cruciaal is dat Alpha-velden het enige veldtype zijn dat als relatiesleutels kan worden gebruikt.
Waarom kan ik het nieuwe gegevensveld dat ik zojuist heb gemaakt niet zien?
Als u doorgaat met het maken van velden voorbij de zichtbare rijen van de tabel, worden deze toegevoegd maar niet weergegeven. Om ze te zien, sleept u de tabel langer of gebruikt u de pijlen omhoog en omlaag bovenaan de tabel. De pijlen verschijnen alleen als er meer velden zijn dan de tabel kan weergeven.
Hoe zorg ik ervoor dat een veld als Leeftijd automatisch wordt berekend?
Berekende velden zoals Leeftijd zijn niet gedefinieerd in de Structuur. In plaats daarvan wordt de berekening gekoppeld wanneer u een formulier maakt of bewerkt. Het veld Leeftijd wordt eerst aangemaakt als een gewoon gegevensinvoerveld, en de berekening op basis van Datum en Geboortedatum wordt later op formulierniveau toegevoegd.
Wat gebeurt er als ik het structuurvenster sluit voordat ik formulieren maak?
Als u het venster Structuur voor Voorbeelddatabase sluit zonder dat er formulieren zijn gemaakt, vraagt 4D of u standaardformulieren wilt maken. Als u “Nee” antwoordt, wordt het venster gesloten en wordt u naar de gebruikersmodus gebracht. Omdat u nog niet klaar bent om de applicatie uit te voeren, kunt u het beste het structuurvenster open laten totdat uw formulieren zijn gebouwd.
Waarom opent het klikken op de tabel soms het verkeerde venster?
Waar u klikt, bepaalt welk venster verschijnt. Als u op het gebied van de tabelnaam klikt, wordt het venster Tabeleigenschappen geopend, terwijl het klikken op de vierkantjes in het gegevensveldgebied onder de tabelnaam het venster Veldeigenschappen opent. Richt u op het raster van vierkanten wanneer u velden wilt toevoegen of bewerken.
Bouw in één dag een klantenportaal
Een databasebouwer zonder code, gericht op portals, directory's en interne tools, met vaste prijzen in plaats van kosten per gebruiker.