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