Tabellen en velden
De editor van het model — tabellen aanmaken, kolomtypes kiezen, sleutels en indexen bepalen, en bestaande tabellen in het model van de app opnemen.
Voordat er schermen zijn, zijn er gegevens: de tabellen waarin de applicatie accounts, contactpersonen, bestellingen of vakantieaanvragen bewaart. In Keplin leven die gegevens in een database die aan de app gekoppeld is (een datasource) en worden ze beschreven in een model — de tekening van tabellen, velden, sleutels en relaties die de rest van het platform leest.
Deze pagina gaat over de eerste helft van dat werk: tabellen aanmaken en wijzigen, types kiezen, sleutels en indexen bepalen. De relaties en de enum-velden hebben een eigen pagina in Relaties en enums.
De voorbeelden komen uit de app Klantenbeheer: een CRM met drie tabellen —
contas, contactos en oportunidades.
Twee lagen: de database en het model
Het loont om meteen twee dingen te scheiden die op elkaar lijken:
| Laag | Wat het is | Wie het gebruikt |
|---|---|---|
| De database | De tabellen, kolommen en indexen die echt bestaan in de engine die aan de app gekoppeld is. | De database-engine. Die wijzigen betekent echte commando's uitvoeren. |
| Het model | De beschrijving van die tabellen voor het platform: entiteiten, velden, weergavenamen, beschrijvingen, relaties en enums. | De API's, de schermen, de scripts en de rapporten. |
Een tabel komt pas in het model wanneer u haar importeert — en uit het model gaan wist niets in de database. Daarom onderscheidt het platform altijd Uit het model verwijderen van Verwijderen.
Het model openen
- Open de app en kies het tabblad Data in de zijbalk.
- Klik onder Datasources op de naam van de datasource — in Klantenbeheer is dat Dados CRM.
- Er opent een tabblad met het modeldiagram in het midden, de SQL-console onderaan, en de objectenboom van de datasource uitgeklapt in de zijbalk.

Het diagram sleept u met de muis; de knoppen linksonder zoomen en brengen alles in beeld. De positie van elke entiteit blijft bewaard — u ordent het diagram één keer en zo gaat het weer open.
De objectenboom
Onder de datasource toont de boom wat er in de database bestaat, gegroepeerd en met het aantal per groep:
| Groep | Wat er in staat |
|---|---|
| Tabellen | De tabellen van de engine. Elke tabel heeft een eigen menu (⋯). |
| Views | De views (met een naam bewaarde query's). |
| Programmering | Functies / Procedures en Triggers — zie Triggers. |

Het veld In alles zoeken… boven in de zijbalk filtert de boom; met een actieve zoekopdracht klappen de groepen vanzelf open en verdwijnt een groep zonder resultaten.
Een tabel aanmaken
- Ga met de muis over de datasource en open het menu ⋯ (Acties voor …).
- Kies Nieuwe tabel.
- Vul de Naam van de tabel in — dat is de naam die in de database blijft
staan (kleine letters en underscores besparen u hoofdpijn:
actividades,linhas_encomenda). - Schema (optioneel) is alleen van belang bij engines met schema's; laat het leeg als u die niet gebruikt.
- Schrijf bij Beschrijving van de tabel waar zij voor dient. Dat is geen versiering: deze beschrijving reist met de tabel mee door het platform en is wat de tabel uitlegt aan wie er na u komt.
- Bepaal de kolommen (hierna) en bevestig met Tabel aanmaken.

Nota
De tabel wordt echt aangemaakt, in de gekoppelde database. Als de verbinding naar een productiedatabase wijst, is dat de database waarin de tabel ontstaat.
De kolommen
Het linkerpaneel van het venster is de lijst met kolommen (Kolommen (N)) en de knop + voegt er een toe. Klik op een kolom in de lijst om haar rechts te bewerken.
De tabel begint altijd met een kolom id, van het type integer, met
Primaire sleutel (PK) en Auto-increment ingeschakeld — het startpunt dat
in 9 van de 10 tabellen volstaat.
| Veld | Wat het doet |
|---|---|
| Naam | De naam van de kolom in de database. |
| Type | Het logische type van de kolom (volledige lijst hieronder). |
| Lengte | Alleen bij text en char — hoeveel tekens erin passen. |
| Precisie · Schaal | Alleen bij decimal — het totaal aantal cijfers en hoeveel er rechts van de komma staan (18 · 2 voor geld). |
| Items van de enum | Alleen bij enum — zie Relaties en enums. |
| NULL toegestaan | Of de kolom leeg mag blijven. Uitgeschakeld weigert de database records zonder waarde. |
| Primaire sleutel (PK) | Identificeert het record op een unieke manier. |
| Auto-increment | De engine genereert de waarde bij elke invoeging. |
| Beschrijving | Waar deze kolom voor dient. |

De prullenbak die verschijnt wanneer u met de muis over een kolom in de lijst gaat, verwijdert haar (in een nieuwe tabel verdwijnt zij meteen uit de lijst).
De kolomtypes
De types zijn logisch: u beschrijft wat de kolom bewaart en het platform vertaalt dat naar het juiste type van de gekoppelde engine. Dezelfde tekening past op elke ondersteunde database.
| Type | Waarvoor |
|---|---|
text |
Tekst van variabele lengte — namen, beschrijvingen, notities. |
char |
Tekst van vaste lengte — landcodes, afkortingen. |
integer |
Gehele getallen. Het natuurlijke type van een id. |
smallint |
Kleine gehele getallen. |
bigint |
Grote gehele getallen — tellers, externe identificatiecodes. |
decimal |
Exacte getallen met decimalen. Dit is het type van geld. |
float |
Benaderde getallen — metingen, wetenschappelijke percentages. |
boolean |
Ja/Nee. |
date |
Een datum, zonder tijd. |
time |
Een tijd, zonder datum. |
datetime |
Datum en tijd. |
uuid |
Universele identificatiecodes. |
json |
Vrije structuren die als gestructureerde tekst worden bewaard. |
binary |
Binaire inhoud. |
enum |
Een gesloten verzameling waarden, ter plekke bepaald — zie Relaties en enums. |

Dica
Gebruik voor bedragen decimal met precisie en schaal (18 · 2), nooit
float. float bewaart benaderingen — en een cent die door afronding in een
factuur verloren gaat, is een probleem dat maanden later opduikt.
Primaire sleutels
De Primaire sleutel (PK) is wat een record identificeert. In de praktijk is zij niet optioneel: zonder PK kan een tabel wel worden gelezen, maar niet worden bewerkt of verwijderd vanuit de schermen — de Tabel waarschuwt De datastore heeft een primaire sleutel nodig, en het Kanban schakelt het slepen uit. Bestaat de sleutel uit meer dan één kolom, schakel dan Primaire sleutel (PK) in bij elk van die kolommen.
Auto-increment legt het nummeren bij de engine neer. Dat heeft alleen zin bij kolommen met gehele getallen.
Een tabel in het model opnemen
Een tabel die al in de database bestaat (door u hier aangemaakt, of die er al eerder stond) moet in het model komen voordat de API's en de schermen haar zien. Er zijn twee wegen, en ze komen op hetzelfde neer:
- De tabel van de boom naar het diagram slepen — zij landt waar u haar loslaat.
- Het menu ⋯ van de tabel openen en Naar model importeren kiezen.
Het platform leest de structuur van de tabel en maakt de entiteit aan: een
naam met een hoofdletter (contas → Contas), de velden, de sleutels en de
relaties die het in de database gedeclareerd vindt.

De kaart van een entiteit
Elke entiteit is een kaart in het diagram:
- De naam van de entiteit in de kop, en twee knoppen: Zoeken in de boom (markeert de bijbehorende tabel in de zijbalk) en Uit het model verwijderen.
- Eén veld per regel, met de naam links en het type rechts. De markering PK duidt de primaire sleutel aan, en een ! achter het type betekent dat het veld niet leeg mag zijn.
- Enum-velden verschijnen cursief, met de naam van de enum in plaats van het type.
- Bij veel velden krimpt de kaart en biedt zij N velden meer tonen / Minder tonen aan.
- Onderaan somt de sectie Navigatie de paden naar de verwante entiteiten op — het onderwerp van Relaties en enums.

Atenção
Uit het model verwijderen doet precies dat: de entiteit en haar velden en relaties gaan uit het model van het platform, en de tabel in de database wordt niet aangeraakt. Het zijn de API's die de entiteit gebruikten die ophouden te werken.
Een tabel wijzigen
Het menu ⋯ van een tabel → Structuur bewerken opent de editor van de structuur, met twee tabbladen: Kolommen en Indexen (N).

Bovenaan staan de drie dingen die de tabel beschrijven:
| Veld | Wat het is |
|---|---|
| Naam in de database | De echte naam van de tabel. |
| Weergavenaam (apps) | De naam waaronder de tabel in de app bekend is. |
| Beschrijving van de tabel | Waar zij voor dient. |
De Weergavenaam (apps) is de brug tussen een database die u geërfd hebt en
een leesbare app: de kolom mag cli_nm_fis heten in de database en nome in de
app. Hij bestaat ook per kolom — en het is de weergavenaam die in de API's, de
datastores en de schermen verschijnt.
Aan de kolommen werken
Klik op een kolom in de lijst links om haar te bewerken. De wijzigingen zijn niet meteen van kracht: ze stapelen zich op en gebeuren pas wanneer u op Wijzigingen toepassen klikt.
- Een kolom die met + is toegevoegd, verschijnt gemarkeerd als nieuw en draagt de notitie Nieuwe kolom — wordt aangemaakt zodra de wijzigingen worden toegepast.
- Een bestaande kolom verwijderen (de prullenbak aan het einde van de regel) streept haar door en toont Gemarkeerd om te verwijderen (DROP) bij toepassen; Ongedaan maken draait dat terug.
- Is er niets toe te passen, dan zegt het platform Geen wijzigingen.

Atenção
Of u het type van een bestaande kolom kunt wijzigen, hangt af van de engine. Sommige engines kunnen dat niet, en het platform zegt u dat in plaats van het blindelings te proberen — de uitweg is dan een nieuwe kolom aanmaken, de gegevens overzetten en de oude verwijderen. Een kolom verwijderen wist de gegevens die erin staan: er is geen Ongedaan maken na Wijzigingen toepassen.
Indexen
Het tabblad Indexen (N) somt de indexen van de tabel op — naam, markering
unique en de kolommen — en laat u er aanmaken en verwijderen.
Een index aanmaken:
- Schrijf de naam (de conventie
ix_ietsis goed, en het is wat het veld voorstelt). - Vink unique aan als de index er ook is om herhaalde waarden te beletten — zo garandeert u dat er geen twee klanten met hetzelfde btw-nummer zijn.
- Klik op de kolommen die deel uitmaken van de index (de volgorde waarin u klikt is de volgorde van de index).
- Index aanmaken.

Een tabel zonder eigen indexen zegt Geen indexen (behalve de PK) — de primaire sleutel is al een index, die hoeft niet te worden aangemaakt.
Dica
De indexen die ertoe doen zijn die van de kolommen waarop elke dag wordt
gefilterd en gesorteerd: de conta_id van een detailtabel, de datum
van een historiek, de status waarop de lijst gefilterd wordt. Te veel indexen
maken het schrijven trager — maak ze niet "voor de zekerheid" aan.
De gegevens bekijken
Het menu ⋯ van een tabel → Gegevens bekijken opent de SQL-console onderaan, met de query al uitgevoerd en het resultaat in beeld. Het is de snelle manier om te controleren wat erin staat zonder het model te verlaten.

De console aanvaardt ook door u geschreven SQL: schrijf links, Uitvoeren, en het resultaat verschijnt rechts met het aantal rijen. De balk die de console van het diagram scheidt kunt u slepen, en het pijltje in de hoek klapt haar in.
Een tabel verwijderen
Het menu ⋯ van een tabel heeft Verwijderen, met bevestiging: Deze bewerking is definitief en verwijdert het object uit de database. Niet te verwarren met Uit het model verwijderen, dat enkel de entiteit uit de beschrijving van de app haalt.
Waarom niet…?
- Waarom zie ik mijn tabel niet in de API's? Waarschijnlijk staat zij nog niet in het model. Sleep haar van de boom naar het diagram, of gebruik Naar model importeren.
- Waarom heb ik een kolom aangemaakt en verschijnt zij niet? Controleer of u op Wijzigingen toepassen hebt geklikt — in de structuureditor gebeurt er daarvóór niets.
- Waarom laat mijn nieuwe tabel niet toe records in de schermen te bewerken? De Primaire sleutel (PK) ontbreekt. Zonder haar kunnen de schermen alleen lezen.
- Waarom kan ik het type van een kolom niet wijzigen? Er zijn engines zonder "kolom wijzigen". Het platform waarschuwt u, en de weg is: nieuwe kolom → gegevens kopiëren → de oude verwijderen.
- Waarom is de naam van het veld in de app niet die van de database? De Weergavenaam (apps) van die kolom is ingevuld. Dat is met opzet — en u bewerkt hem op dezelfde plek.
- Waarom is de entiteit uit het diagram verdwenen terwijl de tabel in de boom blijft staan? Zij is uit het model verwijderd. Sleep haar opnieuw van de boom naar het diagram.