主キーとは

大型のコンピューター・モニターを見ながらキーボードを入力する女性

執筆者

Alice Gomstyn

Staff Writer

IBM Think

Alexandra Jonker

Staff Editor

IBM Think

主キーとは

主キーとは、データベース・テーブル内の1列または複数の列で構成され、それぞれの行(レコード)を一意に識別する値を持つものです。たとえば、従業員情報のテーブルでは、従業員IDの列が主キーになり得ます。

主キーは、リレーショナル・データベースにおいて重要な役割を果たしており、データの整合性を維持し、データの正確な取得を可能にします。さらに、主キーは他の種類のキーから参照されることで、リレーショナル・データベース内のテーブル間の関係を定義することができます。

さまざまなデータベースでよく例として挙げられる主キーには、次のようなものがあります。

  • 運転免許証番号
  • 従業員ID番号
  • 製品ID番号
  • 社会保障番号
  • 学生ID番号
ニュースレターを表示しているスマホの画面

The DX Leaders

「The DX Leaders」は日本語でお届けするニュースレターです。AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。

キーとリレーショナル・データベースについて

主キーの詳細を確認する前に、リレーショナル・データベース・システムと、データベース設計内で主キーなどのキーが果たす役割について理解しておくとよいでしょう。

リレーショナル・データベースは、複数のテーブルにまたがって構造化されたデータと、異なるテーブル間に関連するデータ点を格納します。このようなデータベースは、IBM Db2、Oracle Database、Microsoft SQL Serverなどのリレーショナル・データベース管理システム(RDBMS)、およびPostgreSQLやmySQLなどのオープンソース・データベース・システムによって管理されます。

構造化クエリ言語(SQL)は、データベースとのやり取りに広く使用されている一般的なプログラミング言語ですが、一部のデータベース管理システムでは他の言語もサポートされています。

データベースの文脈において、キーとは、テーブル内のデータ行を識別するために使用される1列または複数列の順序付きの集合です。キーは、関連するテーブル間の関係を示し、一意のレコードを識別し、データの正確性と整合性を保証することで、データベースの構造化に役立ちます。これらのメリットは、SQLデータベースにおけるクエリを正確かつ効率的に実行することが可能になります。

オフィスでミーティングをするビジネスチーム

IBMお客様事例

お客様のビジネス課題(顧客満足度の向上、営業力強化、コスト削減、業務改善、セキュリティー強化、システム運用管理の改善、グローバル展開、社会貢献など)を解決した多岐にわたる事例のご紹介です。

主キーにはどのような特徴がありますか。

主キー(SQL主キーとも呼ばれます)は、主キー値に関連付けられた各レコードに対して一意の識別子を付与します。主キーの重要な特徴には、次のような点が含まれます。

  • null値なし
  • 重複する値なし
  • 既存のテーブル列を使用する(ナチュラル・キー)場合もあれば、新たに列を追加して利用する(サロゲート・キー)場合もあります。
  • 1つの列または複数の列(複合主キーとして)を含めることができます。

主キーは1つのテーブル内の既存の列である場合もあり、その場合はナチュラル・キーと呼ばれます。しかし、主キー制約(値が一意であり、NULLであってはならないという主キーのルール)を満たす列がテーブル内に1つもないことがあります。

そのような場合、テーブル内の既存データに基づかない一意の値を持つ新しい列が生成され、主キーとして使用されることがあります。このように人工的に生成された主キーは、サロゲート・キー(代理キー)と呼ばれます。

リレーショナル・データベース管理システム(RDBMS)には、列に対して一意の値を自動生成する機能が一般的に備わっており、それをサロゲート・キーとして使用することができます。その1例が、MySQLの自動増分(auto-increment)機能です。

主キーは複合キーでもかまいません。つまり、複数の値の列で構成されます。

複合主キー(レコードを識別するために使用できる、複数の列の一意な組み合わせ)は、サロゲート・キーを生成する代替手段として利用できます。 たとえば、顧客の姓を含む列と生年月日を含む列を組み合わせて、複合主キーを構成することができます。

主キーにはどのようなデータ型が使われますか。

SQLは、タイムスタンプ (日付と時刻の表現)からvarchar(可変長文字列)まで、さまざまなデータ型をサポートしていますが、すべてのデータ型が主キーに適しているわけではありません。

数値(特に整数)を含む列は通常、リレーショナル・データベース管理システムにより迅速に処理されるため、主キーとして使用することが推奨されます。

他に重要なキーの種類には何がありますか。

データベース管理で使用されるその他のキーには、次のものがあります。

  • 一意のキー
  • 候補キー
  • スーパーキー
  • 外部キー

一意のキー

主キーは一意キーのサブセットです。一意キーはユニーク制約として知られるルールに従っており、そのキーの値が一意である場合にのみ有効と見なされます。すべての主キーは一意キーですが、すべての一意キーが主キーというわけではありません。それは、主キーと異なり、一意キーにはnull値を含めることができるためです。

候補キー

候補キーは、一意の値を含み、NULL値がないため、主キーとして機能できるキーです。主キーと候補キーの違いは、既存のテーブルには複数の候補キーを含めることができますが、主キーは1つだけであることです。

スーパーキー

スーパー・キーは複合主キーと似ており、複数の列を含み、レコードの識別に使用されます。ただし、スーパー・キーには、レコードを一意に識別するために厳密に必要な数よりも多くの列や情報が含まれるのに対し、複合主キーには必要以上の列やデータは含まれません。

外部キー

あるテーブルの外部キーは、別のテーブルの特定の主キーを参照することで、両テーブル間の関係を定義します。たとえば、顧客の注文情報を格納したテーブルの外部キーが、別のテーブルにある顧客データの一部である一意な顧客IDの主キー列を参照することがあります。これにより、ある顧客による注文を、その顧客に関する重要な情報(Eメール・アドレスや生年月日など)と関連付けることができます。

テーブル間の関係を定義する上での参照整合性制約の重要性

主キーと外部キーがリレーショナル・データベース内のテーブル間の関係をどのように定義するかを理解するには、参照整合性制約について考えるとよいでしょう。

参照整合性制約(リファレンシャル制約または外部キー制約とも呼ばれる)とは、あるテーブルの外部キーの値が、別のテーブルの主キーの値と一致していなければならないというルールです。

たとえば、従業員データベースでは、EMPLOYEEテーブル内の各従業員が、DEPARTMENTテーブルに登録されている既存の部門に所属していなければならない、という参照整合性制約を設けることができます。

この場合、DEPARTMENTテーブルの主キーは、一意の部門番号を保管する列であり、EMPLOYEEテーブルの外部キーは、同じ一意の部門番号を保管する列です。これらの一致する列は、テーブルが外部キー制約に準拠していることを意味します。

DEPARTMENTテーブルはEMPLOYEEテーブルの外部キーによって参照される主キーのホームであるため、EMPLOYEEキーはDEPARTMENTテーブルに依存していると見なされます。一方、DEPARTMENTテーブルは、このテーブル・リレーションシップの「親テーブル」と見なされます。

参照整合性制約は、誤ったデータの挿入をデータベースで防ぐことができます。たとえば、以下に示すEMPLOYEEテーブルに対して、従業員レコードの中に存在しない部門番号が含まれている場合、参照整合性制約により、そのレコードを追加することはできません。

主キー制約および外部キー制約が、無効なレコードのテーブルへの挿入をどのように防ぐかを示す図。

主キーに関連する他の概念や実践にはどのようなものがありますか。

インデックス

リレーショナル・データベース管理システムは、データベース内の各主キーに対応する一意のインデックスを作成するか、作成を要求することがあります。データベース設計におけるインデックスとは、テーブル内の行を指し示すポインターの集合を指します。インデックスは、データ検索の最適化など、パフォーマンスの向上に利用されます。

データ・モデリング

データ・モデリングは、データベース・スキーマ、すなわちデータベース内のテーブル間のデータ関係の設計図を視覚的に表現したものです。データ・モデルには、こうした関係性を維持するために使用される主キーや外部キーに関する情報が含まれることがあります。

SQLステートメント

SQLステートメントは、リレーショナル・データベースとやり取りするために使用されるコマンドです。SQL構文では、CREATE TABLEまたはALTRE TABLEステートメントを使用してテーブルの主キーを割り当てまたは追加できます。

例えば、IBMのDb2を使用する従業員名のテーブルEMPに対するCREATE TABLEステートメントを考えてみましょう。列名は、ID(従業員IDの場合)、FIRSTNMEおよびLASTNAME(それぞれ最大15文字)です。IDが主キーとして選択された場合、ステートメントは次のようになります。

CREATE TABLE EMP
    (ID INT NOT NULL,
    FIRSTNME VARCHAR (15) NOT NULL,
    LASTNAME VARCHAR (15) NOT NULL,
  PRIMARY KEY (ID));

 

Db2における既存テーブルに対するALTER TABLE文では、主キーを追加するための句はADD PRIMARY KEYであり、外部キーは親テーブルへの参照と組み合わせてADD CONSTRAINTを使用して追加されます。

関連ソリューション
データベース・ソフトウェアとソリューション

IBMのデータベース・ソリューションを活用して、ハイブリッドクラウド全体のさまざまなワークロードのニーズに対応しましょう。

データベース・ソリューションの詳細はこちら
IBM Db2を使用したクラウドネイティブ・データベース

構造化データの保管と管理に高性能で拡張性と信頼性を備えたリレーショナル・データベースであるIBM Db2をご覧ください。IBM Cloud上でSaaSとして、もしくはセルフホスティングとしてご利用いただけます。

Db2の詳細はこちら
データ分析コンサルティングサービス

IBMコンサルティングと連携することで、企業データの価値を引き出し、ビジネス上の優位性をもたらす洞察を活用した組織を構築します。

分析サービスを発見する
次のステップ

IBMのデータベース・ソリューションを活用して、ハイブリッドクラウド全体のさまざまなワークロードのニーズに対応しましょう。

データベース・ソリューションの詳細はこちら IBM Db2の詳細はこちら