@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 --}}
Retour Administration → Base de données → Schéma MLD
Généré le {{ now()->format('d/m/Y à H:i') }} Plein écran
{{-- Schéma --}}
📐 Schéma Merise — Taxilog

MLD — Modèle Logique des Données  |  {{ now()->format('d/m/Y') }}  |  Laravel 11 / MySQL  |  20 tables

{{-- Légende --}}
Légende : id = Clé primaire user_id = Clé étrangère (FK) ? = Nullable  Auth & Multi-tenant  Fichiers partagés (user_id)  Fichiers société (user_id + societe_id)  Paramètres  Système
{{-- ============================================================ --}} {{-- SECTION 1 : AUTH & MULTI-TENANT --}} {{-- ============================================================ --}}
🔐 Authentification & Multi-tenant
👤 users
idbigInt PK
namevarchar(255)
emailvarchar UNIQUE
passwordvarchar
is_adminboolean
email_verified_attimestamp?
last_seen_at / last_login_attimestamp?
remember_tokenvarchar(100)?
created_at / updated_attimestamps
🏢 societes
idbigInt PK
user_idFK → users
nomvarchar(150)
siretvarchar(20)?
adresse1 / adresse2varchar(150)?
code_postal / villevarchar?
telephone / email / faxvarchar?
no_agree / code_noemievarchar?
tva_intracommunautairevarchar(30)?
statutenum(active/inactive)
created_at / updated_attimestamps
💳 abonnements
idbigInt PK
user_idFK → users
tarif_abonnement_idFK → tarifs_abonnement?
date_debut / date_echeancedate?
nb_societessmallInt
nb_clients_mobilessmallInt
prix_mensuel_ht / prix_mensuel_ttcdecimal(8,2)
statutenum(actif/suspendu/résilié)
created_at / updated_attimestamps
💰 tarifs_abonnement
idbigInt PK
anneesmallInt
prix_base_htdecimal(8,2)
prix_societe_sup_htdecimal(8,2)
prix_client_mobile_htdecimal(8,2)
duree_moissmallInt
tva_pctdecimal(5,2)
actifboolean
created_at / updated_attimestamps
🔑 sessions
idvarchar PK
user_idFK → users?
ip_addressvarchar(45)?
user_agenttext?
payloadlongText
last_activityint
{{-- ============================================================ --}} {{-- SECTION 2 : FICHIERS PARTAGÉS --}} {{-- ============================================================ --}}
📂 Fichiers de base — Partagés entre sociétés (user_id)
👥 clients
idbigInt PK
user_idFK → users
Type
is_tap / is_libre / is_contratboolean
type_clientenum(particulier/pro/org)
Identité
civiliteenum?
nom_patronymiquevarchar(100)
nom_usage / prenomvarchar(100)?
no_insee / cle_inseevarchar?
date_naissancedate?
decede / decede_lebool / date
Adresse & Contacts
adresse1 / adresse2varchar(150)?
code_postal / communevarchar?
telephone / portable / emailvarchar?
Relations
caisse_idFK → caisses?
mutuelle_idFK → mutuelles?
Facturation
echeanceenum(4 valeurs)
taux_remise_facture / avoirdecimal(5,2)?
created_at / updated_attimestamps
👶 beneficiaires
idbigInt PK
user_idFK → users
client_idFK → clients
civilitevarchar(10)?
nomvarchar(100)
prenomvarchar(100)?
date_naissancedate?
rangtinyInt
lien_assurevarchar(50)?
ex_client / decedeboolean
created_at / updated_attimestamps
🏦 caisses
idbigInt PK
user_idFK → users
nomvarchar(150)
adresse1/2/3varchar(150)?
code_postal / villevarchar?
telephonevarchar(20)?
mode_test / teletransmissionboolean
NOÉMIE
code_noemievarchar(10)?
envoi_rpps / sep_cmu / sep_tauxboolean
code_grand_regime / caisse_gestionnairevarchar?
centre_gestionnaire / no_organismevarchar?
mode_envoienum(global/non)
created_at / updated_attimestamps
🩺 mutuelles
idbigInt PK
user_idFK → users
nomvarchar(150)
adresse1 / adresse2varchar(150)?
code_postal / villevarchar?
telephonevarchar(20)?
type_mutuelle / no_org_complvarchar?
type_contratvarchar(10)?
remarquetext?
created_at / updated_attimestamps
👨‍⚕️ prescripteurs
idbigInt PK
user_idFK → users
civilitevarchar(10)?
nomvarchar(150)
specialite_code / specialitevarchar?
no_prescripteur / no_rppsvarchar(50)?
adresse1 / adresse2varchar(200)?
code_postal / communevarchar?
telephonevarchar(30)?
created_at / updated_attimestamps
📍 destinations
idbigInt PK
user_idFK → users
codevarchar(20)
nomvarchar(150)?
code_postal / communevarchar?
code_inseevarchar(10)?
created_at / updated_attimestamps
🚕 trajets
idbigInt PK
user_idFK → users
En-tête
date_transportdate
transport_concernantvarchar(200)?
typeenum(aller_retour/aller/retour)
refus_transport_partage / flag_drom / flag_tpmrboolean
Aller (trajet + calcul)
trajet_aller_1 / _2varchar(30)?
depart_aller / arrivee_allervarchar(20)?
vehicule_aller / chauffeur_allervarchar(100)?
kms_reel_allerdecimal(8,2)
aller_forfait / aller_fgv / aller_kmsdecimal (nbre/prix)
aller_peage / aller_tpmr / aller_dromdecimal(8,2)
aller_maj / aller_hosp / aller_abatboolean
total_allerdecimal(10,2)
Retour (structure identique aller)
… mêmes champs retour …—
total_retour / total_transportdecimal(10,2)
created_at / updated_attimestamps
{{-- ============================================================ --}} {{-- SECTION 3 : FICHIERS PAR SOCIÉTÉ --}} {{-- ============================================================ --}}
🏭 Fichiers de base — Par société (user_id + societe_id)
🧑‍✈️ conducteurs
idbigInt PK
user_idFK → users
societe_idFK → societes
Identité
nomvarchar(100)
prenomvarchar(100)?
adresse1/2/3varchar(200)?
code_postal / villevarchar?
date_naissance / no_inseedate / varchar?
telephone / mailvarchar?
carte_pro / date_sortievarchar / date?
Planning
planning_nom / _ini / _trivarchar?
Dates & Alertes
dt_visite / dt_proch_visite / dt_alerte_meddate?
dt_formation / dt_proch_form / dt_alerte_formdate?
created_at / updated_attimestamps
🚗 vehicules
idbigInt PK
user_idFK → users
societe_idFK → societes
conducteur_idFK → conducteurs?
Identification
denominationvarchar(150)?
plaquevarchar(20)?
no_autorisation / communevarchar?
carte_telepeage / agrementvarchar(50)?
id_vehicule / code_vehiculevarchar?
date_fin_circdate?
Contrôles & Alertes
dt_ct / dt_proch_ct / alerte_ctdate?
dt_taxi / dt_proch_taxi / alerte_taxidate?
created_at / updated_attimestamps
📋 motifs
idbigInt PK
user_idFK → users
societe_idFK → societes
libellevarchar(200)
ordresmallInt
created_at / updated_attimestamps
🔩 pièces
idbigInt PK
user_idFK → users
societe_idFK → societes
libellevarchar(200)
ordresmallInt
created_at / updated_attimestamps
💵 modes_reglement
idbigInt PK
user_idFK → users
societe_idFK → societes
libellevarchar(200)
ordresmallInt
created_at / updated_attimestamps
🧾 lignes_facturation
idbigInt PK
user_idFK → users
societe_idFK → societes
designationvarchar(250)
type_ligneenum(libre/assistance)
tvaenum(8 taux)
pu_htdecimal(10,2)
ordresmallInt
created_at / updated_attimestamps
🤝 collaborateurs
idbigInt PK
user_idFK → users
societe_idFK → societes
nomvarchar(150)
emailvarchar(150)?
created_at / updated_attimestamps
{{-- ============================================================ --}} {{-- SECTION 4 : PARAMÈTRES --}} {{-- ============================================================ --}}
⚙️ Paramètres
⚙️ parametres
idbigInt PK
user_idFK → users
societe_idFK → societes
UNIQUE (user_id, societe_id)
En-tête société
soc_nom / soc_no_licence / soc_siretvarchar?
soc_agrement / soc_emailvarchar?
soc_adresse1/2/3 / soc_cp / soc_communevarchar?
Onglet Paramètres
affich_anniversaires / affich_fin_droitsboolean
dernier_no_facture / _devis / _avoirsmallInt
initiale_facturevarchar(5)?
tva_transports / tva_peagesvarchar(50)?
nb_exemplairessmallInt
imp_h/v_decalage / imp_h/v_homothetiesmallInt
Onglet Télétransmission
tele_appli_b2 / tele_norme_b2 / tele_compactage_b2varchar?
tele_code_envoi_noemie / tele_emailvarchar?
tele_smtp_serveur / tele_pop_serveurvarchar(200)?
tele_smtp_port / tele_pop_portsmallInt
tele_smtp_auth / tele_sslboolean
tele_mail_user / tele_mail_passwordvarchar?
tele_affectation_retoursvarchar(50)?
Onglet Impressions
imp_entete / imp_pied_pagetext?
imp_ville / imp_signaturevarchar?
imp_logo_pathvarchar(300)?
imp_logo_decalage / _hauteur / _largeursmallInt
Onglet Fact. Libre
fact_nb_jours_echeancesmallInt
fact_conversion_lettresboolean
fact_texte_legal_1/2/3varchar(255)?
Onglet PEC+
pec_teleserviceenum(manuel/auto/desactive)
pec_traces_pec / pec_traces_xml / pec_testboolean
pec_nom_utilisateurvarchar(150)?
created_at / updated_attimestamps
{{-- ============================================================ --}} {{-- SECTION 5 : SYSTÈME --}} {{-- ============================================================ --}}
🖥️ Tables Système
🔐 password_reset_tokens
emailvarchar PK
tokenvarchar
created_attimestamp?
⚡ cache
keyvarchar PK
valuemediumText
expirationint
⚙️ jobs
idbigInt PK
queuevarchar(255)
payloadlongText
attemptstinyInt
reserved_at / available_at / created_atint / timestamps
🗄️ database_configs
idbigInt PK
user_idFK → users?
label / drivervarchar
host / port / databasevarchar / int / varchar
username / password_encryptedvarchar
charset / statut / notesvarchar / enum / text
created_at / updated_attimestamps
🗺️ codes_insee
idbigInt PK
code_communevarchar
nom_communevarchar
code_postalvarchar
departement / regionvarchar
📅 jours_feries
idbigInt PK
datedate
nomvarchar
anneesmallInt
{{-- ============================================================ --}} {{-- TABLEAU DES RELATIONS --}} {{-- ============================================================ --}}
🔗 Relations & Cardinalités
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
{{-- Règles métier --}}
📌 Règles Métier — Multi-tenancy
PérimètreTablesFiltreComportement
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
{{-- /schema-wrap --}} @endsection @push('scripts') @endpush