Grunderna i 4th Dimension Learning
Varför datafält är grunden för en 4D-applikation
I 4D är Strukturen ritningen för hela din applikation. Innan du bygger ett enda formulär eller skriver en rad 4D-kod, definierar du tabellerna som innehåller dina data och fälten som finns i dessa tabeller. Allt nedströms – formulär, värdelistor, frågor, relationer, rapporter – byggs ovanpå denna struktur. Få fälten rätt och resten av applikationen faller på plats. Få dem fel och du kommer att ägna år åt att arbeta kring beslut som du inte enkelt kan ångra.
Den sista punkten är det enskilt viktigaste att förstå om 4D:s datafältsmodell: när ett datafält väl har skapats kan det inte raderas. Detta är inte en bugg eller ett förbiseende. Det återspeglar en medveten designfilosofi i 4D (ursprungligen utvecklad av Laurent Ribardière och marknadsförd i årtionden av 4D Inc., tidigare ACI) som prioriterar strukturell stabilitet och dataintegritet framför tillfällig schemaändring. Fältet upptar en permanent plats i tabellens interna struktur, och 4D reserverar denna plats under databasens hela livslängd.
Detta får verkliga konsekvenser för hur du arbetar, och det formar de praktiska råden i den här artikeln.
Viktiga punkter
- Ett 4D-datafält, när det väl har skapats, kan inte raderas — endast byta namn på, ändra användningsområde för eller döljas.
- Genom att klicka på datafältsområdet (rutorna under ett tabellnamn) öppnas Fältegenskaper; klickar du på tabellnamnet öppnas istället Tabellegenskaper.
- Text-fält rymmer upp till 32 000 tecken; Alpha-fält är längdbegränsade (standard 20, max 80) och är den enda typen som kan användas som relationsnycklar.
- Fält du skapar bortom de synliga raderna finns fortfarande kvar — du behöver bara sträcka ut tabellen eller använda upp-/nedpilarna för att se dem.
- Beräknade fält som Ålder definieras inte i Strukturen; beräkningen bifogas när du bygger eller redigerar ett formulär.
- Genom att lämna strukturfönstret öppet (istället för att stänga det) undviker du att tvingas in i användarläge innan du är redo.
Skapa ditt första datafält
Vi kommer nu till den intressanta delen: att skapa datafält. Intressant, men med den irriterande egenskapen som nämndes ovan — ett fält kan inte tas bort när det väl har skapats. Så vad gör du om du gör ett misstag? Du har tre praktiska alternativ:
- Byt namn på det. Om du skapade “Frist Name” av misstag, byt namn på det till “First Name” och gå vidare.
- Ändra användningsområde senare. Ett fält du inte behöver idag kan tjäna ett syfte imorgon. Många erfarna 4D-utvecklare håller en liten reserv av extrafält av just denna anledning.
- Dölj det. Utan data i fältet kommer det inte att nämnvärt påverka programmets storlek eller drift. Ett tomt fält kostar dig nästan ingenting vid körning.
För att skapa det första datafältet, dubbelklicka på tabellen Customers i datafältsområdet, vilket indikeras av pilen i figur 8. Var du klickar är viktigt. Om du klickar i området för tabellnamn får du upp fönstret Tabellegenskaper igen. Om du klickar i rutorna (datafältsområdet) under tabellnamnet öppnas istället fönstret Fältegenskaper.
Den här skillnaden i klickmål förvirrar nästan varje nybörjare. Tabellnamnet är en kontroll för inställningar på tabellnivå; rutnätet av rutor under det är fältlistan. Lär dig att sikta på rutorna.
Relaterat: — Ett enkelt kalkylarksgränssnitt som sitter ovanpå en riktig relationsdatabas, med automatiseringar, vyer och delbara gränssnitt..
Att välja rätt datatyp
Med fönstret Fältegenskaper öppet (Figur 9), skriv in “First Name” för Field Name och välj Text för data Type. Textfält kan innehålla upp till 32 000 tecken – generöst nog för namn, anteckningar, beskrivningar och det mesta av friformsinnehåll.
När du är klar klickar du på Apply, och tabellen kommer att visa det första datafältet (Figur 10).
Välj nu nästa datafältsområde i fönstret Structure for Sample Database och upprepa:
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..
- Skapa ett Text-fält som heter “Last Name”.
- Skapa ett fält som heter “Address”, men gör Address till ett fält av typen Alpha.
Skillnaden mellan Text och Alpha är viktigare än den först verkar.
Alpha-fält kan innehålla det maximala antalet tecken som anges som fältlängd. Standard är 20 och max är 80 tecken. Om du ställer in 20 som maximal längd kommer programmet helt enkelt inte att låta dig skriva mer – fältet upprätthåller sin egen gräns vid inmatning. Detta gör Alpha idealiskt för korta värden med fast syfte: koder, förkortningar, statusflaggor och – kritiskt – relationsnycklar.
Alpha-fält är de enda fälten som kan användas för relationsnycklar. Om du planerar att länka samman två tabeller (säg, Customers till Orders), måste länkningsfältet på minst en sida vara Alpha. Detta är en strukturell begränsning, inte en preferens, och det är en av anledningarna till att man bör tänka noga innan man tilldelar typer.
Ett snabbt sätt att bestämma sig:
| Användningsfall | Rekommenderad typ | Varför |
|---|---|---|
| Namn, anteckningar, beskrivningar | Text | Upp till 32 000 tecken, ingen fast gräns |
| Kortkoder, statusflaggor, ID:n som används som nycklar | Alpha | Längdbegränsad, kan användas som relationsnyckel |
| Datum, belopp, kvantiteter | Numeriska/datumtyper | Möjliggör beräkningar och sortering |
| Värden beräknade från andra fält (t.ex. Ålder) | Definieras på formuläret, inte i Strukturen | Håller Strukturen ren |
Se alla dina fält i strukturfönstret
Notera i figur 11 till vänster att endast tre datafält visas i tabellen Kunder. Du är på väg att skapa ett fjärde som heter “Stad”, men för att se det måste du antingen dra tabellen längre eller använda upp- och nedpilarna överst i tabellen för att visa ytterligare fält.
Två praktiska anmärkningar här:
- Om du bara fortsätter att skapa fält kommer de att läggas till i tabellen — men inte synas. Uppgifterna finns där; visningen är helt enkelt inte tillräckligt hög.
- Om du slutar och sedan går tillbaka till att skapa datafält måste du sträcka tabellen till den punkt där det finns en tom datafältrad och klicka på den för att fortsätta. Du kan inte lägga till i en lista som du inte kan se.
- Pilarna visas bara när det finns fler fält än vad som visas, så deras närvaro är i sig en användbar signal om att du har dolda rader.
När du sträcker tabellen längre kan det ibland vara svårt — du måste ta tag i kanten precis rätt. Med lite övning blir det lätt (Figur 12).
En notering om beräknade fält som Ålder
Datafältet “Ålder” kommer senare att beräknas utifrån datafälten Datum och Födelsedatum. För närvarande är det bara ett datainmatningsfält. Att göra det till en beräkning måste göras när du skapar eller redigerar ett formulär.
Detta är en subtil men viktig arkitektonisk punkt. I 4D definierar strukturen vilka data som finns; formuläret definierar hur de presenteras och beräknas. Ett fält som Ålder är ett härlett värde — det ändras varje dag, så att lagra det som statisk data skulle vara fel. Genom att bifoga beräkningen på formulärnivå säkerställer du att Ålder alltid är aktuell när posten visas.
Om du kommer från en bakgrund i verktyg som Microsoft Access eller FileMaker kan denna separation kännas ovanlig. I 4D lönar sig disciplinen att hålla härledda värden borta från strukturen i renare data och färre inaktuella fält. För ett bredare sammanhang om hur databasscheman separerar lagrad och härledd data, se Wikipedia-artikeln om databasnormalisering, som förklarar varför lagring av redundanta beräknade värden i allmänhet avråds från.
Avsluta och undvika fällan med standardformulär
När du är klar med att skapa datafälten stänger du fönstret Fältegenskaper genom att klicka på knappen Klar.
Nu en varning: om inga formulär har skapats och du stänger fönstret Struktur för exempeldatabas kommer du att bli tillfrågad om du vill skapa standardformulär (Figur 14). Om du väljer “Nej” stängs fönstret och du kommer till läget Användare. Eftersom vi inte är redo att vara i användarläge ännu, låt fönstret Struktur för exempeldatabas vara öppet tills vidare.
Detta är en vanlig tidig stötesten. Nya utvecklare stänger strukturfönstret, avböjer standardformulär och befinner sig plötsligt i en runtime-miljö utan något att köra. Lösningen är enkel — öppna strukturen igen — men lärdomen är värd att internalisera: i 4D är lägena Struktur (design-tid) och Användare (kör-tid) distinkta miljöer, och du flyttar mellan dem medvetet.
Om du är nyfiken på hur 4D passar in i det bredare landskapet av plattformar för snabb applikationsutveckling, är Wikipedias översikt över lågkodsutvecklingsplattformar en användbar referens för att förstå kategorin som 4D hjälpte till att pionjera.
Bästa praxis för att strukturera fält tidigt
Eftersom fält är permanenta sparar lite planering i förväg mycket besvär senare. Tänk på dessa vanor:
- Namnge fält konsekvent. Bestäm en konvention (t.ex. “Förnamn”, “Efternamn”, “Födelsedatum”) och använd den överallt. Konsekvens gör formulär och kod mycket lättare att bygga.
- Reservera alfafält för nycklar. Om ett fält någonsin kommer att delta i en relation, gör det till ett alfafält från början. Det går inte att konvertera det senare.
- Håll härledda värden utanför strukturen. Ålder, totaler och liknande beräknade värden hör hemma på formulär eller i metoder, inte som lagrade fält.
- Lämna några lediga fält. Eftersom du inte kan ta bort fält, ger tillgängliga oanvända platser dig utrymme att anpassa dig utan att belamra ditt synliga schema.
- Dokumentera allt eftersom. En kort anteckning om varje fälts syfte kommer att spara ditt framtida jag — och alla teammedlemmar — från betydande gissningar.
För auktoritativ vägledning om principer för relationsdatabasdesign som ligger till grund för dessa beslut, erbjuder PostgreSQL-dokumentationen en utmärkt, leverantörsneutral referens om datatyper och schemadesign, även om 4D:s implementering skiljer sig i sina detaljer.
Vanliga frågor
Kan jag ta bort ett datafält i 4D efter att ha skapat det?
Nej. När ett datafält väl har skapats i 4D-strukturen kan det inte raderas. Dina alternativ är att byta namn på det, återanvända det för ett annat ändamål senare eller helt enkelt dölja det. Ett tomt fält utan data påverkar inte nämnvärt storleken eller driften av programmet, så att lämna ett oanvänt fält på plats är vanligtvis ofarligt.
Vad är skillnaden mellan ett textfält och ett alfafält?
Textfält kan innehålla upp till 32 000 tecken och har ingen fast längdgräns. Alfafält är längdbegränsade — standard är 20 tecken och max är 80 — och programmet upprätthåller den gränsen vid datainmatning. Avgörande är att alfafält är den enda fälttypen som kan användas som relationsnycklar.
Varför kan jag inte se det nya datafältet jag just skapade?
Om du fortsätter att skapa fält förbi de synliga raderna i tabellen läggs de till men visas inte. För att se dem kan du antingen dra tabellen så att den blir längre eller använda upp- och nedpilarna överst i tabellen. Pilarna visas bara när det finns fler fält än vad tabellen kan visa.
Hur får jag ett fält som Ålder att beräknas automatiskt?
Beräknade fält som Ålder definieras inte i strukturen. Istället bifogas beräkningen när du skapar eller redigerar ett formulär. Fältet Ålder skapas först som ett vanligt datainmatningsfält, och beräkningen baserad på Datum och Födelsedatum läggs till senare på formulärnivån.
Vad händer om jag stänger strukturfönstret innan jag skapar formulär?
Om du stänger fönstret Structure for Sample Database utan att ha skapat några formulär, frågar 4D om du vill skapa standardformulär. Om du svarar “Nej” stängs fönstret och du kommer till användarläge. Eftersom du inte är redo att köra programmet ännu är det bäst att låta strukturfönstret vara öppet tills dina formulär är byggda.
Varför öppnas ibland fel fönster när jag klickar på tabellen?
Var du klickar avgör vilket fönster som visas. Om du klickar på området för tabellnamnet öppnas fönstret Tabellens egenskaper, medan ett klick på rutorna i datafältsområdet under tabellnamnet öppnar fönstret Fältets egenskaper. Sikta på rutnätet av rutor när du vill lägga till eller redigera fält.
Prova FileMaker gratis i 45 dagar
Den långvariga relationsdatabasplattformen för team som behöver anpassade appar på skrivbordet, webben och mobilen från en enda fil.