2009-09-04 9 views
1

J'ai deux tables:SQL Server - Noob Relations Question

CREATE TABLE InmarsatZenith.dbo.ClientJob 
(JobRef int PRIMARY KEY NOT NULL, 
IntRef uniqueidentifier, 
CopyDeadline datetime, 
PublicationDate datetime, 
Repeat bit, 
BusinessType nvarchar(25), 
Sector nvarchar(30), 
Lang nvarchar(15), 
Format nvarchar(25), 
CreativeRotation nvarchar(50), 
TipinType nvarchar(25)) 

et

CREATE TABLE InmarsatZenith.dbo.Comment 
(ID int identity PRIMARY KEY NOT NULL, 
IntRef uniqueidentifier, 
CreatedDate datetime, 
ModifiedDate datetime, 
CreatedBy nvarchar(25), 
ModifiedBy nvarchar(25), 
Comment text) 

Je veux être en mesure de créer plusieurs "Commentaires" que tout lien de retour à la table de ClientJob basée sur le champ "IntRef". Donc, à chaque fois qu'un commentaire est fait, l'INTREF de ClientJob est spécifié, et quand je retire tous les détails de la table ClientJob, tous les commentaires le sont. J'ai essayé de mettre en place une relation entre les deux tables, cependant SQL Server déclare que la clé primaire n'est pas le champ IntRef dans la table ClientJob et donc je ne peux pas lier la table de commentaires à elle. Est-il possible que je puisse avoir plusieurs clés primaires dans la table ClientJob ?! Ou une autre façon plus efficace de le faire tout à fait. La relation est "1 ClientJob a BEAUCOUP de commentaires".

Aide grandement appréciée,

Cordialement.

Répondre

2

Vous ne pouvez avoir qu'une seule clé primaire sur une table. Mais vous pouvez également faire une relation de clé étrangère avec un index unique.

En supposant que votre référence est « Un ClientJob peut avoir plusieurs commentaires, mais chacun commentaires n'appartient toujours à un seul ClientJob », ces deux étapes va créer les bits nécessaires pour vous:

1) Mettez un index unique sur "IntRef" dans votre "ClientJob" table:

CREATE UNIQUE INDEX UIX_IntRef 
    ON dbo.ClientJob(IntRef) 

2) Mettre une relation clé étrangère de commentaires à ClientJob:

ALTER TABLE dbo.Comments 
    ADD CONSTRAINT FK_Comment_ClientJob 
    FOREIGN KEY (IntRef) REFERENCES dbo.ClientJob(IntRef) 

Th à devrait le faire!

Marc

+0

Donc je n'ai pas besoin de cette table de jointure comme "Atilla Ozgur" suggéré ?! – Goober

+0

Non, ces deux étapes (créer un index unique sur ClientJob.IntRef et ajouter une relation FK à la table des commentaires) feront –

+0

Oui, merci! :-D – Goober

0

Pour la clé étrangère, vous avez besoin de la clé Primay ou de l'index unique. Mettre un index unique à IntRef dans la table InmarsatZenith.dbo.ClientJob