仮の宿 学習室 資格 基本情報技術者 合格ラボ データベース
基本情報技術者 FUNDAMENTAL IT ENGINEER
データベース
講義 4 本・確認問題 40 問 | 本試験では「科目A テクノロジ」(41問)の一部 | 最終更新 2026-09-24
この章で学ぶこと DBMSが何をしてくれるのかと、E-R図と正規化を使って表を設計する手順が分かります。 選択・射影・結合という関係演算の考え方と、それをSQLでどう書くかが分かります。 同時に何人が使っても矛盾が起きない仕組みと、その代償であるデッドロックが分かります。 壊れたデータベースをどう元に戻すかと、ためたデータをどう分析に生かすかが分かります。
1. データベース方式と設計
DBMSが何をしてくれるのかと、E-R図と正規化を使って表を設計する手順が分かります。
データベースとは、複数の業務や利用者が共同で使えるように、重複をできるだけ省いて整理して蓄えたデータの集まりです。これを管理するソフトウェアがデータベース管理システム(DBMS)で、データの定義、検索や更新の受付、複数人が同時に使っても矛盾が起きないようにする排他制御、障害が起きたときの回復、利用者ごとのアクセス権限の管理などをまとめて引き受けます。応用プログラムはファイルの中身を直接いじるのではなく、DBMSに「この条件の行がほしい」と頼む形になります。
データベースの構造は3層スキーマという三つの階層で考えます。外部スキーマは利用者や応用プログラムから見た見え方で、必要な部分だけを切り出したもの(ビューがその代表)です。概念スキーマはデータ全体の論理的な構造で、どんな表があってどんな項目を持つかを決めます。内部スキーマは記憶装置への実際の格納方法で、ファイル編成や索引の持ち方を決めます。三つに分けておくと、格納方法を変えても概念スキーマから上は直さずに済み(物理的データ独立性)、表の構造を足しても既存のプログラムを直さずに済みます(論理的データ独立性)。
現在の主流は関係データベースで、データを行と列から成る表(関係)で表します。設計はまず現実世界のモデル化から始めます。E-R図では、管理したいもの(社員、部門、商品など)を実体(エンティティ)、実体どうしのつながりを関連(リレーションシップ)として描き、関連には1対1・1対多・多対多という多重度(カーディナリティ)を付けます。関係データベースの表には多対多をそのまま書けないので、両方のキーを持つ表(連関エンティティ、たとえば履修表)を間に置いて、1対多と1対多の二つに分けて実装します。
次に、同じ事実が何か所にも重複して入って更新のたびに矛盾が起きる状態(更新時異状)を防ぐために正規化を行います。1行の中に繰返しがある非正規形から、どのます目にも値が一つだけ入る第1正規形へ。主キーの一部だけで決まる項目(部分関数従属)を別表に出して第2正規形へ。主キー以外の項目を経由して決まる項目(推移的関数従属)を別表に出して第3正規形へ、と段階的に分解します。実務では第3正規形まで進めるのが基本で、さらにすべての関数従属の決定項が候補キーになるようにしたものがボイスコッド正規形です。
表どうしのつながりはキーで保ちます。行を一意に識別できる項目の組が候補キーで、その中から選んだ一つが主キーです。主キーには重複値も空値(NULL)も入れられません(実体整合性制約)。他の表の主キーを参照する項目が外部キーで、外部キーの値は参照先に必ず存在するか、さもなければNULLでなければなりません(参照整合性制約)。この制約があるため、参照されている親の行をいきなり削除することはできません。
関係データベース以外の選択肢がNoSQLです。キーと値の組だけを高速に出し入れするキーバリュー型、JSONのような構造をそのまま入れられるドキュメント指向型、列単位でまとめて大量データの集計に強いカラム指向型、節点と辺でつながりをたどるグラフ指向型があります。表の形が決まっていなくてよい代わりに、SQLによる複雑な結合や厳密なトランザクションは苦手なことが多く、用途で使い分けます。
正規形の条件と、その段階で取り除くもの 正規形 条件 取り除くもの 例 非正規形 1行の中に繰返し(複数組の値)が入っている — 受注1行の中に商品名と数量を3組並べて持っている 第1正規形 どの行・どの列にも値が一つだけ入っている 繰返し部分 受注1行+商品ごとの明細行に分ける 第2正規形 第1正規形であり、主キー以外の項目が主キー全体に完全に関数従属する 部分関数従属(主キーの一部だけで決まる項目) 主キーが{受注番号,商品番号}の表から、商品番号→商品名を商品表へ出す 第3正規形 第2正規形であり、主キー以外の項目の間に関数従属がない 推移的関数従属(キー→A→B) 社員番号→部門コード→部門名 の部門名を部門表へ出す ボイスコッド正規形 すべての関数従属の決定項が候補キーである 候補キーでない決定項 候補キーが複数あって項目が重なるときに第3正規形との差が出る
用語 DBMS データベース管理システム。データの定義と操作、複数利用者の排他制御、障害からの回復、アクセス権限の管理などをまとめて行うソフトウェア。応用プログラムはDBMS経由でデータを扱う。 3層スキーマ データベースの構造を、利用者から見た外部スキーマ、全体の論理構造である概念スキーマ、記憶装置への格納方法である内部スキーマの三つに分けて定義する考え方。 データ独立性 格納方法を変えても論理構造から上に影響しない物理的データ独立性と、論理構造を変えても既存の応用プログラムに影響しない論理的データ独立性のこと。3層スキーマによって得られる。 E-R図 管理対象を実体(エンティティ)、実体どうしのつながりを関連(リレーションシップ)として表した図。関連には1対1・1対多・多対多という多重度(カーディナリティ)を付ける。 連関エンティティ 多対多の関連を関係データベースで実装するために、両側の主キーを組み合わせて持たせた中間の表。学生と講義の間に置く履修表などが該当する。 関数従属 ある項目Xの値が決まればYの値が一つに決まる関係。X→Yと書き、Xを決定項という。正規化は、この関数従属を手掛かりに表を分解していく作業である。 部分関数従属 複数の項目から成る主キーのうち、その一部だけで決まってしまう関数従属。これを別の表に分けて取り除くと第2正規形になる。 推移的関数従属 主キー→A→Bのように、主キー以外の項目を経由して決まる関数従属。これを別の表に分けて取り除くと第3正規形になる。 ボイスコッド正規形 すべての関数従属について、決定項が必ず候補キーになっている状態。第3正規形をさらに強めたもので、候補キーが複数あって項目が重なる場合に違いが出る。 候補キー 行を一意に識別でき、かつどの項目を欠いても識別できなくなる項目の組。一つの表に複数存在することがあり、その中から選んだ一つが主キーになる。 参照整合性制約 外部キーの値は、参照先の表に実在する主キーの値か、さもなければNULLでなければならないという決まり。参照されている行をそのまま削除することはできない。 NoSQL 関係データベース以外のデータ格納方式の総称。キーバリュー型、ドキュメント指向型、カラム指向型、グラフ指向型があり、大量データや構造が定まらないデータの扱いに向く。
例題
例題:例題:受注明細(受注番号, 商品番号, 商品名, 単価, 数量)は、主キーが{受注番号, 商品番号}で、商品名と単価は商品番号だけで決まる。何正規形か。
答えと考え方 答えは第1正規形。商品名と単価が主キーの一部である商品番号だけで決まる部分関数従属があるため、第2正規形の条件を満たさない。商品(商品番号, 商品名, 単価)と受注明細(受注番号, 商品番号, 数量)に分けると第2正規形になる。
例題:例題:「1人の著者は複数の本を書き、1冊の本は複数の著者が共同で書くことがある」をどう表にするか。
答えと考え方 著者と本は多対多なので、著者表と本表のほかに、著者IDと本IDの組を主キーとする執筆表を作る。こうすると著者→執筆が1対多、本→執筆が1対多となり、関係データベースの表として素直に表せる。
出典・根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データベース方式・データベース設計)
2. 関係演算とSQL
選択・射影・結合という関係演算の考え方と、それをSQLでどう書くかが分かります。
関係データベースの操作は、表から表を作り出す関係演算で説明できます。基本は三つです。選択(σ)は条件に合う行だけを取り出す横方向の絞り込み、射影(π)は指定した列だけを取り出す縦方向の絞り込み、結合(⋈)は共通する項目の値が一致する行どうしをつないで1本の行にする操作です。射影の結果は関係(集合)なので、重複する行は取り除かれる点に注意してください。
このほか、列の構成が同じ二つの関係に対して、和(両方を合わせる。重複は1行)、差(一方にあって他方にない行)、共通部分(両方にある行)が使えます。列の構成が違ってもよいのが直積で、すべての行の組合せを作るため、m行とn行の直積はm×n行になります。結合は「直積を作ってから条件で選択し、必要な列を射影したもの」と考えると理解しやすくなります。
実際の操作にはSQLを使います。検索はSELECT〜FROM〜WHEREが基本形で、SELECTに書く列が射影、WHEREに書く条件が選択に当たります。並べ替えはORDER BY(既定は昇順、DESCで降順)、重複を除くのはDISTINCTです。WHEREでは比較演算子のほか、範囲を指定するBETWEEN、値の並びに含まれるかを見るIN、部分一致のLIKE(%は0文字以上、_は任意の1文字)が使えます。空値かどうかはIS NULLで判定します。NULLは「値が分からない」という印なので、= NULLと書いても決して真になりません。
集計にはGROUP BYを使い、指定した列の値が同じ行をまとめて、COUNT・SUM・AVG・MAX・MINといった集約関数を適用します。グループに対する条件はHAVINGに書きます(行に対する条件のWHEREとは適用される段階が違い、WHEREはグループ化の前、HAVINGは後です)。集約関数はNULLを無視して数えたり平均したりしますが、COUNT(*)だけは行そのものを数えるのでNULLを含む行も1行と数えます。
複数の表をまたぐときは結合を使います。内部結合(INNER JOIN)は条件に合った行だけを残すので、相手が見つからない行は結果から消えます。消したくないときは外部結合(OUTER JOIN)を使い、左の表を全部残すLEFT OUTER JOIN、右を全部残すRIGHT OUTER JOIN、両方残すFULL OUTER JOINを選びます。相手のいない行では、相手側の列がNULLで埋められます。副問合せを使うと、内側のSELECTの結果を外側の条件に使えます。INは値の一覧との照合、EXISTSは「条件に合う行が1件でもあるか」の判定で、NOT EXISTSは「1件もない」を表します。
データの追加はINSERT、更新はUPDATE、削除はDELETEです。WHEREを書き忘れると全行が対象になるので注意します。CREATE TABLEでは、PRIMARY KEY(主キー)、NOT NULL(空値禁止)、UNIQUE(重複禁止)、CHECK(値の条件)、FOREIGN KEY〜REFERENCES(参照整合性)といった制約を宣言できます。制約に反する操作はDBMSがエラーにして受け付けないので、アプリケーション側の作り込みに頼らずデータの正しさを保てます。
よく使う検索を1本の名前にまとめたものがビューで、実データを持たない仮想の表です。参照されるたびに元の表から作られるため、元の表を更新すれば内容も変わります。特定の列だけを見せるビューを与えれば、アクセス制御にも使えます。検索を速くする仕組みが索引(インデックス)で、多くのDBMSはB木(B-tree)索引を使います。B木は値が順に並ぶ木構造なので、等価検索だけでなく範囲検索や並べ替えにも効きますが、索引を増やすと更新のたびに索引も直す必要があり、更新は遅くなります。
内部結合と外部結合の違い(部門4件、社員6名、うち1名は部門未所属、社員のいない部門が1件のとき) 結合の種類 結果に残る行 相手がいない行の扱い この例での結果 内部結合(INNER JOIN) 両方の表で条件に合った行だけ 結果に出てこない 5行(部門未所属の社員も、社員のいない部門も消える) 左外部結合(LEFT OUTER JOIN) 左に書いた表の行はすべて残す 右側の列がNULLになる 部門を左に書くと6行(社員のいない部門の氏名がNULL) 右外部結合(RIGHT OUTER JOIN) 右に書いた表の行はすべて残す 左側の列がNULLになる 部門を左・社員を右に書くと6行(部門未所属の社員の部門名がNULL) 完全外部結合(FULL OUTER JOIN) 両方の表の行をすべて残す 相手がいない側の列がNULLになる 7行(社員のいない部門も、部門未所属の社員も残る)
外部結合・集約・グループへの条件をまとめて使った例(社員が1名以下の部門を人数の多い順に並べる)
SELECT 部門.部門名, COUNT(社員.社員番号) AS 人数 FROM 部門 LEFT OUTER JOIN 社員 ON 部門.部門コード = 社員.部門コード GROUP BY 部門.部門名 HAVING COUNT(社員.社員番号) <= 1 ORDER BY 人数 DESC
用語 選択(σ) 関係から、条件を満たす行だけを取り出す関係演算。SQLではWHERE句が対応する。行数は減るが列の構成は変わらない。 射影(π) 関係から、指定した列だけを取り出す関係演算。結果は集合なので重複する行は取り除かれる。SQLではSELECTに並べる列が対応する。 結合(⋈) 二つの関係を、共通する項目の値が一致する行どうしでつないで1本の行にする関係演算。直積を作って条件で選択したものと考えることもできる。 直積 二つの関係のすべての行の組合せを作る演算。m行の関係とn行の関係の直積はm×n行になり、列は両方の列を並べたものになる。 DISTINCT SELECTの結果から重複する行を取り除く指定。射影の本来の動きに合わせたいときに書く。SQLでは指定しない限り重複行はそのまま残る。 GROUP BYとHAVING GROUP BYは指定した列の値が同じ行をまとめる。HAVINGはまとめたグループに対する条件で、行単位の条件を書くWHEREとは適用の段階が異なる。 集約関数 COUNT(件数)、SUM(合計)、AVG(平均)、MAX(最大)、MIN(最小)。NULLは無視して計算するが、COUNT(*)だけは行そのものを数えるのでNULLを含む行も数える。 内部結合 結合条件に合った行だけを結果に残す結合。相手の表に対応する行がない行は結果から消える。INNER JOINと書く。 外部結合 片側(または両側)の行をすべて残す結合。相手が見つからない行では、相手側の列がNULLで埋められる。LEFT/RIGHT/FULL OUTER JOINがある。 EXISTS 副問合せの結果に行が1件でもあれば真になる述語。NOT EXISTSは1件もないときに真。「〜がない部門」のような条件を書くときに使う。 IS NULL 値が空値かどうかを調べる述語。NULLは「値が不明」を表す印なので、= NULLや<> NULLでは判定できず、必ずIS NULL/IS NOT NULLを使う。 ビュー SELECT文に名前を付けた仮想の表。実データは持たず、参照のたびに元の表から作られる。よく使う検索の簡略化や、見せる列を絞るアクセス制御に使う。 B木索引 値が順序どおりに並ぶ木構造の索引。等価検索だけでなく範囲検索や並べ替えにも効く。作りすぎると更新のたびに索引の保守が必要になり、更新性能は落ちる。
例題
例題:例題:3行の関係Rと2行の関係S(列の構成は同じ)について、直積・和・差の行数はそれぞれいくつになるか。ただしRとSに共通する行が1行あるとする。
答えと考え方 直積は3×2=6行。和は重複を1行にまとめるので3+2−1=4行。差(R−S)はRにあってSにない行なので3−1=2行。共通部分は1行になる。
例題:例題:COUNT(*)とCOUNT(列名)はどう違うか。
答えと考え方 COUNT(*)は行そのものを数えるので、どの列がNULLでも1行と数える。COUNT(列名)はその列がNULLの行を数えない。6行のうち1行だけ給与がNULLなら、COUNT(*)は6、COUNT(給与)は5になる。AVGやSUMも同じくNULLを無視するので、平均はNULLを除いた5件で計算される。
出典・根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
3. トランザクションと排他制御
同時に何人が使っても矛盾が起きない仕組みと、その代償であるデッドロックが分かります。
口座Aから300円引いて口座Bに300円足す、のように、まとめて成功させるか、まとめて無かったことにするかのどちらかにしたい処理のかたまりをトランザクションといいます。処理を確定させることをコミット、途中でやめて開始前の状態に戻すことをロールバックといいます。DBMSはトランザクションが次の四つの性質(頭文字を取ってACID特性)を満たすように動きます。原子性(全部やるか全くやらないか)、一貫性(前後で矛盾のない状態が保たれる)、分離性(同時に動く他のトランザクションから影響を受けない)、耐久性(コミットした結果は障害が起きても失われない)です。
分離性を保つ代表的な方法が、ロックによる排他制御です。読むだけのときに掛ける共有ロックは、同じデータに対して複数のトランザクションが同時に掛けられます。書き換えるときに掛ける専有ロックは1件しか掛けられず、専有ロックが掛かっている間は他のトランザクションは共有ロックも専有ロックも掛けられません。つまり「読み×読み」は同時に進めますが、書込みが絡むと待たされます。
ロックを掛ける単位をロックの粒度といいます。表全体をまとめてロックすると管理は簡単ですが待たされる利用者が増え、行単位まで細かくすると同時に動ける度合いは上がるものの、ロックの管理そのものの負担が増えます。また、トランザクションの途中でロックを外したり掛けたりを繰り返すと直列化可能性が崩れるため、必要なロックをすべて掛け終わってから解除を始め、いったん解除を始めたら新たなロックは掛けないという2相ロック方式が使われます。
ロックには副作用があります。T1が資源Aを確保して資源Bを待ち、同時にT2が資源Bを確保して資源Aを待つと、互いに相手のロック解除を待ち続けて永久に進まなくなります。これがデッドロックです。防ぐ基本は、すべてのトランザクションで資源をロックする順序をそろえることです。それでも起きうるので、DBMSは待ちの関係を監視して検出し、どちらかを強制的にロールバックさせて解消します。
分離性を厳しくするほど安全ですが同時に動ける度合いは下がるため、SQLでは分離性のレベルを選べます。レベルが緩いと、まだコミットされていない他人の更新を読んでしまうダーティリード、同じ行を2回読むと値が変わっている反復不能読取り、同じ条件で2回検索すると前になかった行が現れるファントムリードといった異常が起こり得ます。READ UNCOMMITTEDでは三つとも起こり、READ COMMITTEDではダーティリードが消え、REPEATABLE READでは反復不能読取りも消え、SERIALIZABLEでは三つとも起きません。
複数のサイトに分かれた分散データベースを一つのトランザクションとして確定するには、2相コミットを使います。まず調停役が全サイトに「コミットできるか」を問い合わせ(第1相)、全サイトから可の回答が返ったときだけコミットを指示します(第2相)。1サイトでも不可があれば全サイトにロールバックを指示するので、一部だけ更新された状態になりません。ただし第1相の回答後に調停役が止まると、各サイトはコミットもロールバックもできない宙ぶらりんの状態になります。
ACID特性と、分離性のレベルごとに起こり得る異常 区分 項目 内容 ACID特性 原子性(Atomicity) トランザクション内の処理は、全部実行されるか全く実行されないかのどちらかになる ACID特性 一貫性(Consistency) 処理の前後で、データベースが矛盾のない状態に保たれる ACID特性 分離性(Isolation) 同時に動く他のトランザクションから影響を受けず、1件ずつ順に実行したのと同じ結果になる ACID特性 耐久性(Durability) コミットした結果は、障害が起きても失われない 分離性のレベル READ UNCOMMITTED ダーティリード・反復不能読取り・ファントムリードのすべてが起こり得る 分離性のレベル READ COMMITTED ダーティリードは起きない。反復不能読取りとファントムリードは起こり得る 分離性のレベル REPEATABLE READ ダーティリードと反復不能読取りは起きない。ファントムリードは起こり得る 分離性のレベル SERIALIZABLE 三つとも起きないが、同時に実行できる度合いは最も低い
用語 トランザクション まとめて成功させるか、まとめて取り消すかのどちらかにしたい一連の処理のかたまり。データベースを矛盾のない状態から別の矛盾のない状態へ移す単位になる。 コミット トランザクションの処理結果を確定させ、データベースに正式に反映させる操作。コミット後の結果は障害が起きても失われないようにDBMSが保証する。 ロールバック トランザクションを途中でやめ、更新前ログを使って開始前の状態に戻す操作。異常終了やデッドロック解消のためにDBMSが自動で行うこともある。 ACID特性 トランザクションが備えるべき四つの性質。原子性(Atomicity)、一貫性(Consistency)、分離性(Isolation)、耐久性(Durability)の頭文字を並べたもの。 共有ロック データを読むときに掛けるロック。同じデータに対して複数のトランザクションが同時に掛けられるが、掛かっている間は誰も専有ロックを掛けられない。 専有ロック データを更新するときに掛けるロック。1件しか掛けられず、掛かっている間は他のトランザクションは共有ロックも専有ロックも掛けられない。占有ロックともいう。 ロックの粒度 ロックを掛ける単位の大きさ。表単位のように粗いと管理は簡単だが待ちが増え、行単位のように細かいと同時実行性は上がるが管理の負担が増える。 2相ロック方式 必要なロックをすべて掛け終えてから解除を始め、いったん解除を始めたら新しいロックは掛けないという規約。守れば実行結果が直列実行と同じになることが保証される。 デッドロック 複数のトランザクションが互いに相手のロック解除を待ち続け、どちらも進めなくなる状態。ロックする順序を統一すると防ぎやすく、起きた場合は片方をロールバックして解消する。 ダーティリード 他のトランザクションがまだコミットしていない更新途中の値を読んでしまう異常。読んだ後に相手がロールバックすると、存在しなかった値を基に処理したことになる。 反復不能読取り 同じトランザクションの中で同じ行を2回読んだのに、間に他のトランザクションが更新してコミットしたために値が変わっている異常。 ファントムリード 同じ条件で2回検索したのに、間に他のトランザクションが行を追加したために、1回目になかった行が2回目に現れる異常。 2相コミット 分散データベースで、全サイトにコミット可否を問い合わせる第1相と、全サイトが可のときだけコミットを指示する第2相に分けて確定する方式。一部だけ更新された状態を防ぐ。
例題
例題:例題:T1が口座表の行Xに専有ロックを掛けている。T2が同じ行Xを読みたいとき、T2はどうなるか。
答えと考え方 T2は共有ロックを掛けられないので、T1がコミットまたはロールバックしてロックを解除するまで待たされる。逆にT1が共有ロック(読取り)だけを掛けている場合は、T2も共有ロックを掛けて同時に読める。
例題:例題:デッドロックを起こしにくくする工夫を二つ挙げよ。
答えと考え方 一つはロックする資源の順序をすべてのトランザクションでそろえること(例:常に口座番号の小さい順に掛ける)。もう一つはトランザクションを短くして、ロックを持つ時間を減らすこと。それでも起きた場合は、DBMSが検出して片方をロールバックする。
出典・根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(トランザクション処理)
4. 障害回復とデータの活用
壊れたデータベースをどう元に戻すかと、ためたデータをどう分析に生かすかが分かります。
DBMSは更新のたびに、その内容をログ(ジャーナル)というファイルに記録しています。ログには更新前の値(更新前ログ)と更新後の値(更新後ログ)の両方が書かれます。この二つがあるおかげで、時間を戻すことも進めることもできます。更新前ログを使って更新前の状態に戻すのがロールバック(後退復帰)、更新後ログを使って更新をやり直し、後の状態へ進めるのがロールフォワード(前進復帰)です。どちらを使うかは、何が壊れたかで決まります。
トランザクション障害は、プログラムの誤りやデッドロックの解消などで1件のトランザクションだけが異常終了した状態です。データベースそのものは無事なので、そのトランザクションが行った更新だけを更新前ログで取り消せば済みます(ロールバック)。
システム障害は、停電やOSの異常終了でDBMSが止まった状態です。ディスクの内容は無事ですが、メモリ上のバッファにしかなかった更新が失われている可能性があります。そこで再起動時に、障害発生時点で未完了だったトランザクションは更新前ログでロールバックし、コミット済みなのにディスクへ反映されていなかったトランザクションは更新後ログでロールフォワードします。このとき、バッファの内容をディスクに書き出して同期を取った時点であるチェックポイントを手掛かりにすると、ログをすべて読み直さずに、直前のチェックポイント以降だけを見ればよくなり、回復が速くなります。
媒体障害は、ディスクが故障してデータベースのファイルそのものが読めなくなった状態です。ログだけでは元のデータがないので戻せません。別に保存しておいたバックアップファイルを正常な装置に復元し、そこから更新後ログを使ってバックアップ取得後の更新をやり直します(ロールフォワード)。バックアップとログを同じディスクに置いていると同時に失われるため、別の媒体に保管することが重要です。
こうしてためたデータは、日々の処理だけでなく分析にも使えます。基幹システムから集めた時系列のデータを、分析しやすい形に再編して蓄積したものがデータウェアハウスです。そのうち特定の部門や目的に合わせて一部を切り出したものがデータマート、加工せずに生のまま、形式も問わずに大量にためておく置き場がデータレイクです。基幹システムからデータを抽出・変換・格納する処理をETLといいます。
分析の手法にも名前が付いています。OLAPは、商品・地域・期間といった複数の軸(多次元)でデータを切り口を変えながら対話的に集計する仕組みで、軸を掘り下げるドリルダウンなどの操作を行います。データマイニングは、大量のデータに統計や機械学習の手法を当てて、これまで知られていなかった規則性や関係(例:この商品を買う人はあの商品も買う)を見つけ出すことです。なお、日々の受注入力のようにその場の取引を処理する仕組みはOLTPと呼び、OLAPとは目的が異なります。近年は、量(Volume)・速さ(Velocity)・多様性(Variety)で特徴づけられるビッグデータを扱う場面が増え、構造の決まっていないデータも含めて蓄積・分析できる基盤が求められています。
障害の種類と回復方法/ロールバックとロールフォワードの使い分け 種類 何が起きたか 回復の方法 使うもの トランザクション障害 プログラムの誤りやデッドロックの解消で、1件のトランザクションだけが異常終了した そのトランザクションの更新だけを取り消す(ロールバック) 更新前ログ システム障害 停電やOSの異常終了でDBMSが停止した。ディスクの内容は無事 未完了のトランザクションはロールバック、コミット済みでディスク未反映のものはロールフォワード 更新前ログ・更新後ログ・チェックポイント 媒体障害 ディスクが故障し、データベースのファイル自体が読めない バックアップファイルを復元してからロールフォワード バックアップファイル・更新後ログ (用語)ロールバック 処理をなかったことにして時間を戻す 更新前の値でデータを書き戻す 更新前ログ (用語)ロールフォワード 失われた更新をやり直して時間を進める 更新後の値でデータを書き直す バックアップ+更新後ログ
用語 ログ(ジャーナル) データベースへの更新を、更新前の値と更新後の値とともに記録したファイル。障害回復の要であり、データベース本体とは別の装置に置くのが基本。 ロールバック 更新前ログを使って、データベースを更新前の状態に戻すこと。後退復帰ともいう。トランザクション障害や、システム障害時の未完了トランザクションに対して行う。 ロールフォワード 更新後ログを使って、更新をやり直して後の状態へ進めること。前進復帰ともいう。媒体障害ではバックアップの復元後に、システム障害ではコミット済みの更新に対して行う。 チェックポイント メモリ上のバッファの内容をディスクに書き出して同期を取る時点。システム障害からの回復で、直前のチェックポイント以降のログだけを見ればよくなり、回復時間が短くなる。 トランザクション障害 プログラムの誤りやデッドロックの解消などで、1件のトランザクションだけが異常終了した障害。そのトランザクションをロールバックすれば回復できる。 システム障害 停電やOSの異常終了でDBMSが停止した障害。ディスクの内容は無事なので、再起動時にロールバックとロールフォワードを組み合わせて回復する。 媒体障害 ディスクの故障などでデータベースのファイル自体が読めなくなった障害。バックアップを復元し、更新後ログでロールフォワードして回復する。 データウェアハウス 基幹システムから集めた時系列のデータを、分析しやすい形に再編して蓄積したもの。原則として更新せず、時間の経過とともにためていく。 データマート データウェアハウスから、特定の部門や分析目的に合わせて必要な部分だけを切り出した小規模なデータの集まり。 データレイク 加工していない生のデータを、構造化・非構造化を問わずそのままの形で大量にためておく置き場。使うときに目的に合わせて加工する。 ETL Extract(抽出)・Transform(変換)・Load(格納)の略。基幹システムからデータを取り出し、形式をそろえてデータウェアハウスへ入れる一連の処理。 OLAP 商品・地域・期間などの複数の軸でデータを集計し、切り口を変えながら対話的に分析する仕組み。軸を掘り下げるドリルダウンなどの操作を行う。 データマイニング 大量のデータに統計や機械学習の手法を当てて、これまで知られていなかった規則性や関係を見つけ出すこと。分析の目的が事前に決まっていない点がOLAPと異なる。 ビッグデータ 量(Volume)・速さ(Velocity)・多様性(Variety)で特徴づけられる大規模なデータ。従来の関係データベースだけでは扱いにくく、分散処理やNoSQLと組み合わせて活用する。
例題
例題:例題:チェックポイント後にコミットしたトランザクションT1と、コミットせずに障害を迎えたT2がある。システム障害からの再起動時、それぞれどう扱われるか。
答えと考え方 T1はコミット済みなので、ディスクに反映されていない分を更新後ログでロールフォワードして完了させる。T2は未完了なので、更新前ログでロールバックして開始前の状態に戻す。チェックポイント以前に完了しディスクへ書き出されている分は、そのままでよい。
例題:例題:バックアップとログを、データベース本体と同じディスクに置いてはいけないのはなぜか。
答えと考え方 そのディスクが故障する媒体障害では、データベースもバックアップもログも同時に失われ、回復手段がなくなるから。ロールフォワードにはバックアップと更新後ログの両方が必要なので、別の媒体・別の場所に保管する。
出典・根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(トランザクション処理・データベース応用)
確認問題(40問) 四肢択一。「正解と解説」を開くと、正解の理由と他の選択肢が違う理由を確認できます。
問1|DBMSの役割
データベース管理システム(DBMS)が提供する機能として、適切でないものはどれか。
複数の利用者が同時に同じデータを更新しても矛盾が生じないように、排他制御を行う 障害が起きたときに、ログやバックアップを使ってデータベースを回復する 利用者や応用プログラムごとに、参照や更新ができる表や列を制限する 表に格納されたデータの内容を判断して、取引先へ電子メールで自動的に送信する 正解と解説 正解:D. 表に格納されたデータの内容を判断して、取引先へ電子メールで自動的に送信する DBMSはデータの定義と操作に加え、排他制御、障害回復、アクセス権限の管理を行うソフトウェアであり、業務の内容を判断して外部へ通知するといった処理は応用プログラムの役割である。排他制御・障害回復・アクセス権限の管理は、いずれもDBMSが標準で備える代表的な機能である。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データベース方式)
問2|3層スキーマ
3層スキーマアーキテクチャにおいて、データを記憶装置にどう格納するか(ファイル編成や索引の持ち方)を定義するものはどれか。
外部スキーマ 概念スキーマ 内部スキーマ データディクショナリ 正解と解説 正解:C. 内部スキーマ 内部スキーマは記憶装置上の物理的な格納方法を定義する層で、索引やファイル編成はここで決める。外部スキーマは利用者や応用プログラムから見た部分的な見え方(ビューなど)、概念スキーマはデータ全体の論理構造を表す層である。データディクショナリはデータの定義情報を集めた辞書であり、3層スキーマの階層名ではない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データベース方式)
問3|E-R図
「1人の社員は必ず一つの部門に所属し、一つの部門には複数の社員が所属する」という関係をE-R図で表すとき、社員と部門の間の多重度(カーディナリティ)はどれか。
部門1件に対して社員が複数となる、1対多の関連 社員1人に対して部門が複数となる、1対多の関連 1対1の関連 多対多の関連 正解と解説 正解:A. 部門1件に対して社員が複数となる、1対多の関連 1人の社員が所属する部門は一つだけなので社員側から見ると1、一つの部門には複数の社員がいるので部門側から見ると多となり、部門1に対し社員多の1対多である。社員1人に複数の部門が対応するわけではないので向きが逆のものは誤り。1対1では1部門に1人しか所属できず、多対多は1人の社員が複数部門に所属できる場合であり、いずれも問題文の条件に合わない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データベース設計)
問4|多対多の実装
「1人の学生は複数の講義を履修でき、1つの講義は複数の学生が履修する」という多対多の関連を、関係データベースの表として実装する方法として最も適切なものはどれか。
学生表に、履修する講義番号をすべて並べて格納する列を一つ設ける 講義表に、履修する学生の学生番号を格納する列を一つだけ設ける 学生表と講義表を一つの表に統合し、重複する項目は繰り返して持たせる 学生表・講義表とは別に、学生番号と講義番号の組を主キーとする履修表を設ける 正解と解説 正解:D. 学生表・講義表とは別に、学生番号と講義番号の組を主キーとする履修表を設ける 多対多の関連は表としてそのまま表現できないため、双方の主キーの組を持つ連関エンティティ(この場合は履修表)を間に置き、学生対履修と講義対履修という二つの1対多に分解する。一つの列に複数の番号を並べる案は繰返し部分を持つことになり第1正規形を満たさず検索もできない。列を一つだけ設ける案では2人目以降が登録できず、二つの表を統合する案は同じ情報の重複を招く。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データベース設計)
問5|第1正規形
非正規形の表を第1正規形にするために行う操作はどれか。
1行の中に複数組の値が入っている繰返し部分を取り除き、どの行・どの列にも値が一つだけ入るようにする 主キーの一部だけで決まる部分関数従属の項目を、別の表に分ける 主キー以外の項目を経由して決まる推移的関数従属の項目を、別の表に分ける すべての関数従属について、その決定項が候補キーになるように表を分ける 正解と解説 正解:A. 1行の中に複数組の値が入っている繰返し部分を取り除き、どの行・どの列にも値が一つだけ入るようにする 第1正規形は、どのます目にも値が一つしか入っていない状態を指すので、繰返し部分を別の行(明細行)に分けるのが正しい。主キーの一部だけで決まる項目(部分関数従属)を分けるのは第2正規形、主キー以外の項目を経由して決まる項目(推移的関数従属)を分けるのは第3正規形、決定項がすべて候補キーになるようにするのはボイスコッド正規形の操作である。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データベース設計)
問6|第2正規形
受注明細(受注番号, 商品番号, 商品名, 数量)という表があり、主キーは{受注番号, 商品番号}である。商品名は商品番号だけで一意に決まる。この表を第2正規形にするために取り除くべき関数従属はどれか。
推移的関数従属 部分関数従属 多値従属性 自明な関数従属 正解と解説 正解:B. 部分関数従属 商品名は主キー{受注番号, 商品番号}の一部である商品番号だけで決まるので、これは部分関数従属である。商品(商品番号, 商品名)と受注明細(受注番号, 商品番号, 数量)に分けると第2正規形になる。推移的関数従属は主キー以外の項目を経由して決まる従属で、これを取り除くのは第3正規形の段階。多値従属性は第4正規形で扱う概念であり、自明な関数従属は右辺が左辺に含まれるもので分解の対象ではない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データベース設計)
問7|第3正規形
社員(社員番号, 氏名, 部門コード, 部門名)という表がある。主キーは社員番号であり、社員番号→部門コード、部門コード→部門名という関数従属が成り立つ。繰返し部分はない。この表についての説明として適切なものはどれか。
部門コードが主キーの一部だけで決まる部分関数従属があるので、第2正規形を満たしていない 部門名は部門コードから決まっているだけなので、既に第3正規形を満たしており、これ以上分解する必要はない 1行の中に部門の情報が繰り返し現れているので、第1正規形を満たしていない 部門名が社員番号に推移的に関数従属しているので第3正規形ではなく、部門(部門コード, 部門名)を分ければ第3正規形になる 正解と解説 正解:D. 部門名が社員番号に推移的に関数従属しているので第3正規形ではなく、部門(部門コード, 部門名)を分ければ第3正規形になる 社員番号→部門コード→部門名という経路で部門名が決まっており、これは推移的関数従属なので第3正規形ではない。部門コードと部門名を別の表に出せば第3正規形になる。主キーが社員番号という単一項目なので主キーの一部だけで決まる部分関数従属は存在せず第2正規形は満たしており、繰返し部分もないので第1正規形は満たしている。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データベース設計)
問8|正規形の判定
受講(社員番号, 講座番号, 受講日, 社員名)という表がある。主キーは{社員番号, 講座番号}で、受講日は{社員番号, 講座番号}の組で決まり、社員名は社員番号だけで決まる。繰返し部分はない。この表が満たしている最も高い正規形はどれか。
非正規形 第1正規形 第2正規形 第3正規形 正解と解説 正解:B. 第1正規形 繰返し部分がないので第1正規形は満たしているが、社員名が主キーの一部である社員番号だけで決まる部分関数従属があるため第2正規形の条件を満たさない。よって最も高い正規形は第1正規形である。社員(社員番号, 社員名)を分離すれば第2正規形になり、この例では他に関数従属がないので同時に第3正規形にもなる。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データベース設計)
問9|ボイスコッド
ボイスコッド正規形(BCNF)の条件を述べたものはどれか。
すべての関数従属について、その決定項(左辺)が候補キーになっている 主キー以外のすべての項目が、主キー全体に完全に関数従属している どの行・どの列にも値が一つだけ入っており、繰返し部分がない 主キー以外の項目どうしの間に関数従属が存在しない 正解と解説 正解:A. すべての関数従属について、その決定項(左辺)が候補キーになっている ボイスコッド正規形は、表に成り立つすべての関数従属の決定項が候補キーであることを要求する、第3正規形をさらに強めた正規形である。主キー全体への完全関数従属は第2正規形、値が一つだけで繰返しがないのは第1正規形、主キー以外の項目間に関数従属がないのは第3正規形の条件であり、いずれもBCNFの定義ではない。候補キーが複数あって項目が重なる場合に、第3正規形とBCNFの差が現れる。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データベース設計)
問10|キーの種類
関係データベースのキーに関する説明として、適切なものはどれか。
主キーは必ず一つの列でなければならず、複数の列を組み合わせて主キーにすることはできない 候補キーは一つの表に必ず一つしか存在しない 行を一意に識別できる候補キーの中から一つを選んだものが主キーであり、主キーには重複した値も空値(NULL)も入れられない 外部キーは同じ表の中の主キーを別名で参照するための列であり、他の表を参照することはできない 正解と解説 正解:C. 行を一意に識別できる候補キーの中から一つを選んだものが主キーであり、主キーには重複した値も空値(NULL)も入れられない 候補キーのうち一つを選んだものが主キーで、行を一意に識別するために重複値も空値も許されない(実体整合性制約)。主キーは受注明細の{受注番号, 商品番号}のように複数列の組でもよく、候補キーは一つの表に複数存在することがある。外部キーは他の表の主キーを参照する列で、その値は参照先に実在するかNULLでなければならない(参照整合性制約)。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データベース設計)
問11|NoSQL
NoSQLデータベースのうち、利用者や商品などを節点(ノード)として保存し、「購入した」「友人である」といった節点どうしのつながり(エッジ)をたどる検索を得意とするものはどれか。
キーバリュー型 ドキュメント指向型 カラム指向型 グラフ指向型 正解と解説 正解:D. グラフ指向型 グラフ指向型は節点と辺でデータの関係そのものを保持し、つながりをたどる検索に強いため、交友関係や推薦に使われる。キーバリュー型はキーと値の組を高速に出し入れするだけの単純な構造、ドキュメント指向型はJSONのような入れ子の文書をそのまま格納する方式、カラム指向型は列単位でデータをまとめて大量データの集計を速くする方式であり、いずれもつながりをたどる検索を主目的とはしていない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データベース方式)
問12|選択
関係「受注」は次の6行から成る。(受注番号, 顧客名, 商品名, 数量)=(1, 山田, ペン, 3)、(2, 佐藤, ノート, 5)、(3, 山田, ノート, 2)、(4, 鈴木, ペン, 4)、(5, 佐藤, ペン, 1)、(6, 山田, 消しゴム, 6)。関係演算の選択(σ)によって「数量が3以上」という条件で行を取り出したとき、結果は何行になるか。
2行 3行 4行 5行 正解と解説 正解:C. 4行 数量が3以上なのは受注番号1(3)、2(5)、4(4)、6(6)の4行である。受注番号3は数量2、受注番号5は数量1なので条件に合わない。選択は条件に合う行だけを残す横方向の絞り込みなので、列の構成は元のまま変わらず、行数だけが6行から4行に減る。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
問13|射影
関係「受注」は次の6行から成る。(受注番号, 顧客名, 商品名, 数量)=(1, 山田, ペン, 3)、(2, 佐藤, ノート, 5)、(3, 山田, ノート, 2)、(4, 鈴木, ペン, 4)、(5, 佐藤, ペン, 1)、(6, 山田, 消しゴム, 6)。この関係に射影(π)を行って商品名の列だけを取り出したとき、結果は何行になるか。
2行 3行 4行 6行 正解と解説 正解:B. 3行 商品名の値はペン・ノート・ノート・ペン・ペン・消しゴムだが、関係演算の射影の結果は集合として扱われ重複行が取り除かれるので、ペン・ノート・消しゴムの3行になる。SQLで同じ結果を得るにはSELECT DISTINCT 商品名と書く必要があり、DISTINCTを付けなければ重複したまま6行が返る点に注意する。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
問14|選択と射影
関係「受注」は次の6行から成る。(受注番号, 顧客名, 商品名, 数量)=(1, 山田, ペン, 3)、(2, 佐藤, ノート, 5)、(3, 山田, ノート, 2)、(4, 鈴木, ペン, 4)、(5, 佐藤, ペン, 1)、(6, 山田, 消しゴム, 6)。商品名が「ノート」である行を選択し、その結果から顧客名を射影したとき、得られる顧客名の集合はどれか。
{山田} {佐藤} {佐藤, 山田} {山田, 佐藤, 鈴木} 正解と解説 正解:C. {佐藤, 山田} 商品名がノートなのは受注番号2(佐藤)と3(山田)の2行なので、顧客名を取り出すと佐藤と山田の2件になる。山田だけ、佐藤だけでは片方が漏れる。鈴木が注文したのはペンなので、選択の段階で除かれておりノートの購入者には含まれない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
問15|結合の行数
関係「受注」は(受注番号, 顧客名, 商品名, 数量)=(1, 山田, ペン, 3)、(2, 佐藤, ノート, 5)、(3, 山田, ノート, 2)、(4, 鈴木, ペン, 4)、(5, 佐藤, ペン, 1)、(6, 山田, 消しゴム, 6)の6行から成る。関係「顧客」は(顧客名, 地区)=(山田, 東京)、(佐藤, 大阪)、(田中, 名古屋)の3行から成る。この二つを顧客名が等しいという条件で結合(内部結合)したとき、結果は何行になるか。
3行 5行 6行 18行 正解と解説 正解:B. 5行 山田の受注が3行、佐藤の受注が2行で、いずれも顧客に対応する行があるので3+2=5行になる。鈴木は顧客に存在しないので受注番号4は結果から消え、田中は受注がないので結果に現れない。18行は直積(6×3)の行数であり、結合は直積のうち条件を満たす行だけを残したものなので一致しない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
問16|外部結合
関係「受注」は(受注番号, 顧客名, 商品名, 数量)=(1, 山田, ペン, 3)、(2, 佐藤, ノート, 5)、(3, 山田, ノート, 2)、(4, 鈴木, ペン, 4)、(5, 佐藤, ペン, 1)、(6, 山田, 消しゴム, 6)の6行、関係「顧客」は(顧客名, 地区)=(山田, 東京)、(佐藤, 大阪)、(田中, 名古屋)の3行から成る。受注を左、顧客を右として顧客名で左外部結合したとき、結果の行数と、地区の値がNULLになる行の組合せはどれか。
5行であり、地区がNULLになる行はない 6行であり、受注番号5の行の地区がNULLになる 18行であり、地区がNULLになる行はない 6行であり、受注番号4の行の地区がNULLになる 正解と解説 正解:D. 6行であり、受注番号4の行の地区がNULLになる 左外部結合は左側の受注の6行をすべて残すので結果は6行になる。顧客に存在しない鈴木の受注(受注番号4)だけが相手を見つけられず、右側の列である地区がNULLで埋められる。受注番号5は佐藤なので大阪が入りNULLにはならない。相手のない行が消えて5行になるのは内部結合の場合、18行になるのは直積の場合である。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
問17|和・差・積
同じ列の構成(会員番号)をもつ関係Aと関係Bがあり、Aの内容は{1001, 1002, 1003}、Bの内容は{1002, 1004}である。A∪B(和)、A−B(差)、A×B(直積)の結果の行数の組合せはどれか。
和は4行、差は2行、直積は6行 和は5行、差は3行、直積は6行 和は4行、差は1行、直積は5行 和は5行、差は2行、直積は9行 正解と解説 正解:A. 和は4行、差は2行、直積は6行 和は両方の行を合わせて重複を1行にまとめるので{1001, 1002, 1003, 1004}の4行、差はAにあってBにない行なので{1001, 1003}の2行、直積はすべての組合せなので3×2=6行になる。和を単純に3+2=5行とするのは重複した1002を二重に数えた誤り、直積を3+2や3×3とするのも誤りである。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
問18|WHERE句
商品表の内容は(商品番号, 商品名, 単価, 分類)=(G01, ボールペン, 120, 文具)、(G02, ノート, 250, 文具)、(G03, マウス, 1800, PC用品)、(G04, キーボード, 3500, PC用品)、(G05, USBメモリ, 980, PC用品)である。次のSQL文を実行したときの結果の行数と、1行目に表示される商品名の組合せはどれか。
検索するSQL文
SELECT 商品名, 単価 FROM 商品 WHERE 単価 BETWEEN 200 AND 2000 ORDER BY 単価 DESC 3行・マウス 3行・ノート 2行・マウス 4行・キーボード 正解と解説 正解:A. 3行・マウス BETWEEN 200 AND 2000は境界値を含むので、単価が250のノート、1800のマウス、980のUSBメモリの3行が該当する。4行目のORDER BY 単価 DESCで単価の降順に並ぶため、先頭はマウス(1800)になる。ノートが先頭になるのは昇順の場合であり、ボールペン(120)とキーボード(3500)は範囲外なので選ばれない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
問19|GROUP BY
売上表の内容は(伝票番号, 商品番号, 数量)=(1, G01, 10)、(2, G03, 2)、(3, G02, 5)、(4, G01, 3)、(5, G05, 1)、(6, G03, 4)である。次のSQL文を実行したとき、結果は何行になるか。
集計するSQL文
SELECT 商品番号, SUM(数量) AS 合計 FROM 売上 GROUP BY 商品番号 HAVING SUM(数量) >= 5 2行 3行 4行 6行 正解と解説 正解:B. 3行 商品番号ごとの合計はG01が10+3=13、G02が5、G03が2+4=6、G05が1となる。4行目のHAVINGで合計5以上のグループだけを残すので、G01・G02・G03の3行が返る。グループ化だけなら4行だが、G05は合計1なので除かれる。6行は元の行数であり、GROUP BYで商品番号ごとにまとめられるため一致しない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
問20|NULLと集約
社員表の内容は(社員番号, 氏名, 部門コード, 給与)=(S001, 佐藤, D01, 300000)、(S002, 鈴木, D01, 420000)、(S003, 高橋, D02, 380000)、(S004, 田中, D02, 250000)、(S005, 伊藤, D03, 500000)、(S006, 渡辺, NULL, NULL)である。次のSQL文を実行したときの3つの値の組合せはどれか。
集約関数を並べたSQL文
SELECT COUNT(*), COUNT(給与), AVG(給与) FROM 社員 6、6、約308,333 6、5、約308,333 6、5、370,000 5、5、370,000 正解と解説 正解:C. 6、5、370,000 COUNT(*)は行そのものを数えるので、給与がNULLの渡辺の行も含めて6になる。COUNT(給与)はNULLを数えないので5。AVG(給与)もNULLを無視し、NULLでない5件の合計1,850,000を5で割った370,000になる。1,850,000を6で割った約308,333は、NULLを0とみなして6件で平均した場合の誤った値である。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
問21|内部結合
社員表の内容は(社員番号, 氏名, 部門コード)=(S001, 佐藤, D01)、(S002, 鈴木, D01)、(S003, 高橋, D02)、(S004, 田中, D02)、(S005, 伊藤, D03)、(S006, 渡辺, NULL)であり、部門表の内容は(部門コード, 部門名)=(D01, 総務)、(D02, 営業)、(D03, 開発)、(D04, 人事)である。次のSQL文を実行したとき、結果は何行になるか。
内部結合のSQL文
SELECT 社員.氏名, 部門.部門名 FROM 社員 INNER JOIN 部門 ON 社員.部門コード = 部門.部門コード 4行 5行 6行 9行 正解と解説 正解:B. 5行 内部結合は結合条件を満たす行だけを残すので、部門コードがD01の2名、D02の2名、D03の1名の合計5行になる。部門コードがNULLの渡辺はどの部門とも一致しないため消え、社員がいない人事(D04)も現れない。6行になるのは社員を全部残す外部結合の場合であり、9行は結合条件を無視した組合せの数え誤りである。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
問22|左外部結合
社員表の内容は(社員番号, 氏名, 部門コード)=(S001, 佐藤, D01)、(S002, 鈴木, D01)、(S003, 高橋, D02)、(S004, 田中, D02)、(S005, 伊藤, D03)、(S006, 渡辺, NULL)であり、部門表の内容は(部門コード, 部門名)=(D01, 総務)、(D02, 営業)、(D03, 開発)、(D04, 人事)である。次のSQL文を実行したときの結果の行数と、氏名がNULLになる行の部門名の組合せはどれか。
左外部結合のSQL文
SELECT 部門.部門名, 社員.氏名 FROM 部門 LEFT OUTER JOIN 社員 ON 部門.部門コード = 社員.部門コード 5行であり、氏名がNULLになる行はない 6行であり、氏名がNULLになる行の部門名は総務 7行であり、氏名がNULLになる行の部門名は人事 6行であり、氏名がNULLになる行の部門名は人事 正解と解説 正解:D. 6行であり、氏名がNULLになる行の部門名は人事 左に書いた部門の行をすべて残すので、総務2行、営業2行、開発1行に、社員のいない人事1行を加えた6行になる。人事の行は結合相手がないため、右側の列である氏名がNULLで埋められる。総務にはD01の社員が2名いるのでNULLにはならない。5行は内部結合の結果であり、部門コードがNULLの渡辺は左外部結合では残らないので7行にもならない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
問23|副問合せ
社員表の内容は(社員番号, 氏名, 部門コード)=(S001, 佐藤, D01)、(S002, 鈴木, D01)、(S003, 高橋, D02)、(S004, 田中, D02)、(S005, 伊藤, D03)、(S006, 渡辺, NULL)であり、部門表の内容は(部門コード, 部門名)=(D01, 総務)、(D02, 営業)、(D03, 開発)、(D04, 人事)である。次のSQL文を実行したときに得られる氏名の組合せはどれか。
副問合せを使ったSQL文
SELECT 氏名 FROM 社員 WHERE 部門コード IN (SELECT 部門コード FROM 部門 WHERE 部門名 IN ('営業', '開発')) 佐藤、鈴木 高橋、田中 高橋、田中、伊藤 佐藤、鈴木、伊藤、渡辺 正解と解説 正解:C. 高橋、田中、伊藤 内側の副問合せは営業のD02と開発のD03を返し、外側はその部門コードを持つ社員を選ぶので、D02の高橋・田中とD03の伊藤の3名になる。佐藤と鈴木はD01(総務)なので該当しない。渡辺は部門コードがNULLで、NULLはINの比較で真にならないため結果に含まれない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
問24|NOT EXISTS
社員表の内容は(社員番号, 氏名, 部門コード)=(S001, 佐藤, D01)、(S002, 鈴木, D01)、(S003, 高橋, D02)、(S004, 田中, D02)、(S005, 伊藤, D03)、(S006, 渡辺, NULL)であり、部門表の内容は(部門コード, 部門名)=(D01, 総務)、(D02, 営業)、(D03, 開発)、(D04, 人事)である。次のSQL文の実行結果はどれか。
相関副問合せを使ったSQL文
SELECT B.部門名 FROM 部門 B WHERE NOT EXISTS (SELECT * FROM 社員 S WHERE S.部門コード = B.部門コード) 総務、営業、開発の3行 人事の1行 渡辺の1行 結果は0行 正解と解説 正解:B. 人事の1行 NOT EXISTSは副問合せの結果が1行もないときに真となるので、所属する社員が1人もいない部門だけが選ばれ、人事(D04)の1行が返る。総務・営業・開発には社員がいるのでEXISTSの側で選ばれる部門である。取り出しているのは部門表の部門名なので、社員の氏名である渡辺は結果になり得ない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
問25|更新と削除
商品表の内容は(商品番号, 商品名, 単価, 分類)=(G01, ボールペン, 120, 文具)、(G02, ノート, 250, 文具)、(G03, マウス, 1800, PC用品)、(G04, キーボード, 3500, PC用品)、(G05, USBメモリ, 980, PC用品)である。次の2文を上から順に実行した後の、商品表の行数と単価の合計の組合せはどれか。
更新と削除のSQL文
UPDATE 商品 SET 単価 = 単価 - 100 WHERE 単価 >= 1000; DELETE FROM 商品 WHERE 単価 <= 200; 5行・6,450 4行・6,450 4行・6,330 3行・6,080 正解と解説 正解:C. 4行・6,330 1行目のUPDATEは単価1000以上のマウスとキーボードを対象とし、1800→1700、3500→3400となる(USBメモリは980なので対象外)。2行目のDELETEは単価200以下のボールペン(120)だけを削除する。残るのは4行で、単価の合計は250+1700+3400+980=6,330になる。6,450は削除前の合計、5行は削除が起きなかった場合の行数である。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
問26|制約
次のSQL文で二つの表を定義した。分類表には(B1, 文具)と(P1, PC用品)の2行、商品表には(G01, ボールペン, 120, B1)の1行が格納されている。この状態で実行したとき、エラーにならずに成功するINSERT文はどれか。
表を定義するSQL文
CREATE TABLE 分類 ( 分類コード CHAR(2), 分類名 VARCHAR(20) NOT NULL, PRIMARY KEY (分類コード) ); CREATE TABLE 商品 ( 商品番号 CHAR(3), 商品名 VARCHAR(20) NOT NULL, 単価 INTEGER NOT NULL CHECK (単価 > 0), 分類コード CHAR(2), PRIMARY KEY (商品番号), FOREIGN KEY (分類コード) REFERENCES 分類 (分類コード) ); INSERT INTO 商品 VALUES ('G01', '消しゴム', 80, 'B1') INSERT INTO 商品 VALUES ('G02', 'ノート', 250, 'X9') INSERT INTO 商品 VALUES ('G03', 'マウス', 0, 'P1') INSERT INTO 商品 VALUES ('G04', 'キーボード', 3500, NULL) 正解と解説 正解:D. INSERT INTO 商品 VALUES ('G04', 'キーボード', 3500, NULL) 外部キーの列は、参照先に実在する値かNULLであれば制約に反しないので、分類コードにNULLを入れる文は成功する。商品番号G01を入れる文は主キーの重複でエラー、分類コードX9は分類表に存在しないので参照整合性制約でエラー、単価0はCHECK (単価 > 0) に反するのでエラーになる。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作・データベース設計)
問27|ビューと索引
商品表の内容は(商品番号, 商品名, 単価, 分類)=(G01, ボールペン, 120, 文具)、(G02, ノート, 250, 文具)、(G03, マウス, 1800, PC用品)、(G04, キーボード, 3500, PC用品)、(G05, USBメモリ, 980, PC用品)である。次の2文を実行した後の説明として、適切なものはどれか。
ビューと索引を定義するSQL文
CREATE VIEW 高額商品 AS SELECT 商品番号, 商品名, 単価 FROM 商品 WHERE 単価 >= 1000; CREATE INDEX 商品単価索引 ON 商品(単価); 高額商品は実データを持たない仮想の表で、参照するたびに商品表から作られる。現時点で参照すると2行が得られる 高額商品は商品表のデータを複製した実表なので、この後で商品表の単価を更新しても高額商品の内容は変わらない 索引を作ると商品表の行数が増え、更新処理も必ず速くなる B木索引は等価検索にしか使えないので、単価の範囲を指定した検索では使われない 正解と解説 正解:A. 高額商品は実データを持たない仮想の表で、参照するたびに商品表から作られる。現時点で参照すると2行が得られる ビューは実データを持たない仮想の表で、参照のたびに元の表から作り直されるため、単価1000以上のマウスとキーボードの2行が得られ、元の表を更新すれば内容も変わる。索引は検索を速くする別の構造であって表の行数は増えず、更新のたびに索引の保守が必要なので更新はむしろ遅くなる。B木索引は値が順に並ぶ木構造なので範囲検索や並べ替えにも有効である。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データ操作)
問28|ACID特性
トランザクションのACID特性のうち、「トランザクション内の処理は、全部実行されるか全く実行されないかのどちらかでなければならない」という性質はどれか。
一貫性(Consistency) 分離性(Isolation) 耐久性(Durability) 原子性(Atomicity) 正解と解説 正解:D. 原子性(Atomicity) 全部実行されるか全く実行されないかのどちらかになる性質は原子性である。一貫性は処理の前後でデータベースが矛盾のない状態に保たれること、分離性は同時に動く他のトランザクションから影響を受けないこと、耐久性はコミットした結果が障害後も失われないことであり、いずれも「途中で終わらない」という性質そのものを指すものではない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(トランザクション処理)
問29|ロックの両立
共有ロック(読取りのためのロック)と専有ロック(更新のためのロック)に関する記述のうち、適切なものはどれか。
あるデータに共有ロックが掛かっているとき、他のトランザクションも同じデータに共有ロックを掛けられる あるデータに共有ロックが掛かっているとき、他のトランザクションは同じデータに専有ロックを掛けられる あるデータに専有ロックが掛かっているとき、他のトランザクションは同じデータに共有ロックを掛けられる 同じデータに対して、複数のトランザクションが同時に専有ロックを掛けられる 正解と解説 正解:A. あるデータに共有ロックが掛かっているとき、他のトランザクションも同じデータに共有ロックを掛けられる 読むだけの共有ロックどうしは両立するので、複数のトランザクションが同時に同じデータを読める。しかし共有ロックが掛かっているデータを書き換えるための専有ロックは掛けられず、専有ロックが掛かっているデータには共有ロックも別の専有ロックも掛けられない。専有ロックは同時に1件しか成立しないため、複数同時に掛けられるという記述も誤りである。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(トランザクション処理)
問30|2相ロック
2相ロック方式(2相ロッキングプロトコル)の説明として、適切なものはどれか。
更新の直前に必ずすべてのロックをいったん解除し、更新が終わってから掛け直す 一つのトランザクションを二つに分割し、それぞれ独立にコミットする ロックを掛けていく段階と外していく段階を分け、いったんロックを外し始めたら新たなロックは掛けない 分散データベースで、各サイトにコミットの可否を問い合わせてから確定させる 正解と解説 正解:C. ロックを掛けていく段階と外していく段階を分け、いったんロックを外し始めたら新たなロックは掛けない 2相ロック方式は、必要なロックをすべて獲得し終えてから解除に移り、解除を始めた後は新たなロックを掛けないという規約で、これを守ると実行結果が直列実行と同じになることが保証される。更新の直前にロックを外すのは分離性を壊す動きであり、トランザクションを二つに分けてコミットするのは原子性を壊す。各サイトへ可否を問い合わせてから確定させるのは2相コミットの説明である。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(トランザクション処理)
問31|デッドロック
トランザクションT1が資源Aをロックした後に資源Bを要求し、同時にトランザクションT2が資源Bをロックした後に資源Aを要求したため、互いに相手のロック解除を待ち続けて処理が進まなくなった。この状態の名称と、発生を防ぐ方法の組合せとして適切なものはどれか。
ダーティリード/トランザクションの実行時間をできるだけ短くする ロールフォワード/チェックポイントの間隔を短くする デッドロック/ロックの粒度を細かくすれば必ず防げる デッドロック/すべてのトランザクションで資源をロックする順序を統一する 正解と解説 正解:D. デッドロック/すべてのトランザクションで資源をロックする順序を統一する 互いに相手が持つ資源のロック解除を待ち合って進まなくなる状態がデッドロックで、資源をロックする順序を全トランザクションでそろえれば循環した待ちが生じないため防げる。ロックの粒度を細かくすると同時実行性は上がるが、循環した待ちは依然として起こり得るので「必ず防げる」は誤り。ダーティリードは未コミットの値を読む異常、ロールフォワードは障害回復の操作であり、この状態の名称ではない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(トランザクション処理)
問32|分離性レベル
あるトランザクションが読み取った行を、別のトランザクションが更新してコミットしたため、同じトランザクションの中でもう一度その行を読むと値が変わっていた。この現象はどれか。
ダーティリード 反復不能読取り ファントムリード デッドロック 正解と解説 正解:B. 反復不能読取り 同じ行を2回読んで値が変わっているのは反復不能読取りで、REPEATABLE READ以上の分離性レベルにすると防げる。ダーティリードは他のトランザクションがまだコミットしていない更新途中の値を読む現象、ファントムリードは同じ条件で再検索したときに前回なかった行が現れる現象であり、この設問は既存の行の値が変わる場合なので当てはまらない。デッドロックは互いにロック解除を待ち合う状態で、読取り結果の異常ではない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(トランザクション処理)
問33|ロールバック
口座表の初期状態は(口座番号, 残高)=(A, 1000)、(B, 500)である。次のSQL文を1行目から順に実行し終えた後の残高の組合せはどれか。
順に実行するSQL文
UPDATE 口座 SET 残高 = 残高 - 300 WHERE 口座番号 = 'A'; UPDATE 口座 SET 残高 = 残高 + 300 WHERE 口座番号 = 'B'; COMMIT; UPDATE 口座 SET 残高 = 残高 - 200 WHERE 口座番号 = 'A'; UPDATE 口座 SET 残高 = 残高 + 200 WHERE 口座番号 = 'B'; ROLLBACK; A=1000、B=500 A=700、B=800 A=500、B=1000 A=800、B=700 正解と解説 正解:B. A=700、B=800 3行目のCOMMITで最初の振替(Aから300をBへ)が確定するので、A=700、B=800になる。4〜5行目の更新は6行目のROLLBACKで取り消され、直前のコミット時点の状態に戻るため、これらの200の移動はなかったことになる。初期状態のままになるのはコミットも行われなかった場合、A=500、B=1000になるのはロールバックせずに両方の振替を確定した場合の値である。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(トランザクション処理)
問34|2相コミット
分散データベースにおける2相コミットの説明として、適切なものはどれか。
更新内容をいったん半分だけ確定させ、残りは後でまとめて確定させる ロックを掛ける段階と外す段階の二つに分けて、直列化可能性を保証する ログを更新前と更新後の2回に分けて書き出し、回復に備える 全サイトにコミット可能かを問い合わせ、すべてから可の回答が得られたときだけコミットを指示する 正解と解説 正解:D. 全サイトにコミット可能かを問い合わせ、すべてから可の回答が得られたときだけコミットを指示する 2相コミットは、調停役が各サイトへコミット可否を問い合わせる第1相と、全サイトが可のときだけコミットを指示する第2相から成り、1サイトでも不可なら全サイトにロールバックを指示するので一部だけ更新された状態を防げる。更新を半分だけ確定させる方式ではない。ロックを二つの段階に分けるのは2相ロック方式であり、ログを更新前と更新後に分けて書くのは障害回復のための仕組みで、分散環境の同時確定とは別の話である。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(トランザクション処理)
問35|ログの種類
データベースの更新前ログ(更新前情報)と更新後ログ(更新後情報)の使い方として、適切なものはどれか。
ロールバックには更新前ログを使い、ロールフォワードには更新後ログを使う ロールバックには更新後ログを使い、ロールフォワードには更新前ログを使う ロールバックにもロールフォワードにも、更新前ログだけを使う ログは監査のために取得するものであり、障害回復の処理には使わない 正解と解説 正解:A. ロールバックには更新前ログを使い、ロールフォワードには更新後ログを使う ロールバックは更新をなかったことにして前の状態へ戻す操作なので更新前ログを使い、ロールフォワードは更新をやり直して後の状態へ進める操作なので更新後ログを使う。この対応が逆になっているものは誤り。更新前ログだけでは失われた更新をやり直せず、ログは監査だけでなく障害回復の中心的な仕組みである。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(トランザクション処理)
問36|媒体障害
磁気ディスクの故障によって、データベースのファイルそのものが読めなくなった。この媒体障害からの回復手順として適切なものはどれか。
更新前ログを使って、障害が起きる直前の状態までロールバックする 直前のチェックポイントの時点までロールバックし、そこで処理を打ち切る バックアップファイルを正常な装置に復元し、更新後ログを使ってロールフォワードする DBMSを再起動するだけでよく、バックアップもログも使う必要はない 正解と解説 正解:C. バックアップファイルを正常な装置に復元し、更新後ログを使ってロールフォワードする 媒体障害ではデータベースの実体が失われているので、まずバックアップを復元し、そこからバックアップ取得後の更新を更新後ログでやり直す(ロールフォワード)必要がある。ロールバックは更新を取り消す操作なので、失われたデータを取り戻すことはできない。チェックポイントはシステム障害の回復を速くするための仕組みであり、再起動だけで回復できるのはディスクの内容が無事なシステム障害の場合である。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(トランザクション処理)
問37|チェックポイント
データベースのチェックポイントの説明として、適切なものはどれか。
トランザクションの結果が確定した時点であり、これ以降もログを使ってその更新を取り消せる メモリ上のバッファの内容をディスクに書き出して同期を取る時点であり、システム障害からの回復ではこの時点以降のログを見ればよくなる 資源の奪い合いによるデッドロックを検出して、一方のトランザクションを強制的に終了させる時点 データベース全体のバックアップを取得した時点であり、これ以降はログの取得を停止してよい 正解と解説 正解:B. メモリ上のバッファの内容をディスクに書き出して同期を取る時点であり、システム障害からの回復ではこの時点以降のログを見ればよくなる チェックポイントはメモリ上のバッファをディスクへ書き出して内容を一致させる時点で、これを記録しておくとシステム障害からの回復時に直前のチェックポイント以降のログだけを調べればよく、回復時間が短くなる。結果が確定する時点はコミットであり、コミット後は取り消せない。デッドロックの検出や強制終了、バックアップの取得はそれぞれ別の仕組みで、ログの取得を止めてよい時点は存在しない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(トランザクション処理)
問38|障害と回復
停電によってDBMSが異常終了した(ディスクの内容は無事である)。再起動時にDBMSが行う回復処理として適切なものはどれか。
障害発生時点で未完了だったトランザクションはロールバックし、コミット済みでディスクに反映されていなかったトランザクションはロールフォワードする コミットしていたかどうかにかかわらず、更新後ログを使ってすべてのトランザクションをロールフォワードする コミットしていたかどうかにかかわらず、更新前ログを使ってすべてのトランザクションをロールバックする ディスクの内容は信用できないので、ログは使わずに、必ずバックアップから全体を復元し直す 正解と解説 正解:A. 障害発生時点で未完了だったトランザクションはロールバックし、コミット済みでディスクに反映されていなかったトランザクションはロールフォワードする システム障害ではディスクは無事なので、ログを使って両方向の回復を行う。未完了のトランザクションは中途半端な更新を残さないよう更新前ログでロールバックし、コミット済みなのにバッファのまま失われた更新は更新後ログでロールフォワードして反映させる。すべてを一方向に扱うと、確定した更新を失ったり、確定していない更新を残したりして原子性や耐久性が壊れる。バックアップからの全体復元が必要なのは媒体障害の場合である。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(トランザクション処理)
問39|データレイク
業務システムやセンサなどから発生するデータを、構造化・非構造化を問わず加工しないままの形で大量にため込み、必要になったときに目的に合わせて加工して分析する仕組みはどれか。
データウェアハウス データマート データレイク データマイニング 正解と解説 正解:C. データレイク 生のデータを形式を問わずそのまま蓄積しておく置き場がデータレイクである。データウェアハウスは基幹システムのデータを分析しやすい形に変換・再編して時系列で蓄積したもの、データマートはそこから特定部門や目的の分だけを切り出した小規模な集まりで、どちらも事前に構造を整える点が異なる。データマイニングは蓄積したデータから規則性を見つけ出す分析手法であって、蓄積の仕組みではない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データベース応用)
問40|OLAP
次の説明a、bに対応する用語の組合せはどれか。 a:データウェアハウスに蓄積されたデータを、商品・地域・期間などの複数の軸で切り口を変えながら対話的に集計・分析する。 b:大量のデータに統計や機械学習の手法を当てて、これまで知られていなかった規則性や関係を見つけ出す。
a:OLAP b:データマイニング a:データマイニング b:OLAP a:OLTP b:ETL a:ETL b:OLAP 正解と解説 正解:A. a:OLAP b:データマイニング 多次元のデータを軸を変えながら対話的に集計するのがOLAPで、ドリルダウンなどの操作を行う。あらかじめ決まっていない規則性や関係を大量データから掘り出すのがデータマイニングである。OLTPは受注入力のようにその場の取引を処理する仕組み、ETLはデータを抽出・変換・格納してデータウェアハウスへ入れる処理であり、いずれも分析そのものを指す用語ではない。
根拠:IPA 基本情報技術者試験 シラバス Ver.9.2 大分類3:技術要素 中分類9:データベース(データベース応用)
演習:この章の問題を解く ランダム出題の演習ツールです(JavaScript が有効な場合に動きます)。上の「確認問題」はそのままでもすべて読めます。
← 前の章:ソフトウェアとハードウェア 次の章:ネットワーク →
※ 解説は学習用の情報提供です。最新の出題範囲・制度は必ずIPAの公式発表をご確認ください。 ※ 出題はIPA公開のシラバスVer.9.2(2026年1月8日適用)に沿った仮の宿 学習室のオリジナル問題です。擬似言語の記述形式もIPA公開の仕様に合わせています。試験制度・実施要項はIPAの公式発表をご確認ください(2027年度春ごろに新試験制度へ移行予定)。