DBMSの主キーと外部キーの違いとは?特徴とSQL記述例を徹底解説
この記事では、DBMS(データベース管理システム)における主キー(Primary Key)と外部キー(Foreign Key)の違いについて詳しく解説します。それぞれの特徴や制約を正しく理解することで、データの整合性を保った適切なテーブル設計ができるようになります。
主キー(Primary Key)とは
特定の列(カラム)のデータが一意であることを保証するために使用されます。
リレーショナルデータベース内のレコード(行)を一意に識別する役割を果たします。
1つのテーブルに設定できる主キーは1つだけです。
「UNIQUE(一意性)」制約と「NOT NULL(非NULL)」制約を組み合わせたものです。
そのため、NULL値を持つことはできません。
親テーブルから主キーの値を削除することはできません。
一時テーブルに対しては暗黙的に定義することができます。
SQLでの記述例
CREATE TABLE table_name ( col_name int NOT NULL PRIMARY KEY, … );
外部キー(Foreign Key)とは
リレーショナルデータベースのテーブルにおける、1つの列または複数の列の組み合わせです。
2つのテーブル間のデータをつなぐリンクの役割を果たします。
他のテーブルの主キーに対応するフィールドです。
1つのテーブルに複数の外部キーを設定することが可能です。
リレーショナルデータベースにおいて、重複した値を含むことができます。
NULL値を含むことも可能です。
子テーブル側では値を削除することができます。
ローカルまたはグローバルの一時テーブルには定義できません。
SQLでの記述例
CREATE TABLE table_name (
col_name int NOT NULL PRIMARY KEY,
col_name int FOREIGN KEY REFERENCES Persons(col_name)
);
主キーと外部キーの比較一覧
| 比較項目 | 主キー | 外部キー |
|---|---|---|
| 設定できる数 | 1テーブルにつき1つのみ | 1テーブルに複数設定可 |
| NULL値 | 不可 | 可 |
| 重複した値 | 不可 | 可 |
| 主な役割 | レコードの一意な識別 | テーブル間の関連付け |
| 値の削除 | 親テーブルから削除不可 | 子テーブルから削除可 |
| 一時テーブルへの定義 | 暗黙的に定義可能 | 定義不可 |
まとめ
主キーはテーブル内の各レコードを一意に識別するための重要な制約であり、NULLや重複した値を許しません。一方、外部キーはテーブル同士を関連付けるためのもので、NULLや重複を許容する柔軟な制約です。この2つの違いを正しく把握しておくことで、参照整合性を維持しながら、信頼性の高いデータベース設計を行うことができます。
-
アルゴリズムとフローチャートの違いとは?特徴と具体例を徹底解説
プログラミングやシステム設計の現場でよく耳にする「アルゴリズム」と「フローチャート」。どちらも問題解決に欠かせない重要な概念ですが、それぞれの役割や特性は大きく異なります。この記事では、両者の違いを具体例とともにわかりやすく解説します。 アルゴリズムとは アルゴリズムとは、明確に定義された手順の連なりとして定義されます。これらの手順は、目の前の問題を解決するための方法を提供するものであり、処理が段階的に定義された、体系的かつ論理的なアプローチです。 主な特徴 特定の問題に対する解決策を提示する。 解決策は機械語に変換され、システムが実行することで適切な出力が得られる。 多くの単純な操作を組み
-
BFSとDFSの違いとは?グラフ探索アルゴリズムの特徴と使い分けを徹底解説
BFS(幅優先探索)とDFS(深さ優先探索)は、どちらもグラフ構造上の頂点を訪問するための基本的なグラフ探索アルゴリズムです。一見似ていますが、探索の進め方や内部で利用するデータ構造が異なるため、それぞれ得意な場面が変わってきます。BFSとは幅優先探索(Breadth First Search:BFS)は、開始地点から近い頂点を順に、横方向へ広がるようにグラフを探索するアルゴリズムです。キュー(Queue:先入れ先出し方式)を使用しており、探索中に行き止まりに到達した場合でも、キューに記憶された次の頂点から探索を再開できます。DFSとは深さ優先探索(Depth First Search:DFS