Aller au contenu principal

Schéma de base de données

Aperçu de toutes les tables de base de données dans FeedbackPulse SaaS.


Référence des tables​

Tables de la plateforme (non scoped par locataire)​

TableDescriptionColonnes clés
platform_settingsConfiguration globale clé-valeur (chiffrée pour les secrets)key, value
plansPlans d'abonnement avec tarification et indicateurs de fonctionnalitésname, monthly_price, annual_price, max_*, feature_*
landing_pagesDonnées du constructeur de page d'accueil avec HTML mis en cachesections (JSON), cached_html, is_published
payment_eventsJournal des événements webhook Stripe/PayPalgateway, event_id, event_type, payload (JSON)
audit_logsJournal d'audit des actionsuser_id, action, description, old_values, new_values
cron_logsJournal d'exécution des tâches planifiéesjob_name, status, output, duration_seconds

Tables des locataires​

TableDescriptionColonnes clés
tenantsComptes multi-locatairesname, slug, subdomain, plan_id, status, settings (JSON)
tenant_domainsMappages de domaines personnaliséstenant_id, domain, status, verified_at
usersTous les comptes utilisateurs (tous rôles)name, email, role, tenant_id, two_factor_secret
productsProduits de feedbacktenant_id, name, slug, type, category, is_active
feedback_campaignsConfigurations de formulaires de feedbacktenant_id, product_id, name, slug, survey_schema (JSON), status
feedback_submissionsEntrées de feedback individuellestenant_id, campaign_id, product_id, star_rating, nps_score, text_feedback, sentiment_*, status
feedback_tagsDéfinitions des étiquettestenant_id, name
feedback_submission_tagPivot plusieurs-à-plusieurssubmission_id, tag_id
team_membersEnregistrements d'équipe des locatairestenant_id, user_id, role
team_invitationsInvitations en attentetenant_id, email, role, token, expires_at
api_keysClés API des locataires (hachées)tenant_id, name, key, scopes, is_active
roadmap_itemsÉléments de la feuille de route publiquetenant_id, product_id, title, status, vote_count
roadmap_votesVotes anonymes sur les élémentsroadmap_item_id, email
feature_requestsSuggestions de fonctionnalités communautairestenant_id, roadmap_item_id, email, description, status
changelog_entriesNotes de version des produitstenant_id, product_id, title, body, version, published_at
notificationsNotifications dans l'applicationtenant_id, user_id, type, title, message, data (JSON)
webhook_logsJournaux de livraison des webhooks sortantstenant_id, url, event, payload (JSON), response_code
data_deletion_requestsSuivi des suppressions RGPDtenant_id, requester_email, status, completed_at
referral_codesCodes de parrainagetenant_id, code, reward_type, uses, max_uses
referral_conversionsSuivi des conversionsreferral_code_id, converted_tenant_id, reward_amount
scheduled_report_logsJournal de livraison des rapportstenant_id, report_type, status, sent_at

Tables système Laravel​

TableDescription
migrationsSuivi des migrations
password_reset_tokensTokens de réinitialisation de mot de passe (conscients du locataire)
sessionsSessions utilisateur
cacheCache de l'application
jobsTâches en file d'attente
failed_jobsTâches échouées

Relations clés​

plans <---- tenants <---- users
|
|---- products <---- feedback_campaigns <---- feedback_submissions
| |
| +---- feedback_tags (M2M)
|
|---- roadmap_items <---- roadmap_votes
| <---- feature_requests
|
|---- changelog_entries
|---- team_members ---- users
|---- team_invitations
|---- api_keys
|---- notifications
+---- webhook_logs

Isolation des données​

Chaque table scoped par locataire possède :

  • Une clé étrangère tenant_id avec ON DELETE CASCADE
  • Un index composite sur (tenant_id, created_at)
  • Un scope global TenantScope pour le filtrage automatique

Lorsqu'un locataire est supprimé, toutes ses données sont supprimées en cascade automatiquement.


Étapes suivantes​