Tabeller og felt
Modelleditoren — opprette tabeller, velge kolonnetyper, definere nøkler og indekser, og hente eksisterende tabeller inn i appens modell.
Før det finnes skjermer finnes det data: tabellene der applikasjonen lagrer kontoer, kontakter, bestillinger eller feriesøknader. I Keplin lever disse dataene i en database som er koblet til appen (en datakilde) og beskrives i en modell — tegningen over tabeller, felt, nøkler og relasjoner som resten av plattformen leser.
Denne siden handler om den første halvdelen av det arbeidet: å opprette og endre tabeller, velge typer, definere nøkler og indekser. Relasjonene og enum-feltene har sin egen side i Relasjoner og enums.
Eksemplene kommer fra appen Kundehåndtering: et CRM med tre tabeller —
contas, contactos og oportunidades.
To lag: databasen og modellen
Det er verdt å skille to ting som ligner på hverandre, med én gang:
| Lag | Hva det er | Hvem som bruker det |
|---|---|---|
| Databasen | Tabellene, kolonnene og indeksene som faktisk finnes i motoren som er koblet til appen. | Databasemotoren. Å endre den er å kjøre reelle kommandoer. |
| Modellen | Beskrivelsen av disse tabellene for plattformen: entiteter, felt, visningsnavn, beskrivelser, relasjoner og enums. | API-ene, skjermene, skriptene og rapportene. |
En tabell kommer bare inn i modellen når du importerer den — og å gå ut av modellen sletter ingenting i databasen. Det er derfor plattformen alltid skiller Fjern fra modellen fra Slett.
Åpne modellen
- Åpne appen og velg fanen Data i sidefeltet.
- Under Datakilder klikker du på navnet til datakilden — i Kundehåndtering, Dados CRM.
- Det åpnes en fane med modelldiagrammet i midten, SQL-konsollen nederst, og objekttreet til datakilden utvidet i sidefeltet.

Diagrammet dras med musen; knappene nede til venstre zoomer og rammer inn alt. Plasseringen til hver entitet lagres — du rydder diagrammet én gang, og slik åpner det seg igjen.
Objekttreet
Under datakilden viser treet hva som finnes i databasen, gruppert og med antallet i hver gruppe:
| Gruppe | Hva den lister opp |
|---|---|
| Tabeller | Tabellene i motoren. Hver av dem har sin egen meny (⋯). |
| Visninger | Visningene (lagrede spørringer med navn). |
| Programmering | Funksjoner / prosedyrer og Triggere — se Triggere. |

Feltet Søk i alt… øverst i sidefeltet filtrerer treet; med et aktivt søk åpner gruppene seg av seg selv, og en gruppe uten treff forsvinner.
Opprette en tabell
- Hold musen over datakilden og åpne menyen ⋯ (Handlinger for …).
- Velg Ny tabell.
- Fyll ut Navn på tabellen — det er navnet som blir liggende i databasen
(små bokstaver og understrek sparer deg for hodepine:
actividades,linhas_encomenda). - Skjema (valgfritt) betyr bare noe i motorer med skjemaer; la det stå tomt hvis du ikke bruker dem.
- Under Beskrivelse av tabellen skriver du hva den er til for. Det er ikke pynt: denne beskrivelsen følger tabellen på plattformen, og det er den som forklarer tabellen for den som kommer dit etter deg.
- Definer kolonnene (se nedenfor) og bekreft med Opprett tabell.

Nota
Tabellen opprettes på ordentlig, i databasen som er koblet til. Er tilkoblingen mot en produksjonsdatabase, er det der tabellen blir til.
Kolonnene
Panelet til venstre i dialogen er kolonnelisten (Kolonner (N)), og knappen + legger til en. Klikk på en kolonne i listen for å redigere den til høyre.
Tabellen starter alltid med en id-kolonne av typen integer, med
Primærnøkkel (PK) og Autoinkrement slått på — startpunktet som passer
9 av 10 tabeller.
| Felt | Hva det gjør |
|---|---|
| Navn | Navnet på kolonnen i databasen. |
| Type | Den logiske typen til kolonnen (fullstendig liste nedenfor). |
| Lengde | Bare i text og char — hvor mange tegn det er plass til. |
| Presisjon · Skala | Bare i decimal — antall siffer totalt og hvor mange som står til høyre for komma (18 · 2 for penger). |
| Enum-elementer | Bare i enum — se Relasjoner og enums. |
| Tillat NULL | Om kolonnen kan stå tom. Slått av nekter databasen poster uten verdi. |
| Primærnøkkel (PK) | Identifiserer posten entydig. |
| Autoinkrement | Motoren genererer verdien ved hver innsetting. |
| Beskrivelse | Hva denne kolonnen er til for. |

Søppelbøtta som dukker opp når du holder musen over en kolonne i listen, fjerner den (i en ny tabell forsvinner den fra listen med én gang).
Kolonnetypene
Typene er logiske: du beskriver hva kolonnen lagrer, og plattformen oversetter det til riktig type i motoren som er koblet til. Den samme tegningen fungerer for enhver støttet database.
| Type | Til hva |
|---|---|
text |
Tekst med variabel lengde — navn, beskrivelser, notater. |
char |
Tekst med fast lengde — landkoder, forkortelser. |
integer |
Heltall. Den naturlige typen for en id. |
smallint |
Små heltall. |
bigint |
Store heltall — tellere, eksterne identifikatorer. |
decimal |
Eksakte tall med desimaler. Det er pengenes type. |
float |
Tilnærmede tall — målinger, vitenskapelige prosenter. |
boolean |
Ja/nei. |
date |
En dato, uten klokkeslett. |
time |
Et klokkeslett, uten dato. |
datetime |
Dato og klokkeslett. |
uuid |
Universelle identifikatorer. |
json |
Frie strukturer lagret som strukturert tekst. |
binary |
Binært innhold. |
enum |
Et lukket sett med verdier, definert der og da — se Relasjoner og enums. |

Dica
For pengebeløp bruker du decimal med presisjon og skala (18 · 2), aldri
float. float lagrer tilnærminger — og et øre som forsvinner i avrunding på
en faktura er et problem som dukker opp måneder senere.
Primærnøkler
Primærnøkkel (PK) er det som identifiserer en post. I praksis er den ikke valgfri: uten PK kan en tabell leses, men kan verken redigeres eller slettes fra skjermene — Tabell sier ifra med Datastoren trenger en primærnøkkel, og Kanban slår av dra-og-slipp. Er nøkkelen satt sammen av mer enn én kolonne, slår du på Primærnøkkel (PK) i hver av dem.
Autoinkrement overlater nummereringen til motoren. Det gir bare mening i heltallskolonner.
Hente en tabell inn i modellen
En tabell som allerede finnes i databasen (opprettet av deg her, eller som lå der fra før) må inn i modellen for at API-ene og skjermene skal se den. Det finnes to veier, og de fører til det samme:
- Dra tabellen fra treet til diagrammet — den lander der du slipper den.
- Åpne menyen ⋯ for tabellen og velg Importer til modell.
Plattformen leser strukturen til tabellen og oppretter entiteten: et navn med
stor forbokstav (contas → Contas), feltene, nøklene og relasjonene den
finner deklarert i databasen.

Kortet til en entitet
Hver entitet er et kort i diagrammet:
- Navnet på entiteten i toppen, og to knapper: Finn i treet (merker den tilsvarende tabellen i sidefeltet) og Fjern fra modellen.
- Ett felt per linje, med navnet til venstre og typen til høyre. Merket PK viser primærnøkkelen, og et ! etter typen betyr at feltet ikke godtar tomt.
- Enum-felt vises i kursiv, med navnet på enumen i stedet for typen.
- Med mange felt krymper kortet og tilbyr Vis N felt til / Vis mindre.
- Nederst lister seksjonen Navigasjon opp veiene til de relaterte entitetene — temaet i Relasjoner og enums.

Atenção
Fjern fra modellen gjør nøyaktig det: entiteten og feltene og relasjonene dens går ut av plattformens modell, og tabellen i databasen røres ikke. Det er API-ene som brukte entiteten som slutter å virke.
Endre en tabell
Menyen ⋯ for en tabell → Rediger struktur åpner strukturredigereren, med to faner: Kolonner og Indekser (N).

Øverst står de tre tingene som beskriver tabellen:
| Felt | Hva det er |
|---|---|
| Navn i databasen | Det virkelige navnet på tabellen. |
| Visningsnavn (apper) | Navnet tabellen er kjent under i appen. |
| Beskrivelse av tabellen | Hva den er til for. |
Visningsnavn (apper) er broen mellom en database du har arvet og en app som
er til å lese: kolonnen kan hete cli_nm_fis i databasen og nome i appen. Det
finnes også per kolonne — og det er visningsnavnet som dukker opp i API-ene, i
datastorene og på skjermene.
Endre kolonnene
Klikk på en kolonne i listen til venstre for å redigere den. Endringene skjer ikke med én gang: de samler seg opp og skjer først når du trykker på Bruk endringene.
- En kolonne som legges til med + er merket som ny og har notatet Ny kolonne — opprettes når endringene tas i bruk.
- Å slette en kolonne som finnes fra før (søppelbøtta i enden av linjen) streker den over og viser Merket for sletting (DROP) når endringene tas i bruk; Angre tar det tilbake.
- Er det ingenting å ta i bruk, sier plattformen Ingen endringer.

Atenção
Å endre typen på en kolonne som allerede finnes avhenger av motoren. Noen motorer kan det ikke, og plattformen sier det til deg i stedet for å prøve i blinde — utveien er i de tilfellene å opprette en ny kolonne, flytte dataene og slette den gamle. Å slette en kolonne sletter dataene som ligger der: det finnes ingen Angre etter Bruk endringene.
Indekser
Fanen Indekser (N) lister opp indeksene i tabellen — navn, unique-merket og
kolonnene — og lar deg opprette og slette.
Slik oppretter du en indeks:
- Skriv navnet (konvensjonen
ix_alguma_coisaer god, og det er den feltet foreslår). - Kryss av for unique hvis indeksen også skal hindre gjentatte verdier — det er slik du sikrer at det ikke finnes to kunder med samme organisasjonsnummer.
- Klikk på kolonnene som inngår i indeksen (rekkefølgen du klikker i er rekkefølgen i indeksen).
- Opprett indeks.

En tabell uten egne indekser sier Ingen indekser (utenom PK-en) — primærnøkkelen er allerede en indeks, den trenger ikke å opprettes.
Dica
Indeksene som betyr noe er de på kolonnene du filtrerer og sorterer på
hver dag: conta_id i en detaljtabell, datoen i en historikk, statusen listen
filtreres på. For mange indekser gjør skrivingen tregere — ikke opprett dem
«for sikkerhets skyld».
Se dataene
Menyen ⋯ for en tabell → Vis data åpner SQL-konsollen nederst, med spørringen allerede kjørt og resultatet synlig. Det er den raske måten å bekrefte hva som ligger der uten å forlate modellen.

Konsollen godtar også SQL du skriver selv: skriv til venstre, Kjør, og resultatet dukker opp til høyre med antall rader. Skillelinjen mellom konsollen og diagrammet kan dras, og pilen i hjørnet slår den sammen.
Slette en tabell
Menyen ⋯ for en tabell har Slett, med bekreftelse: Denne operasjonen er permanent og fjerner objektet fra databasen. Ikke forveksle det med Fjern fra modellen, som bare tar entiteten ut av beskrivelsen av appen.
Hvorfor ikke…?
- Hvorfor ser jeg ikke tabellen min i API-ene? Sannsynligvis er den ennå ikke i modellen. Dra den fra treet til diagrammet, eller bruk Importer til modell.
- Hvorfor dukker ikke kolonnen jeg opprettet opp? Sjekk at du trykket på Bruk endringene — i strukturredigereren skjer ingenting før det.
- Hvorfor lar ikke den nye tabellen min meg redigere poster på skjermene? Primærnøkkel (PK) mangler. Uten den kan skjermene bare lese.
- Hvorfor får jeg ikke endret typen på en kolonne? Det finnes motorer uten «endre kolonne». Plattformen sier ifra, og veien er ny kolonne → kopiere dataene → slette den gamle.
- Hvorfor er ikke navnet på feltet i appen det samme som i databasen? Visningsnavn (apper) er satt for den kolonnen. Det er med vilje — og redigeres på samme sted.
- Hvorfor forsvant entiteten fra diagrammet, mens tabellen fortsatt står i treet? Den ble fjernet fra modellen. Dra den fra treet til diagrammet igjen.