応用情報技術者試験 - Applied Information Technology Engineer Database Technology Questions and Answers — Questions and Answers
Question 1: 関係データベースの正規化に関する記述のうち、第3正規形の説明として最も適切なものはどれか。
- 第1正規形の表であり、主キーに対して部分関数従属している列が存在しない。
- 非正規形の表から、繰り返しの項目を排除し、一つのセルに一つの値だけが含まれるようにした状態である。
- 第2正規形の表であり、主キー以外の列に関数従属している列(推移的関数従属)が存在しない。 (Correct answer)
- 主キー候補が複数存在する場合に、いずれの候補キーにも部分的に関数従属しない状態である。
Correct answer: 第2正規形の表であり、主キー以外の列に関数従属している列(推移的関数従属)が存在しない。
第3正規形は、第2正規形であることが前提であり、さらに推移的関数従属を排除した状態を指します。推移的関数従属とは、主キー以外の属性が、さらに他の主キー以外の属性を決定する関係のことです。これを排除することで、データの冗長性をさらに低減し、更新時などの異常を防ぐことができます。 選択肢アは第2正規形の説明です。 選択肢イは第1正規形の説明です。 選択肢エはボイスコッド正規形(BCNF)の説明に近いです。
Question 2: ある銀行の勘定系システムにおいて、口座Aから口座Bへ10万円を振り込む処理を考える。この一連の処理は、Aの残高を減らす処理とBの残高を増やす処理から構成される。もし、Aの残高を減らした直後にシステム障害が発生した場合でも、データの一貫性を保つために、トランザクションが持つべき性質(ACID特性)のうち、特に重要となるものはどれか。
- 独立性(Isolation)
- 原子性(Atomicity) (Correct answer)
- 一貫性(Consistency)
- 耐久性(Durability)
Correct answer: 原子性(Atomicity)
原子性(Atomicity)は、トランザクションに含まれる一連の処理が「すべて実行される」か「まったく実行されない」かのどちらかであることを保証する性質です。 設問のケースでは、振込処理の途中で障害が発生した場合、Aの残高を減らす処理が取り消され(ロールバック)、処理開始前の状態に戻る必要があります。このように、処理を「0か100か」の状態に保つのが原子性の役割です。 一貫性(Consistency)は処理の前後でデータの矛盾が生じないこと、独立性(Isolation)は複数のトランザクションが互いに干渉しないこと、耐久性(Durability)は完了した処理結果が失われないことを指します。
Question 3: データベースにおける排他制御に関する記述として、最も適切なものはどれか。
- 共有ロックがかけられているデータに対して、他のトランザクションはデータの更新も参照もできない。
- ロックの粒度を細かくすると(例:テーブルレベルから行レベルへ)、ロックの競合は発生しにくくなるが、ロック管理のオーバーヘッドは増大する。 (Correct answer)
- デッドロックとは、一つのトランザクションが複数のデータをロックしたまま、他の処理を待っている状態である。
- 専有ロックがかけられているデータに対して、他のトランザクションはデータの更新はできないが、参照は可能である。
Correct answer: ロックの粒度を細かくすると(例:テーブルレベルから行レベルへ)、ロックの競合は発生しにくくなるが、ロック管理のオーバーヘッドは増大する。
ロックの粒度とは、ロックをかける対象の大きさ(テーブル、ページ、行など)を指します。ロックの粒度を細かくする(例:行レベルロック)と、ロックされる範囲が狭まるため、異なるデータを対象とするトランザクション同士の競合が発生しにくくなり、同時実行性が向上します。しかし、管理するロックの数が増えるため、システム全体のオーバーヘッドは増大する傾向にあります。 選択肢アとエは逆で、共有ロック中は他のトランザクションも参照可能ですが更新はできず、専有ロック中は他のトランザクションは参照も更新もできません。 選択肢ウのデッドロックは、複数のトランザクションが互いに相手のロックが解除されるのを待ち続け、処理が進まなくなる状態を指します。
Question 4: 日本産業規格(JIS)において、データベース言語SQLの規格は「JIS X 3005」として定められている。この規格に関する記述として、適切なものはどれか。
- JIS X 3005は、日本独自の拡張仕様を中心に策定されており、国際規格との互換性は考慮されていない。
- JIS X 3005は、特定のデータベース管理システム(DBMS)製品の実装を標準として採用したものである。
- JIS X 3005は、国際規格であるISO/IEC 9075に整合する形で制定されており、SQLの構文や意味を規定している。 (Correct answer)
- JIS X 3005では、データ操作言語(DML)のみが定義されており、データ定義言語(DDL)やデータ制御言語(DCL)は対象外である。
Correct answer: JIS X 3005は、国際規格であるISO/IEC 9075に整合する形で制定されており、SQLの構文や意味を規定している。
日本の国家規格であるJIS X 3005は、SQLに関する国際規格であるISO/IEC 9075に整合性をとる形で制定されています。 これにより、国際的な標準に準拠したSQLの知識が国内でも通用するようになっています。この規格では、SQLのデータ構造、操作、構文、意味などが包括的に規定されています。 選択肢アは誤りで、国際規格との互換性が重視されます。選択肢イも誤りで、特定の製品に依存しない汎用的な規格です。選択肢エも誤りで、DDL、DML、DCLのすべてが規格の対象です。
Question 5: あるECサイトのデータベースで、以下の「注文」テーブルを管理している。このテーブルを第1正規形にするために行うべき操作はどれか。 【注文テーブル(非正規形)】 | 注文ID | 注文日 | 顧客名 | (商品コード, 商品名, 数量) | |---|---|---|---| | 1001 | 2026-03-20 | A社 | (S01,ペン,10), (S02,ノート,5) | | 1002 | 2026-03-21 | B社 | (S03,消しゴム,20) |
- 商品情報を別のテーブルに分離し、注文テーブルには商品コードのみを外部キーとして保持する。
- 一つの注文IDに対して複数の商品レコードが存在できるように、行を分割する。 (Correct answer)
- 顧客情報を顧客テーブルとして独立させ、注文テーブルとは顧客IDで関連付ける。
- 注文IDと商品コードを複合主キーとする。
Correct answer: 一つの注文IDに対して複数の商品レコードが存在できるように、行を分割する。
第1正規化は、非正規形のテーブルから繰り返し項目を排除し、一つのフィールド(セル)に一つの値だけが含まれるようにする操作です。 設問のテーブルでは、「(商品コード, 商品名, 数量)」の列に複数の値が繰り返し格納されています。これを解消するには、注文ID '1001' のように複数の商品を含む注文を、商品ごとに別の行として分割する必要があります。これにより、各行の各列には単一の値のみが含まれるようになり、第1正規形を満たします。 選択肢アやウは、第2正規化や第3正規化の過程で行われる操作です。
Question 6: 3層スキーマアーキテクチャに関する記述として、最も適切なものはどれか。
- 内部スキーマは、個々の利用者から見たデータの見方を定義するもので、ビュー(VIEW)の定義などがこれに該当する。
- 概念スキーマは、データベースの物理的な格納構造やアクセスパスを定義するものである。
- 外部スキーマ、概念スキーマ、内部スキーマの3つのスキーマを定義することで、データの物理的独立性と論理的独立性を高めることができる。 (Correct answer)
- 応用情報技術者試験のシラバスでは、3層スキーマは古い概念として扱われ、現在は対象外となっている。
Correct answer: 外部スキーマ、概念スキーマ、内部スキーマの3つのスキーマを定義することで、データの物理的独立性と論理的独立性を高めることができる。
3層スキーマアーキテクチャは、データベースを外部スキーマ、概念スキーマ、内部スキーマの3つの層に分けて定義する考え方です。これにより、物理的な格納方法の変更がアプリケーションに影響を与えない「物理的独立性」と、データベース全体の論理構造の変更が個々の利用者の見方に影響を与えない「論理的独立性」が確保されます。 選択肢アは外部スキーマの説明です。選択肢イは内部スキーマの説明です。 選択肢エは誤りで、3層スキーマはデータベースの基本概念として応用情報技術者試験のシラバスに含まれています。
関係データベースの正規化に関する記述のうち、第3正規形の説明として最も適切なものはどれか。