複合キーとは?データベース初心者でもわかる基本解説
生徒
「先生、複合キーっていう言葉を見かけたんですが、どんな意味なんですか?」
先生
「複合キーは、データベースで複数の列を組み合わせて一つの主キーとして扱う仕組みです。英語ではComposite Key(コンポジットキー)といいます。」
生徒
「一つの列じゃなくて、二つ以上の列を組み合わせるんですか?」
先生
「そうです。例えば成績表のテーブルで『学籍番号』と『科目コード』を一緒に主キーにすると、一人の学生が複数科目を履修しても正しく区別できます。」
生徒
「なるほど!それなら同じ学籍番号でも、科目が違えば別の行として扱えるんですね。」
先生
「その通りです。複合キーはデータを唯一無二に識別するための工夫なんです。」
1. 複合キー(フクゴウキー)とは?
複合キー(フクゴウキー)は、データベースのテーブルにおいて、二つ以上の列を組み合わせて一つの主キーとする仕組みのことです。英語ではComposite Key(コンポジットキー)と呼ばれます。単一の列だけでは一意に識別できない場合に、複合キーを設定することで正確にデータを区別できます。
例えば、成績テーブルで「学籍番号」だけを主キーにすると、同じ学生の別科目のデータが区別できません。しかし「学籍番号」と「科目コード」を複合キーにすれば、重複せずに管理できます。
2. 複合キーの特徴
- 二つ以上の列を組み合わせる。
- 組み合わせ全体で一意性を保つ。
- 単一の列では識別できない場合に活用する。
この仕組みによって、複雑なデータ構造でも正しく管理できます。特に多対多の関係を表す中間テーブルでは複合キーがよく使われます。
3. 複合キーの具体例
身近な場面で複合キーを使う例を考えてみましょう。
- 成績テーブル:「学籍番号」+「科目コード」
- 出席テーブル:「学籍番号」+「日付」
- 注文詳細テーブル:「注文番号」+「商品コード」
例えば注文詳細テーブルでは、一つの注文に複数の商品が含まれるため、注文番号だけでは区別できません。そこに商品コードを組み合わせることで、正しく管理できます。
4. 複合キーと単一キーの違い
単一キーは一つの列だけで一意に識別できる場合に使います。例えば社員番号や商品コードなどが代表例です。一方で複合キーは、単一キーでは識別できない場合に使います。つまり、状況に応じてどちらを選ぶかを考える必要があります。
5. 複合キーと外部キーの関係
複合キーを持つテーブルは、他のテーブルと結びつくときに外部キーとして利用されることがあります。例えば注文詳細テーブルでは「注文番号」が注文テーブルを参照する外部キー、「商品コード」が商品テーブルを参照する外部キーとして機能します。複合キーは外部キーと組み合わせることで、より強固なデータの関係を築けます。
6. 複合キーの歴史や雑学
複合キーの考え方も、リレーショナルデータベース(RDB:アールディービー)の基本概念の一つです。1970年代に提唱されたリレーショナルモデルの中で、データを正しく識別するための仕組みとして登場しました。現在も多くのデータベース製品でサポートされており、特に業務システムや会計システムで活用されています。
7. 複合キーを使うメリット
複合キーを使うメリットは次の通りです。
- データを正しく一意に識別できる。
- 多対多の関係を整理できる。
- 冗長な列を減らし、効率的に管理できる。
例えば学校の成績管理システムでは、複合キーを使うことで「誰がどの科目でどんな成績か」を明確に表現できます。
8. 複合キーを設定するときの注意点
複合キーを設定する際には、次の点に注意が必要です。
- 列が多すぎると扱いが複雑になる。
- 将来的に変更が多い列は含めない。
- 意味のある列を選ぶこと。
例えば住所や電話番号のように変わりやすい情報は複合キーには不向きです。代わりに安定して変わらない識別子を組み合わせるのが適しています。