Management Studioのプライマリテーブルに外部キーを追加するのはいつも混乱します。
私が持っているとしましょう
Table1
{
ID int, -- Primary Key
Table2ID int, -- Refers to Table2's ID
}
Table2
{
ID int, -- Primary Key
SomeData nvarchar(50)
}
Right Click -> Relationships -> Table and column specification
によってTable1に外部キーを追加しています。 「プライマリ」ポップアップをTable2、IDに設定し、「外部キーテーブル」をTable1、Table2IDに設定しています。
私の質問:
Table2を「外部キーテーブル」に、Table1をプライマリキーにリストしないでください。私の理解は間違っていますか?
保存すると、「次のテーブルがデータベースに保存されます」というアラートが表示されます。両方のテーブルが表示されます。私は本当にこれを取得しません。 Table1のみを変更しました。 2番目のテーブルが表示されるのはなぜですか?
同等の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
over Table2
をそこのID
列にドロップします-これにより、SSMSに何をしたいのかをグラフィカルに伝えることができます。選択した内容を確認し、表示されるダイアログで[OK]をクリックするだけです。
1.Table2を「外部キーテーブル」に、Table1をプライマリキーにリストしないでください。私の理解は間違っていますか?
あなたの理解は間違っていると思います。 Table2は、主キーを参照するテーブルです。したがって、主キーの下にリストされます。 Table1は、外部キー(別のテーブルのプライマリキーへの参照)を持つテーブルです。したがって、「外部キーテーブル」の下にリストされています。
外部キーが後でTable1に属するものとしてリストされている場合でも、両方のテーブルが保存される理由に関しては、外部キーが両方のテーブルを制約するためだと思います。両方とも制約について「知る」必要があるため、両方とも保存する必要があります。
ALTER TABLE dbo.Table1
ADD CONSTRAINT FK_Table1_Table2
FOREIGN KEY(Table2ID) REFERENCES dbo.Table2(ID)