主キーとは?しゅきー
主キーとは、表の中の各行を1つに特定するために選んだ列、または列の組み合わせ。値の重複が許されず、空値(NULL)も入れられないという2つの制約が同時に働く。行を一意にできる候補キーが複数あるときは、その中から1つを選んで指定する。他の表からはこの値を外部キーとして参照する。
最終更新:2026-10-09
この語が出る過去問を解く →背景
表の行には順序が無いため、「3行目を消す」という指定ができない。更新も削除も他の表からの参照も、どの行かを値で言い当てられなければ成立しない。またNULLは「値が不明」を意味するので、不明なもので行を特定することはできない。この2つの事情から、一意性と非NULLが制約として要求される。
具体例
社員表なら社員番号を主キーにする。氏名は同姓同名がありうるので不適切である。図書館の蔵書管理では、ISBNは書名ごとの番号なので同じ本を2冊持つと区別できず、1冊ごとに振る資料IDを主キーにする。受講表のように「学生番号+科目コード」の組でなければ一意にならない場合は複合キーにする。
試験での引っ掛け
主キーにNULLを含められない点が定番で、複合キーの一部の列であっても許されない。また一意でありさえすればよいわけではなく、値が途中で変わらないことも選定の基準になる(氏名やメールアドレスは不適)。候補キーのうち主キーに選ばなかったものは代替キーと呼ぶ。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成29年度 秋期 基本情報技術者試験 午前 問27(IPA)解説で登場
SQL文においてFOREIGN KEYとREFERENCESを用いて指定する制約はどれか。
正解:参照制約
要点:FOREIGN KEY~REFERENCESは参照整合性を保つ参照制約
FOREIGN KEY句とREFERENCES句は、ある表の列の値が参照先の表の主キーなどに必ず存在することを保証する参照制約(参照整合性制約)を定義する。これにより存在しない部門コードを持つ社員行を作るといった矛盾を防げる。削除・更新時の動作をCASCADEなどで指定できる点も併せて押さえたい。
出典:平成29年度 春期 基本情報技術者試験 午前 問25(IPA)解説で登場
属性aの値が決まれば属性bの値が一意に定まることを,a→bで表す。例えば,社員番号が決まれば社員名が一意に定まるということの表現は,社員番号→社員名である。この…
正解:テーブル1(a,b,c,d,e)/テーブル2(b,f,g,h)/テーブル3(e,i,j)
要点:関数従属の起点属性を主キーにして表を分割する
関数従属の起点になっている属性が、それぞれの表の主キーになります。aからb,c,d,eが決まるのでaを主キーとする表にb,c,d,eを、bからf,g,hが決まるのでbを主キーとする表にf,g,hを、eからi,jが決まるのでeを主キーとする表にi,jを置きます。b・eは元の表では外部キーとして残るため、テーブル1にb,eが含まれる組合せが適切です。
出典:令和元年度 秋期 基本情報技術者試験 午前 問26(IPA)
出典:令和8年度 公開問題 基本情報技術者試験 科目A 問7(IPA)解説で登場
次のSQL文によって定義され,値が格納されている"商品"表に対して,制約違反で実行エラーとなるSQL文はどれか。 〔SQL文〕 CREATE TABLE 商品 …
正解:UPDATE 商品 SET 商品コード = 'A777' WHERE 在庫数 >= 20
要点:主キーは重複不可。複数行を同じ値に更新すると違反
商品コードは主キーなので、値の重複は許されない。在庫数が20以上の行はデジタルカメラ(50)と洗濯機(20)の2行あり、その両方の商品コードを同じ'A777'に更新しようとすると主キーの一意性制約に違反して実行エラーになる。他の3つは重複もNULLも生じないため正常に実行できる。
出典・参考
公式シラバスの3 技術要素 > 2. データベース設計 > (2) データベースの設計に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。