Tabellen und Felder
Der Modell-Editor — Tabellen anlegen, Spaltentypen wählen, Schlüssel und Indizes festlegen und vorhandene Tabellen ins Modell der App holen.
Bevor es Bildschirme gibt, gibt es Daten: die Tabellen, in denen die Anwendung Konten, Kontakte, Bestellungen oder Urlaubsanträge speichert. In Keplin leben diese Daten in einer mit der App verbundenen Datenbank (einer Datenquelle) und werden in einem Modell beschrieben — dem Entwurf aus Tabellen, Feldern, Schlüsseln und Beziehungen, den der gesamte Rest der Plattform liest.
Diese Seite behandelt die erste Hälfte dieser Arbeit: Tabellen anlegen und ändern, Typen wählen, Schlüssel und Indizes festlegen. Die Beziehungen und die Aufzählungsfelder haben eine eigene Seite unter Beziehungen und Enums.
Die Beispiele stammen aus der App Kundenverwaltung: ein CRM mit drei
Tabellen — contas, contactos und oportunidades.
Zwei Schichten: die Datenbank und das Modell
Es lohnt sich, gleich zu Beginn zwei Dinge zu trennen, die sich ähneln:
| Schicht | Was es ist | Wer sie nutzt |
|---|---|---|
| Die Datenbank | Die Tabellen, Spalten und Indizes, die tatsächlich in der mit der App verbundenen Engine existieren. | Die Datenbank-Engine. Sie zu ändern heißt, echte Befehle auszuführen. |
| Das Modell | Die Beschreibung dieser Tabellen für die Plattform: Entitäten, Felder, Anzeigenamen, Beschreibungen, Beziehungen und Enums. | Die APIs, die Bildschirme, die Skripte und die Berichte. |
Eine Tabelle kommt erst ins Modell, wenn Sie sie importieren — und aus dem Modell auszutreten löscht nichts in der Datenbank. Deshalb unterscheidet die Plattform immer zwischen Aus dem Modell entfernen und Löschen.
Das Modell öffnen
- Öffnen Sie die App und wählen Sie den Tab Daten in der Seitenleiste.
- Klicken Sie unter Datenquellen auf den Namen der Datenquelle — in der Kundenverwaltung Dados CRM.
- Es öffnet sich ein Tab mit dem Modelldiagramm in der Mitte, der SQL-Konsole unten und dem aufgeklappten Objektbaum der Datenquelle in der Seitenleiste.

Das Diagramm lässt sich mit der Maus verschieben; die Buttons in der unteren linken Ecke zoomen und rücken alles ins Bild. Die Position jeder Entität wird gespeichert — Sie räumen das Diagramm einmal auf, und so öffnet es sich wieder.
Der Objektbaum
Unterhalb der Datenquelle zeigt der Baum, was in der Datenbank existiert, gruppiert und mit der Anzahl je Gruppe:
| Gruppe | Was dort steht |
|---|---|
| Tabellen | Die Tabellen der Engine. Jede hat ihr eigenes Menü (⋯). |
| Ansichten | Die Views (gespeicherte Abfragen mit Namen). |
| Programmierung | Funktionen / Prozeduren und Trigger — siehe Trigger. |

Das Feld Überall suchen… oben in der Seitenleiste filtert den Baum; bei aktiver Suche klappen die Gruppen von selbst auf, und eine Gruppe ohne Treffer verschwindet.
Eine Tabelle anlegen
- Fahren Sie mit der Maus über die Datenquelle und öffnen Sie das Menü ⋯ (Aktionen für …).
- Wählen Sie Neue Tabelle.
- Füllen Sie Name der Tabelle aus — das ist der Name, der in der Datenbank
landet (Kleinbuchstaben und Unterstriche ersparen Ihnen Kopfschmerzen:
actividades,linhas_encomenda). - Schema (optional) ist nur bei Engines mit Schemas interessant; lassen Sie es leer, wenn Sie keine verwenden.
- Schreiben Sie unter Beschreibung der Tabelle, wofür sie da ist. Das ist keine Dekoration: Diese Beschreibung begleitet die Tabelle in der Plattform und erklärt sie demjenigen, der nach Ihnen dort ankommt.
- Definieren Sie die Spalten (siehe unten) und bestätigen Sie mit Tabelle erstellen.

Nota
Die Tabelle wird wirklich angelegt, in der verbundenen Datenbank. Wenn die Verbindung zu einer Produktionsdatenbank führt, entsteht die Tabelle dort.
Die Spalten
Die linke Seite des Dialogs ist die Spaltenliste (Spalten (N)), und der Button + fügt eine hinzu. Klicken Sie auf eine Spalte in der Liste, um sie rechts zu bearbeiten.
Die Tabelle beginnt immer mit einer Spalte id vom Typ integer, mit
aktiviertem Primärschlüssel (PK) und Auto-Inkrement — der Start, der bei
9 von 10 Tabellen passt.
| Feld | Was es tut |
|---|---|
| Name | Der Name der Spalte in der Datenbank. |
| Typ | Der logische Typ der Spalte (vollständige Liste unten). |
| Länge | Nur bei text und char — wie viele Zeichen hineinpassen. |
| Genauigkeit · Skala | Nur bei decimal — Gesamtzahl der Stellen und wie viele davon rechts vom Komma stehen (18 · 2 für Geld). |
| Enum-Einträge | Nur bei enum — siehe Beziehungen und Enums. |
| NULL erlaubt | Ob die Spalte leer bleiben darf. Ausgeschaltet weist die Datenbank Datensätze ohne Wert zurück. |
| Primärschlüssel (PK) | Identifiziert den Datensatz eindeutig. |
| Auto-Inkrement | Die Engine erzeugt den Wert bei jedem Einfügen. |
| Beschreibung | Wofür diese Spalte da ist. |

Der Papierkorb, der beim Überfahren einer Spalte in der Liste erscheint, entfernt sie (in einer neuen Tabelle verschwindet sie sofort aus der Liste).
Die Spaltentypen
Die Typen sind logisch: Sie beschreiben, was die Spalte speichert, und die Plattform übersetzt das in den richtigen Typ der verbundenen Engine. Derselbe Entwurf passt zu jeder unterstützten Datenbank.
| Typ | Wofür |
|---|---|
text |
Text variabler Länge — Namen, Beschreibungen, Notizen. |
char |
Text fester Länge — Ländercodes, Kürzel. |
integer |
Ganze Zahlen. Der natürliche Typ einer id. |
smallint |
Kleine ganze Zahlen. |
bigint |
Große ganze Zahlen — Zähler, externe Identifikatoren. |
decimal |
Exakte Zahlen mit Nachkommastellen. Der Typ für Geld. |
float |
Näherungswerte — Messungen, wissenschaftliche Prozentsätze. |
boolean |
Ja/Nein. |
date |
Ein Datum, ohne Uhrzeit. |
time |
Eine Uhrzeit, ohne Datum. |
datetime |
Datum und Uhrzeit. |
uuid |
Universelle Identifikatoren. |
json |
Freie Strukturen, als strukturierter Text gespeichert. |
binary |
Binärer Inhalt. |
enum |
Eine geschlossene Wertemenge, direkt dort definiert — siehe Beziehungen und Enums. |

Dica
Für Geldbeträge verwenden Sie decimal mit Genauigkeit und Skala (18 · 2),
niemals float. float speichert Näherungen — und ein durch Rundung
verlorener Cent auf einer Rechnung ist ein Problem, das Monate später
auftaucht.
Primärschlüssel
Der Primärschlüssel (PK) ist das, was einen Datensatz identifiziert. In der Praxis ist er nicht optional: Ohne PK kann eine Tabelle gelesen, aber weder bearbeitet noch gelöscht werden — die Tabelle meldet Der Datastore braucht einen Primärschlüssel., und das Kanban schaltet das Ziehen ab. Besteht der Schlüssel aus mehr als einer Spalte, aktivieren Sie Primärschlüssel (PK) bei jeder davon.
Auto-Inkrement überlässt der Engine die Arbeit des Nummerierens. Das ergibt nur bei Ganzzahlspalten Sinn.
Eine Tabelle ins Modell holen
Eine Tabelle, die in der Datenbank bereits existiert (von Ihnen hier angelegt oder schon vorher vorhanden), muss ins Modell, damit die APIs und die Bildschirme sie sehen. Es gibt zwei Wege, und sie laufen auf dasselbe hinaus:
- Die Tabelle aus dem Baum ins Diagramm ziehen — sie landet dort, wo Sie sie fallen lassen.
- Das Menü ⋯ der Tabelle öffnen und Ins Modell importieren wählen.
Die Plattform liest die Struktur der Tabelle und erzeugt die Entität: einen
Namen mit großem Anfangsbuchstaben (contas → Contas), die Felder, die
Schlüssel und die Beziehungen, die sie in der Datenbank deklariert vorfindet.

Die Karte einer Entität
Jede Entität ist eine Karte im Diagramm:
- Der Name der Entität in der Kopfzeile und zwei Buttons: Im Baum finden (markiert die zugehörige Tabelle in der Seitenleiste) und Aus dem Modell entfernen.
- Ein Feld pro Zeile, mit dem Namen links und dem Typ rechts. Die Markierung PK kennzeichnet den Primärschlüssel, und ein ! nach dem Typ bedeutet, dass das Feld nicht leer bleiben darf.
- Aufzählungsfelder erscheinen kursiv, mit dem Namen des Enums anstelle des Typs.
- Bei vielen Feldern schrumpft die Karte und bietet N weitere Felder anzeigen / Weniger anzeigen an.
- Unten listet der Abschnitt Navigation die Wege zu den verwandten Entitäten — Thema von Beziehungen und Enums.

Atenção
Aus dem Modell entfernen tut genau das: Die Entität mit ihren Feldern und Beziehungen verlässt das Modell der Plattform, und die Tabelle in der Datenbank wird nicht angerührt. Was aufhört zu funktionieren, sind die APIs, die diese Entität genutzt haben.
Eine Tabelle ändern
Das Menü ⋯ einer Tabelle → Struktur bearbeiten öffnet den Struktur- Editor mit zwei Tabs: Spalten und Indizes (N).

Oben stehen die drei Dinge, die die Tabelle beschreiben:
| Feld | Was es ist |
|---|---|
| Name in der DB | Der echte Name der Tabelle. |
| Anzeigename (Apps) | Der Name, unter dem die Tabelle in der App bekannt ist. |
| Beschreibung der Tabelle | Wofür sie da ist. |
Der Anzeigename (Apps) ist die Brücke zwischen einer geerbten Datenbank und
einer lesbaren App: Die Spalte kann in der Datenbank cli_nm_fis heißen und in
der App nome. Es gibt ihn auch je Spalte — und es ist der Anzeigename, der in
den APIs, in den Datastores und in den Bildschirmen erscheint.
An den Spalten arbeiten
Klicken Sie auf eine Spalte in der linken Liste, um sie zu bearbeiten. Die Änderungen sind nicht sofort wirksam: Sie sammeln sich an und geschehen erst, wenn Sie auf Änderungen anwenden klicken.
- Eine mit + hinzugefügte Spalte ist als neu markiert und trägt den Hinweis Neue Spalte — wird beim Anwenden der Änderungen erstellt.
- Eine vorhandene Spalte zu löschen (der Papierkorb am Zeilenende) durchstreicht sie und zeigt Zum Löschen (DROP) beim Anwenden markiert.; Rückgängig macht es rückgängig.
- Wenn es nichts anzuwenden gibt, sagt die Plattform Keine Änderungen.

Atenção
Den Typ einer bereits vorhandenen Spalte zu ändern hängt von der Engine ab. Manche Engines können das nicht, und die Plattform sagt es Ihnen, statt es blind zu versuchen — der Ausweg ist in diesen Fällen, eine neue Spalte anzulegen, die Daten hinüberzuschaffen und die alte zu löschen. Eine Spalte zu löschen löscht die Daten, die darin stehen: Nach Änderungen anwenden gibt es kein Rückgängig.
Indizes
Der Tab Indizes (N) listet die Indizes der Tabelle auf — Name, Markierung
unique und die Spalten — und erlaubt, welche anzulegen und zu löschen.
So legen Sie einen Index an:
- Schreiben Sie den Namen (die Konvention
ix_irgendetwasist gut, und das Feld schlägt sie auch vor). - Setzen Sie unique, wenn der Index auch dazu dient, wiederholte Werte zu verhindern — so stellt man sicher, dass es keine zwei Kunden mit derselben Steuernummer gibt.
- Klicken Sie auf die Spalten, die zum Index gehören (die Reihenfolge Ihrer Klicks ist die Reihenfolge des Index).
- Index erstellen.

Eine Tabelle ohne eigene Indizes meldet Keine Indizes (außer dem PK). — der Primärschlüssel ist bereits ein Index und muss nicht angelegt werden.
Dica
Die Indizes, auf die es ankommt, sind die der Spalten, nach denen täglich
gefiltert und sortiert wird: die conta_id einer Detailtabelle, das
Datum einer Historie, der Status, nach dem die Liste gefiltert wird. Zu viele
Indizes machen die Schreibvorgänge langsamer — legen Sie sie nicht
„vorsichtshalber“ an.
Die Daten ansehen
Das Menü ⋯ einer Tabelle → Daten anzeigen öffnet unten die SQL-Konsole, mit der bereits ausgeführten Abfrage und dem Ergebnis vor Augen. Das ist der schnelle Weg, um zu prüfen, was dort steht, ohne das Modell zu verlassen.

Die Konsole nimmt auch von Ihnen geschriebenes SQL an: links schreiben, Ausführen, und das Ergebnis erscheint rechts mit der Zeilenanzahl. Die Leiste, die die Konsole vom Diagramm trennt, lässt sich ziehen, und der Pfeil in der Ecke klappt sie ein.
Eine Tabelle löschen
Das Menü ⋯ einer Tabelle enthält Löschen, mit Bestätigung: Dieser Vorgang ist endgültig und entfernt das Objekt aus der Datenbank. Nicht zu verwechseln mit Aus dem Modell entfernen, das nur die Entität aus der Beschreibung der App nimmt.
Warum nicht…?
- Warum sehe ich meine Tabelle nicht in den APIs? Wahrscheinlich ist sie noch nicht im Modell. Ziehen Sie sie aus dem Baum ins Diagramm, oder nutzen Sie Ins Modell importieren.
- Warum habe ich eine Spalte angelegt und sie erscheint nicht? Prüfen Sie, ob Sie auf Änderungen anwenden geklickt haben — im Struktur-Editor geschieht vorher nichts.
- Warum lässt meine neue Tabelle keine Datensätze in den Bildschirmen bearbeiten? Es fehlt der Primärschlüssel (PK). Ohne ihn können die Bildschirme nur lesen.
- Warum kann ich den Typ einer Spalte nicht ändern? Es gibt Engines ohne „Spalte ändern“. Die Plattform weist Sie darauf hin, und der Weg ist: neue Spalte → Daten kopieren → alte löschen.
- Warum ist der Feldname in der App nicht der aus der Datenbank? Für diese Spalte ist der Anzeigename (Apps) gesetzt. Das ist Absicht — und wird an derselben Stelle bearbeitet.
- Warum ist die Entität aus dem Diagramm verschwunden, aber die Tabelle steht weiter im Baum? Sie wurde aus dem Modell entfernt. Ziehen Sie sie erneut aus dem Baum ins Diagramm.