ITパスポート テクノロジ系:データベース 4 — Questions and Answers
Question 1: ER図の多対多(N:M)関係をRDBで実装する方法として正しいものはどれか。
- 中間テーブル(関連テーブル)を作成して両エンティティの主キーを外部キーとして持つ (Correct answer)
- 直接関連する2つのテーブルに相互に外部キー列を追加する
- 片方のテーブルに相手のデータを繰り返し項目として格納する
- 多対多のまま実装できるRDB固有の機能がある
Correct answer: 中間テーブル(関連テーブル)を作成して両エンティティの主キーを外部キーとして持つ
RDBは多対多を直接表現できないため、中間テーブル(例:受注と商品の間に受注明細テーブル)を作成し両側のPKを外部キーとして持つことで多対多を1対多×2に分解する。
Question 2: 外部キー制約(FOREIGN KEY)の説明として正しいものはどれか。
- 参照先テーブルの主キーと一致する値のみを許可し参照整合性を保証する制約 (Correct answer)
- テーブル内の値を一意にする制約
- NULL値を禁止する制約
- 列の値の範囲を制限する制約
Correct answer: 参照先テーブルの主キーと一致する値のみを許可し参照整合性を保証する制約
外部キー制約は子テーブルの列値が必ず親テーブルの主キー(または一意キー)に存在することを強制し、孤立したレコード(参照先が存在しないデータ)の作成を防ぐ。
Question 3: SQLのウィンドウ関数のうち「RANK()」の動作として正しいものはどれか。
- OVER句で指定したパーティション内での順位を付けるが同順位が存在する場合は次の順位をスキップする (Correct answer)
- OVER句で指定したパーティション内での連続した行番号を振る
- OVER句内での順位を計算するが同順位の場合にスキップなしで連番を振る
- クエリ結果全体の中で各行の累積集計を計算する
Correct answer: OVER句で指定したパーティション内での順位を付けるが同順位が存在する場合は次の順位をスキップする
RANK()は同じ値には同じ順位を付け、次の順位は重複数分スキップ(1,2,2,4...)。ROW_NUMBER()は連続番号(1,2,3,4...)、DENSE_RANK()はスキップなし(1,2,2,3...)。
Question 4: データベースのパーティショニングの目的として正しいものはどれか。
- 大規模テーブルを範囲・リスト・ハッシュ等の基準で分割して管理・クエリ性能・保守性を向上させる (Correct answer)
- テーブルを複数サーバーに複製してデータを保護する
- 不要なデータを自動的に削除する
- テーブルのスキーマを変更する際の影響を最小化する
Correct answer: 大規模テーブルを範囲・リスト・ハッシュ等の基準で分割して管理・クエリ性能・保守性を向上させる
パーティショニングはテーブルを論理または物理的に分割し、クエリで特定パーティションのみスキャン(パーティションプルーニング)して性能向上・古いデータの一括削除・管理効率化を実現する。
Question 5: リレーショナルデータベースの「射影(Projection)」の説明として正しいものはどれか。
- テーブルから特定の列(属性)のみを取り出す操作(SELECT句での列指定) (Correct answer)
- テーブルから特定の行(タプル)のみを取り出す操作
- 2つのテーブルを結合する操作
- テーブルの行数を数える操作
Correct answer: テーブルから特定の列(属性)のみを取り出す操作(SELECT句での列指定)
関係代数の射影はテーブルから必要な列のみを抽出する操作でSQLのSELECT句での列指定に対応。行を絞り込む操作は選択(Selection)でWHERE句に対応。
Question 6: DBMSのロールベースアクセス制御(RBAC)の説明として正しいものはどれか。
- ユーザーにロール(役割)を割り当て、ロールに権限を設定することでアクセス制御を管理する (Correct answer)
- 各ユーザーに個別に権限を直接付与する方式
- データの属性値に基づいてアクセスを制御する方式
- 管理者のみがすべてのデータにアクセスできる方式
Correct answer: ユーザーにロール(役割)を割り当て、ロールに権限を設定することでアクセス制御を管理する
RBAC(Role-Based Access Control)はユーザーを「営業担当」「経理担当」等のロールに所属させ、ロールに権限を付与することで個別管理より効率的・一貫性のあるアクセス制御を実現する。
ER図の多対多(N:M)関係をRDBで実装する方法として正しいものはどれか。