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 multiples


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2003
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2003
    Messages : 16
    Par défaut Foreign key multiples
    Bonjour tout le monde,

    j'ai un doute: devant créer deux talbes TAB1(A,B,C) et TAB2(D,E,F,G) est-il possible d'établir pour deux colonnes(E,F) de TAB2 ayant comme clé externe une seule colonne de TAB1? La question peut parraitre absurde mais pas du tout en ce sens que TAB1 en réalité contient des valeur de domaines où C contient des valeurs de différentes domaines. Puis-je faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CREATE TABLE TAB2
    	(
    	D ... NOT NULL, 
    	E ... INT NOT NULL, 
    	F DATE NOT NULL, 
    	G... INT,
    	H... INT,
    	CONSTRAINT TB1_FK
    	FOREIGN KEY (G, H)
    	REFERENCES TAB1(C)
    	);
    Merci d'avance

    TT

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Si c'est ce que vous voulez faire, vous pouvez créer deux contraintes distinctes : G-> C et H->C, mais vous ne pouvez pas créer une contrainte de deux colonnes vers une seule. Dans ce cas, il faudrait préciser ce que vous êtes en train de faire, avec quelques données d'exemple pour mieux comprendre, car sinon en effet, ça parait absurde (et je n'ai pas compris le sens de votre explication...)

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 762
    Billets dans le blog
    10
    Par défaut
    Une contrainte de type "reference" doit porter sur des colonnes de même type et de même longueur, donc non, ce n'est pas possible

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 036
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Une contrainte de type "reference" doit porter sur des colonnes de même type et de même longueur, donc non, ce n'est pas possible
    et même ordre !
    • même type
    • même longueur
    • même collation
    • même ordre


    En fait les FK ce sont des contraintes portant sur des contraintes PK ou UNIQUE ! Mais bêtement écrite à travers la description des colonnes, car ces colonnes peuvent ne pas avoir le même nom dans les deux tables...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2003
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2003
    Messages : 16
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour,

    Si c'est ce que vous voulez faire, vous pouvez créer deux contraintes distinctes : G-> C et H->C, mais vous ne pouvez pas créer une contrainte de deux colonnes vers une seule. Dans ce cas, il faudrait préciser ce que vous êtes en train de faire, avec quelques données d'exemple pour mieux comprendre, car sinon en effet, ça parait absurde (et je n'ai pas compris le sens de votre explication...)
    Bonjour,
    tout d'abord merci pour votre réponse. En effet mon explication n'a pas été précise et en plus il manquait un détail pas du tout négligeable. Je suis sous Oracle Vers. 110200. Voici ma situation:
    TAB1
    A B C
    1 ENGINS VELOS
    2 ENGINS MOTOS
    3 FREQUENCE FR1
    4 FREQUENCE FR6
    5 CODEV 00
    5 CODEV 05
    6 TYPE VTT

    TAB2
    D E F G
    ... ... FR6 09
    ... ... VELOS VTT
    Voici la photographie grosso modo: pour chaque enrégistrement dans TAB2 respectivement F et G doivent être déjà recensés dans TAB1. Merci d'avance et bonne journée

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Il vous faut deux contraintes distinctes pointant sur la même colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TABLE TAB2
    	(
    	D ... NOT NULL, 
    	E ... INT NOT NULL, 
    	F DATE NOT NULL, 
    	G... INT,
    	H... INT,
    	CONSTRAINT TB1_FK_G
    	FOREIGN KEY (G)
    	REFERENCES TAB1(C),
    	CONSTRAINT TB1_FK_H
    	FOREIGN KEY (H)
    	REFERENCES TAB1(C)
    	);

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2003
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Novembre 2003
    Messages : 16
    Par défaut
    Merci beaucoup pour votre précieuse réponse.

    TT

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

Discussions similaires

  1. Mapping XML foreign key multiples
    Par CheepCheep dans le forum JPA
    Réponses: 3
    Dernier message: 30/09/2014, 13h24
  2. Réponses: 5
    Dernier message: 28/08/2014, 15h49
  3. Réponses: 3
    Dernier message: 31/05/2011, 21h24
  4. foreign key multiple (vers 2 tables ou plus)
    Par Bombastus dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/07/2006, 16h26
  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