GUIまたはSQLスクリプトを使用して、テーブル間の関係を作成できます。ここでは、両方の方法を示します。
リレーショナルデータベースの設計では、関係 2つ以上のテーブルに関連データが含まれているため、2つ以上のテーブルがリンクされている場所です。これにより、ユーザーは複数のテーブルにまたがる関連データのクエリを実行できます。
ここでは、次の関係を作成します。
方法
方法は次のとおりです。
- SQLを使用します アルバム を作成するには テーブルと1つの関係。
- GUIを使用します 他の関係を作成します。
そうすれば、関係を作成する両方の方法を見ることができます。
このチュートリアルで以前にこれらのテーブルを2つ作成したので、1つのテーブルを作成するだけで済みます( Artists GUIおよび ジャンル を介したテーブル SQLを使用したテーブル)。
SQLを使用して関係を作成する
SSMSで新しいクエリウィンドウを開き、次のコードを実行します。
CREATE TABLE Albums ( AlbumId int IDENTITY(1,1) NOT NULL PRIMARY KEY, AlbumName nvarchar(255) NOT NULL, ReleaseDate date NOT NULL, ArtistId int NOT NULL, GenreId int NOT NULL CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId) REFERENCES dbo.Artists (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION );
そのステートメントの最初の部分でテーブルが作成されます。
最後の部分は関係を定義します。この部分:
CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId) REFERENCES dbo.Artists (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION
最初の2行は関係を作成します。 Albums.ArtistId 間に外部キー制約を作成します 列と Artists.ArtistId 列。
最後の2行は、子テーブルのレコードによって参照されている親レコードを誰かが削除または更新しようとした場合にSQLServerが実行する処理を指定します。この場合、NO ACTION
削除/更新が先に進まないことを意味します。ユーザーにはエラーが表示されます。
これをON DELETE CASCADE
に変更できます 親と子を一度に削除できるようにしたい場合(つまり、削除は親から子にカスケードされます)。 ON UPDATE CASADE
を使用して、同じロジックを更新に適用します 。
NO ACTION
はデフォルト値であるため、最後の2行のコードがなくても実行できます。ただし、外部キー制約を作成するときに考慮することが重要な要素であるため、これを含めました。
外部キー制約とは何ですか?
外部キー制約 このテーブルと別のテーブルの間の関係を定義します。外部キー制約を作成するときは、子の特定の列に対して外部キー制約を作成します。 テーブル、親の特定の列を参照する テーブル。
これにより、子テーブルの列が外部キーになります。 。この制約により、この(外部キー)列に入るすべての値が、親テーブルの主キー列の値に対応することが保証されます。親テーブルの主キー列の値と一致しない値を入力しようとすると、SQLServerはエラーをスローします。
これは、参照整合性を強化するのに役立ちます。これにより、孤立したレコード(親を持たない子レコード)を作成できなくなります。または、この例では、どのアーティストにも関連付けられていないアルバムです。
GUIを介して関係を作成する
次に、SQL ServerMangementStudioのGUIを介して他の関係を作成します。
上記のスクリプトにこれを含める方が簡単でしたが、関係を作成する両方の方法を示したかったのです。
-
テーブルデザイナで子テーブルを開きます
子テーブル(新しく作成されたアルバム)を右クリックします 表)を選択し、デザインを選択します コンテキストメニューから。
新しく作成したテーブルがオブジェクトブラウザに表示されない場合は、オブジェクトブラウザを更新する必要があります。
テーブルを右クリックします ノードを選択し、更新を選択します 。
-
外部キー関係ダイアログを開く
テーブルデザイナ>リレーションシップ...を選択します トップメニューから。
-
関係を追加する
[外部キー関係]ダイアログには、テーブルの既存の関係が表示されます。テーブルを作成した直前に確立した関係を確認できます。
追加をクリックします 別の関係を追加します。
-
テーブルと列の仕様を選択
選択した関係 で、新しい関係が他の関係の上に表示されます FK_Albums_Albums という名前のリスト 。
新しい関係が選択されていることを確認して、テーブルと列の仕様をクリックします。 右ペインにあります。プロパティの右側に省略記号が表示されます。
省略記号( ... )をクリックします )[テーブルと列]ダイアログボックスを起動します。
-
[テーブルと列]ダイアログボックス
ここでは、左側のペインで主キーテーブルを選択し、右側で外部キーテーブルを選択します。
- 主キーテーブルの下: ジャンルを選択します テーブルおよびGenreIdとして 列として。
- 外部キーテーブルの下: アルバムを選択します テーブルおよびGenreIdとして 列として。
OKをクリックします 。
SQL Serverは、関係の名前を提案します。必要に応じてこれを編集できます。それ以外の場合は、そのままにしておきます。
-
関係
これで、[外部キー関係]ダイアログボックスに関係が正しく表示されます。
閉じるをクリックします 。
-
関係を保存する
テーブルを保存するまで、関係は保存されません。テーブルを保存すると、2つのテーブルが保存されるという警告が表示される可能性があります。関係は2つのテーブルに影響するため、これは予想されることです。
はいをクリックします 両方のテーブルを保存します。
テーブルデザイナ>リレーションシップ...を選択した場合 親テーブルの場合は、そこに関係も表示されます。