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

Designer Discussion :

Gestion des clés primaires et étrangères


Sujet :

Designer

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Gestion des clés primaires et étrangères
    Bonjour,

    Dans les paramètres de l'objet il existe donc un onglet "Clés" dans lequel on renseigne une clé primaire et plusieurs clés étrangères pour un objet.
    A priori, après diverses recherches, cela permettrait de :
    1/ Filtrer sur les clés d'une table plutôt que sur un libellé beaucoup moins performant
    2/ Eviter le parcours de tables inutiles

    Pour ce qui est du premier apport : pas de problème. Pour le deuxième là j'avoue que je sèche : j'ai tout essayé sans succès.

    Exemple :
    J'ai les tables suivantes : CLIENTS, VENTES.
    Le champs Code_Client est la clé primaire de CLIENTS et étrangère dans VENTES.

    Lorsque je veux filtrer mes ventes en fonction d'un Code_Client BO passe automatiquement par la table CLIENTS.
    --> En substance il n'a pas besoin de le faire puisque Code_Client est aussi dans VENTES...

    Comment je dois paramétrer mon objet Code_Client? Aujourd'hui j'ai juste fait cela :

    Select : CLIENTS.Code_Client
    Clé primaire : CLIENTS.Code_Client
    Clé étrangère : VENTES.Code_Client


    Par avance merci de votre réponse!

    Cdt

  2. #2
    Rédacteur
    Avatar de TomDuBouchon
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2009
    Messages
    3 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 343
    Points : 5 848
    Points
    5 848
    Par défaut
    Bonjour,

    Pour ce qui est de la définition des clés, cela vous avancera à quelquechose uniquement dans le cas de jointures entre vos tables. En effet, cela revient à préciser sur quels champs l'indexation doit se faire.

    A mon avis c'est dans ce sens qu'il faut comprendre les deux qualités énoncées : cela permet de parcourir les tables d'index plutôt que les tables en elles-mêmes (devenues inutiles pour la jointure) et ainsi d'améliorer la performance de votre système.

    En ce qui concerne votre exemple, cela me semble logique à partir du moment où vous spécifiez dans les objets du résultat que vous souhaitez afficher le code client de la table CLIENTS. Si vous placez l'objet relatif au code client mais de la table VENTES, BO ne fera pas appel à la table CLIENTS.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    Content de voir le fameux "Tom du bouchon" me répondre!
    On va mettre les mains dans le "camboui" ça sera plus parlant pour tout le monde.

    Alors voici le code généré actuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Select 
      VENTES.Num_Vente
    From 
      VENTES, 
      CLIENTS
    Where
      VENTES.Code_Client = CLIENTS.Code_Client 
      and CLIENTS.Code_Client = '261';
    Or j'essais d'arriver à ce résultat là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Select 
      VENTES.Num_Vente
    From 
      VENTES 
    --> Suppression de la table CLIENT
    Where
    --> Suppression de la jointure CLIENT/VENTES  
      VENTES.Code_Client = '261'; --> Prise en compte de la clé étrangère dans VENTES au lieu de la clé primaire dans CLIENTS...

    Si la définition des clés primaires et étrangères ne gère pas cela (ce que je doute d'après certaines lectures : Docs B.O. notamment...) existe-t-il une solution?
    Attention j'en connais bien une qui ne m'arrange pas du tout qui consisterait à créer un objet Code_Client dont la clause Select pointerait vers la table VENTES directement. Cela n'est pas envisageable car dans l'autre sens, une simple interrogation des codes clients générerait une jointure vers la table des VENTES extrêmement coûteuse...

    Pas si simple comme problème en fait...

    Encore merci!

  4. #4
    Rédacteur
    Avatar de TomDuBouchon
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juin 2009
    Messages
    3 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 343
    Points : 5 848
    Points
    5 848
    Par défaut
    J'avoue que vous m'avez mis le doute. Et en effet, ce que vous précisez devrait parfaitement fonctionner.

    Si je m'en réfère à la doc du designer : http://help.sap.com/businessobject/p...esigner_fr.pdf page 372, vous pouvez de toute évidence de cette manière ne définir qu'un seul objet pour toutes les occurences de votre champ dans des tables étrangères.

    Votre définition de clé est-elle bien activée ? Si vous travaillez sur WebI, avez-vous bien exporter votre univers vers le référentiel avant de tester ?
    Si oui, essayez de n'utiliser votre objet (avec votre définition de clé actuelle) qu'en objet du résultat, avec un autre élément de la table VENTES. BO ajoute-t-il la table CLIENTS ou ne fait-il appel qu'à la table VENTES ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    J'ai tout essayé, rien n'y fait.
    Pour info je suis sur BO 6.5 et je n'ai pas WebI mais juste le client lourd BO 6.5...
    L'exemple que j'ai donné plus haut me permet d'appliquer mon filtre sur l'index plutôt que sur le nom ce qui est déjà pas mal, mais impossible de supprimer la table "CLIENTS" du SQL...
    C'est très frustrant, je suis pas à pas chaque étapes et rien... j'ai même créé un nouvel univers simpliste avec seulement les objets de l'exemple et toujours rien.
    Je me demande s'il ne faut pas définir d'autres clés ailleurs, ou activer une option dans l'univers...
    Toute aide sera la bien venue!

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Je viens de désactiver la clé étrangère et laisser actif la clé primaire : cela me donne exactement le même résultat. C'est à dire que les filtres se font bien sur la clé primaire mais la table CLIENTS reste dans le SQL : la clé étrangère dans VENTES n'est pas utilisée.
    Donc la définition de clé étrangère est complétement inactive dans mon univers que je l'active ou non dans la définition des clés...

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/07/2014, 10h55
  2. comment avoir la gestion des clés primaires avec sql serveur/EF
    Par olivier57b dans le forum Entity Framework
    Réponses: 12
    Dernier message: 12/06/2011, 14h46
  3. Définition des clés primaires et étrangères
    Par Yukiho dans le forum Débuter
    Réponses: 6
    Dernier message: 01/03/2010, 16h18
  4. [EJB3 Entity] gestion des clés primaires avec EJB3 !
    Par magnum_cl9 dans le forum Java EE
    Réponses: 6
    Dernier message: 17/07/2009, 17h43
  5. Gestion des clés étrangères
    Par Gonelle dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 06/07/2006, 10h48

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