KEPLIN Docs

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 DataDatakilder
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.

  1. I arbeidsområdet til appen, velg panelet Data nederst i sidefeltet.

  2. I seksjonen Datakilder, klikk på knappen + (Ny datakilde). Dialogen Ny datakilde åpnes — «Koble en database til denne appen. Alt krypteres i hvile.»

  3. 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.

  4. Å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.
    Listen over databasetyper i dialogen Ny datakilde: de seks motorene som støttes.

  5. Ett felt blir igjen, Importer database (valgfritt). La det stå tomt: «Uten fil opprettes en tom database.» Det er det vi vil ha.

  6. Klikk på Test tilkoblingen for å bekrefte — svaret er Tilkoblingen er OK.

  7. Klikk på Opprett. Datakilden dukker opp i treet, og fanen til den åpnes med én gang, med lerretet til modellen — fortsatt tomt.

Dialogen Ny datakilde fylt ut, med den lokale databasen valgt.
Dialogen Ny datakilde fylt ut, med den lokale databasen valgt.

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.

  1. I treet, åpne -menyen til datakilden Dados CRM og velg Ny tabell.
  2. I Navn på tabellen, skriv contas. La Skjema (valgfritt) stå tomt.
  3. I Beskrivelse av tabellen, skriv Kundebedrifter og potensielle kunder. Det er valgfritt, men det er dette du kommer til å lese om et år.
  4. Listen KOLONNER kommer allerede med en kolonne id, av typen integer, med Primærnøkkel (PK) og Autoinkrement slått på. La den stå — det er identiteten til hver post.
  5. Klikk på + i KOLONNER for hver nye kolonne og fyll inn Navn, Type og bryterne. Tabellen nedenfor sier hva du skal skrive.
  6. Bekreft med Opprett tabell. Tabellen blir til i databasen og dukker opp i objekttreet.

Dialogen Ny tabell, med navnet, beskrivelsen og kolonnepanelet.
Dialogen Ny tabell, med navnet, beskrivelsen og kolonnepanelet.

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:

  1. I treet, åpne -menyen til tabellen og velg Rediger struktur.
  2. Dialogen har to faner: Kolonner og Indekser. Øverst ligger Navn i databasen, Visningsnavn (apper) — navnet skjermene kommer til å vise — og beskrivelsen.
  3. 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.
  4. Klikk på Bruk endringene.

Rediger strukturen i tabellen contas: kolonnene til venstre, detaljene om kolonnen til høyre og Bruk endringene i bunnen.
Rediger strukturen i tabellen contas: kolonnene til venstre, detaljene om kolonnen til høyre og Bruk endringene i bunnen.

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:

  1. Åpne -menyen til en tabell og velg Vis data. SQL-konsollen åpnes nederst, allerede med en select klar for den tabellen.
  2. Klikk på Kjør. Resultatene dukker opp til høyre, med antall rader og et felt Filtrer….
  3. 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.

SQL-konsollen i datakilden med kontoene i CRM-et lastet inn.
SQL-konsollen i datakilden med kontoene i CRM-et lastet inn.

Importere tabellene til modellen

Tabellene finnes, men plattformen vet ennå ikke at den skal bruke dem. Det er det importen gjør:

  1. I treet, utvid Dados CRM ▸ Tabeller. Alle tre ligger der.
  2. 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.
  3. Hver tabell blir til et kort på lerretet: entiteten. Kortet viser feltene, typen til hvert av dem og merket PK på primærnøkkelen.

Objekttreet til datakilden, med de tre tabellene i CRM-et.
Objekttreet til datakilden, med de tre tabellene i CRM-et.

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) Contasid «Én»-siden.
Barn (har FK-en) Contactosconta_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 Oportunidadesconta_id og Contasid, med den omvendte navigatoren oportunidades.

Modellen til appen Kundehåndtering: entitetene Contas, Contactos og Oportunidades, med de to relasjonene tegnet mellom seg.
Modellen til appen Kundehåndtering: entitetene Contas, Contactos og Oportunidades, med de to relasjonene tegnet mellom seg.

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 integer kobles til en integer. Dro du til feil felt, avbryt og prøv igjen — dialogen sier fra at det mangler kolonnevalg.
  • Hvorfor dukker ikke feltet conta opp 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.