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

Langage SQL Discussion :

foreign key multiple (vers 2 tables ou plus)


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut foreign key multiple (vers 2 tables ou plus)
    bonjour,
    Dans un cadre très résumé ci-après, on reproduit notre problème. Il s'agit de faire REFERENCE à un même champ de tuples placés dans des tables distinctes. Nous ne pouvons pas, dans notre cas réel, créer une seule table livre qui serait l'UNION de polar et de roman. Existe-t-il une autre solution ?

    CREATE TABLE polar (titre VARCHAR(50) NOT NULL PRIMARY KEY);
    CREATE TABLE roman (titre VARCHAR(50) NOT NULL PRIMARY KEY);
    CREATE TABLE pret (id SERIAL PRIMARY KEY, titre VARCHAR(50) NOT NULL
    REFERENCES polar(titre) REFERENCES roman(titre), duree int);

    INSERT INTO polar VALUES('premier titre');
    INSERT INTO roman VALUES('second titre');

    INSERT INTO pret VALUES(1, 'premier titre', 3);

    Cet INSERT plante avec un :
    Une instruction insert ou update sur la table «pret» viole la contrainte de clé étrangère «pret_titre_fkey1»
    DETAIL: La clé (titre)=(premier titre) n'est pas présente dans la table «roman».

    on voudrait en fait pouvoir écrire :
    REFERENCES polar(titre) OR REFERENCES roman(titre)
    dans la table pret.

    Grand merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    pourquoi ne pas plutôt faire une table "livres" avec un champ type ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Parce que, comme indiqué dans l'énoncé de notre problème, "nous ne pouvons pas, dans notre cas réel, créer une seule table livre qui serait l'UNION de polar et de roman. Existe-t-il une autre solution ?"

    C'est un cas simplifié - nous faisons en plus de l'INHERITS (psql).

Discussions similaires

  1. [VxiR2] Foreign Key inexistante dans la table maître
    Par tunis71187 dans le forum Designer
    Réponses: 2
    Dernier message: 02/12/2011, 08h27
  2. Asscociation d'une foreign key avec une autre table
    Par ROUGE87 dans le forum Général Java
    Réponses: 7
    Dernier message: 13/04/2011, 10h36
  3. Désactivation de toutes les Foreign Key pointant sur une table.
    Par sybaris dans le forum Développement
    Réponses: 3
    Dernier message: 29/06/2008, 20h57
  4. Foreign Key : lock sur la table référencée ?
    Par strikerm59 dans le forum SQL
    Réponses: 24
    Dernier message: 12/12/2007, 23h23
  5. selection multiple vers une table ajout
    Par EE dans le forum Access
    Réponses: 12
    Dernier message: 18/05/2005, 16h56

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