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

PostgreSQL Discussion :

relation entre plusieurs tables


Sujet :

PostgreSQL

  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Par défaut relation entre plusieurs tables
    Salut

    j´ai 4 tables :
    - example(id, ex_name)
    - example_2(id, ex2_name)
    - example_layout(id, web_id, tab_id, ex_layout_name) et
    - tab(id, tab_name)
    Je souhaiterai etablir une dependance entre ces tables c´est à dire:
    - Les valeurs dans le champ "web_id" de la table "example_layout" doivent 1
    être les valeurs des champs "id" dans "example" et "example_2"
    - Les valeurs dans le champ "id" de la table "tab" doivent être les valeurs du champ "tab_id" de la table "example_layout".
    je ne sais malheureusemant pas comment realisé cela .Quelqu´un aurait-il une idée comment cette manipulation pourrait être realiser. Merci d´avance pour vos reponses..

    YP

  2. #2
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Il faut créer des contraintes de type "clé étrangère"
    La syntaxe SQL serait par exemple dans ton cas pour la première contrainte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE example_layout ADD CONSTRAINT fk1 FOREIGN KEY (web_id) REFERENCES example(id);
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Par défaut ca marche en partie :-)
    Salut scheu

    merci déjà pour ta reponses. Ca marche seulement si j´ai une seule "foreign key". Quand je crée une seconde "foreign key" pour example_2 et je fais un insert sur example_layout, je recois à chaque fois un méssage d´erreur parceque les "id" des tables example et example_2 sont differents. cela implique que les clés etrangères se bloquent entre elle. tu saurais peut être comment contourner cela?

    Merci encore

    YP

  4. #4
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Citation Envoyé par charlie_p07 Voir le message
    Quand je crée une seconde "foreign key" pour example_2 et je fais un insert sur example_layout, je recois à chaque fois un méssage d´erreur parceque les "id" des tables example et example_2 sont differents. cela implique que les clés etrangères se bloquent entre elle
    C'est normal, c'est le principe des clés étrangères
    Tu ne peux pas insérer une ligne dans example_layout avec webid=N sans qu'il existe au préalable une ligne dans example ayant id=N, sinon ton modèle sera incohérent
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Par défaut
    Salut scheu

    C´est bien ca, mais le problème est le suivant. Je me suis crée deux clés etrangères, une qui fait reference à example(id) et une autre qui fait reference à example_2(id). Ces clés contrôle bien la coherance de mes "insert"
    sur "example_layout". `Je n´arrive pas à utiliser ces deux clés ensemble, parceque les "id" de "example" sont differents des "id" de "example_2". La question est comment faire fonctionner ces diffentes clés qui font des réfferences à des "id" differents.Merci encore.

    YP

  6. #6
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    Tu veux qu'en plus il y ait un lien entre example(id) et example2(id) ?
    Ton modèle me semble bizarre là ...
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  7. #7
    say
    say est déconnecté
    Membre Expert
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Par défaut
    au vu de ce que je comprends, id dans example_layout peut corresondre soit à example soit à example_id, ce n'est pas possible avec les clefs étrangères.
    Tu ne pourras vérifier cette contrainte qu'avec des contraints de type CHECK par exemple.

    mais suis d'accord pour dire que le modèle semble étrange.
    pkoi 2 tables example?

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

Discussions similaires

  1. [AC-2013] Relations entre plusieurs tables
    Par pierre031 dans le forum Access
    Réponses: 2
    Dernier message: 04/04/2014, 16h12
  2. [AC-2007] relations entre plusieurs tables
    Par dedel74 dans le forum Modélisation
    Réponses: 4
    Dernier message: 09/02/2012, 08h40
  3. Relation entre plusieurs tables et 1 Formulaire
    Par bibi28 dans le forum Modélisation
    Réponses: 2
    Dernier message: 27/09/2008, 13h56
  4. relation entre une table pour plusieurs sous tables
    Par nicolovitch dans le forum Access
    Réponses: 2
    Dernier message: 15/07/2006, 20h03
  5. Relations entre plusieurs tables bloquent un état
    Par aujero dans le forum Access
    Réponses: 5
    Dernier message: 07/02/2006, 12h07

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