📐 Schéma Merise — Taxilog

MLD — Modèle Logique des Données  |  Généré le 09/06/2026  |  Laravel 11 / MySQL

Légende : id = Clé primaire (PK) user_id = Clé étrangère (FK) ? = Nullable int = Type de donnée  Auth & Multi-tenant  Fichiers partagés (user_id)  Fichiers société (user_id + societe_id)  Paramètres  Système
🔐 Authentification & Multi-tenant
👤 users
idbigInt PK
namevarchar(255)
emailvarchar(255) UNIQUE
email_verified_attimestamp?
passwordvarchar(255)
is_adminboolean
remember_tokenvarchar(100)?
last_seen_attimestamp?
last_login_attimestamp?
created_at / updated_attimestamps
🏢 societes
idbigInt PK
user_idFK → users
nomvarchar(150)
siretvarchar(20)?
adresse1varchar(150)?
adresse2varchar(150)?
code_postalvarchar(10)?
villevarchar(100)?
telephonevarchar(20)?
emailvarchar(150)?
faxvarchar(20)?
no_agreevarchar(30)?
code_noemievarchar(10)?
tva_intracommunautairevarchar(30)?
statutenum(active/inactive)
notestext?
created_at / updated_attimestamps
💳 abonnements
idbigInt PK
user_idFK → users
tarif_abonnement_idFK → tarifs_abonnement?
date_debutdate?
date_echeancedate?
nb_societessmallInt
nb_clients_mobilessmallInt
prix_mensuel_htdecimal(8,2)
prix_mensuel_ttcdecimal(8,2)
statutenum(actif/suspendu/résilié)
notestext?
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
notestext?
created_at / updated_attimestamps
🔑 sessions
idvarchar PK
user_idFK → users?
ip_addressvarchar(45)?
user_agenttext?
payloadlongText
last_activityint (index)
📂 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_usagevarchar(100)?
prenomvarchar(100)?
no_insee / cle_inseevarchar?
date_naissancedate?
decede / decede_lebool / date
Adresse & Contacts
adresse1 / adresse2varchar(150)?
code_postal / communevarchar?
telephone / portable / faxvarchar?
emailvarchar(150)?
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?
naissance_etrangerboolean
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_regimevarchar(5)?
caisse_gestionnairevarchar(10)?
centre_gestionnairevarchar(10)?
code_affiliationvarchar(20)?
centre_informatiquevarchar(10)?
organisme_destinatairevarchar(20)?
no_organisme / no_cramvarchar?
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_mutuellevarchar(100)?
no_org_complvarchar(30)?
type_contratvarchar(10)?
remarquetext?
created_at / updated_attimestamps
👨‍⚕️ prescripteurs
idbigInt PK
user_idFK → users
civilitevarchar(10)?
nomvarchar(150)
specialite_codevarchar(20)?
specialitevarchar(150)?
no_prescripteurvarchar(50)?
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_postalvarchar(10)?
communevarchar(150)?
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_partageboolean
flag_drom / flag_tpmr / flag_hospitboolean
Aller (trajet + calcul)
trajet_aller_1 / _2varchar(30)?
depart_aller / arrivee_allervarchar(20)?
heure_depart/arrivee_allervarchar(10)?
vehicule_aller / chauffeur_allervarchar(100)?
kms_reel_allerdecimal(8,2)
aller_forfait_nbre/prixdecimal(8,2)
aller_fgv_nbre/prixdecimal(8,2)
aller_kms_nbre/prixdecimal
aller_peage / aller_tpmr / aller_dromdecimal(8,2)
aller_maj/hosp/abatboolean
total_allerdecimal(10,2)
Retour (structure identique)
trajet_retour_1 / _2varchar(30)?
… (mêmes champs retour)…
total_retourdecimal(10,2)
Total
total_transportdecimal(10,2)
created_at / updated_attimestamps
🏭 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_naissancedate?
no_insee / no_insee_clevarchar?
telephone / mailvarchar?
carte_provarchar(50)?
date_sortiedate?
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_autorisationvarchar(50)?
communevarchar(150)?
carte_telepeagevarchar(50)?
date_fin_circdate?
agrementvarchar(50)?
id_vehicule / code_vehiculevarchar?
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
⚙️ Paramètres
⚙️ parametres
idbigInt PK
user_idFK → users
societe_idFK → societes
UNIQUE (user_id, societe_id)
En-tête société
soc_nomvarchar(200)?
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)?
imp_papier_ordinaire / imp_detail_factureboolean
tva_transports / tva_peagesvarchar(50)?
nb_exemplairessmallInt
imp_h/v_decalage / imp_h/v_homothetiesmallInt
clients_toutes_societes / gestion_conflits…boolean
Onglet Télétransmission
tele_appli_b2 / tele_norme_b2 / tele_compactage_b2varchar?
tele_version_norme_b2 / tele_no_versionvarchar?
tele_dernier_no_lot / tele_type_emetteurvarchar?
tele_code_envoi_noemievarchar(10)?
tele_email / tele_fournisseur_accesvarchar?
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_entetetext?
imp_ville / imp_signaturevarchar?
imp_logo_pathvarchar(300)?
imp_pied_pagetext?
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
🖥️ Tables Système
🔐 password_reset_tokens
emailvarchar PK
tokenvarchar(255)
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?
host / port / databasevarchar
username / passwordvarchar
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 (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 client (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 parametres.(user_id, societe_id) 1 jeu de paramètres par utilisateur × société (UNIQUE)
users + societes 1,1 ────── 0,N conducteurs / vehicules / motifs / pièces / modes_reglement / lignes_facturation / collaborateurs .(user_id, societe_id) Données propres à chaque société de l'utilisateur
users 1,1 ────── 0,N caisses / mutuelles / prescripteurs / destinations / trajets .user_id Fichiers partagés entre toutes les sociétés de l'utilisateur
📌 Règles Métier — Multi-tenancy
Périmètre Tables concernées Filtre appliqué Comportement
Isolement utilisateur Toutes les tables WHERE user_id = auth()->id() Chaque utilisateur ne voit que ses propres données (middleware SetTenantDatabase)
Fichiers partagés clients, bénéficiaires, caisses, mutuelles, prescripteurs, destinations, trajets user_id uniquement Accessibles depuis toutes les sociétés de l'utilisateur
Fichiers par société conducteurs, véhicules, motifs, pièces, modes_reglement, lignes_facturation, collaborateurs, paramètres user_id + societe_id Spécifiques à la société active (session('societe_id'))
Singleton paramètres parametres UNIQUE(user_id, societe_id) Parametre::forCurrent() → firstOrCreate par user+société
Taxilog — Schéma MLD généré le 09/06/2026  |  Laravel 11  |  20 tables  |  Pour exporter en PDF : Ctrl+P → Destination : Enregistrer en PDF → Format : A3 Paysage