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 :

Clé primaire à plusieurs champs, et champs à relations intégrées VS requête jointure


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Février 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2013
    Messages : 45
    Points : 30
    Points
    30
    Par défaut Clé primaire à plusieurs champs, et champs à relations intégrées VS requête jointure
    Bonjour, bonjour,

    J'ai deux tables et dans chacune d'elle, j'ai besoin des informations contenues dans 3 champs. Disons que ces champs se trouvent dans la table 2. J'ai mis un premier champ en clé primaire dans la table 2, et en clé étrangère dans la table 1. Puis j'ai établi une relation d'intégrité, ce qui me permet d'avoir exactement le même champ dans les deux tables sans risquer de compléter des informations dans l'un et d'omettre de le faire dans l'autre. Pour une telle manip, voir ici.

    Pourriez-vous me dire, s'il vous plaît, si c'est possible d'étendre cette manipulation aux deux autres champs ?
    L'idée est de mettre en place une clé primaire composée de plusieurs champs, dont il est déjà question ici (l'avant dernier message).

    Il existe peut-être une autre solution, qui serait de ne pas créer de "doublons", mais de baser mes recherches sur une jointure. Je joins les deux tables (il s'agit en fait de deux requêtes) au travers d'une requête jointure. Puis, je base tout mon travail d'analyse sur cette dernière requête, en établissant des requêtes sur cette requête jointure, pour ne conserver que les enregistrements qui m'intéressent (et dont les champs sont répartis entre les deux tables initiales).
    Mais là, ça semble lourd, car si je veux importer l'ensemble des champs de chacune des tables dans la requête jointure (pour être ensuite tout à fait libre d'aller chercher ce que je veux par le biais des requêtes établies sur la requête jointure), il me faut rentrer tous les champs un à un (séparés par des virgules) dans la requête jointure dont nous avons un exemple ici. La requête jointure semble appropriée pour réunir des quelques champs, mais pas l'ensemble des champs de deux tables. Pour être honnête, je n'ai pas cherché si cette option était possible, car je me dis qu'avant de me lancer dans une des deux solutions (clé primaire à plusieurs champs que nous dirons "à relation intégrée" VS requête jointure), peut-être avez-vous des avertissements contre des risques de bugs de l'une ou l'autre solution.

    Et puis surtout, je souhaiterai mettre en place les deux solutions (pour des raisons différentes), ce qui pourrait poser de potentiels problèmes de bugs, non ?

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Vous confondez les deux mécanismes.

    L'intégrité est le mécanisme qui garanti que les données d'une table fille existe de manière unique dans la table mère. Autrement dit : qu'une facture dont on dispose du numéro de client est adressée à un client qui est identifiable de manière unique dans la liste des clients, ou qu'un contrat passé entre plusieurs personnes dispose de X contractants tous, eux aussi, identifiables de manière unique.

    La jointure est un opérateur relationnel permettant de mettre en lien des données issues de plusieurs objets (tables, vues, requêtes). La jointure est donc naturellement mise en oeuvre pour afficher les données de deux tables liées par l'intégrité référentielle.

    Concernant les clés primaires composées, elles sont tout à fait conformes.

    Exemple : si une ligne de détail commande est identifiée dans la table tblDetailCommande(idCommande#,idProduit#,Qte) qui signifie qu'une même référence produit apparaît de manière unique au plus dans chaque commande, le bordeau de livraison pourrait quant à lui être de la forme : tblDetailLivraison(idLivraison#, idCommande#,IdProduit#,Qte). Cela témoignera par exemple que la livraison L00012 contient 5 exemplaires du produits Ref BIC0021 de la commande C191213.
    Puis le bordereau de vérification du transporteur sera de la forme :
    tblDetailLivrFournisseur(idBordereau#,idLivraison#, idCommande#,IdProduit#,[/U]Qte)

    Et là, on se rend compte que la liste des clés primaires devient énorme et donc l'écriture des requêtes complexes. Pour cette raison, on préféra des clés primaires de type NuméroAuto dont la valeur est dénuée de sens.

    Ce qui nous donne :

    tblDetailCommande(idLigneCommande,idCommande#,idProduit#,Qte)
    tblDetailLivraison(idLigneLivraison,idLivraison#,idLigneCommande#,Qte)
    tblDetailLivrFournisseur(idDetailLivrFournisseur, idBordereau#,idLigneLivraison#,Qte)

    L'intégrité référentielle est alors complétée par une mise en place de tuples d'index évitant les doublons. Ainsi, dans la table tblDetailCommande, on aura l'index sans doublon idxCommandeProduit(idCommande,idProduit)

Discussions similaires

  1. [(n)awk] Parsing avec plusieurs séparateurs de champs
    Par gangsoleil dans le forum Linux
    Réponses: 6
    Dernier message: 27/03/2007, 16h02
  2. Envoyer requete dans plusieurs fichier selon champ
    Par mat_lefebvre dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 05/03/2007, 09h30
  3. Plusieurs choix sur champs
    Par vince_grenoblois dans le forum Langage SQL
    Réponses: 7
    Dernier message: 01/08/2006, 17h56
  4. Réponses: 12
    Dernier message: 30/03/2006, 20h55
  5. Addition de plusieurs champs dans champ indépendant
    Par snoopy69 dans le forum Access
    Réponses: 3
    Dernier message: 11/11/2005, 09h37

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