2009-09-04 3 views
1

У меня есть две таблицы:SQL Server - Noob Отношения Вопрос

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)) 

и

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) 

Я хочу, чтобы иметь возможность создать несколько «Комментарии», что все обратную ссылку на таблицу ClientJob на основе поле «IntRef». Таким образом, каждый раз, когда делается комментарий, задается INTREF ClientJob, а затем, когда я отбрасываю все детали из таблицы ClientJob, все комментарии идут с ним. Я попытался установить связь между двумя таблицами, однако SQL Server заявляет, что первичный ключ не является полем IntRef в таблице ClientJob, и поэтому я не могу связать таблицу комментариев с ним. Есть ли способ, которым я могу иметь несколько первичных ключей в таблице ClientJob? Или еще один более эффективный способ сделать это в целом. Отношение «1 ClientJob имеет МНОГИЕ комментарии».

С помощь приветствуется,

С уважением.

ответ

2

У вас может быть только один первичный ключ в любой таблице. Но вы также можете использовать отношение внешнего ключа к уникальному индексу.

Если предположить, что ссылка является «Один ClientJob может иметь несколько комментариев, но каждый комментарий только когда-либо принадлежит ровно один ClientJob», то эти два шага будут создавать необходимые биты для вас:

1) Поместите уникальный индекс на "IntRef" в вашей таблице "ClientJob":

CREATE UNIQUE INDEX UIX_IntRef 
    ON dbo.ClientJob(IntRef) 

2) Положите внешний ключ от Комментариев к ClientJob:

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

Th должен это сделать!

Marc

+0

Так что мне не нужен этот стыковочный стол, такой как «Atilla Ozgur»? – Goober

+0

Нет, эти два шага (создайте уникальный индекс в ClientJob.IntRef и добавьте отношение FK к таблице комментариев) сделают –

+0

Да, спасибо! :-D – Goober

0

Для внешнего ключа вам нужен ключ Primay или уникальный индекс. Поместите уникальный индекс в IntRef в InmarsatZenith.dbo.ClientJob table

Смежные вопросы