@extends('layouts.app') @section('title', 'Schéma MLD — Base de données') @section('page-title', 'Schéma MLD — Base de données') @push('styles') @endpush @section('content') {{-- Barre d'actions --}}
{{-- Schéma --}}MLD — Modèle Logique des Données | {{ now()->format('d/m/Y') }} | Laravel 11 / MySQL | 20 tables
{{-- Légende --}}| Table source | Cardinalité | Table cible | Via (FK) | Description |
|---|---|---|---|---|
| users | 1,1 ─── 0,N | societes | societes.user_id | Un utilisateur possède plusieurs sociétés |
| users | 1,1 ─── 0,N | abonnements | abonnements.user_id | Un utilisateur a un historique d'abonnements |
| tarifs_abonnement | 1,1 ─── 0,N | abonnements | abonnements.tarif_abonnement_id | Un tarif s'applique à plusieurs abonnements |
| users | 1,1 ─── 0,N | clients | clients.user_id | Partagé entre toutes les sociétés de l'utilisateur |
| clients | 1,1 ─── 0,N | beneficiaires | beneficiaires.client_id | Un assuré a plusieurs bénéficiaires |
| caisses | 1,1 ─── 0,N | clients | clients.caisse_id | Une caisse couvre plusieurs clients |
| mutuelles | 1,1 ─── 0,N | clients | clients.mutuelle_id | Une mutuelle couvre plusieurs clients |
| conducteurs | 0,1 ─── 0,N | vehicules | vehicules.conducteur_id | Un conducteur peut être affecté à plusieurs véhicules |
| users + societes | 1,1 ─── 0,1 | parametres | (user_id, societe_id) UNIQUE | 1 seul jeu de paramètres par utilisateur × société |
| users + societes | 1,1 ─── 0,N | conducteurs, véhicules, motifs, pièces, modes_reglement, lignes_facturation, collaborateurs | .(user_id, societe_id) | Données propres à chaque société de l'utilisateur |
| Périmètre | Tables | Filtre | Comportement |
|---|---|---|---|
| Isolement utilisateur | Toutes les tables | WHERE user_id = auth()->id() |
Middleware SetTenantDatabase — données 100% isolées par user |
| Fichiers partagés | clients, bénéficiaires, caisses, mutuelles, prescripteurs, destinations, trajets | user_id uniquement |
Visibles depuis toutes les sociétés de l'utilisateur |
| Fichiers par société | conducteurs, véhicules, motifs, pièces, modes_reglement, lignes_facturation, collaborateurs, parametres | user_id + session('societe_id') |
Spécifiques à la société active — scope() dans chaque controller |
| Singleton paramètres | parametres | UNIQUE(user_id, societe_id) | Parametre::forCurrent() → firstOrCreate |