KEPLIN Docs

Das Datenmodell

Die Datenbank der App anlegen, die drei Tabellen des CRM und das Modell mit den Beziehungen, die der Rest der Plattform verwenden wird.

Die App Kundenverwaltung existiert und ist leer. Diese Etappe gibt ihr das Fundament: die Datenbank, in der die Datensätze leben, die Tabellen contas, contactos und oportunidades und das Modell, das alles verbindet — die Karte, die die APIs, die Bildschirme und die Skripte von hier an lesen werden.

Am Ende dieser Seite haben Sie echte Daten: drei erstellte Tabellen, miteinander verbunden, und eine Konsole, in der die Abfragen Zeilen zurückgeben.

Zwei Schichten, die man besser nicht verwechselt

Keplin arbeitet mit Daten in zwei übereinanderliegenden Schichten. Sie tun Unterschiedliches und werden an unterschiedlichen Orten angefasst:

Schicht Was sie ist Wo man sie anfasst
Datenquelle Die Datenbank selbst — die Verbindung, die Tabellen, die Spalten, die Zeilen. Panel DatenDatenquellen
Modell Das Abbild dieser Datenbank innerhalb der Plattform: Entitäten, Felder mit Anzeigenamen und Beziehungen. Der Tab der Datenquelle, im Canvas des Modells

Der Unterschied ist praktisch. Eine Spalte zu erstellen fasst die Datenbank an. Eine Tabelle ins Modell zu importieren fasst nichts in der Datenbank an — es sagt der Plattform nur „diese Tabelle interessiert mich, und so liest man sie“. Es ist das Modell, das die GraphQL-API der App speist, die Tabellen-APIs und, über sie, die Bildschirme.

Nota

In diesem Leitfaden wird die Datenbank von Grund auf innerhalb der App erstellt. Wenn Ihre Organisation bereits eine Datenbank mit den Kunden darin hat, ist der Weg ab dem Schritt „Die Tabellen ins Modell importieren“ derselbe — registrieren Sie die Verbindung und importieren Sie die vorhandenen Tabellen. Das Kapitel Datenbanken verbinden behandelt diesen Fall.

Die Datenquelle Dados CRM erstellen

Der erste Schritt ist, die Datenbank der App zu registrieren. Da wir nichts Externes verbinden, nehmen wir den Typ, den die Plattform selbst erstellt und zusammen mit der App speichert: Er verlangt weder Server noch Port, Benutzernamen oder Passwort.

  1. Wählen Sie im Arbeitsbereich der App am Fuß der Seitenleiste das Panel Daten.

  2. Klicken Sie im Abschnitt Datenquellen auf den Button + (Neue Datenquelle). Es öffnet sich der Dialog Neue Datenquelle„Verbinden Sie eine Datenbank mit dieser App. Alles wird ruhend verschlüsselt.“

  3. Schreiben Sie in Interner Name Dados CRM. Unter genau diesem Namen werden die APIs und die Skripte später im Leitfaden auf die Verbindung verweisen.

  4. Öffnen Sie die Liste Typ. Sie zeigt alle unterstützten Engines; wählen Sie die der lokalen Datenbank, der, die bei der App gespeichert wird. Achten Sie darauf, was danach passiert: Die Felder für Server, Port, Benutzer und Passwort verschwinden — es gibt nichts zu verbinden.

    Die Liste der Datenbanktypen im Dialog Neue Datenquelle: die sechs unterstützten Engines.
    Die Liste der Datenbanktypen im Dialog Neue Datenquelle: die sechs unterstützten Engines.

  5. Es bleibt ein Feld übrig, Datenbank importieren (optional). Lassen Sie es leer: „Ohne Datei wird eine leere Datenbank erstellt.“ Genau das wollen wir.

  6. Klicken Sie auf Verbindung testen, um es zu bestätigen — die Antwort ist Verbindung OK.

  7. Klicken Sie auf Erstellen. Die Datenquelle erscheint im Baum und ihr Tab öffnet sich sofort, mit dem Canvas des Modells — noch leer.

Der ausgefüllte Dialog Neue Datenquelle, mit der gewählten lokalen Datenbank.
Der ausgefüllte Dialog Neue Datenquelle, mit der gewählten lokalen Datenbank.

Atenção

Der Interne Name ist ein Bezeichner, kein Etikett. Ihn später zu ändern zwingt dazu, die Skripte zu überarbeiten, die db("Dados CRM") aufrufen, und die SQL-Schritte, die die Verbindung über den alten Namen gewählt haben.

Die Tabelle contas erstellen

Mit der erstellten Datenquelle entstehen die Tabellen, ohne die Plattform zu verlassen.

  1. Öffnen Sie im Baum das Menü der Datenquelle Dados CRM und wählen Sie Neue Tabelle.
  2. Schreiben Sie in Name der Tabelle contas. Lassen Sie Schema (optional) leer.
  3. Schreiben Sie in Beschreibung der Tabelle Empresas clientes e potenciais clientes. Sie ist optional, aber sie ist das, was Sie in einem Jahr lesen werden.
  4. Die Liste SPALTEN bringt bereits eine Spalte id mit, vom Typ integer, mit eingeschaltetem Primärschlüssel (PK) und Auto-Inkrement. Lassen Sie sie, wie sie ist — sie ist die Identität jedes Datensatzes.
  5. Klicken Sie für jede neue Spalte auf das + von SPALTEN und füllen Sie Name, Typ und die Schalter aus. Die Tabelle unten sagt, was zu schreiben ist.
  6. Bestätigen Sie mit Tabelle erstellen. Die Tabelle entsteht in der Datenbank und erscheint fortan im Objektbaum.

Der Dialog Neue Tabelle, mit dem Namen, der Beschreibung und dem Panel der Spalten.
Der Dialog Neue Tabelle, mit dem Namen, der Beschreibung und dem Panel der Spalten.

Die Spalten der Tabelle contas:

Spalte Typ NULL erlaubt Wofür sie da ist
id integer nein Primärschlüssel, mit Auto-Inkrement
nome text nein Der Name des Unternehmens
nif text ja Steuernummer
sector text ja Agrar- und Lebensmittelbranche, Technologie, Gesundheit…
cidade text ja Wo das Unternehmen sitzt
telefone text ja Allgemeine Kontaktdaten
email text ja Allgemeine Kontaktdaten
estado text nein ativo, prospeto oder inativo

Dica

NULL erlaubt ausgeschaltet heißt in der Datenbank verpflichtend. Reservieren Sie es für das, was wirklich verpflichtend ist — den Namen eines Unternehmens, das Konto, zu dem ein Kontakt gehört. Ein Feld, das heute optional und morgen verpflichtend ist, ändert man im Nu; umgekehrt zwingt es dazu, Daten aufzuräumen.

Die Tabellen contactos und oportunidades erstellen

Wiederholen Sie die Geste — Menü der Datenquelle ▸ Neue Tabelle — noch zweimal.

contactos (Beschreibung: Pessoas de contacto de cada conta):

Spalte Typ NULL erlaubt Wofür sie da ist
id integer nein Primärschlüssel, mit Auto-Inkrement
nome text nein Name der Person
cargo text ja Geschäftsführer, Einkaufsleiter…
email text ja
telefone text ja
conta_id integer nein Das Konto, zu dem die Person gehört

oportunidades (Beschreibung: Negócios em curso, por fase):

Spalte Typ NULL erlaubt Wofür sie da ist
id integer nein Primärschlüssel, mit Auto-Inkrement
titulo text nein Der Name des Geschäfts
conta_id integer nein Das Konto des Geschäfts
valor real ja Wert in Euro — Zahl mit Nachkommastellen
fase text nein Die Phase des Geschäfts (siehe unten)
data_fecho text ja Voraussichtliches Abschlussdatum, als JJJJ-MM-TT
responsavel text ja Wer das Geschäft betreut

Die Spalte fase ist eine geschlossene Liste von Werten. Sie wird als Text gespeichert, und die möglichen Werte sind immer diese sechs:

Gespeicherter Wert Was er bedeutet
prospecao Es gab noch kein ernsthaftes Gespräch
qualificacao Es gibt Interesse und wir prüfen, ob es passt
proposta Angebot abgegeben
negociacao Konditionen werden verhandelt
fechada_ganha Geschäft abgeschlossen
fechada_perdida Geschäft verloren

Nota

Wir speichern den „technischen“ Wert (fechada_ganha) und zeigen auf dem Bildschirm das schöne Etikett („Gewonnen“). Genau diese Trennung lässt das Kanban-Board der nächsten Etappe funktionieren: Jede Spalte des Boards ist einer dieser Werte, mit seinem Etikett und seiner Farbe. Die Spalten estado (der Konten) und fase folgen derselben Idee.

Die Struktur einer Tabelle prüfen und ändern

Sie haben sich in einem Typ vertan, eine Spalte fehlt, der Name ist nicht der beste. Nichts davon ist endgültig:

  1. Öffnen Sie im Baum das Menü der Tabelle und wählen Sie Struktur bearbeiten.
  2. Der Dialog hat zwei Tabs: Spalten und Indizes. Oben stehen der Name in der DB, der Anzeigename (Apps) — der Name, den die Bildschirme zeigen werden — und die Beschreibung.
  3. Klicken Sie links auf eine Spalte, um sie rechts zu bearbeiten, oder nutzen Sie das +, um eine hinzuzufügen. Neue Spalten sind markiert mit „Neue Spalte — wird beim Anwenden der Änderungen erstellt.“; gelöschte Spalten stehen als „Zum Löschen (DROP) beim Anwenden markiert.“, und das Löschen lässt sich rückgängig machen, solange Sie nicht angewendet haben.
  4. Klicken Sie auf Änderungen anwenden.

Struktur der Tabelle contas bearbeiten: die Spalten links, das Detail der Spalte rechts und Änderungen anwenden in der Fußzeile.
Struktur der Tabelle contas bearbeiten: die Spalten links, das Detail der Spalte rechts und Änderungen anwenden in der Fußzeile.

Atenção

Eine Spalte zu löschen löscht ihre Daten. Die Plattform führt die Änderung erst aus, wenn Sie auf Änderungen anwenden klicken — bis dahin ist alles Entwurf, und den Dialog zu schließen macht nichts kaputt.

Die Daten ansehen und säen

Der Objektbaum hat unter dem Modell eine Konsole, und über sie schaut man in die Daten hinein (oder sät sie):

  1. Öffnen Sie das Menü einer Tabelle und wählen Sie Daten anzeigen. Die SQL-Konsole öffnet sich unten, bereits mit einem select für diese Tabelle.
  2. Klicken Sie auf Ausführen. Die Ergebnisse erscheinen rechts, mit der Zahl der Zeilen und einem Feld Filtern….
  3. Um die ersten Zeilen einzutragen, schreiben Sie die gewünschten insert in die Konsole und führen sie aus. Das ist der schnellste Weg zu Beispieldaten, bevor es Bildschirme gibt, um sie anzulegen.

Die SQL-Konsole der Datenquelle mit den geladenen Konten des CRM.
Die SQL-Konsole der Datenquelle mit den geladenen Konten des CRM.

Die Tabellen ins Modell importieren

Die Tabellen existieren, aber die Plattform weiß noch nicht, dass sie sie verwenden soll. Genau das tut der Import:

  1. Klappen Sie im Baum Dados CRM ▸ Tabellen auf. Da sind alle drei.
  2. Öffnen Sie für jede das Menü und wählen Sie Ins Modell importieren — oder ziehen Sie die Tabelle aus dem Baum auf den Canvas des Modells, was auf dasselbe hinausläuft.
  3. Jede Tabelle wird zu einer Karte auf dem Canvas: der Entität. Die Karte zeigt die Felder, den Typ jedes einzelnen und die Markierung PK am Primärschlüssel.

Der Objektbaum der Datenquelle, mit den drei Tabellen des CRM.
Der Objektbaum der Datenquelle, mit den drei Tabellen des CRM.

Die Namen der Entitäten stehen mit großem Anfangsbuchstaben — aus contas wird Contas —, weil sie so in den APIs und in den Bildschirmen erscheinen. Die Tabelle in der Datenbank heißt weiterhin contas.

Nota

Importieren kopiert keine Daten und erstellt nichts in der Datenbank. Und eine Entität aus dem Modell zu entfernen löscht die Tabelle ebenso wenig — „Die Tabelle in der Datenbank wird NICHT geändert.“, wie der Hinweis selbst sagt.

Die Entitäten verbinden — die zwei Beziehungen

Ein CRM ohne Beziehungen sind drei lose Listen. Es fehlen zwei Verbindungen: Jeder Kontakt gehört zu einem Konto, jede Verkaufschance gehört zu einem Konto.

Um eine Beziehung zu erstellen, ziehen Sie das Feld conta_id der Entität Contactos auf das Feld id der Entität Contas — der Hinweis auf der Karte erinnert daran: „Auf ein Feld einer anderen Tabelle ziehen, um zu verknüpfen“. Es öffnet sich der Dialog Neue Beziehung, mit den Entitäten und den Spalten bereits ausgefüllt:

Feld Was zu wählen ist Warum
Kardinalität One-to-many (1:N) Ein Konto hat viele Kontakte; jeder Kontakt hat ein Konto.
Parent (referenziert) Contasid Die „Eins“-Seite.
Child (hält den FK) Contactosconta_id Die „Viele“-Seite — sie hält die Referenz.
Typ der Beziehung Physisch — erstellt den FK in der Datenbank Die Datenbank garantiert von nun an, dass es keine verwaisten Kontakte gibt.
Navigator in Contactos → Contas conta Das virtuelle Feld, das von einem Kontakt aus dessen Konto liefert.
Navigator in Contas → Contactos contactos Das virtuelle Feld, das von einem Konto aus dessen Kontakte liefert.
Beim Löschen des Parents (ON DELETE) Nichts (blockiert, wenn es Children gibt) Ein Konto mit Kontakten zu löschen wird von nun an abgelehnt — lieber ein Fehler als ein Loch.

Bestätigen Sie mit Beziehung erstellen und wiederholen Sie die Geste zwischen Oportunidadesconta_id und Contasid, mit dem umgekehrten Navigator oportunidades.

Das Modell der App Kundenverwaltung: die Entitäten Contas, Contactos und Oportunidades, mit den zwei zwischen ihnen gezeichneten Beziehungen.
Das Modell der App Kundenverwaltung: die Entitäten Contas, Contactos und Oportunidades, mit den zwei zwischen ihnen gezeichneten Beziehungen.

Die Navigators sind der Teil, der sich am meisten auszahlt. Es sind Felder, die es in der Datenbank nicht gibt, im Modell aber schon: Mit ihnen gibt eine Abfrage der Verkaufschancen conta.nome zurück, ohne dass jemand einen join schreibt. Genau das wird die Tabelle des Dashboards in der nächsten Etappe tun, in der Spalte Conta.

Dica

Physisch erstellt den Fremdschlüssel tatsächlich in der Datenbank; Virtuell — nur im Modell der Plattform dient für Datenbanken, in denen Sie das Schema nicht anfassen können (oder wollen). In diesem Leitfaden gehört die Datenbank uns, also physisch.

Was jetzt freigeschaltet ist

Mit dem fertigen Modell hat die App Dinge geschenkt bekommen:

  • Die GraphQL-API der App kennt bereits Contas, Contactos und Oportunidades, samt den Beziehungen — siehe Die GraphQL-API des Modells.
  • Die Tabellen-APIs können jetzt auf eine Entität zeigen und Lesen und Schreiben erzeugen, ohne eine Zeile SQL. Das ist der erste Schritt der nächsten Etappe.
  • Die Bildschirme werden über Datastores aus diesen APIs lesen.

Warum nicht…?

  • Warum erscheint meine Tabelle nicht im Baum? Der Objektbaum wird aus der Datenbank gelesen — nutzen Sie Objekte aktualisieren im Menü der Datenquelle, nachdem Sie außerhalb der Plattform etwas geändert haben.
  • Warum kann ich die Beziehung nicht erstellen? Die beiden Spalten müssen kompatibel sein: Ein Primärschlüssel integer verbindet sich mit einem integer. Wenn Sie auf das falsche Feld gezogen haben, brechen Sie ab und wiederholen es — der Dialog sagt, dass die Spalten noch zu wählen sind.
  • Warum erscheint das Feld conta nicht in meinen Daten? Die Navigators sind keine Spalten: Es gibt sie nur über das Modell. Wenn Sie über die SQL-Konsole abfragen, sehen Sie die echten Spalten; in den APIs und in den Bildschirmen erscheinen die Navigators.
  • Warum lässt mich die Plattform ein Konto nicht löschen? Sie haben Nichts (blockiert, wenn es Children gibt) beim ON DELETE gewählt — und es gibt Kontakte oder Verkaufschancen, die darauf zeigen. Löschen Sie diese zuerst, oder ändern Sie die Regel der Beziehung.

Das Fundament steht. Nächste Etappe: die Bildschirme.