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 :

Primary key composée par 2 Foreign sur la même table


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 81
    Points : 67
    Points
    67
    Par défaut Primary key composée par 2 Foreign sur la même table
    Bonjour à tous,

    J'ai une table COMMANDE avec :
    • id_commande (PRIMARY KEY)
    • client_commande
    • ...


    Je souhaite pouvoir lier des commandes entres elles, pour cela j'ai une table COMMANDE_LIEE avec :
    • id_commande_A ( PRIMARY KEY, FOREIGN KEY (COMMANDE.id_commande) )
    • id_commande_B ( PRIMARY KEY, FOREIGN KEY (COMMANDE.id_commande) )
    • date_creation
    • ...


    Cela fonctionne mais j'aimerais garantir l'unicité de la présence d'une association : à l'heure actuelle l'ordre a une importance puisqu'on peut avoir : ( 1, 2, ... ) ou (2, 1, ... ) comment puis-je bloquer ce cas ?
    Merci par avance pour vos idées

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 106
    Points : 28 393
    Points
    28 393
    Par défaut
    Tu pourrais ajouter une contrainte sur la table avec la condition id_commande_A > id_commande_B, par exemple...

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 81
    Points : 67
    Points
    67
    Par défaut
    Merci pour ton retour, effectivement ça peut être une possibilité, maintenant ça oblige dans le code à faire un pré-traitement, y'a vraiment pas de possibilité de garantir l'unicité d'un couple de valeurs sans ordre ?

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 337
    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 337
    Points : 39 723
    Points
    39 723
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Si une commande ne peut être liée au plus qu'à une autre, alors une contrainte unique sur l'une des deux colonnes de COMMANDE_LIEE suffit

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 81
    Points : 67
    Points
    67
    Par défaut
    Merci pour ton retour, malheureusement les commandes peuvent être liées à plusieurs autres commandes

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 388
    Points
    18 388
    Par défaut
    La syntaxe peut varier selon le SGBD, mais l'idée c'est de poser une contrainte d'unicité sur (least(id_commande_A, id_commande_B), greatest(id_commande_A, id_commande_B)).

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/12/2020, 10h03
  2. [2012] PRIMARY KEY ET PERSITED AVEC FOREIGN KEY
    Par Anthony_C dans le forum Développement
    Réponses: 13
    Dernier message: 13/05/2014, 17h25
  3. [AC-2010] Requête vide si par de ID sur la 2eme Table
    Par dercom dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 09/10/2012, 17h27
  4. recherche par mots clés sur toute la table
    Par Natynatou dans le forum 4D
    Réponses: 1
    Dernier message: 01/01/2010, 16h40
  5. jointure sur une même table
    Par guillaumeVb6 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/09/2004, 15h08

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