主キーとは?
主キーとは、表の中の各行を一意に識別するために選んだ列(または列の組)。候補キーの中から1つ選んで指定し、値の重複が許されず、空値(NULL)も許されない(一意性制約と非NULL制約)。この2つの性質がFEで必ず問われる。
基本情報技術者試験の過去問では5回出題されています(2016年度〜2026年度)。
しゅきー
主キーの意味
表の中の各行を一意に識別するために選んだ列(または列の組)。候補キーの中から1つ選んで指定し、値の重複が許されず、空値(NULL)も許されない(一意性制約と非NULL制約)。この2つの性質がFEで必ず問われる。
主キーの具体例
社員表では社員番号を主キーにする。氏名は同姓同名がありうるので不適切。受講表のように「学生番号+科目コード」の組み合わせでなければ一意にならない場合は、複数列をまとめて主キー(複合キー)にする。
主キーは試験でどう引っ掛けられる?
主キーにNULLを含められない点が定番。また「一意なら何でも主キーにしてよい」わけではなく、値が変わらないこと(不変性)も選定の基準になる。複合キーの一部にもNULLは許されない。
主キーと関連する用語
主キーが出た過去問
関係データベースにおいて,外部キーを定義する目的として,適切なものはどれか。
正解:関係する相互のテーブルにおいて,レコード間の参照一貫性が維持される制約をもたせる。
要点:外部キーはテーブル間の参照一貫性を守るための制約
外部キーは、あるテーブルの列が別のテーブルの主キーを参照していることを宣言するものである。これを定義すると、参照先に存在しない値を登録できない、参照されている行を勝手に削除できないといった制約がDBMSによって課される。すなわち目的はテーブル間の参照整合性(参照一貫性)を保つことにある。
出典:平成28年度 春期 基本情報技術者試験 午前 問29(IPA)SQL文においてFOREIGN KEYとREFERENCESを用いて指定する制約はどれか。
正解:参照制約
要点:FOREIGN KEY~REFERENCESは参照整合性を保つ参照制約
FOREIGN KEY句とREFERENCES句は、ある表の列の値が参照先の表の主キーなどに必ず存在することを保証する参照制約(参照整合性制約)を定義する。これにより存在しない部門コードを持つ社員行を作るといった矛盾を防げる。削除・更新時の動作をCASCADEなどで指定できる点も併せて押さえたい。
出典:平成29年度 秋期 基本情報技術者試験 午前 問27(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が含まれる組合せが適切です。
出典:平成29年度 春期 基本情報技術者試験 午前 問25(IPA)“得点”表から、学生ごとに全科目の点数の平均を算出し、平均が80点以上の学生の学生番号とその平均点を求める。aに入れる適切な字句はどれか。ここで、実線の下線は主…
正解:学生番号 HAVING AVG(点数) >= 80
要点:集約結果での絞り込みはWHEREでなくHAVINGを使う
学生ごとの平均を出すには、集計の単位となる学生番号でGROUP BYする必要がある。さらに「平均が80点以上」という条件は集約関数の結果に対する絞り込みなので、行単位で働くWHEREではなくグループ単位で働くHAVINGを使う。よって学生番号でグループ化し、HAVINGで平均点を判定する形になる。
出典:令和1年度 秋期 基本情報技術者試験 午前 問26(IPA)次のSQL文によって定義され,値が格納されている"商品"表に対して,制約違反で実行エラーとなるSQL文はどれか。 〔SQL文〕 CREATE TABLE 商品 …
正解:UPDATE 商品 SET 商品コード = 'A777' WHERE 在庫数 >= 20
要点:主キーは重複不可。複数行を同じ値に更新すると違反
商品コードは主キーなので、値の重複は許されない。在庫数が20以上の行はデジタルカメラ(50)と洗濯機(20)の2行あり、その両方の商品コードを同じ'A777'に更新しようとすると主キーの一意性制約に違反して実行エラーになる。他の3つは重複もNULLも生じないため正常に実行できる。
出典:令和8年度 (公開問題) 基本情報技術者試験 kamokuA 問7(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。