2011-03-16 2 views
2

j'ai deux tables catalogue et catalogue CatalogIndexComment créer une clé étrangère faisant référence une colonne dans une clé primaire composite

a les colonnes suivantes

DN 
PID 
PURL 
Desc 

où les deux colonnes DN, PID font partie la clé primaire composite pour cette table.

CatalogIndex comporte les colonnes suivantes

PID 
PItem 
PVal 

PID et pItem font partie de la clé primaire composite pour la table CatalogIndex.

Je souhaite ajouter une clé foriegn à CatalogIndex sur la colonne PID qui référence le PID dans la table Catalogue.

J'utilise SQL Server 2008

Merci

Répondre

7

Vous ne peut pas référence seulement des parties d'une clé primaire composé (l'un des nombreux inconvénients de composés PK - il est vraiment malpropre pour les référencer) .

Vous devez faire référence la clé, la clé entière et rien que la clé (donc vous aider Codd :-)).

La seule autre option serait de créer un nouveau UNIQUE INDEX sur les colonnes que vous souhaitez référencer (si elles sont uniques en elles-mêmes), puis d'utiliser cet index unique pour référencer ce sous-ensemble de colonnes.

0

Vous pourriez avoir besoin d'un schéma plus normalisé, avec une table distincte qui a une colonne PK sur PID. Votre demande est une odeur qui indique une conception de base de données imparfaite.

Questions connexes