Reply To: Fonctionnement relation entre les tables

  • DavidZed

    Member
    11 avril 2023 at 19h45

    Hello Oliviersg95 ,

    Pour les relations dans Dataverse :

    • 1:1 (un à un), la relation la plus basique : et pourtant elle n’existe tout simplement pas dans Dataverse !

      • Donc soit on utilise une 1:N à la place

      • Soit on ajoute de nouvelles colonnes dans la même table

    • 1:N (Un à plusieurs) / N:1 (Plusieurs à un) : On peut les créer :

      • Soit par le menu des relations à partir de la table N ou de la table 1

      • Soit en créant une colonne de type “Recherche” / “Lookup” dans la table “N”

      • Un arbre peut avoir plusieurs branches, mais une branche ne peut avoir qu’un arbre => je crée une colonne “Recherche” dans la table “Branche” qui pointera vers la table “Arbre”

    • N:N Native, Plusieurs à plusieurs, on les crée uniquement via le menu relations

      • Optimisé pour les application “Model-driven”

      • Plus délicat à utiliser dans les applications Canvas (voir le post de R3dKap )

    • Et enfin la relation N:N “Custom”, qui consiste à créer, depuis une table qui servira de jonction, deux colonnes de type recherche (ou 2 relations N:1) vers les deux tables à lier. L’avantage, c’est que bien souvent, cette table intermédiaire n’est pas forcément une donnée virtuelle, mais peut faire référence à une entité du projet.

      • L’exemple cité par R3dKap l’illustre parfaitement (Client / location / parc).

      • L’exercice consiste souvent à trouver le dénominateur comun entre deux tables pour déterminer la table intermédiaire. Un exemple que j’utilise souvent c’est celui d’une école :

    Une école a plusieurs salles de classe, plusieurs professeurs, et plusieurs élèves. On va avoir plusieurs relation N:N de ces trois tables entre elles :
    Les élèves ont plusieurs professeurs, les professeurs ont plusieurs élèves,
    Il y a plusieurs élèves par salle de classe, les élèves vont dans plusieurs salles de classe
    Les professeurs donnent des cours dans plusieurs salles de classes, les salles de classe accueillent plusieurs professeurs

    Ici le dénominateur commun entre professeurs et salles de classe, sera le cours, cette nouvelle table aura une relation N:1 avec les deux premières :
    Un cours ne peut avoir lieu que dans une salle de classe, avec un seul professeur
    Une salle de classe accueille de nombreux cours, un professeur donne plusieurs cours tout au long de l’année

    Mais nous aurons toujours une liaison N:N des élèves avec les cours : un cours compte plusieurs élèves et un élève suivra plusieurs cours, il faut donc de nouveau trouver un dénominateur commun : l’emploi du temps (ou feuille de présence) : Chaque enregistrement dans l’emploi du temps va faire le lien entre un élève et un cours, et par extension, entre un élève et une salle et un professeur.

    Comme tu peux le voir ci-dessus, les liaisons Dataverse, offrent l’énorme avantage de pouvoir accéder à toutes les colonnes de l’enregistrement lié :

    • pour un enregistrement dans “Emploi du temps”, on peut obtenir la matière concernée en suivant le cheminement : ‘Emploi du temps’.Cours.Professeur.Matière (on ne peut pas remonter plus de 2 niveaux à la fois par contre)

    Contrairement à Sharepoint où l’on ne va pouvoir accéder directement qu’a une seule colonne (en plus de l’ID)

    CommentID=s3fT8cEMdgf2YEC, PostID=yJBamrxKphKJa6Y