KEPLIN Docs

Il modello dei dati

Creare il database dell'app, le tre tabelle del CRM e il modello con le relazioni che il resto della piattaforma userà.

L'app Gestione Clienti esiste ed è vuota. Questa tappa le dà le fondamenta: il database dove vivono i record, le tabelle contas, contactos e oportunidades, e il modello che collega tutto — la mappa che le API, le schermate e gli script leggeranno da qui in avanti.

Alla fine di questa pagina hai dati veri: tre tabelle create, collegate fra loro, e una console dove le query restituiscono righe.

Due strati, e vale la pena non confonderli

Keplin lavora con i dati su due strati sovrapposti. Fanno cose diverse e si toccano in posti diversi:

Strato Che cos'è Dove si tocca
Datasource Il database in sé — la connessione, le tabelle, le colonne, le righe. Pannello DatiOrigini dati
Modello Il ritratto di quel database dentro la piattaforma: entità, campi con nomi descrittivi e relazioni. La scheda del datasource, nel canvas del modello

La distinzione è pratica. Creare una colonna tocca il database. Importare una tabella nel modello non tocca niente nel database — dice soltanto alla piattaforma "questa tabella mi interessa, ed è così che si legge". È il modello ad alimentare l'API GraphQL dell'app, le API di tabella e, attraverso di esse, le schermate.

Nota

In questa guida il database viene creato da zero, dentro l'app. Se la tua organizzazione ha già un database con i clienti dentro, il cammino è lo stesso a partire dal passo "Importare le tabelle nel modello" — registra la connessione e importa le tabelle che esistono. Il capitolo Collegare database tratta questo caso.

Creare il datasource Dados CRM

Il primo passo è registrare il database dell'app. Dato che non collegheremo niente di esterno, usiamo il tipo che la piattaforma crea e conserva insieme all'app: non chiede server, porta, utente né password.

  1. Nello spazio di lavoro dell'app, scegli il pannello Dati alla base della barra laterale.

  2. Nella sezione Origini dati, clicca sul pulsante + (Nuovo datasource). Si apre la finestra Nuovo datasource"Collega un database a questa app. Tutto è cifrato a riposo."

  3. In Nome interno, scrivi Dados CRM. È con questo nome — esattamente questo — che le API e gli script si riferiranno alla connessione più avanti nella guida.

  4. Apri l'elenco Tipo. Mostra tutti i motori supportati; scegli quello del database locale, quello che resta salvato con l'app. Guarda che cosa succede dopo: i campi di server, porta, utente e password scompaiono — non c'è niente da collegare.

    L'elenco dei tipi di database nella finestra Nuovo datasource: i sei motori supportati.
    L'elenco dei tipi di database nella finestra Nuovo datasource: i sei motori supportati.

  5. Resta un campo, Importa database (opzionale). Lascialo vuoto: "Senza file, viene creato un database vuoto." È quello che vogliamo.

  6. Clicca su Prova connessione per confermare — la risposta è Connessione OK.

  7. Clicca su Crea. Il datasource appare nell'albero e la sua scheda si apre subito, con il canvas del modello — ancora vuoto.

La finestra Nuovo datasource compilata, con il database locale scelto.
La finestra Nuovo datasource compilata, con il database locale scelto.

Atenção

Il Nome interno è un identificatore, non un'etichetta. Cambiarlo più tardi obbliga a rivedere gli script che chiamano db("Dados CRM") e i passi SQL che hanno scelto la connessione con il vecchio nome.

Creare la tabella contas

Con il datasource creato, le tabelle si fanno senza uscire dalla piattaforma.

  1. Nell'albero, apri il menu del datasource Dados CRM e scegli Nuova tabella.
  2. In Nome della tabella, scrivi contas. Lascia Schema (opzionale) in bianco.
  3. In Descrizione della tabella, scrivi Aziende clienti e potenziali clienti. È opzionale, ma è quello che leggerai fra un anno.
  4. L'elenco Colonne porta già una colonna id, di tipo integer, con Chiave primaria (PK) e Incremento automatico attivi. Lasciala com'è — è l'identità di ogni record.
  5. Clicca sul + di Colonne per ogni colonna nuova e compila Nome, Tipo e gli interruttori. La tabella qui sotto dice che cosa scrivere.
  6. Conferma con Crea tabella. La tabella nasce nel database e comincia ad apparire nell'albero degli oggetti.

La finestra Nuova tabella, con il nome, la descrizione e il pannello delle colonne.
La finestra Nuova tabella, con il nome, la descrizione e il pannello delle colonne.

Le colonne della tabella contas:

Colonna Tipo Consente NULL A che cosa serve
id integer no Chiave primaria, con incremento automatico
nome text no Il nome dell'azienda
nif text Partita IVA
sector text Agroalimentare, Tecnologia, Sanità…
cidade text Dove si trova l'azienda
telefone text Contatto generale
email text Contatto generale
estado text no ativo, prospeto o inativo

Dica

Consente NULL disattivato vuol dire obbligatorio nel database. Riservalo a ciò che è davvero obbligatorio — il nome di un'azienda, l'account a cui appartiene un contatto. Un campo che oggi è opzionale e domani obbligatorio si cambia in un attimo; il contrario obbliga a ripulire i dati.

Creare le tabelle contactos e oportunidades

Ripeti il gesto — menu del datasource ▸ Nuova tabella — altre due volte.

contactos (descrizione: Persone di contatto di ogni account):

Colonna Tipo Consente NULL A che cosa serve
id integer no Chiave primaria, con incremento automatico
nome text no Nome della persona
cargo text Direttore Generale, Responsabile Acquisti…
email text
telefone text
conta_id integer no L'account a cui la persona appartiene

oportunidades (descrizione: Affari in corso, per fase):

Colonna Tipo Consente NULL A che cosa serve
id integer no Chiave primaria, con incremento automatico
titulo text no Il nome dell'affare
conta_id integer no L'account dell'affare
valor real Valore in euro — numero con decimali
fase text no La fase dell'affare (vedi sotto)
data_fecho text Data prevista di chiusura, in AAAA-MM-GG
responsavel text Chi segue l'affare

La colonna fase è un elenco chiuso di valori. Si conserva come testo, e i valori possibili sono sempre questi sei:

Valore salvato Che cosa significa
prospecao Non c'è ancora stata una conversazione seria
qualificacao C'è interesse e stiamo capendo se combacia
proposta Proposta consegnata
negociacao Si discutono le condizioni
fechada_ganha Affare chiuso
fechada_perdida Affare perso

Nota

Conserviamo il valore "tecnico" (fechada_ganha) e mostriamo l'etichetta bella ("Vinta") sullo schermo. È questa separazione che fa funzionare la bacheca kanban della tappa successiva: ogni colonna della bacheca è uno di questi valori, con la sua etichetta e il suo colore. Le colonne estado (degli account) e fase seguono la stessa idea.

Rivedere e modificare la struttura di una tabella

Hai sbagliato un tipo, manca una colonna, il nome non è il migliore. Niente di tutto ciò è definitivo:

  1. Nell'albero, apri il menu della tabella e scegli Modifica struttura.
  2. La finestra ha due schede: Colonne e Indici. In alto ci sono il Nome nel DB, il Nome descrittivo (app) — il nome che le schermate mostreranno — e la descrizione.
  3. Clicca su una colonna a sinistra per modificarla a destra, o usa il + per aggiungerne una. Le colonne nuove sono contrassegnate "Colonna nuova — viene creata applicando le modifiche"; le colonne eliminate restano "Contrassegnata per l'eliminazione (DROP) all'applicazione", e l'eliminazione si annulla finché non applichi.
  4. Clicca su Applica modifiche.

Modifica struttura della tabella contas: le colonne a sinistra, il dettaglio della colonna a destra e Applica modifiche nel piè di pagina.
Modifica struttura della tabella contas: le colonne a sinistra, il dettaglio della colonna a destra e Applica modifiche nel piè di pagina.

Atenção

Eliminare una colonna ne elimina i dati. La piattaforma esegue la modifica solo quando premi Applica modifiche — fino a quel momento è tutto una bozza, e chiudere la finestra non rovina niente.

Vedere e seminare i dati

L'albero degli oggetti ha una console sotto il modello, ed è da lì che si sbirciano (o si seminano) i dati:

  1. Apri il menu di una tabella e scegli Visualizza dati. La Console SQL si apre in basso, già con un select pronto per quella tabella.
  2. Clicca su Esegui. I risultati appaiono a destra, con il numero di righe e un campo Filtra….
  3. Per inserire le prime righe, scrivi nella console gli insert che vuoi ed esegui. È il modo più rapido di avere dati di esempio prima che ci siano schermate per crearli.

La console SQL del datasource con gli account del CRM caricati.
La console SQL del datasource con gli account del CRM caricati.

Importare le tabelle nel modello

Le tabelle esistono, ma la piattaforma non sa ancora di volerle usare. È quello che fa l'importazione:

  1. Nell'albero, espandi Dados CRM ▸ Tabelle. Ci sono tutte e tre.
  2. Per ognuna, apri il menu e scegli Importa nel modello — oppure trascina la tabella dall'albero al canvas del modello, che è lo stesso.
  3. Ogni tabella diventa un cartoncino nel canvas: l'entità. Il cartoncino mostra i campi, il tipo di ciascuno e il segno PK sulla chiave primaria.

L'albero degli oggetti del datasource, con le tre tabelle del CRM.
L'albero degli oggetti del datasource, con le tre tabelle del CRM.

I nomi delle entità restano con l'iniziale maiuscola — contas diventa Contas — perché è così che appaiono nelle API e nelle schermate. La tabella nel database continua a chiamarsi contas.

Nota

Importare non copia dati né crea niente nel database. E rimuovere un'entità dal modello non elimina nemmeno la tabella — "NON modifica la tabella nel database", come dice l'avviso stesso.

Collegare le entità — le due relazioni

Un CRM senza relazioni è tre elenchi scollegati. Mancano due collegamenti: ogni contatto appartiene a un account, ogni opportunità appartiene a un account.

Per creare una relazione, trascina il campo conta_id dell'entità Contactos sul campo id dell'entità Contas — il suggerimento sul cartoncino lo ricorda: "Trascina su un campo di un'altra tabella per collegare". Si apre la finestra Nuova relazione, già con le entità e le colonne compilate:

Campo Che cosa scegliere Perché
Cardinalità Uno a molti (1:N) Un account ha molti contatti; ogni contatto ha un account.
Parent (referenziata) Contasid Il lato "uno".
Child (ha la FK) Contactosconta_id Il lato "molti" — è lui a conservare il riferimento.
Tipo di relazione Fisica — crea la FK nel database Il database si prende l'incarico di garantire che non ci siano contatti orfani.
Navigator su Contactos → Contas conta Il campo virtuale che, a partire da un contatto, dà il suo account.
Navigator su Contas → Contactos contactos Il campo virtuale che, a partire da un account, dà i suoi contatti.
Quando si elimina il padre (ON DELETE) Niente (blocca se ci sono figli) Eliminare un account con contatti viene rifiutato — meglio un errore che un buco.

Conferma con Crea relazione e ripeti il gesto fra Oportunidadesconta_id e Contasid, con il navigator inverso oportunidades.

Il modello dell'app Gestione Clienti: le entità Contas, Contactos e Oportunidades, con le due relazioni disegnate fra loro.
Il modello dell'app Gestione Clienti: le entità Contas, Contactos e Oportunidades, con le due relazioni disegnate fra loro.

I navigator sono la parte che rende di più. Sono campi che non esistono nel database ma esistono nel modello: con loro, una query sulle opportunità restituisce conta.nome senza che nessuno scriva un join. È esattamente questo che farà la tabella della dashboard nella tappa successiva, nella colonna Conta.

Dica

Fisica crea davvero la chiave esterna nel database; Virtuale — solo nel modello della piattaforma serve per i database dove non puoi (o non vuoi) toccare lo schema. In questa guida il database è nostro, quindi fisica.

Che cosa si è sbloccato

Con il modello pronto, l'app ha guadagnato cose gratis:

  • L'API GraphQL dell'app conosce già Contas, Contactos e Oportunidades, con le relazioni — vedi L'API GraphQL del modello.
  • Le API di tabella possono ora puntare a un'entità e generare lettura e scrittura senza una riga di SQL. È il primo passo della tappa successiva.
  • Le schermate leggeranno da queste API attraverso i datastore.

Perché non…?

  • Perché non appare la mia tabella nell'albero? L'albero degli oggetti viene letto dal database — usa Aggiorna oggetti nel menu del datasource dopo aver messo le mani fuori dalla piattaforma.
  • Perché non riesco a creare la relazione? Le due colonne devono essere compatibili: una chiave primaria integer si collega a un integer. Se hai trascinato sul campo sbagliato, annulla e ripeti — la finestra dice che manca la scelta delle colonne.
  • Perché il campo conta non appare nei miei dati? I navigator non sono colonne: esistono solo attraverso il modello. Se stai facendo query dalla Console SQL vedi le colonne reali; è nelle API e nelle schermate che i navigator appaiono.
  • Perché la piattaforma non mi lascia eliminare un account? Hai scelto Niente (blocca se ci sono figli) nell'ON DELETE — e ci sono contatti o opportunità che puntano a lui. Eliminali prima, oppure cambia la regola della relazione.

Le fondamenta sono fatte. Prossima tappa: le schermate.