-
Modélisation de relation
Bonsoir,
j'ai un certains nombre de tables possédant :
- des clés primaires composites
- un champ "libellé"
Le champ libellé contient comme son nom l'indique un libellé qui est afficher dans la langue par défaut de mon application. Dernièrement on me demande de faire en sorte que mon application puisse être traduite dynamiquement dans plusieurs langues. Et on me propose de rajouter une table "générique" (TR_TRADUCTION), contenant les champs :
- TR_KEY_N1 => Champ 1 de la clé primaire numérique
- TR_KEY_N2
- TR_KEY_N3
- TR_KEY_N4
- TR_KEY_V1 => Champ 1 de la clé primaire alphanumérique
- TR_KEY_V2
- TR_KEY_V3
- TR_KEY_V4
- TR_CODE_LANGUE
- TR_TRADUCTION
Mon modèle n'est pas impacté, je peux gérer n langues mais par contre :
Je n'ai plus d'intégrité référentiel => je sens que c'est un code smell.
Comment modéliser-vous ce type d'information de votre côté?
Merci d'avance pour votre retour.
-
J'envisagerais plutôt d'ajouter à chaque table concernée une autre table contenant la clé de la table d'origine plus le code de la langue comme clé primaire ainsi que les contraintes qui vont bien et le libelle traduit. Je me méfie des solutions génériques qui souvent apportent plus de problèmes que ceux supposés à résoudre.
D'autre part il faut prendre en compte également la manière dans laquelle la nouvelle application va fonctionner, plus précisément comment la traduction sera fait. Et encore normalement il doivent exister toute une autre sorte des problème liés au fonctionnement d'une application multi-langue: jeu de caractères, dates et heures, symbole de la monnaie, etc.