データベースの外部キーとは何か?


外部キーは、元のテーブルの主キーデータに接続する1つのテーブル内のデータの列です。

外部キーと主キーテーブル間のリンクが壊れていないことを保証するために、外部キー制約を作成して、テーブル間のリンクを傷つけ、誤ったデータが外部キー列に追加されないようにします。

主キーと外部キーの違い

元のテーブルまたは親テーブルの主キーは、他の子テーブルの複数の外部キーの対象となることができます。 しかし、主キーは必ずしも外部キーのターゲットである必要はありません。 主キーは、テーブル内の行を識別する列または列の集合です。 ただし、外部キーは、主キーと一致する必要があるテーブルとは異なるテーブル内にあります。

管理者は、必要に応じて、SQL Serverなどのリレーショナルデータベースの主キーを選択または変更できます。 たとえば、ある町の人々は、あるアプリケーションでは運転免許証番号によって一意に識別されるかもしれませんが、別の状況では、電話番号に従って識別する方が便利かもしれません。 テーブルの主キーが変更されると、関連する外部キーのセットが結果として変更されます。

制約の種類

外部キー制約は、無効なデータが外部キー列に配置されないようにします。これは、それが対象となるテーブルに含まれる値の1つでなければならないためです。 データベース管理者は、SQL Server Management StudioまたはTransact-SQLを使用して、SQL Server 2017の最新モデルで外部キー関係を作成できます。 外部キーは、別のテーブルの主キー制約に特に関連付ける必要はありません。 他の場所でUNIQUE制約の列を参照することもできます。

異なる制約には、UNIQUE、CHECK、DEFAULTが含まれます。 UNIQUE制約は、主キー内にない特定の列に重複値が入力されないようにします。 CHECK制約は、複数の列で受け入れられる値を制限します。 DEFAULT制約は、NULL値が適切でない場合に適用されるため、管理者はたとえば、デフォルトの数値列としてゼロを設定できます。

外部キーの問題

多くのデータベースユーザーは、参照整合性の問題のために、外部キーエラーに遭遇します。 外部キーが存在しなくなったデータを指しているか、外部キーのデータ型が主キーデータ型と一致せず、参照整合性を侵食している可能性があります。

これは、外部キーが主キーのすべてのデータを参照していない場合にも発生します。 会社名、部門名、住所の主キーで構成されるSalesの親テーブルがある場合、Customersの子テーブルは親テーブルのすべての属性を参照する必要があります。

関連したトピックス

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください