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

MS SQL Server Discussion :

Clés multiples et clés étrangères


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Clés multiples et clés étrangères
    Bonjour,

    J'ai une table avec les champs suivants : PeriodID, WebsiteID, Year, Month.
    Je souhaite que ma clé primaire soit multiple avec CompanyID, Year, Month.
    J'ajoute le champ auto-incrémenté PeriodID car je souhaite l'utiliser dans une table étrangère avec les champs PeriodID, NbVisits, NbClicks...

    Le problème, c'est que PeriodID doit apparement être la clé primaire pour créer la relation avec ma table étrangère.
    Je pourrai résoudre le pb de 2 manières mais aucune me satisfait :
    1. Prendre PeriodID comme clé primaire, mais mon unicité sur mes 3 champs est rompu.
    2. Créer ma table étrangère avec WebsiteID, Year, Month, NbVisits, NbClicks..., mais je préfèrerais le champ clé unique PeriodID.

    Je suis souvent embêté avec ça ; j'ai appris sur le tas, et peut-être il y a une notion SGBD qui me manque et qui résout ça.
    Merci.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    il te faut créer une table de liaison avec les champs

    liaisonID, (PK en autoincrement)
    CompanyID,
    Year,
    Month

    tu créés une clé étrangère de ta 1° table avec les champs CompanyID,
    Year, Month
    tu rajoutes le champ liaisonID dans la table contenant PeriodID (tu pourras le mettre a jour par trigger par exemple)
    tu créés une autre clé étrangère avec liaisonID dans ta table où tu as PeriodID

    si tu n'a pas compris, postes le script de tes 2 tables
    Errare humanum est, perseverare diabolicum (Sénèque)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Qui dit mieux...
    C'est une idée mais j'ai finalement trouvé mieux : l'utilisation des contraintes.
    En fait, PeriodID reste ma clé primaire, et je créé une contrainte d'unicité sur les 3 autres champs :
    ALTER TABLE Periods
    ADD constraint CK_Periods UNIQUE (CompanyID,YearID,MonthID)

    Ca marche nickel

Discussions similaires

  1. [HF18] Peut-on créer des clés multiples?
    Par tAKAmAkA dans le forum HyperFileSQL
    Réponses: 3
    Dernier message: 21/12/2020, 17h08
  2. [MySQL] Problème avec la recherche de multiples mot clés
    Par Akim13 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/05/2011, 11h29
  3. Persistance, clés composées et clés étrangères
    Par methodman225 dans le forum JPA
    Réponses: 8
    Dernier message: 07/10/2010, 15h13
  4. container à clés multiples
    Par camboui dans le forum C++
    Réponses: 5
    Dernier message: 18/05/2010, 17h51
  5. clés étrangères multiples
    Par say dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 13/09/2005, 13h20

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