KEPLIN Docs

Tabellen en velden

De editor van het model — tabellen aanmaken, kolomtypes kiezen, sleutels en indexen bepalen, en bestaande tabellen in het model van de app opnemen.

Voordat er schermen zijn, zijn er gegevens: de tabellen waarin de applicatie accounts, contactpersonen, bestellingen of vakantieaanvragen bewaart. In Keplin leven die gegevens in een database die aan de app gekoppeld is (een datasource) en worden ze beschreven in een model — de tekening van tabellen, velden, sleutels en relaties die de rest van het platform leest.

Deze pagina gaat over de eerste helft van dat werk: tabellen aanmaken en wijzigen, types kiezen, sleutels en indexen bepalen. De relaties en de enum-velden hebben een eigen pagina in Relaties en enums.

De voorbeelden komen uit de app Klantenbeheer: een CRM met drie tabellen — contas, contactos en oportunidades.

Twee lagen: de database en het model

Het loont om meteen twee dingen te scheiden die op elkaar lijken:

Laag Wat het is Wie het gebruikt
De database De tabellen, kolommen en indexen die echt bestaan in de engine die aan de app gekoppeld is. De database-engine. Die wijzigen betekent echte commando's uitvoeren.
Het model De beschrijving van die tabellen voor het platform: entiteiten, velden, weergavenamen, beschrijvingen, relaties en enums. De API's, de schermen, de scripts en de rapporten.

Een tabel komt pas in het model wanneer u haar importeert — en uit het model gaan wist niets in de database. Daarom onderscheidt het platform altijd Uit het model verwijderen van Verwijderen.

Het model openen

  1. Open de app en kies het tabblad Data in de zijbalk.
  2. Klik onder Datasources op de naam van de datasource — in Klantenbeheer is dat Dados CRM.
  3. Er opent een tabblad met het modeldiagram in het midden, de SQL-console onderaan, en de objectenboom van de datasource uitgeklapt in de zijbalk.

Het model van de app Klantenbeheer: de entiteiten Contas, Contactos en Oportunidades, met de twee relaties die ertussen getekend zijn.
Het model van de app Klantenbeheer: de entiteiten Contas, Contactos en Oportunidades, met de twee relaties die ertussen getekend zijn.

Het diagram sleept u met de muis; de knoppen linksonder zoomen en brengen alles in beeld. De positie van elke entiteit blijft bewaard — u ordent het diagram één keer en zo gaat het weer open.

De objectenboom

Onder de datasource toont de boom wat er in de database bestaat, gegroepeerd en met het aantal per groep:

Groep Wat er in staat
Tabellen De tabellen van de engine. Elke tabel heeft een eigen menu (⋯).
Views De views (met een naam bewaarde query's).
Programmering Functies / Procedures en Triggers — zie Triggers.

De objectenboom van de datasource: Tabellen, Views en Programmering, met het aantal per groep.
De objectenboom van de datasource: Tabellen, Views en Programmering, met het aantal per groep.

Het veld In alles zoeken… boven in de zijbalk filtert de boom; met een actieve zoekopdracht klappen de groepen vanzelf open en verdwijnt een groep zonder resultaten.

Een tabel aanmaken

  1. Ga met de muis over de datasource en open het menu (Acties voor …).
  2. Kies Nieuwe tabel.
  3. Vul de Naam van de tabel in — dat is de naam die in de database blijft staan (kleine letters en underscores besparen u hoofdpijn: actividades, linhas_encomenda).
  4. Schema (optioneel) is alleen van belang bij engines met schema's; laat het leeg als u die niet gebruikt.
  5. Schrijf bij Beschrijving van de tabel waar zij voor dient. Dat is geen versiering: deze beschrijving reist met de tabel mee door het platform en is wat de tabel uitlegt aan wie er na u komt.
  6. Bepaal de kolommen (hierna) en bevestig met Tabel aanmaken.

Het venster Nieuwe tabel — naam, optioneel schema en de beschrijving die uitlegt waar de tabel voor dient.
Het venster Nieuwe tabel — naam, optioneel schema en de beschrijving die uitlegt waar de tabel voor dient.

Nota

De tabel wordt echt aangemaakt, in de gekoppelde database. Als de verbinding naar een productiedatabase wijst, is dat de database waarin de tabel ontstaat.

De kolommen

Het linkerpaneel van het venster is de lijst met kolommen (Kolommen (N)) en de knop + voegt er een toe. Klik op een kolom in de lijst om haar rechts te bewerken.

De tabel begint altijd met een kolom id, van het type integer, met Primaire sleutel (PK) en Auto-increment ingeschakeld — het startpunt dat in 9 van de 10 tabellen volstaat.

Veld Wat het doet
Naam De naam van de kolom in de database.
Type Het logische type van de kolom (volledige lijst hieronder).
Lengte Alleen bij text en char — hoeveel tekens erin passen.
Precisie · Schaal Alleen bij decimal — het totaal aantal cijfers en hoeveel er rechts van de komma staan (18 · 2 voor geld).
Items van de enum Alleen bij enum — zie Relaties en enums.
NULL toegestaan Of de kolom leeg mag blijven. Uitgeschakeld weigert de database records zonder waarde.
Primaire sleutel (PK) Identificeert het record op een unieke manier.
Auto-increment De engine genereert de waarde bij elke invoeging.
Beschrijving Waar deze kolom voor dient.

Een nieuwe kolom in het venster Nieuwe tabel: naam, type, en de schakelaars NULL toegestaan, Primaire sleutel (PK) en Auto-increment.
Een nieuwe kolom in het venster Nieuwe tabel: naam, type, en de schakelaars NULL toegestaan, Primaire sleutel (PK) en Auto-increment.

De prullenbak die verschijnt wanneer u met de muis over een kolom in de lijst gaat, verwijdert haar (in een nieuwe tabel verdwijnt zij meteen uit de lijst).

De kolomtypes

De types zijn logisch: u beschrijft wat de kolom bewaart en het platform vertaalt dat naar het juiste type van de gekoppelde engine. Dezelfde tekening past op elke ondersteunde database.

Type Waarvoor
text Tekst van variabele lengte — namen, beschrijvingen, notities.
char Tekst van vaste lengte — landcodes, afkortingen.
integer Gehele getallen. Het natuurlijke type van een id.
smallint Kleine gehele getallen.
bigint Grote gehele getallen — tellers, externe identificatiecodes.
decimal Exacte getallen met decimalen. Dit is het type van geld.
float Benaderde getallen — metingen, wetenschappelijke percentages.
boolean Ja/Nee.
date Een datum, zonder tijd.
time Een tijd, zonder datum.
datetime Datum en tijd.
uuid Universele identificatiecodes.
json Vrije structuren die als gestructureerde tekst worden bewaard.
binary Binaire inhoud.
enum Een gesloten verzameling waarden, ter plekke bepaald — zie Relaties en enums.

De lijst met kolomtypes — logische types, gelijk in elke gekoppelde database.
De lijst met kolomtypes — logische types, gelijk in elke gekoppelde database.

Dica

Gebruik voor bedragen decimal met precisie en schaal (18 · 2), nooit float. float bewaart benaderingen — en een cent die door afronding in een factuur verloren gaat, is een probleem dat maanden later opduikt.

Primaire sleutels

De Primaire sleutel (PK) is wat een record identificeert. In de praktijk is zij niet optioneel: zonder PK kan een tabel wel worden gelezen, maar niet worden bewerkt of verwijderd vanuit de schermen — de Tabel waarschuwt De datastore heeft een primaire sleutel nodig, en het Kanban schakelt het slepen uit. Bestaat de sleutel uit meer dan één kolom, schakel dan Primaire sleutel (PK) in bij elk van die kolommen.

Auto-increment legt het nummeren bij de engine neer. Dat heeft alleen zin bij kolommen met gehele getallen.

Een tabel in het model opnemen

Een tabel die al in de database bestaat (door u hier aangemaakt, of die er al eerder stond) moet in het model komen voordat de API's en de schermen haar zien. Er zijn twee wegen, en ze komen op hetzelfde neer:

  • De tabel van de boom naar het diagram slepen — zij landt waar u haar loslaat.
  • Het menu van de tabel openen en Naar model importeren kiezen.

Het platform leest de structuur van de tabel en maakt de entiteit aan: een naam met een hoofdletter (contasContas), de velden, de sleutels en de relaties die het in de database gedeclareerd vindt.

Het actiemenu van een tabel: Structuur bewerken, Gegevens bekijken, Naar model importeren en Verwijderen.
Het actiemenu van een tabel: Structuur bewerken, Gegevens bekijken, Naar model importeren en Verwijderen.

De kaart van een entiteit

Elke entiteit is een kaart in het diagram:

  • De naam van de entiteit in de kop, en twee knoppen: Zoeken in de boom (markeert de bijbehorende tabel in de zijbalk) en Uit het model verwijderen.
  • Eén veld per regel, met de naam links en het type rechts. De markering PK duidt de primaire sleutel aan, en een ! achter het type betekent dat het veld niet leeg mag zijn.
  • Enum-velden verschijnen cursief, met de naam van de enum in plaats van het type.
  • Bij veel velden krimpt de kaart en biedt zij N velden meer tonen / Minder tonen aan.
  • Onderaan somt de sectie Navigatie de paden naar de verwante entiteiten op — het onderwerp van Relaties en enums.

De kaart van de entiteit Contas: de velden met het type rechts, de markering PK en de ! van de velden die niet leeg mogen zijn.
De kaart van de entiteit Contas: de velden met het type rechts, de markering PK en de ! van de velden die niet leeg mogen zijn.

Atenção

Uit het model verwijderen doet precies dat: de entiteit en haar velden en relaties gaan uit het model van het platform, en de tabel in de database wordt niet aangeraakt. Het zijn de API's die de entiteit gebruikten die ophouden te werken.

Een tabel wijzigen

Het menu van een tabel → Structuur bewerken opent de editor van de structuur, met twee tabbladen: Kolommen en Indexen (N).

Structuur bewerken van de tabel contas: de kolommen links, het detail van de kolom rechts en Wijzigingen toepassen in de voettekst.
Structuur bewerken van de tabel contas: de kolommen links, het detail van de kolom rechts en Wijzigingen toepassen in de voettekst.

Bovenaan staan de drie dingen die de tabel beschrijven:

Veld Wat het is
Naam in de database De echte naam van de tabel.
Weergavenaam (apps) De naam waaronder de tabel in de app bekend is.
Beschrijving van de tabel Waar zij voor dient.

De Weergavenaam (apps) is de brug tussen een database die u geërfd hebt en een leesbare app: de kolom mag cli_nm_fis heten in de database en nome in de app. Hij bestaat ook per kolom — en het is de weergavenaam die in de API's, de datastores en de schermen verschijnt.

Aan de kolommen werken

Klik op een kolom in de lijst links om haar te bewerken. De wijzigingen zijn niet meteen van kracht: ze stapelen zich op en gebeuren pas wanneer u op Wijzigingen toepassen klikt.

  • Een kolom die met + is toegevoegd, verschijnt gemarkeerd als nieuw en draagt de notitie Nieuwe kolom — wordt aangemaakt zodra de wijzigingen worden toegepast.
  • Een bestaande kolom verwijderen (de prullenbak aan het einde van de regel) streept haar door en toont Gemarkeerd om te verwijderen (DROP) bij toepassen; Ongedaan maken draait dat terug.
  • Is er niets toe te passen, dan zegt het platform Geen wijzigingen.

De geselecteerde kolom estado: naam in de database, type, Weergavenaam (apps) en de beschrijving.
De geselecteerde kolom estado: naam in de database, type, Weergavenaam (apps) en de beschrijving.

Atenção

Of u het type van een bestaande kolom kunt wijzigen, hangt af van de engine. Sommige engines kunnen dat niet, en het platform zegt u dat in plaats van het blindelings te proberen — de uitweg is dan een nieuwe kolom aanmaken, de gegevens overzetten en de oude verwijderen. Een kolom verwijderen wist de gegevens die erin staan: er is geen Ongedaan maken na Wijzigingen toepassen.

Indexen

Het tabblad Indexen (N) somt de indexen van de tabel op — naam, markering unique en de kolommen — en laat u er aanmaken en verwijderen.

Een index aanmaken:

  1. Schrijf de naam (de conventie ix_iets is goed, en het is wat het veld voorstelt).
  2. Vink unique aan als de index er ook is om herhaalde waarden te beletten — zo garandeert u dat er geen twee klanten met hetzelfde btw-nummer zijn.
  3. Klik op de kolommen die deel uitmaken van de index (de volgorde waarin u klikt is de volgorde van de index).
  4. Index aanmaken.

Het tabblad Indexen van de tabel contas: geen indexen behalve de PK, en het formulier Nieuwe index eronder.
Het tabblad Indexen van de tabel contas: geen indexen behalve de PK, en het formulier Nieuwe index eronder.

Een tabel zonder eigen indexen zegt Geen indexen (behalve de PK) — de primaire sleutel is al een index, die hoeft niet te worden aangemaakt.

Dica

De indexen die ertoe doen zijn die van de kolommen waarop elke dag wordt gefilterd en gesorteerd: de conta_id van een detailtabel, de datum van een historiek, de status waarop de lijst gefilterd wordt. Te veel indexen maken het schrijven trager — maak ze niet "voor de zekerheid" aan.

De gegevens bekijken

Het menu van een tabel → Gegevens bekijken opent de SQL-console onderaan, met de query al uitgevoerd en het resultaat in beeld. Het is de snelle manier om te controleren wat erin staat zonder het model te verlaten.

Gegevens bekijken opent de SQL-console met de query al uitgevoerd — de echte rijen van de tabel, onder het model.
Gegevens bekijken opent de SQL-console met de query al uitgevoerd — de echte rijen van de tabel, onder het model.

De console aanvaardt ook door u geschreven SQL: schrijf links, Uitvoeren, en het resultaat verschijnt rechts met het aantal rijen. De balk die de console van het diagram scheidt kunt u slepen, en het pijltje in de hoek klapt haar in.

Een tabel verwijderen

Het menu van een tabel heeft Verwijderen, met bevestiging: Deze bewerking is definitief en verwijdert het object uit de database. Niet te verwarren met Uit het model verwijderen, dat enkel de entiteit uit de beschrijving van de app haalt.

Waarom niet…?

  • Waarom zie ik mijn tabel niet in de API's? Waarschijnlijk staat zij nog niet in het model. Sleep haar van de boom naar het diagram, of gebruik Naar model importeren.
  • Waarom heb ik een kolom aangemaakt en verschijnt zij niet? Controleer of u op Wijzigingen toepassen hebt geklikt — in de structuureditor gebeurt er daarvóór niets.
  • Waarom laat mijn nieuwe tabel niet toe records in de schermen te bewerken? De Primaire sleutel (PK) ontbreekt. Zonder haar kunnen de schermen alleen lezen.
  • Waarom kan ik het type van een kolom niet wijzigen? Er zijn engines zonder "kolom wijzigen". Het platform waarschuwt u, en de weg is: nieuwe kolom → gegevens kopiëren → de oude verwijderen.
  • Waarom is de naam van het veld in de app niet die van de database? De Weergavenaam (apps) van die kolom is ingevuld. Dat is met opzet — en u bewerkt hem op dezelfde plek.
  • Waarom is de entiteit uit het diagram verdwenen terwijl de tabel in de boom blijft staan? Zij is uit het model verwijderd. Sleep haar opnieuw van de boom naar het diagram.