DBデータベーススペシャリスト試験 午後Ⅰ
平成28年度春期 データベーススペシャリスト 午後Ⅰ 問3
事例を読んで設問の答えを考えてから、解説のポイントとIPA公式の解答例・採点講評で確認しましょう。
問題






解き方のヒントを見る
権限設計を整理するための視点
ビューやロール、権限変更を考えるときは、個々の用語の印象だけで判断せず、誰が何に対してどの範囲の操作を行うのかを整理し、変更前後の影響と管理上の境界を確認しましょう。
この問題で問われていること
この問題では、仕組みの名称や設定文を覚えているかではなく、利用者・対象資源・許可される操作・変更の影響という関係を同じ基準で読み取り、要件との対応を一つずつ確認することに集中してください。
視点
権限を検討する際は、登場する主体と対象を分け、必要な操作の範囲、適用される単位、変更が及ぶ範囲を対応づけて整理します。設定の細部を先に決めず、要件と管理責任の関係が一貫しているかを確認するのが有効です。
確認ポイント
- 利用者、対象、操作、適用範囲を混同せず、問題文の各条件を同じ観点で対応づける
- 変更によって影響を受ける範囲と、継続的に管理すべき責任の所在を切り分ける
- 個別の設定名ではなく、要求される最小限の権限と運用上の一貫性を確認する
正解と解説を見る
解説
営業課別ビューとロールを使って個人情報を保護し、SQLのビュー化やチーム所属履歴を通じて、権限の継承、検索結果の保持、アクセス制限の即時性を問う問題です。
問題の全体像
保険会社の営業支援システムで、顧客の個人情報を営業課やチームの単位で適切に保護する事例です。前半では、ビューで個人情報を隠し、ロールを階層化して課員・課長・部長へ権限を与える設計を確認する。中盤では、外部結合や集約条件をビューに切り出す際のSQL上の制約を問う。後半では、チーム所属の開始日・終了日を管理して、現在の所属だけでなく過去の所属も扱い、権限変更を速やかに反映する考え方を問う。
設問1(1)(a)
SQL1は営業1課の顧客だけを返すビューなので、そのビューに対するSELECT権限を付与するロールは営業1課の部門番号B11になる。公式解答例でもaはB11です。
設問1(1)(b)
SQL2は営業2課の顧客だけを返すビューなので、対応するロールは営業2課の部門番号B12になる。公式解答例でもbはB12です。
設問1(1)(c)
部長は部下がアクセスできる情報全てにアクセスするため、営業1課ロールB11と営業2課ロールB12を、部長の所属部門であるB10ロールへ付与する。したがってcはB10です。
設問1(2)
まずB10、B11、B12のロールをCREATE ROLEで作成する。次に、部長E111、営業1課の課長・社員、営業2課の課長・社員へロールを付与し、その後にB11とB12をB10へ付与する。最後に営業1課ビューをB11へ、営業2課ビューをB12へSELECT権限付きで付与する。公式解答例の一例は、オ→カ→キ→イ→ウ→エ→ア→ク→ケです。
設問2(1)(d)
顧客Kと訪問予定HYは、照会対象となる訪問予定を確実に取り出す関係なので通常の内部結合で結ぶ。公式解答例ではdはINNER JOINまたはJOINです。
設問2(1)(e)
訪問予定はあるが訪問実績が登録されていない行を見つける必要がある。そのため、訪問予定HYを残したまま訪問実績HJを結合し、HJの訪問実施日がNULLの行を抽出するLEFT OUTER JOINを使う。公式解答例ではeはLEFT OUTER JOINまたはLEFT JOINです。
設問2(2)
ビュー定義にそのまま指定できないのは、実行時に与える動的パラメータ?を含むHAVING COUNT(*) >= ?の部分です。公式解答例でもこのHAVING句全体を削除対象としている。集計自体はビューに定義できるが、Nの値は検索実行時に指定する必要がある。
設問2(3)
ビューには社員番号、社員名、訪問回数という集計結果を持たせ、実行時のNとの比較だけを外側のSELECTで行う。したがって、社員別訪問回数ビューからSELECTし、WHERE 訪問回数>=?とする。公式解答例もこの構成です。
設問3(1)
チームごとの社員所属と、その開始日・終了日を管理するため、チームメンバ(部門番号、チーム番号、社員番号、担当開始日、担当終了日)とする。画像の公式解答例では、部門番号・チーム番号・社員番号・担当開始日を主キーとして扱い、同じ社員が同じチームに戻った場合も別の履歴行として登録できる構成になっている。
設問3(2)(a)
SQL6はチームメンバ表とINNER JOINし、現在日付に有効な所属行を持つ社員だけを対象にする。一方、部長や課長は部下の全情報にアクセスできるが、各チームのメンバとして登録されていないため、期待した結果が得られない。公式解答例では該当社員をE111、E112、E116としている。
設問3(2)(b)
部長と各課長にもチーム単位の結合条件を満たさせる必要がある。30字以内では、公式解答例のとおり「部長を全チームに,課長を各チームにメンバとして登録する。」と、チームメンバ表へ行を追加する操作を具体的に書く。
設問3(3)
対応案Bでは、課長がチームメンバ表の担当終了日を更新することで、対象社員の現在有効な所属を直ちに終了できる。対応案Aのように、課長がDBAへロール剥奪を1営業日前までに依頼する必要がない点が優れている。
学習のポイント
ビュー・ロール・結合・集約・履歴管理を、業務上の権限要件と結び付けて考える。
出典:独立行政法人 情報処理推進機構(IPA)平成28年度春期 データベーススペシャリスト試験 午後Ⅰ 問3(公式資料:問題冊子(PDF) / 解答例 / 採点講評)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針