47

Management Studio の主テーブルに外部キーを追加するのはいつも混乱します。

私が持っているとしましょう

Table1 
{
    ID int, -- Primary Key
    Table2ID int, -- Refers to Table2's ID 
}

Table2 
{
    ID int, -- Primary Key
    SomeData nvarchar(50)
}

によって Table1 に外部キーを追加していRight Click -> Relationships -> Table and column specificationます。「プライマリ」ポップアップをTable2、IDに、「外部キーテーブル」をTable1、Table2IDに設定しています。

私の質問:

  1. 「外部キー テーブル」には Table2 を、主キーには Table1 をリストするべきではありませんか? 私の理解は間違っていますか?

  2. 保存すると、「次のテーブルがデータベースに保存されます」というアラートが表示されます。両方のテーブルが表示されます。私は本当にこれを取得しません。Table1 のみを変更しました。2 番目の表が表示されるのはなぜですか?

4

5 に答える 5

109
  • 表の横にある展開記号をクリックします。
  • 「Keys」フォルダを右クリックして、「NewForeignKey」を選択します。
  • (または、テーブルを開いているときに、ツールストリップの[関係]ボタンをクリックすることもできます)
  • 「テーブルと列の仕様」行の「...」ボタンをクリックして、エディターを開きます。
  • 左側のドロップダウンは追加元のテーブルになり、静的テキストフィールドには追加先のテーブルが一覧表示されます。
  • ドロップダウンを使用して制約を指定し、両側に同じ数の列があることを確認します。
于 2011-11-14T19:22:43.887 に答える
22

同等のT-SQLステートメントを使用しないのはなぜですか?私にははるかに簡単で混乱が少ないようです:

ALTER TABLE dbo.Table1
  ADD CONSTRAINT FK_Table1_Table2
    FOREIGN KEY(Table2ID) REFERENCES dbo.Table2(ID)

これを読むと、2つのテーブルがどのように関係していて、どのように接続されているかがすぐにわかると思います(Table1.Table2ID-(参照)-> Table2.ID

SSMSデザイナーの世界にとどまりたい場合:関連するテーブルのデータベース図を作成し、Table2ID列をTable1上からドラッグアンドドロップしてそこTable2の列にドロップすることもIDできます-これにより、SSMSに何をしたいかがグラフィカルに示されます、選択内容を確認し、ポップアップするダイアログで[OK]をクリックするだけです。

于 2010-10-09T09:28:47.237 に答える
9

1.「外部キー テーブル」には Table2 を、主キーには Table1 をリストするべきではありませんか? 私の理解は間違っていますか?

あなたの理解は間違っていると思います。Table2 は、主キーを参照しているテーブルです。したがって、主キーの下にリストされています。Table1 は、外部キー (別のテーブルの主キーへの参照) を持つテーブルです。したがって、「外部キーテーブル」の下にリストされています。

外部キーがTable1に属するものとして後でリストされているにもかかわらず、両方のテーブルが保存される理由については、外部キーが両方のテーブルを制約しているためだと思います。どちらも制約について「知っている」必要があるため、両方を保存する必要があります。

于 2011-04-06T21:30:30.850 に答える
1
ALTER TABLE dbo.Table1
  ADD CONSTRAINT FK_Table1_Table2
    FOREIGN KEY(Table2ID) REFERENCES dbo.Table2(ID)
于 2011-05-09T12:22:41.443 に答える