1

私は2つのテーブルを持っています:

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)

「IntRef」フィールドに基づいて、すべてがClientJobテーブルにリンクする複数の「コメント」を作成できるようにしたいと思います。したがって、基本的にコメントが作成されるたびに、ClientJobのINTREFが指定され、ClientJobテーブルからすべての詳細をプルバックすると、すべてのコメントがそれに付随します。2つのテーブル間の関係を設定しようとしましたが、SQL Serverは主キーがClientJobテーブルのIntRefフィールドではないと述べているため、Commentsテーブルをそれにリンクできません。ClientJobテーブルに複数の主キーを含める方法はありますか?!または、これを完全に行う別のより効率的な方法。関係は「1ClientJobには多くのコメントがあります」です。

非常に感謝します、

敬具。

4

2 に答える 2

2

どのテーブルにも主キーを1つだけ持つことができます。ただし、一意のインデックスに対して外部キー関係を作成することもできます。

参照が「1つのClientJobに複数のコメントを含めることができますが、各コメントは1つのClientJobにのみ属する」と仮定すると、次の2つの手順で必要なビットが作成されます。

1)「ClientJob」テーブルの「IntRef」に一意のインデックスを配置します。

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)

それでいいはずです!

マーク

于 2009-09-04T09:41:15.260 に答える
0

外部キーの場合、PrimayKeyまたは一意のインデックスが必要です。InmarsatZenith.dbo.ClientJobテーブルのIntRefに一意のインデックスを配置します

于 2009-09-04T09:35:28.890 に答える