Supabase als backenddienst · Les

Databaseschema's ontwerpen

Leer best practices voor het structureren van uw gegevens, het definiëren van relaties en het plannen van databasetabellen met het oog op schaalbaarheid en efficiëntie.

Les 1 van 411 stappen

Databaseschema's ontwerpen is een gratis Supabase als backenddienst-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Supabase als backenddienst. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Supabase als backenddienst bevat in totaal 4 lessen.

Wat is een databaseschema?

Stel je voor dat je een huis bouwt. Voordat je ook maar één steen legt, heb je een bouwtekening nodig! In databases heet die bouwtekening een schema.

Een databaseschema definieert de structuur van je gegevens. Het vertelt je:

  • Welke tabellen er bestaan
  • Welke kolommen elke tabel heeft
  • Hoe verschillende tabellen met elkaar verbonden zijn

Een goed schema is essentieel voor een overzichtelijk, efficiënt en schaalbaar Supabase-project.

Entiteiten en kenmerken identificeren

Denk eerst na over de 'dingen' die je wilt opslaan. Dit zijn je entiteiten. In een sociale app kunnen dat gebruikers, berichten of reacties zijn.

Welke details heeft elke entiteit vervolgens? Dat zijn de kenmerken.

  • Gebruiker: naam, e-mailadres, URL van profielfoto
  • Bericht: titel, inhoud, aanmaakdatum

Als je deze opsomt, krijg je een beeld van je tabellen.

Primaire sleutels: je unieke ID

Elke entiteit moet op een unieke manier kunnen worden geïdentificeerd. Daar komt een Primary Key van pas!

Een primaire sleutel is een kolom (of een reeks kolommen) met voor elke rij in een tabel een unieke waarde. Zie het als een studentnummer: geen twee studenten hebben hetzelfde nummer.

De meestgebruikte primaire sleutel is een kolom id, vaak een automatisch oplopend geheel getal of een UUID (Universally Unique Identifier).

Hoe gegevens verbonden zijn: relaties

Je entiteiten staan niet op zichzelf; ze werken met elkaar samen! Deze interacties noemen we relaties.

Het meestvoorkomende type is One-to-Many. Bijvoorbeeld:

  • Eén User kan veel Posts schrijven.
  • Eén Album kan veel Songs bevatten.

Inzicht in deze verbindingen is cruciaal om je tabellen aan elkaar te koppelen.

Externe sleutels: verbindingen opbouwen

Voor een One-to-Many-relatie gebruiken we een Foreign Key.

Een externe sleutel is een kolom in de ene tabel die verwijst naar de primaire sleutel in een andere tabel. Zo geven we aan: 'Dit bericht hoort bij deze specifieke gebruiker.'

Als een tabel posts moet weten welke user het bericht heeft gemaakt, krijgt de tabel posts een kolom user_id die verwijst naar de id van een rij in de tabel users.

Gegevenstypen: slim opslaan

Bij het definiëren van je kolommen moet je een gegevenstype kiezen. Dit vertelt de database welk soort informatie die kolom bevat (tekst, getallen, datums enzovoort).

Veelgebruikte gegevenstypen in PostgreSQL (de database van Supabase) zijn:

  • text: voor namen en beschrijvingen
  • integer: voor gehele getallen (bijvoorbeeld leeftijd en aantal)
  • boolean: voor waar/onwaar-waarden (bijvoorbeeld is_active)
  • timestamp: voor datums en tijden (bijvoorbeeld created_at)

Met het juiste type bespaar je ruimte en verbeter je de prestaties.

Normalisatie: je gegevens ordenen

Normalisatie is een proces om je database te ordenen, gegevensredundantie te verminderen en de gegevensintegriteit te verbeteren.

Stel je voor dat elk bericht de volledige naam en het e-mailadres van de gebruiker opslaat. Als de gebruiker het e-mailadres wijzigt, moet je dit op veel plaatsen aanpassen! Normalisatie helpt dit voorkomen.

Door gegevens op te splitsen in afzonderlijke, gerelateerde tabellen (bijvoorbeeld users en posts), sla je algemene informatie maar één keer op.

Denormalisatie: voor snelheid

Hoewel normalisatie goed is voor gegevensintegriteit, kan het ophalen van gegevens soms trager worden omdat je veel tabellen moet 'joinen'.

Denormalisatie is het bewust introduceren van redundantie om de leesprestaties te verbeteren. Je kunt bijvoorbeeld de naam van een gebruiker rechtstreeks in een tabel posts opslaan, ook al staat die naam al in de tabel users.

Dit is een afweging: sneller lezen, maar complexere updates en een mogelijk risico op inconsistenties. Gebruik het verstandig!

Ontwerp in de praktijk: gebruikers en taken

Laten we een eenvoudig schema ontwerpen voor gebruikers en hun taken. Elke gebruiker kan meerdere taken hebben.

Zo zouden we de tabellen kunnen definiëren op basis van onze ontwerpprincipes:

CREATE TABLE users (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name TEXT NOT NULL,
  email TEXT UNIQUE NOT NULL,
  created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);

CREATE TABLE tasks (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID REFERENCES users(id) ON DELETE CASCADE,
  title TEXT NOT NULL,
  description TEXT,
  is_complete BOOLEAN DEFAULT FALSE,
  created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);

Korte controle: ontwerpconcepten

Je plant een database voor een blog. Je moet Authors en hun Articles opslaan. Elke auteur kan veel artikelen schrijven.

Welke van deze uitspraken passen de juiste principes voor schemaontwerp toe in dit scenario?

Samenvatting: jouw ontwerpreis

Je hebt net je eerste stappen gezet in het ontwerpen van databaseschema's!

We hebben behandeld:

  • Het identificeren van entiteiten en kenmerken
  • De rol van primaire en externe sleutels
  • Het begrijpen van relaties (vooral One-to-Many)
  • Het belang van het kiezen van de juiste gegevenstypen
  • Een korte kennismaking met normalisatie en denormalisatie

Een goed ontworpen schema vormt de basis van elke robuuste applicatie. In de volgende les brengen we deze kennis in de praktijk door tabellen te maken!

Gratis beginnen

Leer Supabase als backenddienst met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
11
Lessen
40

Veelgestelde vragen

Is de les “Databaseschema's ontwerpen” gratis?

Ja — de volledige tekst van “Databaseschema's ontwerpen” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Supabase als backenddienst wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Supabase als backenddienst bevat in totaal 4 lessen.

Wat leer ik in “Databaseschema's ontwerpen”?

Leer best practices voor het structureren van uw gegevens, het definiëren van relaties en het plannen van databasetabellen met het oog op schaalbaarheid en efficiëntie. Je oefent met Supabase als backenddienst door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Supabase als backenddienst te beginnen?

Ervaring vooraf is niet nodig. Supabase als backenddienst op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Databaseschema's ontwerpen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Supabase als backenddienst?

Ja. Elke les over Supabase als backenddienst bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Databaseschema's ontwerpen
  2. Tabellen en kolommen aanmaken
  3. Basisprincipes van data-invoer en query's
  4. Relaties en foreign keys
← Terug naar Supabase als backenddienst