Aperçu des tables
Les tables définissent vos modèles de données. Chaque table est une entité distincte (utilisateurs, produits, commandes) dont les fields déclarent les colonnes que les enregistrements peuvent stocker. Les tables sont le fondement d'une application Sovrium : les pages affichent leurs enregistrements, les formulaires y écrivent, les automatisations réagissent à leurs changements et les API REST/MCP les exposent.
Une table comporte au minimum un id, un name et un tableau fields. Tout le reste — clés primaires, index, contraintes, vues, permissions, webhooks et exposition à l'IA — est optionnel et vient s'ajouter par-dessus.
tables:
- id: 1
name: Contacts
fields:
- { id: 1, name: email, type: email, required: true, unique: true }
- { id: 2, name: full_name, type: single-line-text, required: true }
- { id: 3, name: created_at, type: created-at, indexed: true }
Propriétés de la table
Chaque entrée du tableau tables accepte les propriétés suivantes.
| Propriété | Description |
|---|---|
id |
Identifiant entier unique de la table. Généré automatiquement lorsqu'il est omis. |
name |
Nom convivial de la table. Peut contenir des espaces et une casse mixte ; assaini pour l'usage en base de données (minuscules avec underscores). Maximum 63 caractères. |
fields |
Tableau de définitions de champs. Au moins un champ est requis. Les noms et identifiants de champs doivent être uniques au sein de la table. |
primaryKey |
Configuration de la clé primaire. Par défaut, une colonne id générée automatiquement. Voir Index et contraintes. |
unique |
Tableau de déclarations de contraintes d'unicité de premier niveau. Chaque entrée couvre un ou plusieurs champs (par ex. [{ fields: [slug] }]). |
indexes |
Tableau de définitions d'index pour les performances des requêtes et l'application de l'unicité. |
uniqueConstraints |
(via unique) Unicité multi-champs. Les entrées mono-champ se replient dans field.unique ; les entrées composites deviennent des index btree uniques. |
foreignKeys |
Définitions de clés étrangères composites (multi-colonnes). Les clés étrangères mono-colonne sont créées automatiquement à partir des champs relationship. |
constraints |
Tableau de contraintes CHECK avec des expressions SQL pour la validation de données inter-champs. |
views |
Vues enregistrées avec filtres, tri, regroupement et champs visibles préconfigurés. Voir Vues. |
permissions |
Permissions RBAC contrôlant la création, la lecture, la mise à jour, la suppression, la restauration, les commentaires et l'accès par champ. Voir Permissions. |
rowLevelPermissions |
Prédicats when côté serveur par opération CRUD pour un cloisonnement des lignes en défense en profondeur. |
webhooks |
Webhooks sortants déclenchés lors des événements de création/mise à jour/suppression d'enregistrements. Voir Webhooks. |
comments |
Configuration du système de commentaires (commentaires invités, modération, fils de discussion). |
aiAccess |
Déclare la table éligible à l'exposition via le serveur MCP de Sovrium afin que les assistants IA puissent lister/lire/écrire des enregistrements (sous réserve du RBAC). |
allowDestructive |
Booléen. Lorsqu'il vaut true, autorise les migrations de schéma destructrices (suppression de colonnes, changements de type). Par défaut false. |
allowForceDelete |
Booléen. Activation par table autorisant la suppression définitive via le tableau de bord d'administration (effacement RGPD). Par défaut false. Voir la note ci-dessous. |
Suppression douce par défaut. Supprimer un enregistrement définit deleted_at/deleted_by et laisse la ligne récupérable via /restore. Ne définissez allowForceDelete: true que lorsqu'une table nécessite une suppression définitive irréversible (par ex. le droit à l'effacement RGPD sur une table RH). Les registres financiers et les tables liées à l'audit devraient conserver la valeur par défaut false — le point de terminaison de suppression définitive de l'administration renvoie 404 lorsque la suppression définitive n'est pas autorisée.
Propriétés de base des champs
Chaque champ — quel que soit son type — étend une base commune. Ces propriétés sont disponibles sur les 49 types de champs.
| Propriété | Description |
|---|---|
id |
Identifiant entier unique du champ au sein de la table. Généré automatiquement de manière séquentielle lorsqu'il est omis. |
name |
Identifiant de colonne. Doit commencer par une lettre et ne contenir que des lettres minuscules, des chiffres et des underscores (^[a-z][a-z0-9_]*). Maximum 63 caractères. |
type |
L'un des 49 types de champs disponibles (par ex. single-line-text, integer, relationship). Voir Types de champs. |
required |
Booléen. Lorsqu'il vaut true, le champ doit avoir une valeur pour chaque enregistrement. |
unique |
Booléen. Lorsqu'il vaut true, deux enregistrements ne peuvent pas partager la même valeur. |
indexed |
Booléen. Lorsqu'il vaut true, crée un index de base de données sur ce champ pour accélérer les requêtes. |
searchWeight |
Poids de pertinence pour la recherche plein texte PostgreSQL : A (le plus élevé) à D (le plus bas). Effectif uniquement lorsque indexed: true et que la source de données utilise la FTS. |
storage |
Objet de configuration du stockage. storage.compression (booléen) active la compression pour les grandes valeurs de texte ou de pièce jointe. |
default est spécifique au type, et non une propriété de base. La plupart des champs porteurs de valeur (texte, numérique, sélection, date, couleur, …) exposent un default dont le type de valeur correspond au champ. Les champs système (created-at, relationnels, calculés, IA) ne le font pas. Chaque page de type de champ indique si default est disponible.
Exemple : une table plus riche
tables:
- id: 2
name: Products
fields:
- { id: 1, name: sku, type: single-line-text, required: true, unique: true }
- {
id: 2,
name: title,
type: single-line-text,
required: true,
searchWeight: A,
indexed: true,
}
- { id: 3, name: description, type: long-text, searchWeight: B }
- { id: 4, name: price, type: currency, required: true, currency: USD }
- { id: 5, name: in_stock, type: checkbox, default: true }
primaryKey: { type: auto-increment, field: id }
indexes:
- { name: idx_products_sku, fields: [sku], unique: true }
permissions:
read: all
create: [admin, editor]
update: [admin, editor]
delete: [admin]
Pages connexes
- Aperçu des types de champs — les 49 types de champs par catégorie.
- Permissions — RBAC et contrôle d'accès par champ.
- Index et contraintes — clés primaires, index, contraintes CHECK.
- Relations — relier les tables entre elles.
- Vues — filtres, tris et regroupements enregistrés.
- Validation — règles de validation au niveau du champ et de la table.
- Webhooks — HTTP sortant sur les événements d'enregistrement.