DBデータベーススペシャリスト試験 午前Ⅱ
令和3年度秋期 データベーススペシャリスト 午前Ⅱ 問4
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題

選択肢
- ア医師 *−1 診療科 *−1 診察 1−* 患者
- イ医師 *−1 診療科 1−* 診察 *−1 患者
- ウ医師 1−* 診療科 *−1 診察 1−* 患者
- エ医師 1−* 診療科 1−* 診察 *−1 患者
解き方のヒントを見る
エンティティ間の関係を読む視点
関係を整理する際は、登場する対象を分けて捉え、対象同士の結び付き、役割、成立する場面を順に見比べます。さらに、同じ対象が別の文脈でどう扱われるか、情報の持ち方がどこに集まるかを言葉で整理してから、設問の観点に照らして考えると、表現の違いに惑わされにくくなります。
この問題で問われていること
この問題では、対象同士の結び付きが何を意味するのかという一点に注目し、各対象の役割と関係の向きを文章で言い換え、用語や図の見た目に引きずられず比較できる状態を作ってください。
視点
まず対象を名詞として抜き出し、次にそれぞれが担う役割と、どの場面で別の対象と関係するのかを整理します。そのうえで、関係を表す言葉が示す範囲を丁寧に読み取り、複数の解釈を並べて検討しましょう。
確認ポイント
- 登場する対象を役割ごとに区別できているか
- 対象同士の関係を文章で言い換えられるか
- 図や用語の印象ではなく、設問の文脈と照合しているか
正解と解説を見る
正解
イ
解説
医師表は診療科コードを、診察表は診療科コードと患者番号を外部キーとして持つため、それぞれの参照関係から正しい多対一・一対多の向きを判断します。
理由
医師表の診療科コードは診療科表を参照するため、1つの診療科に複数の医師が所属できます。診察表の診療科コードは診療科表を、患者番号は患者表を参照するため、1つの診療科や患者に複数の診察が対応します。
比較
したがって関係の並びは、医師*−1診療科、診療科1−*診察、診察*−1患者となります。この三つの向きをすべて満たすのはイです。
選択肢ア
これは不正解だよ。医師*−1診療科は正しいものの、診療科*−1診察は逆です。診療科1つに対して複数の診察があり得ます。また、診察1−*患者も逆で、患者1人に複数の診察が対応するため、診察*−1患者となります。
選択肢イ(正解)
これは正解だよ。医師表の診療科コードが診療科表を参照するので医師*−1診療科となります。さらに、診察は診療科ごと・患者ごとに複数発生できるため、診療科1−*診察、診察*−1患者となり、三つの関係が表の構成と一致します。
選択肢ウ
これは不正解だよ。医師1−*診療科は、医師側が複数になるため逆です。診療科*−1診察も、診療科側が1で診察側が複数なので逆です。さらに診察1−*患者も、患者側が1で診察側が複数となる関係と逆になっています。
選択肢エ
これは不正解だよ。診療科1−*診察と診察*−1患者は表の外部キー構成に合っています。しかし、医師1−*診療科だけは逆です。診療科コードを持つ医師が複数所属し得るため、正しくは医師*−1診療科となります。
学習のポイント
外部キーと主キーから表間の多対一関係を読み取る方法
出典:独立行政法人 情報処理推進機構(IPA)令和3年度秋期 データベーススペシャリスト試験 午前Ⅱ 問4(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針