Créer et Structurer sa Base de Données Supabase

La base de données est le cœur de toute application Supabase. Puisque Supabase repose sur PostgreSQL, tu disposes d’une base de données relationnelle complète avec toute la puissance de SQL.

Si tu démarres avec Supabase, consulte d’abord notre guide complet Supabase. Pour comprendre les composants sous-jacents, lis notre article sur l’architecture Supabase. Pour travailler en local, voir installer Supabase en local avec Docker.

Créer ta première table

CREATE TABLE articles (
  id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
  title TEXT NOT NULL,
  slug TEXT UNIQUE NOT NULL,
  status TEXT DEFAULT 'draft' CHECK (status IN ('draft', 'published', 'archived')),
  author_id UUID REFERENCES auth.users(id) ON DELETE CASCADE,
  created_at TIMESTAMPTZ DEFAULT NOW(),
  updated_at TIMESTAMPTZ DEFAULT NOW()
);

Les types de données essentiels

  • UUID : identifiants uniques — préfère gen_random_uuid()
  • TEXT : chaînes sans limite pratique
  • NUMERIC(p,s) : montants financiers (évite les erreurs float)
  • TIMESTAMPTZ : toujours préférer à TIMESTAMP
  • JSONB : données JSON indexables

Modéliser les relations

One-to-Many

CREATE TABLE projects (
  id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
  owner_id UUID REFERENCES auth.users(id) ON DELETE CASCADE
);

Many-to-Many

CREATE TABLE articles_tags (
  article_id UUID REFERENCES articles(id) ON DELETE CASCADE,
  tag_id UUID REFERENCES tags(id) ON DELETE CASCADE,
  PRIMARY KEY (article_id, tag_id)
);

Extension du profil utilisateur

CREATE TABLE profiles (
  id UUID PRIMARY KEY REFERENCES auth.users(id) ON DELETE CASCADE,
  username TEXT UNIQUE,
  bio TEXT
);

Row Level Security : sécuriser dès la conception

ALTER TABLE articles ENABLE ROW LEVEL SECURITY;

CREATE POLICY "Users see own articles" ON articles
FOR SELECT USING (auth.uid() = author_id);

Bonnes pratiques

  • ✅ Toujours un UUID comme clé primaire
  • ✅ TIMESTAMPTZ pour les dates, jamais TIMESTAMP
  • ✅ Foreign keys explicites avec ON DELETE CASCADE
  • ✅ NOT NULL par défaut

👉 Articles du guide Supabase

Cet article fait partie du Guide Complet Supabase 2026. Retrouvez les autres articles :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *