Datamodellen
Lage databasen til appen, de tre tabellene i CRM-et og modellen med relasjonene som resten av plattformen skal bruke.
Appen Kundehåndtering finnes, og den er tom. Denne etappen gir den
grunnmuren: databasen der postene bor, tabellene contas, contactos og
oportunidades, og modellen som knytter alt sammen — kartet som
API-ene, skjermene og skriptene kommer til å lese fra nå av.
Når du er ferdig med denne siden, har du data på ordentlig: tre tabeller opprettet, koblet sammen, og en konsoll der spørringene gir deg rader.
To lag, og det er verdt å ikke blande dem
Keplin jobber med data i to lag som ligger oppå hverandre. De gjør forskjellige ting og betjenes på forskjellige steder:
| Lag | Hva det er | Hvor du jobber med det |
|---|---|---|
| Datakilde | Selve databasen — tilkoblingen, tabellene, kolonnene, radene. | Panelet Data ▸ Datakilder |
| Modell | Portrettet av den databasen inne på plattformen: entiteter, felter med vennlige navn og relasjoner. | Fanen til datakilden, på lerretet til modellen |
Skillet er praktisk. Å opprette en kolonne gjør noe med databasen. Å importere en tabell til modellen gjør ingenting med databasen — det sier bare til plattformen «denne tabellen er jeg interessert i, og slik leses den». Det er modellen som mater GraphQL-API-et til appen, tabell-API-ene og, gjennom dem, skjermene.
Nota
I denne veiledningen lages databasen fra bunnen av, inne i appen. Har organisasjonen din allerede en database med kundene i, er veien den samme fra steget «Importere tabellene til modellen» — registrer tilkoblingen og importer tabellene som finnes. Kapittelet Koble til databaser tar for seg det tilfellet.
Lage datakilden Dados CRM
Første steg er å registrere databasen til appen. Siden vi ikke skal koble til noe eksternt, bruker vi typen som plattformen lager og lagrer sammen med selve appen: den spør verken om server, port, brukernavn eller passord.
I arbeidsområdet til appen, velg panelet Data nederst i sidefeltet.
I seksjonen Datakilder, klikk på knappen + (Ny datakilde). Dialogen Ny datakilde åpnes — «Koble en database til denne appen. Alt krypteres i hvile.»
I Internt navn, skriv
Dados CRM. Det er under dette navnet — nøyaktig dette — at API-ene og skriptene kommer til å vise til tilkoblingen senere i veiledningen.Åpne listen Type. Den viser alle motorene som støttes; velg den for den lokale databasen, den som lagres sammen med appen. Legg merke til hva som skjer etterpå: feltene for server, port, brukernavn og passord forsvinner — det er ingenting å koble til.

Listen over databasetyper i dialogen Ny datakilde: de seks motorene som støttes. Ett felt blir igjen, Importer database (valgfritt). La det stå tomt: «Uten fil opprettes en tom database.» Det er det vi vil ha.
Klikk på Test tilkoblingen for å bekrefte — svaret er Tilkoblingen er OK.
Klikk på Opprett. Datakilden dukker opp i treet, og fanen til den åpnes med én gang, med lerretet til modellen — fortsatt tomt.

Atenção
Internt navn er en identifikator, ikke en etikett. Endrer du det
senere, må du gå gjennom skriptene som kaller db("Dados CRM") og
SQL-trinnene som valgte tilkoblingen på det gamle navnet.
Lage tabellen contas
Med datakilden på plass lages tabellene uten at du forlater plattformen.
- I treet, åpne ⋯-menyen til datakilden Dados CRM og velg Ny tabell.
- I Navn på tabellen, skriv
contas. La Skjema (valgfritt) stå tomt. - I Beskrivelse av tabellen, skriv
Kundebedrifter og potensielle kunder. Det er valgfritt, men det er dette du kommer til å lese om et år. - Listen KOLONNER kommer allerede med en kolonne
id, av typeninteger, med Primærnøkkel (PK) og Autoinkrement slått på. La den stå — det er identiteten til hver post. - Klikk på + i KOLONNER for hver nye kolonne og fyll inn Navn, Type og bryterne. Tabellen nedenfor sier hva du skal skrive.
- Bekreft med Opprett tabell. Tabellen blir til i databasen og dukker opp i objekttreet.

Kolonnene i tabellen contas:
| Kolonne | Type | Tillat NULL | Hva den er til |
|---|---|---|---|
id |
integer |
nei | Primærnøkkel, med autoinkrement |
nome |
text |
nei | Navnet på bedriften |
nif |
text |
ja | Organisasjonsnummer |
sector |
text |
ja | Næringsmiddel, Teknologi, Helse … |
cidade |
text |
ja | Der bedriften ligger |
telefone |
text |
ja | Generell kontakt |
email |
text |
ja | Generell kontakt |
estado |
text |
nei | ativo, prospeto eller inativo |
Dica
Tillat NULL slått av betyr påkrevd i databasen. Spar det til det som virkelig er påkrevd — navnet på en bedrift, kontoen en kontakt hører til. Et felt som er valgfritt i dag og påkrevd i morgen, endrer du på et øyeblikk; motsatt vei må du rydde data først.
Lage tabellene contactos og oportunidades
Gjenta bevegelsen — ⋯-menyen til datakilden ▸ Ny tabell — to ganger til.
contactos (beskrivelse: Kontaktpersoner for hver konto):
| Kolonne | Type | Tillat NULL | Hva den er til |
|---|---|---|---|
id |
integer |
nei | Primærnøkkel, med autoinkrement |
nome |
text |
nei | Navnet på personen |
cargo |
text |
ja | Daglig leder, Innkjøpsansvarlig … |
email |
text |
ja | |
telefone |
text |
ja | |
conta_id |
integer |
nei | Kontoen personen hører til |
oportunidades (beskrivelse: Pågående avtaler, etter fase):
| Kolonne | Type | Tillat NULL | Hva den er til |
|---|---|---|---|
id |
integer |
nei | Primærnøkkel, med autoinkrement |
titulo |
text |
nei | Navnet på avtalen |
conta_id |
integer |
nei | Kontoen avtalen hører til |
valor |
real |
ja | Verdi i euro — tall med desimaler |
fase |
text |
nei | Fasen avtalen er i (se nedenfor) |
data_fecho |
text |
ja | Forventet sluttdato, på formen ÅÅÅÅ-MM-DD |
responsavel |
text |
ja | Den som følger opp avtalen |
Kolonnen fase er en lukket liste med verdier. Den lagres som tekst, og
de mulige verdiene er alltid disse seks:
| Lagret verdi | Hva den betyr |
|---|---|
prospecao |
Det har ennå ikke vært noen ordentlig samtale |
qualificacao |
Det finnes interesse, og vi undersøker om det passer |
proposta |
Tilbud levert |
negociacao |
Vilkårene diskuteres |
fechada_ganha |
Avtalen er i havn |
fechada_perdida |
Avtalen er tapt |
Nota
Vi lagrer den «tekniske» verdien (fechada_ganha) og viser den pene
etiketten («Vunnet») på skjermen. Det er dette skillet som får
kanban-tavlen i neste etappe til å virke: hver kolonne på tavlen er én av
disse verdiene, med sin etikett og sin farge. Kolonnene estado (i
kontoene) og fase følger den samme ideen.
Se på og endre strukturen i en tabell
Du bommet på en type, en kolonne manglet, navnet var ikke det beste. Ingenting av det er endelig:
- I treet, åpne ⋯-menyen til tabellen og velg Rediger struktur.
- Dialogen har to faner: Kolonner og Indekser. Øverst ligger Navn i databasen, Visningsnavn (apper) — navnet skjermene kommer til å vise — og beskrivelsen.
- Klikk på en kolonne til venstre for å redigere den til høyre, eller bruk + for å legge til. Nye kolonner blir merket «Ny kolonne — opprettes når endringene tas i bruk.»; slettede kolonner blir merket «Merket for sletting (DROP) når endringene tas i bruk.», og slettingen kan angres så lenge du ikke har tatt endringene i bruk.
- Klikk på Bruk endringene.

Atenção
Å slette en kolonne sletter dataene i den. Plattformen utfører endringen først når du trykker på Bruk endringene — inntil da er alt et utkast, og å lukke dialogen ødelegger ingenting.
Se på og så inn data
Objekttreet har en konsoll under modellen, og det er gjennom den du kikker på (eller sår inn) data:
- Åpne ⋯-menyen til en tabell og velg Vis data. SQL-konsollen
åpnes nederst, allerede med en
selectklar for den tabellen. - Klikk på Kjør. Resultatene dukker opp til høyre, med antall rader og et felt Filtrer….
- For å legge inn de første radene, skriv de
insert-ene du vil ha i konsollen og kjør. Det er den raskeste måten å få eksempeldata på før det finnes skjermer å lage dem i.

Importere tabellene til modellen
Tabellene finnes, men plattformen vet ennå ikke at den skal bruke dem. Det er det importen gjør:
- I treet, utvid Dados CRM ▸ Tabeller. Alle tre ligger der.
- For hver av dem, åpne ⋯-menyen og velg Importer til modell — eller dra tabellen fra treet inn på lerretet til modellen, som er det samme.
- Hver tabell blir til et kort på lerretet: entiteten. Kortet viser feltene, typen til hvert av dem og merket PK på primærnøkkelen.

Navnene på entitetene får stor forbokstav — contas blir Contas —
fordi det er slik de vises i API-ene og på skjermene. Tabellen i databasen
heter fortsatt contas.
Nota
Å importere kopierer verken data eller lager noe i databasen. Og å fjerne en entitet fra modellen sletter heller ikke tabellen — «Tabellen i databasen endres IKKE», som varselet selv sier.
Koble sammen entitetene — de to relasjonene
Et CRM uten relasjoner er tre løsrevne lister. Det mangler to koblinger: hver kontakt hører til en konto, hver salgsmulighet hører til en konto.
For å lage en relasjon, dra feltet conta_id fra entiteten Contactos
til feltet id i entiteten Contas — hintet på kortet minner om det:
«Dra til et felt i en annen tabell for å koble». Dialogen Ny relasjon
åpnes, allerede med entitetene og kolonnene fylt ut:
| Felt | Hva du velger | Hvorfor |
|---|---|---|
| Kardinalitet | Én-til-mange (1:N) | En konto har mange kontakter; hver kontakt har én konto. |
| Forelder (det refereres til) | Contas ▸ id |
«Én»-siden. |
| Barn (har FK-en) | Contactos ▸ conta_id |
«Mange»-siden — det er den som lagrer referansen. |
| Relasjonstype | Fysisk — oppretter FK-en i databasen | Databasen garanterer nå at det ikke finnes foreldreløse kontakter. |
| Navigator på Contactos → Contas | conta |
Det virtuelle feltet som, ut fra en kontakt, gir deg kontoen til den. |
| Navigator på Contas → Contactos | contactos |
Det virtuelle feltet som, ut fra en konto, gir deg kontaktene til den. |
| Når forelderen slettes (ON DELETE) | Ingenting (blokkerer hvis det finnes barn) | Å slette en konto som har kontakter, blir nå avvist — heller en feilmelding enn et hull. |
Bekreft med Opprett relasjon og gjenta bevegelsen mellom
Oportunidades ▸ conta_id og Contas ▸ id, med den omvendte
navigatoren oportunidades.

Navigatorene er den delen som gir mest igjen. Det er felter som ikke
finnes i databasen, men som finnes i modellen: med dem gir en spørring etter
salgsmuligheter deg conta.nome uten at noen skriver en join. Det er
nøyaktig det tabellen på dashbordet skal gjøre i neste etappe, i kolonnen
Conta.
Dica
Fysisk oppretter fremmednøkkelen i databasen på ordentlig; Virtuell — bare i plattformens modell er til for databaser der du ikke kan (eller ikke vil) røre skjemaet. I denne veiledningen er databasen vår egen, så da fysisk.
Hva som ble låst opp
Med modellen på plass har appen fått ting gratis:
- GraphQL-API-et til appen kjenner allerede Contas, Contactos og Oportunidades, med relasjonene — se GraphQL-API-et fra modellen.
- Tabell-API-ene kan nå peke på en entitet og generere lesing og skriving uten en eneste linje SQL. Det er første steg i neste etappe.
- Skjermene kommer til å lese fra disse API-ene gjennom datastores.
Hvorfor ikke …?
- Hvorfor dukker ikke tabellen min opp i treet? Objekttreet leses fra databasen — bruk Oppdater objektene i ⋯-menyen til datakilden etter at du har gjort noe utenfor plattformen.
- Hvorfor får jeg ikke laget relasjonen? De to kolonnene må være
kompatible: en primærnøkkel av typen
integerkobles til eninteger. Dro du til feil felt, avbryt og prøv igjen — dialogen sier fra at det mangler kolonnevalg. - Hvorfor dukker ikke feltet
contaopp i dataene mine? Navigatorer er ikke kolonner: de finnes bare gjennom modellen. Spør du via SQL-konsollen, ser du de virkelige kolonnene; det er i API-ene og på skjermene navigatorene dukker opp. - Hvorfor lar ikke plattformen meg slette en konto? Du valgte Ingenting (blokkerer hvis det finnes barn) på ON DELETE — og det finnes kontakter eller salgsmuligheter som peker på den. Slett dem først, eller endre regelen i relasjonen.
Grunnmuren er på plass. Neste etappe: skjermene.