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

Oracle Discussion :

Foreign Key


Sujet :

Oracle

  1. #1
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Par défaut Foreign Key
    Bonjour,
    j'ai un problème sur une base, il faudrait que je mette une contrainte de clé étrangère sur une colonne C1 d'une table T1 qui pointerait soit sur une colonne C2 d'une table T2 soit sur une autre colonne C3 d'une table T3.
    Est-ce possible simplement avec une FK ou un check ?

    @+,
    NicK.

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Citation Envoyé par Nick_Holmes
    Bonjour,
    j'ai un problème sur une base, il faudrait que je mette une contrainte de clé étrangère sur une colonne C1 d'une table T1 qui pointerait soit sur une colonne C2 d'une table T2 soit sur une autre colonne C3 d'une table T3.
    Est-ce possible simplement avec une FK ou un check ?

    @+,
    NicK.
    Non, pas possible !
    Vous avez manifestement un problème de conception...

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Par défaut
    Yeessss !
    C'est pas moi qui ait conçu cette base. J'aurai tout mis dans une seule table T2 U T3 avec une PK commune et une colonne flag pour différentier le type de ligne pour éviter de :
    • devoir faire des liens sur 2 tables de référentiel au lieu d'une seule
    • doubler le code Java à faire pour mes p'tits développeurs (les pôvvv )
    Mais on laisse faire les non-spécialistes ORACLE pour les BdD... N'importe quoi donc.

    @+,
    NicK.

  4. #4
    Membre chevronné Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Par défaut
    Il existe au moins une solution. Pas tres propre je l'avoue

    On créé une nouvelle table T4 avec comme seule colonne la clé. On met un trigger sur T1 et T3 pour alimenter de manière automatique T4.

    Puis on fait les contraintes par rapport à T4.

    Cette solution a plein de défaut mais a au moins un avantage. C'est que le controle d'intregrité reste dans la base et n'est pas deporté au niveau du code applicatif.

    Hope this helps

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Par défaut
    Oui, c'est vrai. Envisagé & rejeté. Pas de triggers car tout le code est en JAVA et on ne va pas garder du PL/SQL pour gérer ce cas là. Mes développeurs vont redévelopper un peu leur DAO, mais il vont diviser par 2 le code à écrire pour les prochains développements. Ils utilisait de toute façon une astuce pas très propre pour rattacher les 2 objets en JAVA. On va faire une seule table et on sera bien nickel.

    @+,
    NicK.

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

Discussions similaires

  1. [FOREIGN KEY] petite question bete ...
    Par dzincou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 16h35
  2. Probleme 'ALTER TABLE' et 'FOREIGN KEY'
    Par maahta dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 30/09/2003, 14h25
  3. [IB71] Je ne peux plus supprimer mes foreign key...
    Par BoeufBrocoli dans le forum InterBase
    Réponses: 3
    Dernier message: 19/09/2003, 14h39
  4. [postgresql][foreign key]
    Par elea1206 dans le forum Requêtes
    Réponses: 5
    Dernier message: 28/08/2003, 12h07
  5. [Foreign Key] Besoin d'explication.
    Par Andry dans le forum Débuter
    Réponses: 4
    Dernier message: 28/05/2003, 11h34

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