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

Access Discussion :

Une clé étrangère vers plusieurs tables différentes ?


Sujet :

Access

  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2016
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2016
    Messages : 136
    Points : 149
    Points
    149
    Par défaut Une clé étrangère vers plusieurs tables différentes ?
    Bonjour,

    J'ai trois types d'objets (affaires, devis, livrables) dans trois tables (t_Affaires, t_Devis, t_Livrables) avec chacune leur clé primaire (ID_Affaire, ID_Devis, ID_Livrable).

    Pour des raisons X, j'ai besoin d'une table unique - t_Journal - regroupant divers "événements" relatifs - et plus ou moins communs - aux affaires, aux devis et aux livrables (création, annulation, report de date, changement de responsable, etc.).

    Mon problème est de référencer dans la table t_Journal, l'objet - de nature variable - qui est à l'origine de l'événement.

    J'ai pensé (et testé) diverses solutions : trois champs distincts dont un seul est non-vide ; usage d'un champ type en plus du champ ID ; champ ID unique avec recherche à posteriori (car les différents IDs sont textuelles et ne se recouvrent jamais), etc.

    Mais je trouve tout ça inesthétique, complexe et peu efficace. Comment aborderiez-vous ça ?

    Cordialement,

  2. #2
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2016
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2016
    Messages : 136
    Points : 149
    Points
    149
    Par défaut
    Je viens de penser à une solution de plus : définir une table t_JObjets, avec sa clé ID_JObjet, et relier mes affaires, devis, livrables à t_JObjets via une clé étrangère JObjet_ID !

    Après tout, si mon journal souhaite renvoyer vers un objet commun, c'est bien qu'il existe un concept primitif "d'objet journalisable" (ou JObjet) dont les affaires, devis et livrables ne sont que des descendants (à l'exclusion d'autres objets d'autres tables).

    Ça me paraît conceptuellement propre mais un peu lourd quand même. Pour ne pas avoir à créer de JObjet préalable pour toute création d'affaires, de devis ou de livrable, je pourrais attendre d'avoir au moins un événement journal à stocker pour le faire (dans le cas contraire, la valeur du JObjet_ID de l'objet considéré restera vide). Mais ... en fait, ça reviendra au même car j'ai toujours, pour tous ces objets, au moins un premier événement journal qui s'appelle "Création" (par qui et quand).

    D'autres idées ?

  3. #3
    Membre éprouvé
    Femme Profil pro
    Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Inscrit en
    Août 2017
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 56
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Service informatique presque à moi seule (TPE), ex-architecte fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Août 2017
    Messages : 358
    Points : 931
    Points
    931
    Par défaut Bonjour Olra72,
    J'aurais tendance à opter pour ID+type qui a l'avantage de rendre les données très lisibles.
    Cela dit je fais de moins en moins de tables "multi-cibles" et pour peu que les cycles de vie des objets soient suffisamment différents je ferais 3 tables conçues pour partager des traitements commun (éventuellement chapeautées par une table commune? EDIT: d'un coté, la table commune, c'est fort laid. Mais cela dépend de ce que tu veux faire de ton Journal: relier des événements entre eux, par exemple ?).
    Quelqu'un qui serait plus familiarisé avec une approche vraiment orientée objet devrait te donner des perspectives intéressantes ; je n'ai pas vu de forum ad hoc sur notre cher "Développez" ?

    Merci de nous faire partager tes réflexions !
    Cordialement.
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

  4. #4
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut,
    3 objets indépendants (t_affaire, t_devis et t_livrable) qui peuvent selon la circonstance changer d'état.

    Dans ce cas, je serai amené à créer un 4ème objet (t_evenement) dans lequel je hiérarchiserai les évènements (annulation conclu, reporté, nouveau contact, etc.).
    Je ne crée pas l'évènement "création" puisque si tu insères un nouvel enregistrement dans l'un de tes 3 objets, par définition l'affaire, le devis est créé.

    Mais est-il envisageable qu'une affaire ou autre soit reportée plusieurs fois, qu'elle puisse être reportée et qu'il y ait un nouveau contact durant la négociation? Dans l'affirmative il faudra penser à créer d'autres tables pour définir des relations tuples.

    Inutile de créer, pour ma part, la t_journal, dans la mesure où une requête te permettrait de pouvoir extrait des affaires ou autres selon un ou plusieurs évènements.
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/09/2009, 11h57
  2. Réponses: 1
    Dernier message: 28/03/2007, 12h23
  3. Réponses: 7
    Dernier message: 27/03/2007, 11h50
  4. Encore une requête complexe sur plusieurs tables
    Par DenPro dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/12/2003, 19h05
  5. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26

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