IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modélisation Discussion :

Choix parmi une liste d'éléments possibles - Aide sur la structure de la base de données


Sujet :

Modélisation

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Choix parmi une liste d'éléments possibles - Aide sur la structure de la base de données
    Bonjour,

    Je dois réaliser une application Access et j'ai quelques doutes sur la pertinence de la structure de ma base de données pour répondre à mon cahier des charges. J'aimerais l'avis d'une personne expérimentée sur la structure que j'ai mise au point, un peu compliquée de mon point de vue, mais à laquelle je n'arrive pas à trouver d'alternative.

    Voici les exigences du projet :

    • Une Ligne Directrice (LD) est suivie par un unique indicateur.
    • Un même indicateur peut permettre de suivre plusieurs Lignes Directrices.
    • Pour chaque indicateur choisi, une liste d'outils de calcul est associée.
    • Un même outil peut être utilisé pour calculer plusieurs indicateurs.
    • L'utilisateur choisira certaines Lignes Directrices parmi une liste proposée.
    • L'utilisateur pourra modifier l'intitulé d'une Ligne Directrice, mais la liste de Lignes Directrices proposées devra rester inchangée.
    • Pour chaque ligne directrice, l'utilisateur choisira un indicateur parmi une liste d'indicateurs possibles, et associera des outils parmi les outils possibles.


    On retrouve à chaque fois le même schéma : une liste d'éléments possibles parmi lesquels on doit en choisir certains :
    Liste de Lignes Directrices > Choix de certaines lignes
    Listes d'indicateurs possibles pour chaque ligne > Choix d'un indicateur
    Listes d'outils possibles pour un indicateur > Choix d'outils

    La structure de la base de données que j'ai mise au point est disponible en pièce jointe. Les seules tables qui peuvent être modifiées par l'utilisateur sont 'tblLigneDirectriceChoisie' et 'tblOutilAssocié'. Toutes les autres seront préremplies.

    En plus d'être relativement complexe, cette structure ne me permet pas de mettre des contraintes sur le fait que l'indicateur sélectionné pour une Ligne Directrice Choisie doit être parmi la liste des Indicateurs possibles. Même remarque pour faire en sorte que les outils associés à une Ligne Directrice Choisie soient des Outils Possibles pour calculer l'Indicateur sélectionné.

    J'espère que vous avez assez d'information pour me donner votre avis. Si quelqu'un a l'amabilité de se plonger dans tout ça et de me donner son avis sur mon travail, je lui en serais très reconnaissant.

    En vous remerciant,

    Rozgann
    Images attachées Images attachées  

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 699
    Points : 57 260
    Points
    57 260
    Billets dans le blog
    41
    Par défaut
    Bonsoir Rozgann,

    A priori ton schéma respecte tes contraintes de gestion, sauf celles là comme tu l'as remarqué:
    cette structure ne me permet pas de mettre des contraintes sur le fait que l'indicateur sélectionné pour une Ligne Directrice Choisie doit être parmi la liste des Indicateurs possibles. Même remarque pour faire en sorte que les outils associés à une Ligne Directrice Choisie soient des Outils Possibles pour calculer l'Indicateur sélectionné.
    Ces contraintes peuvent être imposées simplement grâce à du code VBA+SQL évènementiel sur des contrôles du formulaire.
    Sur la première contrainte, typiquement tu auras deux listes déroulantes LigneDirectriceChoisie et Indicateur, le contenu de la liste Indicateur dépendant de la liste LigneDirectriceChoisie (voir le tuto Concevoir une liste qui en alimente une autre par exemple).

    L'inconvénient sous Access étant que la contrainte n'est plus assurée si tu attaques ta base en dehors du formulaire de saisie.

    Si tu veux blinder ta base, des solutions relationnelles sont possibles.

    Le schéma partiel ci-dessous répond à ta première contrainte:
    ... l'indicateur sélectionné pour une Ligne Directrice Choisie doit être parmi la liste des Indicateurs possibles.


    Schéma à tester. Comme j'ai le cerveau un peu ramolli par la chaleur, le schéma incluant les Outils suivra plus tard...

    Fait soif là

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    OK merci pour ta réponse.

    J'ai essayé ta suggestion, mais ça ne peut pas fonctionner pour sélectionner un indicateur pour une ligne directrice choisie. Dans la base de données "fixe" (les tables préremplies), un indicateur est associé à une ligne directrice "générique". Or, quand l'utilisateur sélectionne un indicateur, il le sélectionne pour une ligne directrice choisie, qui est dans une table différente. Comme il peut modifier l'intitulé des lignes directrices, il peut choisir deux fois la même ligne directrice "générique" pour la personnaliser de manière différente, et elles auront peut-être des indicateurs différents. Donc ton schéma n'est pas applicable dans ce cas là.

    Ce n'est pas non plus possible pour les outils. Un outil "possible" (dans la base de données "fixe") est associé à un indicateur, mais cet indicateur peut être associé à plusieurs lignes directrices, et suivant la ligne directrice à laquelle il est associé, les outils utilisés pour le calculer peuvent être différents.

    J'ai retourné le problème dans tous les sens hier après-midi, je ne vois pas vraiment comment simplifier cette structure. Les exigences sont assez spécifiques, et j'ai pas l'impression qu'on puisse utiliser un schéma standard. Je gèrerais les contraintes restantes avec les formulaires.

    Merci pour ton aide.

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 699
    Points : 57 260
    Points
    57 260
    Billets dans le blog
    41
    Par défaut
    re,

    Si je comprends bien:

    - Une ligne directrice "générique" peut avoir plusieurs libellés
    - Un libellé de LD se rapporte à une ligne directrice "générique"

    Ne faudrait-il pas alors deux tables pour gérer tes LD: LDLibellé et LDgénérique en association "un à plusieurs" ??

    Non, c'est pas ça ?

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    C'est bien ce que j'ai, deux tables : 'tblLigneDirectrice', qui contient les lignes "génériques" déjà présentes dans la base de données, et 'tblLigneDirectriceChoisie', dont les enregistrements sont créés à partir de ceux de la table 'tblLigneDirectrice' quand l'utilisateur choisi une ligne directrice, et dont il peut ensuite personnaliser le libellé.

    Non c'est bon, maintenant ça a l'air de rouler tout seul.

    Merci pour ton aide.

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 699
    Points : 57 260
    Points
    57 260
    Billets dans le blog
    41
    Par défaut
    bonjour,

    ...il peut choisir deux fois la même ligne directrice "générique" pour la personnaliser de manière différente, et elles auront peut-être des indicateurs différents. Donc ton schéma n'est pas applicable dans ce cas là.
    ben si, je reprends ma proposition du schéma précédent complété:


    les tables LDgenerique, Indic et IndicLD sont les tables "fixées".

    Dans ChoixLD, tu choisis la LDgénérique avec un des Indicateurs autorisés. Tu personnalises en complétant le champ IntituleLD.

    exemple pour ma table ChoixLD:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    idChoixLD      idLDgenerique       idIndic        IntituleLD
         1          1                   1             intitulé1
         2          1                   2             intitulé2
    j'ai choisi deux fois la même LD générique avec des Indicateurs différents et des intitulés personnalisés.

    [EDIT]
    Éventuellement dans la table ChoixLD tu peux rajouter une contrainte d'unicité du style:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE ChoixLD ADD CONSTRAINT macontrainte UNIQUE (idLDgenerique);
    ou
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE ChoixLD ADD CONSTRAINT macontrainte UNIQUE (idLDgenerique,idIndic);
    selon ton besoin (qui ne me paraît pas clair, désolé).
    [/EDIT]

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Ah oui ! En effet, tu as raison, je n'avais pas compris ta proposition dans ce sens, mais en effet ça doit être plus propre que ma solution. Le seul problème, c'est que j'ai déjà commencé à faire des formulaires, avec du code VBA qui insère des enregistrements dans les tables, etc... et j'ai un peu la flemme de tout reprendre pour l'adapter à cette solution.

    Merci pour ton aide, ça pourra certainement servir à quelqu'un d'autre.

Discussions similaires

  1. [11gR2] Trouver les éléments absents parmi une liste
    Par Casshern dans le forum SQL
    Réponses: 1
    Dernier message: 27/05/2014, 13h21
  2. Réponses: 5
    Dernier message: 31/03/2010, 13h20
  3. [VB]Ja'imerais afficher une liste d'éléments...
    Par STRUFIELD dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/01/2006, 18h49
  4. Besoin d'aide sur la conception d'un base de données
    Par lordgodgiven dans le forum Modélisation
    Réponses: 1
    Dernier message: 01/10/2005, 16h51
  5. [struts] afficher page par page une liste d'élément
    Par BurningPat dans le forum Struts 1
    Réponses: 6
    Dernier message: 27/09/2005, 11h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo