Bonnes pratiques avant création

  • Bonnes pratiques avant création

    Posté par Thomas sur 9 juillet 2024 à 15h24

    Bonjour la Team 🙂

    Je dois développer une nouvelle application et je m’interroge sur la gestion de sa base de données. Celle-ci sera stockée sur une liste SharePoint et j’aimerais avoir des avis sur la manière de la structurer pour éviter au maximum de devoir faire et défaire.

    Cette application a pour but de référencer des autorisations d’utilisateurs. Il y a 5 autorisations distinctes comportant chacune un état (valide ou non), une date d’obtention et une date d’échéance. Pour obtenir une de ces autorisations, il faut remplir 4 conditions spécifiques et un utilisateur peut avoir 1 ou toutes les autorisations.

    Un Power Automate se chargera ensuite de gérer la validité des autorisations en fonction des échéances et notifiera l’utilisateur de leur arrivée afin qu’il puisse à nouveau remplir les conditions pour rendre l’autorisation de nouveau valide.

    Il y a plusieurs façons de structurer cela, mais comment feriez-vous ?

    1. Une liste globale complète avec un utilisateur par ligne et les données de chaque autorisation avec leurs conditions, état, dates dans chaque colonne distincte, soit plus de 35 colonnes sans compter les données utilisateur (nom, prénom, etc.).

    2. Une liste globale réduite avec un utilisateur par ligne, une colonne pour le type d’autorisation, puis des colonnes “condition 1 ok”, “condition 2 ok”, “condition 3 ok”, et “condition 4 ok”, état, obtention, validité…

    3. Sinon, une liste par autorisation, soit 5 listes avec environ 7 colonnes chacune sans compter les données utilisateur (nom, prénom, etc.) et/ou l’id utilisateur.

    Je sais pas si c’est clair mais pour le moment, j’en suis là… mais peut-être que j’ai manqué une possibilité…

    Merci d’avance.

    Thomas a répondu Il y a 4 mois, 2 semaines 2 Membres · 2 Réponses
  • 2 Réponses
  • R3dKap

    Membre
    12 juillet 2024 à 12h21

    Salut Thomas,

    Tu fait très bien de prendre du recul et de t’interroger de la meilleure façon de modéliser tes données avant de te lancer dans la réalisation de l’application : le modèle de données est le coeur de ton application et selon la manière dont tu vas le structurer tu vas plus ou moins te galérer dans la réalisation de l’application… 😉

    Par rapport à tes propositions…

    Version 1 : avantage = une seule ligne par utilisateur (un simple LookUp() dans l’application te donnera toutes les infos) ; inconvenient = beaucoup de colonnes + potentiellement de nouvelles colonnes à ajouter si de nouvelles autorisations ou de nouvelles conditions et du coup évolution de l’application nécessaire

    Version 2 : avantage = beaucoup moins de colonnes, plus lisible/exploitable ; inconvénient = plusieurs lignes par utilisateurs (obligé d’utiliser un Filter() pour aller chercher toutes les autorisations et les analyser -> mais ça se fait très bien) + nouvelles colonnes si nouvelles conditions et donc évolution de l’application

    Version 3 : trop de listes, beaucoup de gestion, si nouvelle condition -> 5 listes à ajuster

    Perso je partirais sur la 2. Sachant que si tu veux stocker le nom/prénom (et autres infos) sur l’utilisateur, pour ne pas répéter ces données sur chaque ligne d’autorisation il te faudra créer une liste des utilisateurs. Donc en gros :

    Liste Utilisateurs :

    • Nom
    • Prénom
    • Nom complet (calcul concaténation Nom + Prénom)
    • Email

    Liste Droits utilisateurs :

    • Utilisateur (pointe vers la liste Utilisateurs)
    • Autorisation
    • Cond 1
    • Cond 2
    • Cond 3
    • Cond 4
    • Etat
    • Obtention
    • Validité

    Il y aurait aussi éventuellement une 4è version :

    • Liste Utilisateur (comme ci-dessus)
    • Liste Autorisations (liste les 5 autorisations en centralisé car utilisé dans 2 listes différentes ; peut aussi être remplacé par une colonne de SITE de type Choix)
    • Liste Conditions avec : utilisateur, autorisation, condition (de type Choix), etat condition
    • Liste Droits utilisateurs avec : utilisateur, autorisation, etat, obtention, validité, …

    Un peu plus de boulot et plus compliqué à manipuler dans l’app mais par contre c’est FULL dynamique : une nouvelle autorisation ? -> tu l’ajoutes dans la liste Autorisations (ou dans la colonne de site de type Choix) ; une nouvelle condition ? -> tu l’ajoutes dans la colonne Condition de type Choix. Pas besoin de toucher à l’app dans les 2 cas… 😉

    A toi de voir…

  • Thomas

    Membre
    12 juillet 2024 à 16h56

    Merci beaucoup pour cette réponse très complète mais aussi très clair…

Connectez-vous pour répondre.