ATTENTION : Il s’agit ici d’un article me servant à exprimer ma vision, mon opinion. Il a pour objectif de donner des idées de comment je choisis quelle architecture mettre en place.

C’est toujours une question que l’on se pose lorsque l’on veut associer un qualificatif, un type de relation, un statut particulier en lien avec un enregistrement parent : “Est ce que je crée une relation N:N ou 1:N-N:1 ?
En tout cas, il faut toujours vous poser la question car un mauvais choix peut avoir un impact catastrophique sur votre architecture et vos données.

En général, pour se poser cette question, il faut avoir le besoin de lier plusieurs enregistrements à l’enregistrement principal, ce qu’un champ de recherche, à l’inverse ne permet de lier qu’un unique enregistrement.
Une relation N:N par défaut est celle entre Compte et Contact, cette relation permet de lier des contacts à des comptes et inversement.
En quelques clics dans une sous grille, le lien est créé. MAIS il est impossible de qualifier ce lien, par exemple, préciser une information relationnelle via un champ “Rôle” ou autre. Si le contact est lié à plusieurs entreprises via cette relation, on sait uniquement qu’il y a un lien technique mais rien de trés précis.
Dans certains cas, la relation N:N est parfaite lorsque l’on a pas besoin de qualifier le lien technique entre deux enregistrements.

Schéma simplifié d’une relation N:N


Exemple :
On veut connaître dans quelles régions est établie une entreprise. Si les régions sont regroupées dans une entité, on peut créer trés facilement une relation N:N entre l’entité Région et Compte.
La qulification de la relation est purement facultative et n’apporterait sans doute rien.

Si la qualification d’une relation entre deux enregistrements vous paraît essentiel, alors il faut privilégier la realtion type 1:N-N:1 .
Cette dernière implique la création d’une entité intermédiaire permettant de créer un ensemble de champs, lier des activitées, etc. Comme pour une entité ordinaire. Et depuis la possibilité de créer des formulaires de création rapide, il est très simple de mettre un processus clair pour les utilsateurs.

Schéma simplifié d’une relation 1:N-N:1

Les éléments essentiels / actions à réaliser pour faire une bonne relation 1:N-N:1 sont les suivants :

  • Activer la craétion rapide de l’entité intermédiaire (C)
  • Placer une sous grille de l’entité intermédiaire (C) sur l’entité Parent (A)
  • Créer l’entité de référence (B) soit en organisation ou tulisateur suivant votre sécurité interne.
  • Créer des champs de recherche vers les entités Parent (A) et Référence (B) depuis l’entité intermédiaire (C)
    • Optionnel : Ajouter des formulaires de type “vue” associés aux champs de recherche précédents sur le formulaire de l’entité intermédiaire (C)
  • Le champ principal (Souvent “name”) de l’entité intermédiaire (C) peut être automatiquement alimenté par FLOW ou workflow synchrone avec les vlaeurs des champs de recherche
    • Exemple : “Nom_EntitéA – Nom_EntitéB”

Avec ces quelques éléments et actions, vous devriez avoir une relation pratique et utile pour vos utilisateurs.

Et vous ? Vous feriez quoi ?