MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

FOREIGN KEY(外部キー)とは?意味とMySQLテーブルでの使い方を徹底解説

FOREIGN KEY(外部キー)とは、2つのテーブル間のデータ同士を結び付けるために使用される、1つのカラムまたは複数のカラムの組み合わせのことです。言い換えれば、FOREIGN KEY制約は必ず2つのテーブルに関わるものであり、あるテーブルのPRIMARY KEY(主キー)が別のテーブルのFOREIGN KEYとして参照されることで、データベース全体のデータ整合性(参照整合性)を高める役割を果たします。

FOREIGN KEYの基本構文

FOREIGN KEY [column_name] REFERENCES [table having Primary Key] ([column_name]);

各要素の意味は以下の通りです。

  • REFERENCES:参照先を指定するためのキーワード
  • column_name(1つ目):FOREIGN KEYを設定するカラムのリスト
  • table having Primary Key:PRIMARY KEYを持つ参照先テーブルの名前
  • column_name(2つ目):参照先テーブルでPRIMARY KEYが設定されているカラムのリスト

具体例:CustomerテーブルとOrdersテーブルを連携させる

ここでは、「Customer(顧客)」と「Orders(注文)」という2つのテーブルを例に考えます。両テーブルの関係は、Ordersテーブル側の「Cust_Id」フィールドにFOREIGN KEYを設定することで確立できます。実際にテーブルを作成するクエリは次のようになります。

mysql> Create Table Customer(Cust_ID int Primary Key, First_name Varchar(20), Last_name Varchar(20), City Varchar(10));
Query OK, 0 rows affected (0.13 sec)

mysql> Create Table Orders(Order_Id Int Primary Key, Product_Name Varchar(25), Orderdate DATE, Cust_ID Int, FOREIGN KEY(Cust_ID) REFERENCES Customer(Cust_id));
Query OK, 0 rows affected (0.13 sec)

mysql> Describe Orders;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| Order_Id     | int(11)     | NO   | PRI | NULL    |       |
| Product_Name | varchar(25) | YES  |     | NULL    |       |
| Orderdate    | date        | YES  |     | NULL    |       |
| Cust_ID      | int(11)     | YES  | MUL | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
4 rows in set (0.04 sec)

親テーブルと子テーブルの関係

この構成において、参照される側の「Customer」テーブルは親テーブル(参照テーブル)、参照する側の「Orders」テーブルは子テーブル(参照元テーブル)と呼ばれます。

重要なルールとして、子テーブルの各行には、親テーブルに存在する値が含まれていなければなりません。つまり、Ordersテーブルの各行に登録できる「Cust_Id」は、Customerテーブルに実在する顧客IDだけということです。存在しない顧客IDを注文データに入力しようとすると、MySQLはエラーを返して登録を拒否します。

FOREIGN KEYを使うメリット

  • データ整合性の保証:存在しない親レコードへの参照を防ぎ、不正なデータの混入を阻止できます。
  • 孤立レコードの防止:顧客情報と注文情報の対応関係が常に保たれ、迷子データ(オーファンレコード)が発生しません。
  • テーブル間の関係の明確化:スキーマを見るだけで、どのテーブル同士が関連しているのかが一目で分かります。

このようにFOREIGN KEYは、複数テーブルを扱うリレーショナルデータベース設計において欠かせない制約です。MySQLでテーブルを設計する際は、テーブル間の関係を整理した上で適切に設定しましょう。

  1. Bash変数とは?基本の仕組みと実践的な使い方を徹底解説

    Bashでは、長い文字列をひとつの変数に割り当てることができます。これにより、コマンドの入力やスクリプト作成が格段にシンプルになります。本記事では、Bash変数の仕組みと、実際の活用方法について詳しく解説します。 変数とは何か? 変数とは、さまざまな英数字の値を格納できる「覚えやすい名前」のことです。変数を使う最大のメリットは、同じ関数や処理を異なる値に対して適用できる点にあります。スクリプトやコードを書き直す必要がなくなるため、作業効率が大きく向上します。また、個別の値を扱う代わりに共通の名前を使えるため、コードそのものも読みやすく、書きやすくなります。 リアルタイムで使える一時変数

  2. Windows 11の「推奨アクション」とは?電話発信や予定作成を自動化する便利機能の使い方

    Googleなどの検索エンジンでは、検索ワードを入力すると自動的に候補が表示されますよね。実はMicrosoftも、Windows 11ユーザー向けにこれによく似た機能を導入しました。その機能の名前は「推奨アクション(Suggested Actions)」。Windows上での操作をよりシンプルにすることを目指した、Microsoftの最新の取り組みです。この記事では、推奨アクションの使い方と効果的な活用方法について詳しく解説します。Windows 11で推奨アクションを有効にする方法推奨アクション機能を有効にすると、電話の発信やイベント(予定)の登録を自動的に行えるようになります。電話番号や