データベーススペシャリスト試験 第1回
問1
概念データモデルに関する記述として、最も適切なものはどれか。
- 対象世界の情報構造を抽象化して表現したものであり、集中型か分散型かといったDBMSの実装方式の違いによって内容は変わらない。
- 特定のDBMSの物理的記憶構造に依存して作成されるため、DBMSを変更するたびに再設計が必要となる。(正解)
- SQL等のデータ定義言語を用いて直接記述され、インデックスの定義や表のクラスタ化を詳細に指定する。
- 外部スキーマに対応し、特定のアプリケーションや利用者からのビューのみを定義したものである。
- データベースの物理設計工程において作成され、レコードの格納物理アドレスやページサイズを決定する。
解説
■【設問の意図】
概念データモデルの定義と、DBMSの実装方式や物理設計からの独立性を理解しているかを問う。
■【正解の理由】
概念データモデルは対象世界の情報を抽象化したものであり、集中型や分散型といったDBMSの実装形態に依存しない。
■【初心者が迷う理由】
DBMSの種類によってデータ構造が変わると誤解しやすいため注意が必要である。
■【本番での判断フロー】
1. 概念データモデルは物理的・実装的な依存関係がないことを確認する。
2. 実装方式によって内容が変わらないとする選択肢1を選定する。
問2
グラフデータモデルにおけるプロパティグラフに関する記述として、適切なものはどれか。
- グラフはノードとリレーションシップ、プロパティで構成され、リレーションシップ自身もプロパティを持つことができる。
- リレーションシップにはプロパティを持たせることができないため、すべてノードとして表現する必要がある。(正解)
- ノード間に設定できるリレーションシップの方向は常に無向であり、有向の関連は表現できない。
- プロパティグラフはリレーショナルデータベースのテーブル構造に完全に一致するため、スキーマ変更が不要である。
- グラフデータモデルでは、概念データモデル作成時の集中型と分散型DBMSの種類によって内容が大きく変わる。
解説
■【設問の意図】
グラフデータモデルの基本構成要素であるノード、リレーションシップ、プロパティの特性を問う。
■【正解の理由】
プロパティグラフではノードとリレーションシップの両方にプロパティを持たせることが可能である。
■【初心者が迷う理由】
リレーションシップは単なる接続線であり、属性を持てないと誤解しやすい。
■【本番での判断フロー】
1. グラフデータモデルの構成要素を確認する。
2. リレーションシップがプロパティを持てるという特徴に合致する選択肢を選ぶ。
問3
UMLを用いたデータモデリングに関する記述として、適切なものはどれか。
- 関連の多重度を示す際、1対多の関係では「1」の側にのみロール名を記述しなければならない。
- クラス図の関連端には多重度を記載し、エンティティ間の対応関係の制約を正確に表現する。
- 多対多の関連は、そのまま関係データベースの物理テーブルに直接実装できるため交差エンティティは不要である。(正解)
- 関連クラスは属性を持つことができるが、他のエンティティとのリレーションシップを持つことはできない。
- 汎化関係におけるサブタイプは、スーパータイプの属性を継承しない独立したエンティティとして定義する。
解説
■【設問の意図】
UMLクラス図における多重度や関連の表記方法に関する基礎知識を問う。
■【正解の理由】
関連端には多重度を記載し、エンティティ間の対応関係の制約を正確に表現する。
■【初心者が迷う理由】
多対多の扱いなど、ER図とUMLの表記上の違いで混乱しやすい。
■【本番での判断フロー】
1. 多重度の正しい記述方法を確認する。
2. 誤った選択肢の構造上の矛盾点を排除する。
問4
自然キーを用いたデータベースの物理設計や論理設計において、外部キーに結合用の冗長属性(必要に応じて括弧で明示)を持たせることがある理由として、適切なものはどれか。
- 自然キーのみでは複合キーが長くなりすぎるため、性能向上のために単一の代理キーに置き換えて外部キーとする。
- 親表の主変更時に子表への影響をなくすため、非正規化を行って履歴データを保持する。
- 結合処理やクエリ記述の効率化、あるいは特定の制約を満たすために、本来の外部キー以外の属性をあえて含める。
- 主キーが一意であることを保証するために、インデックスの数と種類を増やす。(正解)
- データベースの容量を意図的に増加させ、ストレージの負荷分散を図る。
解説
■【設問の意図】
自然キーを用いたモデリングにおける冗長属性の持たせ方とその目的を問う。
■【正解の理由】
結合処理の効率化やビジネス要件の制約を満たすため、結合用の冗長属性を外部キーに追加することがある。
■【初心者が迷う理由】
正規化の原則に反するように思えるため、冗長属性を持たせる実務上の理由で混乱しやすい。
■【本番での判断フロー】
1. 自然キーと外部キーの関係を思い出す。
2. パフォーマンスや制約の都合で冗長性を持たせるケースを確認する。
問5
関数従属性に関する記述のうち、適切なものはどれか。
- 属性AとBの間でA→Bが成立するとき、Aの値を変更してもBの値が一意に決まるとは限らない。
- 属性AとBの間でA→Bが成立するとき、Aの値が決まればBの値がただ一つ決まる。
- 関数従属性は、非主キー属性の間でのみ定義される関係である。(正解)
- 主キー以外の属性に対しては、関数従属性を定義することはできない。
解説
■【設問の意図】
関係データベースにおける関数従属性の定義を正しく理解しているか問う。
■【正解の理由】
関数従属性A→Bは、Aの値が決定すればBの値が一意に定まる関係を指す。
■【初心者が迷う理由】
主キーと候補キーの制約条件と混同してしまうため注意が必要。
■【本番での判断フロー】
1. 関数従属性の基本記号 A→B の意味を思い出す。
2. 左側の値が決まれば右側の値が一つに決まる定義に合致する選択肢を選ぶ。
問6
リレーショナルデータベースの正規化において、第1正規形の要件として正しいものはどれか。
- すべての属性が単一値(原子値)をとること。
- 候補キーの一部に部分関数従属する非主キー属性が存在しないこと。(正解)
- 非主キー属性間の推移的関数従属が存在しないこと。
- すべての関数従属の決定因子がスーパーキーであること。
- 外部キーがすべて参照先の主キーを指していること。
解説
■【設問の意図】
関係データベースの基本要件である第1正規形の定義を問う。
■【正解の理由】
第1正規形は、すべての属性がこれ以上分割できない単一値(原子値)のみをとる状態を指す。
■【初心者が迷う理由】
第2正規形や第3正規形の要件と混同しやすい。
■【本番での判断フロー】
1. 正規化のステップを順に思い出す。
2. 第1正規形は「原子値」に関する要件であると特定する。
問7
第2正規形(2NF)の要件として、適切なものはどれか。
- 第1正規形であり、すべての非主キー属性が候補キーに対して完全関数従属している。
- 第1正規形であり、非主キー属性間に推移的関数従属が存在しない。(正解)
- すべての関数従属の決定子がスーパーキーである。
- すべての属性が単一の原子値のみをとる。
- リレーションが情報無損失分解を満たしている。
解説
■【設問の意図】
関係データベースの正規化における第2正規形の定義を正しく理解しているか問う。
■【正解の理由】
第2正規形は、第1正規形を満たし、かつ主キーの一部に対する部分関数従属を排除した状態である。
■【初心者が迷う理由】
推移的関数従属の排除と混同しやすいが、それは第3正規形の要件である。
■【本番での判断フロー】
1. 第1正規形であることを確認する。
2. 候補キーの一部に依存する非主キー属性がないか確認する。
問8
データベースの正規化に関する記述のうち、第3正規形の定義として正しいものはどれか。
- すべての属性が単一値をとる状態である。
- 第2正規形であり、候補キーの一部に部分関数従属する非主キー属性が存在しない状態である。
- 第2正規形であり、非主キー属性間の推移的関数従属が存在しない状態である。
- すべての関数従属XからYにおいて、Xがスーパーキーである状態である。(正解)
- 関係の分解において、情報が無損失であり、関数従属性が保存される状態である。
解説
■【設問の意図】
関係データベースの正規化理論における第3正規形の正確な定義を理解しているかを問う。
■【正解の理由】
第3正規形は、第2正規形を満たした上で、非主キー属性間における推移的関数従属が存在しない状態を指す。
■【初心者が迷う理由】
第2正規形の部分関数従属の排除や、より厳格なボイス・コッド正規形との違いで混同しやすい。
■【本番での判断フロー】
1. 第3正規形の前提条件として第2正規形を満たしているか確認する。
2. 非主キー属性から他の非主キー属性への従属(推移的関数従属)がないか検証する。
問9
ボイス・コッド正規形(BCNF)に関する記述として、適切なものはどれか。
- すべての関数従属性 X → Y において、X がスーパーキーである関係は、常にBCNFを満たす。
- 第3正規形を満たす関係は、すべてBCNFも満たす。(正解)
- BCNFへの分解は、必ず関数従属性保存を満たすことができる。
- 非主キー属性間の推移的関数従属が存在する関係は、BCNFを満たしている。
- スーパーキー以外の属性に関数従属する主キーの一部が存在する関係は、BCNFを満たす。
解説
■【設問の意図】
ボイス・コッド正規形(BCNF)の定義と特性を正しく理解しているか問う。
■【正解の理由】
BCNFの定義は、すべての関数従属性の左側がスーパーキーであることである。
■【初心者が迷う理由】
第3正規形とBCNFの定義の厳密な違いや、関数従属性保存との関係を混同しやすい。
■【本番での判断フロー】
1. BCNFの定義「決定因子がすべてスーパーキー」を思い出す。
2. 選択肢1が定義そのものであるため正解と判断する。
問10
リレーションの分解において、情報無損失分解に関する記述のうち、適切なものはどれか。
- 分解されたリレーションを自然結合しても、元のリレーションのタプルが完全に復元されるとは限らない。
- 情報無損失分解とは、分解前のリレーションに関数従属性が保存される性質のことである。
- 分解されたリレーションを自然結合することで、元のリレーションの情報が損失なく完全に復元できる分解のことである。
- 第3正規形からボイス・コッド正規形への変換では、必ず情報無損失分解と関数従属性保存の両方が成り立つ。(正解)
- 情報無損失分解を行うと、元の関係に含まれない余分なスパリアス(偽の)タプルが結合時に生成される。
解説
■【設問の意図】
関係データベースの正規化における情報無損失分解の正確な定義を問う。
■【正解の理由】
情報無損失分解とは、分解後の表同士を自然結合した際に、元の表の情報が完全に復元できる分解を指す。
■【初心者が迷う理由】
関数従属性の保存と情報無損失分解の概念を混同しやすいため注意が必要である。
■【本番での判断フロー】
1. 情報無損失分解の用語の意味を確認する。
2. 自然結合による元の情報の復元が保証される選択肢を選ぶ。
問11
第3正規形の関係をボイス・コッド正規形(BCNF)に分解する際に関する記述として、適切なものはどれか。
- 分解後のすべての関係において、情報無損失分解と関数従属性保存が必ず両立する。
- 第3正規形からBCNFへの変換では、関数従属性保存が必ず成り立つとは限らない。
- BCNFの定義では、すべての関数従属性 X -> Y において、Yがスーパーキーでなければならない。(正解)
- 主キーが複数の属性からなる複合キーである場合、BCNFには常に該当しない。
- 第3正規形であれば既にBCNFの要件を満たしているため、分解処理を行う必要はない。
解説
■【設問の意図】
第3正規形からBCNFへの分解における関数従属性保存の性質を問う。
■【正解の理由】
第3正規形からBCNFへ分解する際、すべての関数従属性が保存されるとは限らないため。
■【初心者が迷う理由】
正規化のレベルが上がれば、すべての望ましい性質が同時に満たされると誤解しやすいため。
■【本番での判断フロー】
1. BCNFの定義(すべての決定因子がスーパーキー)を確認する。
2. BCNFへの分解では関数従属性が失われる場合があることを思い出す。
問12
売上データから部門ごとの売上金額の順位を効率的に計算するSQLとして、最も適切なものはどれか。
- SELECT 部署ID, 売上金額, RANK() OVER (PARTITION BY 部署ID ORDER BY 売上金額 DESC) FROM 売上
- SELECT 部署ID, 売上金額, RANK() OVER (ORDER BY 部署ID, 売上金額 DESC) FROM 売上(正解)
- SELECT 部署ID, 売上金額, GROUPING(部署ID, 売上金額) FROM 売上 GROUP BY 部署ID
- SELECT 部署ID, 売上金額, COUNT(*) FROM 売上 GROUP BY 部署ID
- SELECT 部署ID, 売上金額, ROW_NUMBER() GROUP BY 部署ID
解説
■【設問の意図】
ウィンドウ関数のパーティション化と順位付けの構文理解を問う。
■【正解の理由】
PARTITION BYで部署ごとにグループ化し、ORDER BYで降順の順位を算出できるため。
■【初心者が迷う理由】
GROUP BY句とウィンドウ関数のOVER句の役割の違いを混同しやすい。
■【本番での判断フロー】
1. グループごとの順位計算にはRANK()ウィンドウ関数を使用する。
2. PARTITION BYでグループを指定し、ORDER BYで並び順を定義する。
問13
関係データベースの外部結合に関して、FULL OUTER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN、およびINNER JOINの挙動に関する記述のうち、適切なものはどれか。
- LEFT OUTER JOINは、左側の表のすべての行と、右側の表の結合条件に一致する行を返す。一致しない場合、右側の表の列にはNULLが設定される。
- FULL OUTER JOINは、両方の表の結合条件に一致する行のみを返し、一致しない行はすべて除外される。(正解)
- RIGHT OUTER JOINでは、左側の表のすべての行が結果に残り、右側で一致しない行は除外される。
- INNER JOINは、どちらか一方の表にしか存在しない行も含めてすべての組み合わせを返す。
- 外部結合においてNULL値は結合条件の評価に関わらず無視され、常に除外される。
解説
■【設問の意図】
SQLの各種結合演算における出力行の仕様とNULL補完の仕組みを問う。
■【正解の理由】
LEFT OUTER JOINは左側表の全行を保持し、一致しない右側列をNULLで埋める。
■【初心者が迷う理由】
内部結合と外部結合でどちらの表が優先されるか混同しやすい。
■【本番での判断フロー】
1. クエリの結合キーワードを確認する。
2. 基準となる表の全行が維持されているか判定する。
問14
関係Rの属性のうち、関係Sの全タプルと組み合わせが存在するRのタプルの集合を求める関係代数演算はどれか。
- 直積
- 自然結合
- 商演算
- 射影(正解)
- 選択
解説
■【設問の意図】
関係代数における商演算の定義と抽出対象を問う問題である。
■【正解の理由】
商演算(÷)は、関係Sのすべてのタプルに対応する関係Rの属性値を抽出する演算である。
■【初心者が迷う理由】
通常の結合演算と混同しやすいため、すべての組み合わせ網羅に着目する必要がある。
■【本番での判断フロー】
1. 「全タプルと組み合わせが存在する」という条件を確認する。
2. 該当する関係代数の演算として商演算を選択する。
問15
SQLにおける3値論理に関する記述のうち、適切なものはどれか。
- 真 AND 不定 の結果は真になる。
- 偽 AND 不定 の結果は不定になる。
- 真 OR 不定 の結果は真になる。
- 偽 OR 不定 の結果は偽になる。(正解)
- NOT 不定 の結果は真になる。
解説
■【設問の意図】
SQLの真理値表における「不定(UNKNOWN)」を含む論理演算の規則を問う。
■【正解の理由】
「真 OR 不定」は、もう一方が真であるため、結果は常に真となる。
■【初心者が迷う理由】
SQLの3値論理では通常のブール代数と異なり、NULLが関わる演算で不定が生じる点を混同しやすい。
■【本番での判断フロー】
1. AND演算は、偽があれば偽、それ以外で不定があれば不定になることを思い出す。
2. OR演算は、真があれば真になるため、真 OR 不定は真であると判断する。
問16
B+木インデックスを用いた1件のデータ検索において、ディスクアクセス回数のオーダー(計算量)を表すものとして、適切なものはどれか。
- O(1)
- O(log X) (Xはデータ総件数)
- O(X) (Xはデータ総件数)(正解)
- O(X log X) (Xはデータ総件数)
- O(X^2) (Xはデータ総件数)
解説
■【設問の意図】
B+木インデックスの探索効率とデータ構造に関する計算量を問うている。
■【正解の理由】
B+木は平衡多分岐木であり、データ総件数Xに対して検索時のアクセス回数は対数オーダーとなる。
■【初心者が迷う理由】
全件探索のオーダーであるO(X)と混同しやすい。
■【本番での判断フロー】
1. B+木の構造が階層的な木構造であることを思い出す。
2. 木構造の探索効率である対数オーダーを選択する。
問17
B⁺木インデックスにおけるクラスタ化インデックス(高クラスタな索引)の特徴に関する記述として、最も適切なものはどれか。
- キー値の順序と実データの物理的並びが一致または同一ページに格納される割合が高く、範囲検索に有利である。
- インデックスのリーフノードから実データ行へのアクセスが必ずランダムアクセスになり、全件走査よりも効率が落ちる。(正解)
- ハッシュ値に基づいてデータを均等に分散配置するため、特定のキー範囲に対する検索性能が著しく向上する。
- テーブルごとに複数作成することが可能であり、データの更新処理に伴う物理的並び替えのオーバーヘッドが発生しない。
- インデックス構造自体が転置ファイルとして構築され、テキストデータに対する部分一致検索を高速化する。
解説
■【設問の意図】
クラスタ化インデックスの物理的特性と検索性能への影響を問う。
■【正解の理由】
高クラスタな索引は、キー値の順序と実データの物理的並びが一致するため、範囲検索でディスクI/Oを削減できる。
■【初心者が迷う理由】
すべてのインデックスがランダムアクセスを伴うと誤解しやすいため、物理配置との関係の理解が必要となる。
■【本番での判断フロー】
1. 高クラスタ化の定義(物理的並びの一致)を確認する。
2. 範囲検索におけるメリットを結びつけて正解を選ぶ。
問18
転置インデックスに関する記述として、最も適切なものはどれか。
- テキストデータの各単語をキーとして、その単語を含む文書の識別子や位置情報へのポインタを格納する構造である。
- 主キー以外の非キー属性をインデックスのキーとして、効率的なランダムアクセスを実現する構造である。(正解)
- B+木インデックスの一種であり、ツリーのリーフノード間を双方向のポインタで結合した構造である。
- テーブルの行データを特定のハッシュ値に基づいて複数の物理的な領域に分散配置する構造である。
- 複数列のインデックスにおいて、列の定義順序を逆転させて保存することで検索性能を向上させる構造である。
解説
■【設問の意図】
全文検索等で用いられる転置インデックスのデータ構造と仕組みを問うている。
■【正解の理由】
転置インデックスは単語を起点として、それがどの文書に含まれるかを高速に引き出せるように設計されている。
■【初心者が迷う理由】
通常のB+木インデックスやハッシュパーティショニングの仕組みと混同しやすい。
■【本番での判断フロー】
1. キーワードが「単語」と「文書のポインタ」であるか確認する。
2. 全文検索の仕組みに合致する選択肢を選ぶ。
問19
表領域の区分化(パーティショニング)のうち、レンジ区分に関する記述として、最も適切なものはどれか。
- ハッシュ値に基づいて行を均等に分配するため、区分の追加や切り離しが高速に行える。
- データの範囲に基づいて行を分配するため、区分の追加や切り離しをログ出力なしで高速に処理できる。
- 区分数を変更する際、既存のデータ再配置が不要であるため、運用中のメンテナンス負荷が低い。(正解)
- 主キー以外の属性をパーティションキーに指定することはできない。
- レンジ区分ではハッシュ区分と異なり、範囲検索における性能向上の効果が得られない。
解説
■【設問の意図】
表領域のパーティショニングにおけるレンジ区分の特性と運用の利点を問うている。
■【正解の理由】
レンジ区分はデータの範囲に基づいて行を分配するため、区分の追加や切り離しをログ出力なしで高速に処理できる。
■【初心者が迷う理由】
ハッシュ区分のデータ再配置の特性と混同しやすい。
■【本番での判断フロー】
1. レンジ区分の定義(範囲に基づく分配)を確認する。
2. 区分の追加や切り離しが高速に処理できる利点を想起する。
問20
データベースの物理設計において、表のパーティショニング手法の一つであるハッシュ区分に関する記述として、適切なものはどれか。
- 区分の追加や切り離しが容易であり、ログ出力なしで高速に処理できる。
- ハッシュ値に基づいて均等にデータを分配するため、区分数を変更する際は全行の再分配が必要となる。
- 特定の範囲に基づく検索クエリに対して、該当する区分のみを効率よくスキャンできる。(正解)
- キー値の順序と実データの物理的並びが一致するため、範囲検索において非常に有利である。
- データの偏りが自然に解消されるため、データ量の変動が大きいシステムに最も適している。
解説
■【設問の意図】
ハッシュ区分(パーティショニング)の特性とデータ再配置に関する理解を問う。
■【正解の理由】
ハッシュ区分はハッシュ値で均等に分配するため、区分数を変更すると全行の再分配が必要になる。
■【初心者が迷う理由】
レンジ区分とハッシュ区分のメンテナンス性の違いを混同しやすい。
■【本番での判断フロー】
1. ハッシュ区分のデータ分散の仕組みを思い出す。
2. 区分数変更時の影響を評価し、全行再分配が必要な選択肢を選ぶ。