10 août 2025·8 min de lecture

Schéma CRM léger pour petites équipes qui reste simple

Construisez un schéma CRM léger qui garde Contacts, Deals, Activities et permissions simples, tout en supportant des rapports fiables et les workflows quotidiens.

Schéma CRM léger pour petites équipes qui reste simple

Quel problème ce schéma CRM doit résoudre

Une petite équipe a besoin d'un CRM qui réponde rapidement aux questions quotidiennes : à qui parle-t-on, qu'essaie-t-on de conclure, qu'est-ce qui s'est passé en dernier, et quelle est la prochaine étape. Voilà la vraie fonction d'un schéma CRM léger. Tout ce qui n'aide pas à répondre à ces questions est souvent du bruit.

Les petites équipes n'ont rarement besoin de hiérarchies de comptes profondes, de dizaines d'objets personnalisés ou de modèles de scoring compliqués. Elles ont besoin d'une propriété claire, d'un historique simple des points de contact et d'un pipeline que tout le monde comprend de la même manière.

Le « simple » se casse quand il repose sur du texte libre et des duplications. Si une personne écrit un stade de deal en « Negotiation » et une autre en « negotiating », les rapports deviennent de la devinette. Si les activités vivent dans des tables séparées pour les appels, réunions et notes, vous vous retrouvez avec plusieurs champs de date et aucune valeur fiable de « dernier contact ».

Ce schéma se limite à quatre objets centraux qui couvrent la plupart des CRM pour petites équipes sans se transformer en monstre :

  • Contacts (et éventuellement Organizations) comme les personnes avec qui vous communiquez
  • Deals comme les opportunités que vous suivez dans un pipeline
  • Activities comme un journal unifié pour tâches, réunions, appels et notes
  • Permissions comme règles pratiques sur qui peut voir et modifier quoi

Un reporting propre signifie que vous pouvez voir de façon fiable les deals par stade cette semaine, le taux de conversion d'un stade à l'autre, le temps moyen passé dans un stade, la dernière activité par deal, et les tâches ouvertes de chaque commercial pour aujourd'hui. Ces rapports doivent rester cohérents quand l'équipe passe de 3 à 15 personnes.

Si vous construisez un CRM interne dans un outil no-code comme AppMaster, cette approche garde la base de données légère tout en fournissant des chiffres stables pour les tableaux de bord et les revues hebdomadaires.

Principes pour rester léger sans se mettre en cage

Un schéma CRM léger fonctionne quand il répond clairement à une question : où vit ce fait ? Si la même « vérité » peut être stockée à deux endroits, elle le sera, et vos rapports dériveront.

Choisissez un petit ensemble d'objets source de vérité et faites tout pointer vers eux. Pour la plupart des petites équipes, cela signifie Contacts, Organizations (optionnel), Deals et Activities. Quand vous avez besoin de plus de détails, ajoutez une nouvelle table plutôt que de fourrer du sens dans un champ texte qui devient un tiroir à bazar.

Quelques règles gardent le modèle simple et flexible :

  • Un fait, un lieu : un numéro de téléphone appartient au Contact, une valeur de deal appartient au Deal.
  • Préférez des tables explicites aux champs surchargés : l'historique des stades n'est pas une chaîne séparée par des virgules.
  • Gardez les IDs stables et les noms éditables : les gens renommant les entreprises ne changent pas les clés primaires.
  • Séparez « status » et « type » : une tâche peut être « open » et « call » en même temps.
  • Supposez que les imports seront sales : champs vides, doublons et formats étranges sont normaux.

Préparez-vous aux données désordonnées dès le jour 1 en ajoutant quelques champs ennuyeux mais puissants : created_at, updated_at, et un simple external_id (ou import_source + import_key) sur vos tables principales. Cela vous donne un moyen sûr de ré-importer sans créer de doublons.

Un exemple concret : vous importez un tableur où « Acme Inc. » apparaît sous « ACME » dans la moitié des lignes. Si Organization.name est éditable et Organization.id est stable, vous pouvez fusionner les enregistrements plus tard sans casser les deals et activities existantes.

Contacts et organizations : la structure la plus simple qui marche

Un schéma CRM léger commence par une décision : suivez-vous seulement les personnes, ou personnes plus entreprises ? Si votre équipe vend à des entreprises, vous voulez presque toujours à la fois un Contact (une personne) et une Organization (une entreprise). Si vous vendez aux consommateurs, vous pouvez éviter Organizations et tout garder en tant que Contact.

Pour une configuration B2B, gardez la relation simple : chaque contact appartient à une organisation principale (nullable), et une organisation peut avoir de nombreux contacts. Cela couvre la plupart des workflows de petites équipes sans vous pousser vers des hiérarchies de comptes compliquées.

Garder les champs obligatoires au minimum

La façon la plus rapide d'obtenir des données sales est d'imposer trop de champs obligatoires. Une bonne base est :

  • Contact : id, nom (ou first_name + last_name), created_at
  • Organization : id, name, created_at

Tout le reste (poste, site web, adresse, secteur, source) peut être optionnel. Vous pouvez ajouter des règles plus tard, mais il est difficile de nettoyer une base pleine de valeurs factices comme "N/A".

Email et téléphone : unicité sans douleur

Il est tentant de rendre l'email unique. Cela fonctionne bien pour le B2C, ou pour un CRM qui sert aussi de système d'authentification. Dans les petites équipes B2B, les boîtes partagées (sales@, info@) et les numéros réutilisés sont courants. Des règles d'unicité strictes peuvent bloquer des enregistrements valides.

Un compromis pratique :

  • N'appliquez l'unicité que lorsque la valeur est présente (et seulement si c'est adapté à votre cas).
  • Autorisez les doublons, mais affichez un avertissement doux dans l'UI lorsqu'une correspondance est trouvée.

Si vous avez besoin de plusieurs emails ou numéros, évitez d'ajouter des colonnes email_2 ou phone_3. Utilisez une table séparée (par exemple ContactMethod avec type, value, is_primary). Le reporting reste propre et le modèle évolue naturellement.

Exemple : votre équipe rencontre Pat qui change d'emploi en milieu de trimestre. Avec Contact lié à Organization, vous pouvez déplacer Pat vers la nouvelle entreprise, garder les méthodes de contact anciennes pour l'historique, et vos rapports compteront toujours les deals par entreprise correctement.

Deals et pipelines : une structure lisible

Un deal est votre unité de prévision : un achat potentiel avec une prochaine étape claire. Gardez l'enregistrement de deal petit et référencez tout le reste.

Commencez avec des champs que vous pouvez expliquer à n'importe qui dans l'équipe :

  • Deal name : une étiquette courte lisible en liste
  • Stage : référence à un stage de pipeline (pas tapé à la main)
  • Value : montant attendu (choisissez une monnaie pour tout le système)
  • Owner : la personne responsable de le faire avancer
  • Close date : la meilleure estimation actuelle de la date de clôture

Pour les relations, choisissez un contact principal sur le deal. Cela garde le reporting simple (par exemple, revenus par contact, taux de réussite par segment). Si vous avez parfois besoin de plusieurs personnes impliquées, ajoutez une table deal_contacts pour attacher des contacts supplémentaires sans transformer chaque deal en un modèle many-to-many compliqué. La plupart des petites équipes se contentent d'un contact principal plus des participants optionnels.

Les stades sont souvent l'endroit où les CRMs deviennent confus. Ne stockez pas le stade en texte libre. Stockez les stades comme données de référence afin de pouvoir renommer un stade plus tard sans casser les rapports. Une table de stage minimale peut inclure :

  • stage_id
  • pipeline_id
  • stage_name
  • stage_order
  • is_closed (ou des indicateurs séparés pour won et lost)

Si votre équipe est petite, évitez de scinder les enregistrements en « lead » et « deal » à moins que vous ne gériez vraiment les leads différemment. Une règle simple fonctionne : quand vous avez une vraie opportunité qui mérite un suivi, c'est un deal. Avant cela, gardez-le en tant que contact avec un statut comme « new » ou « nurture ». Cela garde le pipeline lisible et évite que des deals à moitié créés ne polluent vos chiffres.

Exemple : une équipe commerciale de deux personnes suit « Acme Renewal » comme un deal possédé par Sam, stade « Proposal Sent », valeur 12 000, date de clôture le mois prochain. Le contact principal est l'acheteur, et un second contact est ajouté comme approbateur financier. Les rapports restent cohérents car les noms et l'ordre des stades sont fixes.

Activities : un modèle pour tâches, réunions et notes

Go from schema to app
Ship production-ready apps with real source code generated from your model.
Generate code

Une petite équipe n'a pas besoin de tables séparées pour appels, emails, réunions et notes. Un seul modèle Activity suffit généralement, et il rend le CRM plus simple à utiliser et à analyser.

Une seule table Activity

Utilisez un enregistrement par chose qui s'est produite (ou devrait se produire). Donnez-lui un champ type simple avec un petit ensemble fixe, par exemple : call, email, meeting, note, task. Gardez la liste courte pour que les gens choisissent les mêmes mots à chaque fois.

Pour lier les activities sans confusion, utilisez des règles claires :

  • Si c'est au sujet d'une personne (appel de suivi, email d'introduction), liez-le au contact.
  • Si c'est au sujet de faire avancer du chiffre (appel tarifaire, réunion de négociation), liez-le au deal.
  • Si cela concerne vraiment les deux, liez aux deux, mais traitez le deal comme primaire pour le reporting pipeline.

En pratique, Activity peut avoir contact_id (nullable) et deal_id (nullable), plus un owner_id optionnel (qui en est responsable).

Timestamps favorables au reporting

Conservez à la fois due_at et completed_at. Ils répondent à des questions différentes. due_at vous dit ce qui aurait dû se passer (planification et charge), completed_at vous dit ce qui s'est réellement passé (exécution et temps de cycle).

Vous pouvez déduire le statut sans champ séparé : si completed_at est renseigné, c'est fait. Sinon, c'est ouvert. Cela évite des statuts supplémentaires qui se désynchronisent.

Pour le texte d'activité, stockez un seul champ indexable comme summary ou body. Évitez de sur-structurer les notes dès le départ. Exemple : « Call with Maya: confirmed budget, send proposal Friday. » Ajoutez des champs spécialisés plus tard seulement si la douleur est réelle.

Propriété et visibilité : rester pratique

La propriété (ownership) indique qui est responsable de la prochaine action. Dans un schéma CRM léger, cela signifie généralement un champ comme owner_user_id sur un deal (et souvent sur les contacts aussi).

Deux sens d'« owner » se mélangent souvent : l'assignation utilisateur (une personne spécifique) et l'assignation équipe (un groupe). Si vous essayez de tout faire équipe-dépendant dès le départ, vous perdez la clarté sur qui doit agir aujourd'hui.

Un défaut qui fonctionne pour la plupart des petites équipes : tout est visible par tout le monde, mais chaque deal a exactement un owner. La collaboration reste facile et vous évitez les cas limites de permissions quand quelqu'un doit remplacer un collègue.

Quand vous avez besoin d'une visibilité plus stricte, gardez-la en tant qu'interrupteur simple, pas une matrice complexe. Par exemple, ajoutez un champ visibility sur deals et activities avec des valeurs comme public et private, où private signifie « seulement le propriétaire (et les admins) peuvent voir ».

Vous n'avez besoin d'équipes ou de territoires que si l'une de ces conditions est vraie :

  • Vous avez des groupes séparés qui ne doivent pas voir les deals des autres.
  • Vous reportez la performance par équipe et les personnes changent d'équipe.
  • Les managers doivent accéder à leur groupe, mais pas à toute l'entreprise.
  • Vous assignez des leads à une file partagée avant qu'un commercial ne les réclame.

La propriété influence le reporting. Si vous voulez des chiffres « par commercial » propres, reportez-vous sur le owner_user_id courant du deal. Si vous voulez aussi des totaux « par équipe », ajoutez owner_team_id (ou déduisez-le du profil du propriétaire), mais soyez explicite sur lequel est la source de vérité.

Exemple : deux commerciaux partagent une boîte de réception. Un nouveau deal commence non assigné avec owner_user_id = null et owner_team_id = Sales. Quand Alex le prend en charge, mettez owner_user_id = Alex (gardez team = Sales). Votre pipeline reste lisible et les totaux par équipe fonctionnent toujours.

Conception des permissions : assez de contrôle sans complexité

Automate follow ups
Use the Business Process editor to auto-create next steps and reminders.
Add workflows

Commencez par un RBAC simple

Les permissions fonctionnent mieux lorsque vous séparez trois idées : rôles (qui), ressources (quoi) et actions (ce qu'ils peuvent faire). C'est le role-based access control (RBAC), et cela reste compréhensible à mesure que l'équipe grandit.

Gardez les ressources proches de vos objets centraux : Contacts, Organizations, Deals, Activities, et peut-être Pipelines (si les stades sont éditables). Définissez un petit ensemble d'actions cohérent : view, create, edit, delete, export.

Export mérite d'être séparé. Beaucoup d'équipes sont à l'aise avec un large droit de visualisation, mais veulent limiter les extractions massives de données.

Les permissions au niveau des objets sont l'endroit le plus simple pour commencer : « Ce rôle peut-il éditer des deals ? ». Pour la plupart des petites équipes, cela suffit pendant des mois. Les règles au niveau des enregistrements (par contact ou par deal) sont là où la complexité apparaît, donc ajoutez-les seulement quand il y a un besoin réel.

Une étape pratique : une règle unique d'ownership : chaque enregistrement a owner_user_id, et les non-admins ne peuvent éditer que ce qu'ils possèdent. Si vous avez besoin d'une couche supplémentaire, ajoutez team_id et autorisez la visualisation par équipe tout en gardant les modifications réservées au propriétaire.

Règles au niveau de l'enregistrement quand nécessaire

Ajoutez des permissions au niveau des enregistrements pour des cas comme :

  • Les commerciaux ne doivent pas voir les deals des autres
  • Le support peut voir les deals mais jamais les modifier
  • Les managers peuvent tout voir et réaffecter des propriétaires

Gardez les besoins d'audit légers mais réels. Ajoutez created_at, created_by, updated_at et updated_by à chaque table principale. Si vous avez besoin d'un historique plus profond plus tard, ajoutez une petite table audit_log avec : type d'objet, id de l'enregistrement, action, qui, quand, et un court JSON des champs modifiés.

Étape par étape : construire le schéma en un week-end

Add practical permissions
Start with simple RBAC so people can work without permission headaches.
Create roles

C'est plus simple à bien faire quand vous le traitez comme un petit produit : définissez les données d'abord, prouvez que ça marche avec des entrées réelles, puis construisez les écrans.

Jour 1 : verrouillez le modèle de données

Commencez par un rapide croquis ERD sur papier ou un tableau blanc. Gardez le nombre de tables petit, mais soyez clair sur les liens : contact appartient à une organization (optionnel), deal appartient à un pipeline et a un owner, activity peut se rapporter à un contact et/ou un deal.

Faites ensuite le strict minimum dans cet ordre :

  • Définissez objets et relations : contacts, organizations, deals, activities, users/roles, plus de petites tables de référence si nécessaire.
  • Définissez champs obligatoires et valeurs par défaut : rendez created_at, owner_id et les noms essentiels obligatoires ; définissez des valeurs par défaut pour le stage et la currency si vous utilisez des montants.
  • Définissez des enums ou tables de référence : stades de deal et types d'activité pour que le reporting reste cohérent.
  • Ajoutez des index pour les filtres courants : owner_id, stage, due_at, created_at et les clés étrangères filtrées quotidiennement.
  • Testez avec 20 enregistrements réels : noms, dates et notes désordonnées pour voir ce qui casse.

Jour 2 : prouvez que le reporting est propre

Avant de construire les formulaires, notez 6–8 questions que votre équipe se pose chaque semaine. Par exemple : « Deals in Negotiation by owner », « Overdue activities », « New contacts this month », « Won revenue by month ». Si une question nécessite des jointures compliquées ou des cas spéciaux, corrigez le schéma maintenant.

Un scénario de test simple aide : ajoutez 3 contacts dans une même entreprise, 2 deals à des stades différents, et 6 activities réparties (un appel, une réunion, deux tâches et deux notes). Puis vérifiez si vous pouvez répondre à qui en est responsable, quelle est la prochaine étape et ce qui a changé la semaine dernière sans deviner.

Une fois les données solides, construisez l'UI et les automatisations en dernier. Vous irez plus vite et n'aurez pas à réécrire l'historique pour que les rapports correspondent à la réalité.

Erreurs courantes qui embrouillent le reporting

Le reporting devient confus quand on fait des « raccourcis » qui semblent plus rapides aujourd'hui mais vous coûtent chaque semaine ensuite. Un schéma CRM léger fonctionne mieux quand vos données ont des formes claires et quelques règles que l'équipe suit réellement.

Un piège fréquent est de tout forcer dans une seule table « customer ». Ça semble simple jusqu'à ce que vous ayez besoin de répondre à des questions basiques comme « Combien de deals sont liés à une entreprise ? » ou « Quelle personne a changé d'emploi ? ». Séparez personnes (contacts) et entreprises (organizations) et liez-les.

Un autre tueur de reporting est de laisser les stades de deal en texte libre. Si l'un tape « Negotiation » et l'autre « negotiating », votre graphique de pipeline est déjà faux. Utilisez une liste fixe de stades (ou une table stage) pour que chaque deal pointe vers le même ensemble.

Évitez de mettre plusieurs valeurs dans un même champ. Les emails ou téléphones séparés par des virgules rendent la recherche, la dé-dupe et l'export pénibles. Si vous avez vraiment besoin de plusieurs valeurs, stockez-les en lignes séparées (par exemple, un email par enregistrement dans une table enfant).

Les activities deviennent confuses quand les dates sont floues. Un seul champ « date » ne vous dit pas si une tâche était due vendredi dernier ou achevée vendredi dernier. Séparez ces concepts pour pouvoir rapporter correctement les travaux en retard et les travaux complétés.

Voici une petite checklist « sauvez le vous du futur » :

  • Séparez contacts et organizations, puis liez-les
  • Utilisez des IDs de stage, pas des noms tapés
  • Une valeur par champ ; utilisez une table enfant pour les multiples
  • Gardez due_at et completed_at comme champs séparés
  • Commencez avec des rôles simples ; ajoutez les règles au niveau des enregistrements seulement après avoir observé de vrais workflows

Exemple : si votre équipe enregistre les appels comme des notes puis les marque « faits » en éditant le même champ, vous ne pourrez pas mesurer le temps de suivi. Avec des champs séparés, ce rapport devient simple.

Checklist rapide avant de vous engager sur le schéma

Design tables the right way
Use Data Designer to lock relationships and keep reporting consistent as you grow.
Model schema

Avant de construire écrans, automatisations et tableaux de bord, faites un passage rapide axé reporting et règles. Un schéma CRM léger reste léger seulement si vous pouvez répondre aux questions courantes sans hacks ou champs ponctuels.

Passez ces vérifications avec des données réelles (même 20 contacts et 10 deals suffisent). Si vous bloquez, c'est généralement un champ manquant, une liste incohérente ou une relation trop lâche.

Les 5 vérifications qui détectent la plupart des problèmes

  • Bases du reporting : pouvez-vous grouper les deals par stage, par owner et par mois de clôture sans deviner quel champ de date utiliser ?
  • Gestion du travail : pouvez-vous extraire « activités en retard par owner » dans un seul rapport, où l'en retard est basé sur une seule date due et un statut clair de fait ?
  • Contact → organization : un contact peut-il exister sans organization et peut-il être lié plus tard sans casser l'historique (emails, notes, participation aux deals) ?
  • Cohérence : les stades et types d'activité proviennent-ils d'une liste fixe pour éviter d'avoir « Follow up », « Follow-up » et « Followup » comme trois valeurs différentes ?
  • Sécurité : pouvez-vous restreindre qui peut supprimer des enregistrements ou exporter des listes sans bloquer des mises à jour normales comme déplacer un deal au stade suivant ?

Si vous pouvez répondre « oui » à ces cinq points, vous êtes bien positionné. Sinon, corrigez maintenant tant que le schéma est encore petit.

Astuce pratique : définissez stades et types d'activité une fois (table ou enum) et réutilisez-les partout pour que chaque écran et processus utilise les mêmes valeurs.

Un exemple réaliste pour une petite équipe et les étapes suivantes

Une agence de 5 personnes est un bon test pour un schéma CRM léger. L'équipe est occupée, les leads viennent de partout et personne ne veut chouchouter les données. Imaginez : 1 admin, 2 commerciaux, 1 ops lead et 1 personne en lecture seule (le fondateur qui ne fait que consulter les chiffres).

Une nouvelle demande entrante arrive (formulaire web ou email) : « Besoin d'une refonte, budget 15k, délai 6 semaines. » La règle est simple : créez une organization (si c'est une entreprise) et un contact (la personne). Puis créez un deal lié à l'organization, avec le contact comme contact principal du deal.

Pour aller vite, ils utilisent une petite checklist d'entrée :

  • Si le domaine ou le nom de l'entreprise correspond à une organization existante, réutilisez-la.
  • Si l'email de la personne existe, réutilisez ce contact.
  • Créez toujours un deal pour une réelle intention d'achat.
  • Mettez le message original dans la description du deal.
  • Ajoutez la source (referral, form, outbound) comme un champ unique.

Les activities empêchent les appels manqués parce que chaque prochaine étape devient un item daté dont une personne est responsable. Quand le commercial a un appel discovery, il enregistre une activity de type meeting et ajoute immédiatement la suivante : un call dans deux jours. Si ops a besoin d'éléments pour chiffrer le travail, ils créent une tâche activity sur le même deal afin qu'elle apparaisse au même endroit.

Les rôles restent pratiques : Admin peut tout éditer et gérer les paramètres, Sales peut créer et mettre à jour contacts, deals et leurs activities, Ops peut mettre à jour les champs liés à la livraison et les activities, et Read-only peut consulter pipeline et rapports sans modifier les données.

Si vous voulez transformer cela en outil interne rapidement, AppMaster (appmaster.io) est une option simple : vous pouvez modeler le schéma dans son Data Designer (PostgreSQL), ajouter des règles métier dans le Business Process editor, construire une boîte d'entrée de leads et une page de deal simple, puis déployer sur AppMaster Cloud ou votre propre cloud quand vous êtes prêt à le partager.

FAQ

What’s the simplest CRM schema a small team can start with?

Commencez avec quatre objets principaux : Contacts (personnes), Organizations (entreprises optionnelles), Deals (opportunités) et Activities (un journal unifié). Si chaque question que votre équipe se pose peut être rattachée à l'un d'entre eux, vous resterez rapide sans casser les rapports.

Do I really need an Organizations table, or can I track people only?

Créez une table Organizations si vous vendez en B2B et avez besoin de rapports par entreprise, ou si plusieurs contacts appartiennent au même client. Pour du B2C ou quand la « personne » est la seule unité vendue, vous pouvez sauter Organizations et tout garder dans Contacts.

Why shouldn’t deal stages be a free-text field?

N'utilisez pas de champ texte libre pour les étapes : les fautes d'orthographe et les variantes détruisent les tableaux de bord. Utilisez une liste fixe (une table stages) et stockez un identifiant de stage sur chaque deal pour pouvoir renommer les étapes sans altérer les données historiques.

What fields should be required on Contacts, Organizations, and Deals?

Restez minimal : un ID, un nom et created_at pour Contacts et Organizations, plus les champs essentiels pour un deal comme stage, owner, value et close_date. Les champs optionnels sont acceptables ; trop de champs obligatoires génèrent des valeurs bidon comme “N/A”.

How do I handle duplicate contacts and messy imports?

N'empêchez pas automatiquement les doublons sauf si c'est adapté à votre flux. Un bon compromis : autoriser les doublons mais afficher un avertissement quand un email ou un téléphone similaire est trouvé, et ajouter un external_id (ou des clés d'import) pour éviter de recréer des enregistrements lors d'un ré-import.

Should calls, meetings, notes, and tasks be separate tables?

Utilisez une seule table Activity avec un petit ensemble fixe pour type comme call, email, meeting, note, task. Cela rend le « dernier contact », le travail en retard et l'historique cohérents parce que tout partage les mêmes timestamps et la même structure.

Why do I need both due_at and completed_at on activities?

Conservez à la fois due_at et completed_at car ils répondent à des questions différentes. due_at sert à la planification et aux rapports d'arriérés, tandis que completed_at sert à l'exécution et à l'analyse des durées ; les mélanger rendrait les deux rapports peu fiables.

How should a Deal relate to Contacts (one or many)?

Par défaut, un deal a un contact principal pour garder les rapports simples et l'interface claire. Si vous avez parfois besoin d'autres intervenants, ajoutez une table deal_contacts pour attacher des participants sans complexifier dès le départ.

What’s a practical ownership and visibility model for small teams?

Un bon modèle par défaut : tout est visible par tous, mais chaque deal a un propriétaire unique responsable de l'étape suivante. Si vous avez besoin de confidentialité plus tard, ajoutez un champ simple visibility comme public/private plutôt que de construire une matrice de permissions dès le départ.

What’s the fastest way to build and validate this schema in AppMaster?

Modélisez d'abord les tables, puis testez avec des données réelles avant de construire les écrans. Si vous ne pouvez pas facilement répondre aux questions courantes comme deals par étape, activités en retard et dernier contact par deal, corrigez le schéma tant qu'il est encore petit.

Facile à démarrer
Créer quelque chose d'incroyable

Expérimentez avec AppMaster avec un plan gratuit.
Lorsque vous serez prêt, vous pourrez choisir l'abonnement approprié.

Démarrer