Schema-inferentie-tool

Elke nieuwe integratie begint hetzelfde: een API geeft een JSON-blob terug en je hebt een model nodig om die op te slaan. 20 velden met de hand intypen is saai en foutgevoelig. Deze tool analyseert een JSON-voorbeeldobject, kiest een kolomtype voor elke sleutel en genereert een kant-en-klaar schema in het formaat dat je wilt: SQL CREATE TABLE, een Mongoose-schema of een Sequelize-modeldefinitie.

Een schema afleiden uit JSON

  1. 1

    Plak een voorbeeldobject

    Voer één JSON-object in, of een array van objecten (het eerste object in de array wordt gelezen). Gebruik een volledig record met alle velden ingevuld, zodat elke kolom een type krijgt.

  2. 2

    Kies het uitvoerformaat

    SQL CREATE TABLE (Postgres- / MySQL- / SQLite-stijl), Mongoose voor Node.js-apps met MongoDB, of Sequelize voor relationele Node.js-apps.

  3. 3

    Geef de tabel of het model een naam

    Bepaalt de tabelnaam in de SQL-uitvoer, of de schema- of modelnaam in de Mongoose- en Sequelize-uitvoer.

  4. 4

    Kopieer het gegenereerde schema

    Plak het direct in een migratie of een modelbestand als startpunt.

Hoe de types worden afgeleid

De inferentie is een beste gok. De tool leest de waarden van één voorbeeldobject en kiest voor elke sleutel een kolomtype op basis van de waarde die hij ziet. Hij vergelijkt geen records en leidt niet af welke velden optioneel zijn, geef hem dus een volledig, representatief object.

Typetoewijzing

JSON-waarde SQL-type Mongoose-type Sequelize-type
42 (geheel getal) INTEGER Number DataTypes.INTEGER
3.14 (decimaal) DECIMAL(10,2) Number DataTypes.FLOAT
"hallo" (korte string) VARCHAR(255) String DataTypes.STRING
string langer dan 255 tekens TEXT String DataTypes.STRING
"2026-04-18T10:00:00Z" TIMESTAMP Date DataTypes.DATE
"2026-04-18" DATE Date DataTypes.DATEONLY
true / false BOOLEAN Boolean DataTypes.BOOLEAN
null TEXT String DataTypes.STRING
[1, 2, 3] (array) JSON Object DataTypes.JSON
{ "nested": ... } (object) JSON Object DataTypes.JSON

Wat de SQL-uitvoer toevoegt

De SQL CREATE TABLE begint altijd met een automatisch oplopende primaire sleutel:

id INTEGER PRIMARY KEY AUTOINCREMENT,

De Mongoose- en Sequelize-uitvoer voegt geen id-veld toe, omdat beide bibliotheken er zelf een aanmaken.

Standaarden en grenzen om in gedachten te houden

  • Er wordt één object gelezen. Als je een array plakt, wordt alleen het eerste element bekeken, dus de velden daarvan bepalen het hele schema.
  • Een ontbrekende sleutel is een ontbrekende kolom. Velden die niet in het voorbeeldobject staan, verschijnen simpelweg niet in de uitvoer.
  • Geneste objecten en arrays worden één enkele JSON-kolom. De tool vouwt ze niet uit tot subtabellen, subschema’s of foreign keys.
  • Er worden geen constraints gegenereerd. Kolommen worden uitgevoerd zonder NOT NULL, uniciteit of index, dus ze staan allemaal null toe totdat je ze aanscherpt.

Tips voor een schoner resultaat

  • Gebruik een volledig ingevuld record. Een veld dat in je voorbeeld null is, krijgt het type tekst/string, wat zelden is wat je wilt.
  • Hernoem gereserveerde woorden na het genereren. Velden als type, order of user moeten in SQL tussen aanhalingstekens.
  • Behandel de uitvoer als een steiger. Pas VARCHAR-lengtes en DECIMAL-precisie aan, voeg indexen toe, markeer kolommen als NOT NULL en kies echte sleutels voordat je live gaat.

Veelgestelde vragen

Een genest object of een geneste array wordt toegewezen aan één enkele JSON-kolom (JSON in SQL en Sequelize, een Object-veld in Mongoose). De tool vouwt geneste structuren niet uit tot subtabellen of subschema’s, dus die maak je zelf plat of normaliseer je zelf als dat nodig is.

Nee. Als je een array van objecten plakt, wordt alleen het eerste object bekeken en bepalen de sleutels daarvan het schema. Zorg dat dat eerste record alle velden bevat die er voor jou toe doen, met een echte waarde in elk veld.

Nee. Elke kolom wordt alleen met een type uitgevoerd, dus de uitvoer heeft geen foreign keys, uniciteitsconstraints, indexen of NOT NULL-clausules. Voeg die met de hand toe, want ze coderen een intentie die de tool niet uit een steekproef kan herleiden.

Kies SQL CREATE TABLE voor een migratie van een relationele database, Mongoose Schema voor een Node.js-app op MongoDB, of Sequelize Model voor een Node.js-app op een relationele database via de Sequelize-ORM.

Gerelateerde tools

Tool beschikbaar in andere talen