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 :

Jointure et intégrité référentielle [AC-2007]


Sujet :

Modélisation

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 60
    Points : 45
    Points
    45
    Par défaut Jointure et intégrité référentielle
    Bonjour à tous et à toutes,

    Je suis en train de regarder les jointures.
    j'ai une table Client et une table Commande.
    J'ai une relation 1-N entre les 2.
    L'intégrité référentielle est activée.

    En testant les jointures, je m'aperçois que seules les jointures interne et externe gauche ont un intérêt pour cette base. Effectivement si l'intégrité référentielle est cochée, une jointure externe droite ne peut me retourner que le même résultat que la jointure interne puisque je ne peux pas avoir de commande sans client.

    J'ai peut être loupé quelque chose. Quelqu'un peut-il m'expliquer l'interraction entre les jointures et l'intégrité référentielle ? Peut-on utiliser les 2 en même temps ? Doit-on faire des jointures quand l'intégrité référentielle n'est pas cochée ?

    Pouvez-vous m'éclairer , merci pour votre aide

    NATY

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 093
    Points : 5 211
    Points
    5 211
    Par défaut
    Ce sont deux notions qui n'ont rien à voir en fait :
    - une jointure sert à créer une vue sur plusieurs tables
    - elle peut être interne ou externe selon le résultat que l'on souhaite
    - les 2 champs du ON ne sont pas nécessairement liés dans l'analyse
    - l'intégrité référentielle permet de confier à access une partie des controles nécessaires au bon fonctionnement du logiciel
    - il est toujours possible de faire des jointures... mais l'intégrité référentielle ne peut être activée que dans des cas très précis
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Bonjour,

    En effet, logiquement une jointure externe droite n'a pas d'intérêt dans le cas où une intégrité référentielle est appliquée.


    Sauf erreur de ma part (j'ai raté qq chose ?), la nature de la jointure dans la fenêtre Relation n'a que pour seul effet de définir la joint ure qui sera proposée par défaut dans les requêtes utilisant les deux tables liées, au moment de la création de ces requêtes. Cela n'empêche pas bien sur de modifier la jointure dans la requête...

    Pour ma part je ne définis généralement que des équijointures dans la fenêtre Relation - i.e. je me préoccupe seulement de l'intégrité référentielle.
    Je définis ensuite selon les besoins des jointures externes dans chaque requête.
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 60
    Points : 45
    Points
    45
    Par défaut
    Mout et Nico, merci pour vos réponses qui m'éclairent un peu plus.
    Donc l'intégrité référentielle sert à vérifier l'intégrité des données dans 2 tables liées.
    Les jointures servent à faire une sélection d'enregistrements entre plusieurs tables.
    Dites-moi si me trompe

    Mout,
    Je définis ensuite selon les besoins des jointures externes dans chaque requête
    Mais si j'ai bien compris, si tu utilises l'intégrité référentielle et même si tu gères tes jointures dans tes requêtes, certaines jointures n'auront pas d'intérêt.
    Si tu prends mon cas Client /commande avec l'intégrité référentielle, même si je gère une jointure externe droite dans ma requête, elle me retournera la même chose que la jointure interne non ?
    Donc dans mon esprit, si je veux une jointure externe droite sur une relation 1-N que ce soit dans ma relation et dans ma reqête, l'intégrité ne doit pas être utilisée.

    Désolée si j'insiste je veux être sûre d'avoir compris et il me manque surement des notions

    NATY

  5. #5
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 093
    Points : 5 211
    Points
    5 211
    Par défaut
    C'est presque ça !
    ... l'intégrité référentielle sert à vérifier l'intégrité des données...
    IMPOSER et non vérifier

    Si tu prends mon cas Client /commande avec l'intégrité référentielle, même si je gère une jointure externe droite dans ma requête, elle me retournera la même chose que la jointure interne non ?
    clients INNER commandes fait pareil que clients RIGHT commandes mais clients LEFT commandes affichera aussi les clients qui n'ont pas encore passé de commandes

    Donc dans mon esprit, si je veux une jointure externe droite sur une relation 1-N que ce soit dans ma relation et dans ma reqête, l'intégrité ne doit pas être utilisée.
    Ton esprit est encore un peu embrouillé : l'intégrité va seulement t'empêcher de créer une commande sans client ou d'effacer un client qui a des commandes
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 60
    Points : 45
    Points
    45
    Par défaut
    IMPOSER et non vérifier
    Oui effectivement Le mot est vraiment IMPOSER!!
    mais clients LEFT commandes affichera aussi les clients qui n'ont pas encore passé de commandes
    çà c'est bon, j'ai bien intégré le côté gauche de la jointure. C'est la table 1 donc pas de souci

    l'intégrité va seulement t'empêcher de créer une commande sans client ou d'effacer un client qui a des commandes
    En fait, mon esprit était certes embrouillé mais mon expression encore plus
    Ce que je voulais dire c'est que si je veux avoir un résultat différent que la jointure interne en faisant une jointure droite, il faut que je crée des commandes sans client et donc enlever l'intégrité référentiel pour le faire. C'est çà que je voulais dire.
    Je sais que sur le fond cet exemple est stupide mais c'est pour que je comprenne bien le principe

    NATY

  7. #7
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 093
    Points : 5 211
    Points
    5 211
    Par défaut
    Je sais que sur le fond cet exemple est stupide
    Pas tant que ça car souvent il est demandé de pouvoir saisir une commande "comptoir" et alors l'intégrité va obliger à créer un pseudo-client "comptoir" qui va fausser les stats, recevoir des mailings...
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 60
    Points : 45
    Points
    45
    Par défaut
    Merci pour ta réponse.

    NATY

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


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 629
    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 629
    Points : 56 892
    Points
    56 892
    Billets dans le blog
    40
    Par défaut
    Bonjour,

    Citation Envoyé par naty76
    …Ce que je voulais dire c'est que si je veux avoir un résultat différent que la jointure interne en faisant une jointure droite, il faut que je crée des commandes sans client et donc enlever l'intégrité référentiel pour le faire…
    Pour créer des commandes sans client (sic !), on peut aussi mettre la clé étrangère Commande.idClient à NULL.
    NULL n’étant pas une valeur à proprement parler mais signifiant plutôt une absence de valeur, on peut l’imposer dans la clé étrangère sans enlever l’intégrité référentielle.

    Citation Envoyé par Aide Access
    NULL : valeur que vous pouvez entrer dans un champ ou utiliser dans des expressions et des requêtes pour indiquer des données manquantes ou inconnues.
    Dans ce cas, une requête avec jointure droite nous donnerait aussi en plus cette commande sans client.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Héritage] problème intégrité référentielle
    Par Ouark dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 24/01/2006, 18h47
  2. Réponses: 7
    Dernier message: 06/12/2005, 15h25
  3. Intégrité référentielle entre 2 schémas
    Par Fabien Celaia dans le forum Oracle
    Réponses: 2
    Dernier message: 21/11/2005, 09h51
  4. Réponses: 5
    Dernier message: 26/10/2005, 14h43
  5. Types de tables - Support des Intégrités référentielles
    Par danuz dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 11/12/2004, 15h43

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