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

Développement SQL Server Discussion :

Forein key sur une partie de la primary key


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Par défaut Forein key sur une partie de la primary key
    Bonjour,

    J'aimerais savoir s'il est possible de faire référence dans la table 2 sur un champ de la clé primaire composée de la table 1?

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    create table A (
       COLUMN_1             int                  not null,
       COLUMN_2             int                  not null,
       COLUMN_3             varchar(20)          null,
       constraint PK_A primary key  (COLUMN_1, COLUMN_2)
    )
    go
     
     
    create table B (
       COLUMN_1             int                  null,
       COLUMN_2             varchar(20)          null
    )
    go
     
    alter table B
       add constraint FK_B_REFERENCE_A foreign key (COLUMN_1 )
          references A (COLUMN_1)
    go
    La contrainte va poser un problème puisque la table A a une clé primaire composée.

    Serait-il néanmoins faire référence à la A.COLUMN_1 en gardant la clé composée?
    Quelle serait la syntaxe pour ma contrainte?

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    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 010
    Billets dans le blog
    6
    Par défaut
    Non, parce que cela n'a pas de sens !!!!!!

    Commencez par modéliser au niveau conceptuel, vous verrez que ce que vous tentez de faire n'a aucun lien avec la réalité d'un modèle relationnel.

    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/ * * * * *

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Non, parce que cela n'a pas de sens !!!!!!

    Commencez par modéliser au niveau conceptuel, vous verrez que ce que vous tentez de faire n'a aucun lien avec la réalité d'un modèle relationnel.

    A +
    Effectivement, j'ai simplifié à max les tables, mais en réalité il s'agit d'un DataWarehouse. La table A possède une PK avec un ID + date version. La table A possède aussi un switch de dernière version, donc la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT ID, COUNT(*)
    FROM A
    WHERE SWITCH = 1
    GROUP BY ID
    HAVING COUNT(*)>1
    va retourner 0 résultats.
    Pour faire les jointures avec la table A on utilise l'ID et le SWITCH

Discussions similaires

  1. Primary Key sur mois et année d'une date
    Par Somato dans le forum SQLite
    Réponses: 4
    Dernier message: 19/06/2008, 17h57
  2. primary key sur plusieurs colonnes d'une table
    Par hotttttsauce dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 22/04/2008, 12h20
  3. Foreign Key sur une partie de Primary Key
    Par Loceka dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/10/2006, 09h09
  4. Changement de couleur de police sur une partie d'un caption
    Par kobe dans le forum Composants VCL
    Réponses: 3
    Dernier message: 11/07/2005, 10h18
  5. [débutant] Aide pour mettre une FOREIGN KEY sur une table
    Par cauldron dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/11/2004, 17h16

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