ほとんどの人はこれを行うためにグラフィカル デザイナーを使用しないと思います。これを妨げているのはグラフィカル デザイナーであって、SQL Server ではありません。クエリ ウィンドウで DDL を実行してみてください。
ALTER TABLE dbo.YourTable ADD ID INT IDENTITY(1,1);
GO
CREATE UNIQUE INDEX yt_id ON dbo.YourTable(ID);
GO
これで、他のテーブルでこの列を問題なく参照できます。
CREATE TABLE dbo.SomeOtherTable
(
MatchID INT FOREIGN KEY REFERENCES dbo.YourTable(ID)
);
ID
とはいえ、列名はまったく役に立たないことがわかりました。の場合、スキーマに表示されるすべての場所でそれMatchID
を呼び出してみませんか? MatchID
はい、PK テーブルでは冗長ですが、モデル全体の一貫性がより重要です。
さらに言えば、なぜあなたのテーブルは と呼ばれているのSoccerMatch
ですか? 他の種類のマッチはありますか?Matches
一意の ID = であると思いますMatchID
。そうすれば、後でさまざまな種類の試合が発生した場合に、スポーツごとに新しいテーブルを作成する必要がtype
なくなります。何らかの列を追加するだけです。サッカーしかないのなら、それSoccerMatch
はちょっと冗長ですよね?
また、キーと一意のインデックスを逆にすることをお勧めします。複数列のキーを外部参照に使用する予定がない場合は、少なくとも私にとっては、PKを他のテーブルで参照するものにする方が直感的です。だから私は言うだろう:
CREATE TABLE dbo.Matches
(
MatchID INT IDENTITY(1,1),
EventDate DATE, -- Date is also a terrible name and it's reserved
Opponent <? data type ?> / FK reference?
);
ALTER TABLE dbo.Matches ADD CONSTRAINT PK_Matches
PRIMARY KEY (MatchID);
ALTER TABLE dbo.Matches ADD CONSTRAINT UQ_Date_Opponent
UNIQUE (EventDate, Opponent);